Skip to content

Latest commit

 

History

History
284 lines (192 loc) · 8.55 KB

newBugs.md

File metadata and controls

284 lines (192 loc) · 8.55 KB

New bugs reported by CrashMonkey and Ace

Summary:

Total unique bugs reported = 10
	1. Fails on btrfs = 8
	2. Fails on f2fs  = 2

All the bugs were reported on kernel 4.16.0-041600-generic.

Workloads to trigger the following bugs can be found here.


Bug 1 : File lost during rename

Workload Type Fails on Result
mkdir A
touch A/bar
fsync A/bar
mkdir B
touch B/bar
rename B/bar A/bar
touch A/foo
fsync A/foo
fsync A
----CRASH----
seq-3 btrfs Rename(B/bar, A/bar) did not go through, but ended up deleting
the destination file A/bar as well as did not persist the source file B/bar.
[Report] [Developer's response]

Output :

automated check_test:
                failed: 1


DIFF: Content Mismatch /A

Actual (/mnt/snapshot/A):
---File Stat Atrributes---
Inode     : 257
TotalSize : 6
BlockSize : 4096
#Blocks   : 0
#HardLinks: 1


Expected (/mnt/cow_ram_snapshot4_0/A):
---File Stat Atrributes---
Inode     : 257
TotalSize : 12
BlockSize : 4096
#Blocks   : 0
#HardLinks: 1

Bug 2 : File persisted in both directories after rename

Workload Type Fails on Result
mkdir A
mkdir A/C
rename A/C B
touch B/bar
fsync B/bar
rename B/bar A/bar
rename A B
fsync B/bar
----CRASH----
seq-3 (nested) btrfs Rename(B/bar, A/bar) was not atomic and persists the file
in both source and destination directories.
[Report] [Developer's response]

Output :

automated check_test:
                failed: 1


DIFF: Content Mismatch /B/bar

Actual (/mnt/snapshot/B/bar):
---File Stat Atrributes---
Inode     : 259
TotalSize : 0
BlockSize : 4096
#Blocks   : 0
#HardLinks: 2


Expected (/mnt/cow_ram_snapshot3_0/B/bar):
---File Stat Atrributes---
Inode     : 259
TotalSize : 0
BlockSize : 4096
#Blocks   : 0
#HardLinks: 1

Bug 3 : Directory entries not persisted on fsync

Workload Type Fails on Result
mkdir A
mkdir B
mkdir A/C
touch B/foo
fsync B/foo
link B/foo A/C/foo
fsync A
----CRASH----
seq-3 (nested) btrfs In spite of an explicit fsync on directory A,
directory A and all its contents go missing after a crash.
[Report] [Developer's response] [Patch]

Output :

automated check_test:
                failed: 1


DIFF: Failed stating the file /mnt/snapshot/A

Bug 4 : Rename not persisted after fsync

Workload Type Fails on Result
mkdir A
sync
rename A B
touch B/foo
fsync B/foo
fsync B
----CRASH----
seq-3 btrfs In spite of an explicit fsync on directory B,
and the file under it, directory B and its contents go missing after a crash.
[Report] [Developer's response]

Output :

automated check_test:
                failed: 1


DIFF: Failed stating the file /mnt/snapshot/B

Bug 5 : Hard links not persisted after fsync

Workload Type Fails on Result
mkdir A
mkdir B
touch A/foo
link A/foo B/foo
fsync A/foo
fsync B/foo
----CRASH----
seq-2 btrfs In spite of an explicit fsync on file B/foo,
the file (and the directory B) is not persisted.
[Report] [Developer's response]

Output :

automated check_test:
                failed: 1


DIFF: Failed stating the file /mnt/snapshot/B/foo

Bug 6 : Fsync of directory not persisting its files

Workload Type Fails on Result
mkdir test
mkdir test/A
touch test/foo
touch test/A/foo
fsync test/A/foo
fsync test
----CRASH----
seq-2 btrfs In spite of an explicit fsync on test directory,
the file foo present inside this directory goes missing.
[Report] [Developer's response]

Output :

automated check_test:
                failed: 1


DIFF: Content Mismatch

Actual (/mnt/snapshot):
---File Stat Atrributes---
Inode     : 256
TotalSize : 2
BlockSize : 4096
#Blocks   : 32
#HardLinks: 1


Expected (/mnt/cow_ram_snapshot3_0):
---File Stat Atrributes---
Inode     : 256
TotalSize : 8
BlockSize : 4096
#Blocks   : 32
#HardLinks: 1

Bug 7 : Fsync of file does not persist all its names

Workload Type Fails on Result
touch foo
mkdir A
link foo A/bar
fsync foo
----CRASH----
seq-1 btrfs Persisting file foo does not persist its hard
link A/bar.
[Report] [Developer's response]

Output :

automated check_test:
                failed: 1

DIFF: Content Mismatch /foo

Actual (/mnt/snapshot/foo):
---File Stat Atrributes---
Inode     : 258
TotalSize : 0
BlockSize : 4096
#Blocks   : 0
#HardLinks: 1


Expected (/mnt/cow_ram_snapshot2_0/foo):
---File Stat Atrributes---
Inode     : 258
TotalSize : 0
BlockSize : 4096
#Blocks   : 0
#HardLinks: 2

Bug 8 : Fallocate beyond the eof loses allocated blocks even after fsync

Workload Type Fails on Result
write foo 0-16K
fsync foo
falloc -k foo 16-20K
fsync foo
----CRASH----
seq-1 btrfs Whenever we do a fallocate or zero_range
operation that extends the file (with keep_size),
an fsync operation would not persist the block allocation.
On recovery, we lose all the blocks allocated beyond the eof.
[Report] [Developer's response][Patch]

Output :

automated check_test:
                failed: 1

DIFF: Content Mismatch /foo

Actual (/mnt/snapshot/foo):
---File Stat Atrributes---
Inode     : 257
TotalSize : 4096
BlockSize : 4096
#Blocks   : 8
#HardLinks: 1


Expected (/mnt/cow_ram_snapshot2_0/foo):
---File Stat Atrributes---
Inode     : 257
TotalSize : 4096
BlockSize : 4096
#Blocks   : 16
#HardLinks: 1

Bug 9 : Fallocate beyond the eof recovers to an incorrect file size

Workload Type Fails on Result
write foo 0-16K
fsync foo
fzero -k foo 16-20K
fsync foo
----CRASH----
seq-1 F2FS Whenever we do a zero_range operation
that extends the file (with keep_size), followed
by a fdatasync and then crash, the recovered file size would be incorrect.
[Report] [Developer's response][Patch]

Output :

automated check_test:
                failed: 1

DIFF: Content Mismatch /foo

Actual (/mnt/snapshot/foo):
---File Stat Atrributes---
Inode     : 4
TotalSize : 8192
BlockSize : 4096
#Blocks   : 16
#HardLinks: 1


Expected (/mnt/cow_ram_snapshot2_0/foo):
---File Stat Atrributes---
Inode     : 4
TotalSize : 4096
BlockSize : 4096
#Blocks   : 16
#HardLinks: 1

Bug 10 : Rename not persisted after fsync of a child file

Workload Type Fails on Result
mkdir A
sync
rename A B
touch B/foo
fsync B/foo
----CRASH----
seq-1 F2FS In spite of an explicit fsync on B/foo, the file is persisted in a different directory.
[Report] [Developer's response][Patch]

Output :

automated check_test:
                failed: 1

DIFF: Failed stating the file /mnt/snapshot/B/foo