Hi, On 05/10, Raouf Rokhjavan wrote: ...
> As you told to use snapshot mechanism to prevent changing ckpt number after > each mount, I ran again generic tests of xfstests framework on top of > log-writes target with f2fs file system. In order to automate reporting an > inconsistency situation, I add a parameter to fsck.f2fs to return(-1) when > c.bug_on condition is met. To evaluate how f2fs react in case of crash > consistency, I replay each log and check the consistency of f2fs with a my > own modified version of fsck.f2fs. Accordingly, all tests passed smoothly > except these tests: > > [FAIL] Running generic/013 failed. (consistency_single) Could you check whether any IO made by mkfs was added in the replay log? If so, fsck.f2fs should be failed when replaying them. > [FAIL] Running generic/070 failed. (consistency_single) > [FAIL] Running generic/113 failed. (consistency_single) I added a mark to replay in the beginning of generic/113, and ran the test. But, I couldn't find any error given test_dev as a log_dev. (I tested this in the latest f2fs/dev-test branch.) > [FAIL] Running generic/241 failed. (consistency_single) > > In other words, in these tests, c.bug_on() was true. Would you please > describe why they become inconsistent? > > Besides, I ran sysbench for database benchmark with 1 thread, 1000 records, > and 100 transactions on top of log-writes target with f2fs. Interestingly, I > encountered a weird inconsistency. After replaying about 100 logs, fsck.f2fs > complains about inconsistency with the following messages: Can you share the parameter for sysbench? Thanks, > > Info: Segments per section = 1 > Info: Sections per zone = 1 > Info: sector size = 512 > Info: total sectors = 2097152 (1024 MB) > Info: MKFS version > "Linux version 4.9.8 (rora...@desktopr.example.com) (gcc version 4.8.5 > 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Tue Feb 7 08:24:57 IRST 2017" > Info: FSCK version > from "Linux version 4.9.8 (rora...@desktopr.example.com) (gcc version > 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Tue Feb 7 08:24:57 IRST > 2017" > to "Linux version 4.9.8 (rora...@desktopr.example.com) (gcc version > 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Tue Feb 7 08:24:57 IRST > 2017" > Info: superblock features = 0 : > Info: superblock encrypt level = 0, salt = 00000000000000000000000000000000 > Info: total FS sectors = 2097152 (1024 MB) > Info: CKPT version = 2b59c128 > Info: checkpoint state = 44 : compacted_summary sudden-power-off > [ASSERT] (sanity_check_nid: 388) --> nid[0x6] nat_entry->ino[0x6] > footer.ino[0x0] > > NID[0x6] is unreachable > NID[0x7] is unreachable > [FSCK] Unreachable nat entries [Fail] [0x2] > [FSCK] SIT valid block bitmap checking [Fail] > [FSCK] Hard link checking for regular file [Ok..] [0x0] > [FSCK] valid_block_count matching with CP [Fail] [0x6dc9] > [FSCK] valid_node_count matcing with CP (de lookup) [Fail] [0xe3] > [FSCK] valid_node_count matcing with CP (nat lookup) [Ok..] [0xe5] > [FSCK] valid_inode_count matched with CP [Fail] [0x63] > [FSCK] free segment_count matched with CP [Ok..] [0x1c6] > [FSCK] next block offset is free [Ok..] > [FSCK] fixing SIT types > [FSCK] other corrupted bugs [Fail] > > After canceling the test by using Ctrl-C without answering any YES/NO > questions, on another terminal I run fsck.f2fs again, but the output is > completely different: > [root@localhost CrashConsistencyTest]# ./locals/usr/local/sbin/fsck.f2fs > /dev/sdc > Info: [/dev/sdc] Disk Model: VMware Virtual S1.0 > Info: Segments per section = 1 > Info: Sections per zone = 1 > Info: sector size = 512 > Info: total sectors = 2097152 (1024 MB) > Info: MKFS version > "Linux version 4.9.8 (rora...@desktopr.example.com) (gcc version 4.8.5 > 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Tue Feb 7 08:24:57 IRST 2017" > Info: FSCK version > from "Linux version 4.9.8 (rora...@desktopr.example.com) (gcc version > 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Tue Feb 7 08:24:57 IRST > 2017" > to "Linux version 4.9.8 (rora...@desktopr.example.com) (gcc version > 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Tue Feb 7 08:24:57 IRST > 2017" > Info: superblock features = 0 : > Info: superblock encrypt level = 0, salt = 00000000000000000000000000000000 > Info: total FS sectors = 2097152 (1024 MB) > Info: CKPT version = 2b59c128 > Info: checkpoint state = 44 : compacted_summary sudden-power-off > > [FSCK] Unreachable nat entries [Ok..] [0x0] > [FSCK] SIT valid block bitmap checking [Ok..] > [FSCK] Hard link checking for regular file [Ok..] [0x0] > [FSCK] valid_block_count matching with CP [Ok..] [0x6dcf] > [FSCK] valid_node_count matcing with CP (de lookup) [Ok..] [0xe5] > [FSCK] valid_node_count matcing with CP (nat lookup) [Ok..] [0xe5] > [FSCK] valid_inode_count matched with CP [Ok..] [0x64] > [FSCK] free segment_count matched with CP [Ok..] [0x1c6] > [FSCK] next block offset is free [Ok..] > [FSCK] fixing SIT types > [FSCK] other corrupted bugs [Ok..] > > This situation raises a couple of questions: > 1. How does an inconsistent file system turn into a consistent one in this > case? > 2. Why does an inconsistency occur in different log numbers; in other words, > why is it unpredictable? Does ordering of logs have to do with disk > controller and I/O scheduler? > > I do appreciate for your help. > Regards ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel