)]}'
{
  "commit": "44cad358af39167860602151f8ee50bd41a9852a",
  "tree": "ec626f7bd9591c1e350fcfc74e51266de6f0c0dd",
  "parents": [
    "e0a8bd90a98d0232ce4ae77aaca4bac5d4955cf2"
  ],
  "author": {
    "name": "Dave Chinner",
    "email": "dgc@kernel.org",
    "time": "Tue Oct 13 08:54:46 2026 +1100"
  },
  "committer": {
    "name": "Dave Chinner",
    "email": "dgc@kernel.org",
    "time": "Tue Oct 13 08:54:46 2026 +1100"
  },
  "message": "xfs: validate logged dquot buffers during recovery\n\nA dquot buffer is only ever logged by xfs_qm_init_dquot_blk(), which initialises\nand logs the whole buffer in a single region. So a logged dquot buffer has\nexactly two regions, the format header and one data region covering the entire\nbuffer, and that region holds a full chunk of valid dquots.\n\nValidate this in the buffer item validate_item callback. A buffer carrying a\ndquot type flag must have that shape, and every dquot in the logged chunk is\nverified so a corrupt dquot is never replayed to disk. The dquot content check\nin the replay path only looked at the first dquot and relied on the replay loop\nfor the region bounds, so it is removed and the replay loop reduces to copying\nthe logged regions into the buffer.\n\nTo share the per-dquot verification, xfs_dquot_verify_chunk() is factored out of\nxfs_dquot_buf_verify(). It walks a chunk of dquots and, on failure, updates its\ndquot pointer to the offending dquot so the caller can report it. The buffer\nread verifier is otherwise unchanged.\n\nAssisted-by: LLM\nSigned-off-by: Dave Chinner \u003cdgc@kernel.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6c8a9afdfb1c0fb15cf00b6f70f9f2a3c3e22f9c",
      "old_mode": 33188,
      "old_path": "fs/xfs/libxfs/xfs_dquot_buf.c",
      "new_id": "d6837c840989974ceaaf7498093676353174fc4b",
      "new_mode": 33188,
      "new_path": "fs/xfs/libxfs/xfs_dquot_buf.c"
    },
    {
      "type": "modify",
      "old_id": "551d7ae46c5c21d7471ad3d4a5110b8a03fbaaa2",
      "old_mode": 33188,
      "old_path": "fs/xfs/libxfs/xfs_quota_defs.h",
      "new_id": "73d82edf0969d1d698f81bb04b18c2e37e298ad3",
      "new_mode": 33188,
      "new_path": "fs/xfs/libxfs/xfs_quota_defs.h"
    },
    {
      "type": "modify",
      "old_id": "27cab5afc8ba1f9abe88b79334a05ff4a74b8a4b",
      "old_mode": 33188,
      "old_path": "fs/xfs/xfs_buf_item_recover.c",
      "new_id": "be1558d851db92e7a34e2b2ef4a36592bcc14e3d",
      "new_mode": 33188,
      "new_path": "fs/xfs/xfs_buf_item_recover.c"
    }
  ]
}
