Hi Chao,

On 14/9/2020 3:30 pm, Chao Yu wrote:
Hi Chris,

On 2020/9/12 14:19, Chris Ruehl wrote:
Update
On 12/9/2020 12:20 pm, Chris Ruehl wrote:
Hi,

we encounter random crash on new installed partition at
first boot.
Kernel: 4.9.235
Kernel: 5.4.64 (blow)

You mean: on both 4.9 and 5.4, you will encounter the crash?

f2fs-tools: 1.4.0

[    1.520829] mmc1: new DDR MMC card at address 0001

[    1.526223] mmcblk1: mmc1:0001 DG4008 7.28 GiB

[    1.531037] mmcblk1boot0: mmc1:0001 DG4008 partition 1 4.00 MiB

[    1.537244] mmcblk1boot1: mmc1:0001 DG4008 partition 2 4.00 MiB

[    1.543416] mmcblk1rpmb: mmc1:0001 DG4008 partition 3 4.00 MiB, chardev (247:0)
[    1.554445]  mmcblk1: p1 p2

[    1.572323] F2FS-fs (mmcblk1p2): Mismatch valid blocks 512 vs. 508

[    1.578552] F2FS-fs (mmcblk1p2): Failed to initialize F2FS segment manager
(-117)
[    1.586374] VFS: Cannot open root device "mmcblk1p2" or unknown-block(179,2):
error -117
[    1.594496] Please append a correct "root=" boot option; here are the
available partitions:

I reboot into the installation SDCard and run the fsck.f2fs with no errors

We can see that both f2fs kernel module and fsck.f2fs will check consistency
of SIT table, and I don't see any obvious difference in between them... :(

kernel-f2fs:

https://elixir.bootlin.com/linux/v5.4.64/source/fs/f2fs/segment.h#L699

f2fs-tools:

https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git/tree/fsck/mount.c#n2012

Could you please apply below patch to check which segment has inconsistent
blocks:

diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index 13ecd2c2c361..3599da395809 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -4380,6 +4380,7 @@ static int build_sit_entries(struct f2fs_sb_info *sbi)
      unsigned int readed, start_blk = 0;
      int err = 0;
      block_t total_node_blocks = 0;
+    bool corrupted = false;

      do {
          readed = f2fs_ra_meta_pages(sbi, start_blk, BIO_MAX_PAGES,
@@ -4402,7 +4403,7 @@ static int build_sit_entries(struct f2fs_sb_info *sbi)

              err = check_block_count(sbi, start, &sit);
              if (err)
-                return err;
+                corrupted = true;
              seg_info_from_raw_sit(se, &sit);
              if (IS_NODESEG(se->type))
                  total_node_blocks += se->valid_blocks;
@@ -4448,7 +4449,7 @@ static int build_sit_entries(struct f2fs_sb_info *sbi)

          err = check_block_count(sbi, start, &sit);
          if (err)
-            break;
+            corrupted = true;
          seg_info_from_raw_sit(se, &sit);
          if (IS_NODESEG(se->type))
              total_node_blocks += se->valid_blocks;
@@ -4477,6 +4478,9 @@ static int build_sit_entries(struct f2fs_sb_info *sbi)
          err = -EFSCORRUPTED;
      }

+    if (corrupted)
+        err = -EFSCORRUPTED;
+
      return err;
  }

diff --git a/fs/f2fs/segment.h b/fs/f2fs/segment.h
index 47b888ad913b..af6fd623fb01 100644
--- a/fs/f2fs/segment.h
+++ b/fs/f2fs/segment.h
@@ -719,8 +719,14 @@ static inline int check_block_count(struct f2fs_sb_info *sbi,
      } while (cur_pos < usable_blks_per_seg);

      if (unlikely(GET_SIT_VBLOCKS(raw_sit) != valid_blocks)) {
-        f2fs_err(sbi, "Mismatch valid blocks %d vs. %d",
-             GET_SIT_VBLOCKS(raw_sit), valid_blocks);
+        f2fs_err(sbi, "Mismatch valid blocks %d vs. %d in segno:%u",
+            segno, GET_SIT_VBLOCKS(raw_sit), valid_blocks);
+        for (cur_pos = 0; cur_pos < SIT_VBLOCK_MAP_SIZE; cur_pos += 4)
+            f2fs_info(sbi, "%u %u %u %u",
+                raw_sit->valid_map[cur_pos],
+                raw_sit->valid_map[cur_pos + 1],
+                raw_sit->valid_map[cur_pos + 2],
+                raw_sit->valid_map[cur_pos + 3]);
          set_sbi_flag(sbi, SBI_NEED_FSCK);
          return -EFSCORRUPTED;
      }

Thanks,


root@ba81ba8b6125:~# fsck.f2fs /dev/mmcblk1p2
Info: Segments per section = 1
Info: Sections per zone = 1
Info: sector size = 512
Info: total sectors = 7520000 (3671 MB)
Info: MKFS version
    "Linux version 5.4.64 (xxx) (gcc version 8.3.0 (Debian 8.3.0-2)) #74 SMP Sat
Sep 12 10:56:24 HKT 2020"
Info: FSCK version
    from "Linux version 5.4.64 (xxx) (gcc version 8.3.0 (Debian 8.3.0-2)) #74 SMP
Sat Sep 12 10:56:24 HKT 2020"
      to "Linux version 5.4.64 (xxx) (gcc version 8.3.0 (Debian 8.3.0-2)) #74 SMP
Sat Sep 12 10:56:24 HKT 2020"
Info: superblock features = 0 :
Info: superblock encrypt level = 0, salt = 00000000000000000000000000000000
Info: total FS sectors = 7520000 (3671 MB)
Info: CKPT version = 14f987b7
Info: Checked valid nat_bits in checkpoint
Info: checkpoint state = 1c5 :  trimmed nat_bits crc compacted_summary unmount

[FSCK] Unreachable nat entries                        [Ok..] [0x0]
[FSCK] SIT valid block bitmap checking                [Ok..]
[FSCK] Hard link checking for regular file            [Ok..] [0x7]
[FSCK] valid_block_count matching with CP             [Ok..] [0x1c29f]
[FSCK] valid_node_count matching with CP (de lookup)  [Ok..] [0x596b]
[FSCK] valid_node_count matching with CP (nat lookup) [Ok..] [0x596b]
[FSCK] valid_inode_count matched with CP              [Ok..] [0x5953]
[FSCK] free segment_count matched with CP             [Ok..] [0x625]
[FSCK] next block offset is free                      [Ok..]
[FSCK] fixing SIT types
[FSCK] other corrupted bugs                           [Ok..]

Done: 5.592724 secs

Regards
Chris


_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

CONFIG_HIMEM is not set
CONFIG_PREEMPT_NONE is set.../uboot.d/u-boot.imx-6dl2g

Problem not seen when set
CONFIG_PREEMPT

If that help to point to the bug.

-Chris


_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel


I must say sorry for the noise, I checked the Ram and CPU, we have a bad RAM which can't follow the 992Mhz and causes the problem, once limit the
CPU speed to 800Mhz the problem is gone. Both 4.9 & 5.4

Please consider this bug as false-positive.


Regards
Chris


_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to