)]}'
{
  "commit": "debf16f0c671cb8db154a9ebcd6014cfff683b80",
  "tree": "18ca8bf2bfc9fc03ddad5114d2ebd5bf9872ffd8",
  "parents": [
    "19d008b46941b8c668402170522e0f7a9258409c"
  ],
  "author": {
    "name": "NeilBrown",
    "email": "neilb@suse.de",
    "time": "Tue Jul 26 16:45:30 2022 +1000"
  },
  "committer": {
    "name": "Chuck Lever",
    "email": "chuck.lever@oracle.com",
    "time": "Thu Aug 04 10:28:20 2022 -0400"
  },
  "message": "NFSD: use explicit lock/unlock for directory ops\n\nWhen creating or unlinking a name in a directory use explicit\ninode_lock_nested() instead of fh_lock(), and explicit calls to\nfh_fill_pre_attrs() and fh_fill_post_attrs().  This is already done\nfor renames, with lock_rename() as the explicit locking.\n\nAlso move the \u0027fill\u0027 calls closer to the operation that might change the\nattributes.  This way they are avoided on some error paths.\n\nFor the v2-only code in nfsproc.c, the fill calls are not replaced as\nthey aren\u0027t needed.\n\nMaking the locking explicit will simplify proposed future changes to\nlocking for directories.  It also makes it easily visible exactly where\npre/post attributes are used - not all callers of fh_lock() actually\nneed the pre/post attributes.\n\nReviewed-by: Jeff Layton \u003cjlayton@kernel.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3de9b008626cee551daee7616bea5afb5750f824",
      "old_mode": 33188,
      "old_path": "fs/nfsd/nfs3proc.c",
      "new_id": "a41cca619338dba13c600ff49b61e4593b8de798",
      "new_mode": 33188,
      "new_path": "fs/nfsd/nfs3proc.c"
    },
    {
      "type": "modify",
      "old_id": "46c14769610539110b5e59dd9c1ea02b975e46da",
      "old_mode": 33188,
      "old_path": "fs/nfsd/nfs4proc.c",
      "new_id": "a72ab97f77efe2b8fcbab183667c77da26909274",
      "new_mode": 33188,
      "new_path": "fs/nfsd/nfs4proc.c"
    },
    {
      "type": "modify",
      "old_id": "acaf58e8e86f48692e394f29286de1cc4031de3e",
      "old_mode": 33188,
      "old_path": "fs/nfsd/nfsproc.c",
      "new_id": "7381972f16774998a96a178243389c8e0927c97a",
      "new_mode": 33188,
      "new_path": "fs/nfsd/nfsproc.c"
    },
    {
      "type": "modify",
      "old_id": "23baeca0f5ee422d42d7fef3e4fc354c721476e2",
      "old_mode": 33188,
      "old_path": "fs/nfsd/vfs.c",
      "new_id": "19b47ca2f2385392f36948bb65f544143fe39b45",
      "new_mode": 33188,
      "new_path": "fs/nfsd/vfs.c"
    }
  ]
}
