)]}'
{
  "commit": "608b8c366e23aa4d172e8b6d1fd41cb9458fdf49",
  "tree": "e3b634fb31c72caaa97abd0149881ccbac9f8f19",
  "parents": [
    "c3fbaea340cff053c2eea0bfc695e6420df4da92"
  ],
  "author": {
    "name": "Chao Yu",
    "email": "chao@kernel.org",
    "time": "Thu Oct 22 06:40:57 2026 +0000"
  },
  "committer": {
    "name": "Chao Yu",
    "email": "chao@kernel.org",
    "time": "Thu Oct 22 13:12:14 2026 +0000"
  },
  "message": "mkfs.f2fs: fix to align RO image layout w/ block size\n\nf2fs/015 fails w/ 16k block size, mounting an image formatted w/\n\"-O ro\" fails as below:\n\nmkfs.f2fs -f -b 16384 -O ro /dev/vdd\nmount -t f2fs -o ro /dev/vdd /mnt/f2fs\nmount: /mnt/f2fs: mount() failed: Structure needs cleaning.\n\nF2FS-fs (vdd): invalid crc_offset: 0\nF2FS-fs (vdd): Skip to start discard thread for readonly image\nF2FS-fs (vdd): SIT is corrupted node# 0 vs 1\nF2FS-fs (vdd): Failed to initialize F2FS segment manager (-117)\n\nand fsck.f2fs reports:\n\n[ASSERT] (fsck_chk_curseg_info:3747)  --\u003e Incorrect curseg [3]: segno [0x38] type(SIT) [0]\n\nFor RO image, f2fs_prepare_super_block() hardcodes the start offset of\nsegment0 to 8192 bytes, i.e. two 4k blocks for the two superblocks, but\nw/ 16k block size, 8192 bytes is only half of a block, so segment0_blkaddr\nand cp_blkaddr become 0, then the 1st checkpoint pack shares block #0 w/\nthe superblock and is overwritten by it, so kernel and fsck can not find\nvalid SIT journal entries in the compacted summary.\n\nLet\u0027s use 2 * F2FS_BLKSIZE as the start offset instead.\n\nFixes: 50fd00b (\"f2fs-tools: Support different block sizes\")\nSigned-off-by: Chao Yu \u003cchao@kernel.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "33d3da9ceaea2e402b8140fa5a46b073a0dd6422",
      "old_mode": 33188,
      "old_path": "mkfs/f2fs_format.c",
      "new_id": "7390fa45b4385e25793e460e7462b7259bf17ec9",
      "new_mode": 33188,
      "new_path": "mkfs/f2fs_format.c"
    }
  ]
}
