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.
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
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
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
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
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
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
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
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
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
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