)]}'
{
  "commit": "c42de9dd67250fe984e0e31c9b542d721af6454b",
  "tree": "a4079b25a044f7124837f572e5342dc7614ca75d",
  "parents": [
    "7d46a49f512e8d10b23353781a8ba85edd4fa640"
  ],
  "author": {
    "name": "Trond Myklebust",
    "email": "Trond.Myklebust@netapp.com",
    "time": "Mon Mar 20 13:44:51 2006 -0500"
  },
  "committer": {
    "name": "Trond Myklebust",
    "email": "Trond.Myklebust@netapp.com",
    "time": "Mon Mar 20 13:44:51 2006 -0500"
  },
  "message": "NFS: Fix a race in nfs_sync_inode()\n\nKudos to Neil Brown for spotting the problem:\n\n\"in nfs_sync_inode, there is effectively the sequence:\n\n   nfs_wait_on_requests\n   nfs_flush_inode\n   nfs_commit_inode\n\n This seems a bit racy to me as if the only requests are on the\n -\u003ecommit list, and nfs_commit_inode is called separately after\n nfs_wait_on_requests completes, and before nfs_commit_inode start\n (say: by nfs_write_inode) then none of these function will return\n \u003e0, yet there will be some pending request that aren\u0027t waited for.\"\n\nThe solution is to search for requests to wait upon, search for dirty\nrequests, and search for uncommitted requests while holding the\nnfsi-\u003ereq_lock\n\nThe patch also cleans up nfs_sync_inode(), getting rid of the redundant\nFLUSH_WAIT flag. It turns out that we were always setting it.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a0cda53461b343caeb2636b98f3aa3a4562d85f0",
      "old_mode": 33188,
      "old_path": "fs/nfs/inode.c",
      "new_id": "60aac58270a8f208dea2d19b63ccfd04842d6021",
      "new_mode": 33188,
      "new_path": "fs/nfs/inode.c"
    },
    {
      "type": "modify",
      "old_id": "2beb1268bb1b582844ac802fefef60959a707862",
      "old_mode": 33188,
      "old_path": "fs/nfs/write.c",
      "new_id": "3f5225404c973d41154c214f0d241f478da7da9d",
      "new_mode": 33188,
      "new_path": "fs/nfs/write.c"
    },
    {
      "type": "modify",
      "old_id": "55de0770df4ab704a6f70402674c4c0ad365ae71",
      "old_mode": 33188,
      "old_path": "include/linux/nfs_fs.h",
      "new_id": "cbebd7d1b9e8610f6206ab3c650893fb39773d8a",
      "new_mode": 33188,
      "new_path": "include/linux/nfs_fs.h"
    }
  ]
}
