)]}'
{
  "commit": "7994e6f7254354e03028a11f98a27bd67dace9f1",
  "tree": "b93db15bf5e4cd890670db0fd36575b5efce2366",
  "parents": [
    "4f8ad655dbc82cf05d2edc11e66b78a42d38bf93"
  ],
  "author": {
    "name": "Jan Kara",
    "email": "jack@suse.cz",
    "time": "Thu May 03 14:48:01 2012 +0200"
  },
  "committer": {
    "name": "Fengguang Wu",
    "email": "fengguang.wu@intel.com",
    "time": "Sun May 06 13:43:40 2012 +0800"
  },
  "message": "vfs: Move waiting for inode writeback from end_writeback() to evict_inode()\n\nCurrently, I_SYNC can never be set when evict_inode() (and thus\nend_writeback()) is called because flusher thread holds inode reference while\ninode is under writeback. As a result inode_sync_wait() in those places\ncurrently does nothing. However that is going to change and unveils problems\nwith calling inode_sync_wait() from end_writeback(). Several filesystems call\nend_writeback() after they have deleted the inode (btrfs, gfs2, ...) and other\nfilesystems (ext3, ext4, reiserfs, ...) can deadlock when waiting for I_SYNC\nbecause they call end_writeback() from within a transaction.\n\nTo avoid these issues, we move inode_sync_wait() into evict_inode() before\ncalling -\u003eevict_inode(). That way we preserve the current property that\n-\u003eevict_inode() and writeback never run in parallel and all filesystems are\nsafe.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9f4f5fecc0963c12db1f806be61999a26a9ba7ea",
      "old_mode": 33188,
      "old_path": "fs/inode.c",
      "new_id": "501fc5daf6f44f8847825efc778164db34bf7612",
      "new_mode": 33188,
      "new_path": "fs/inode.c"
    }
  ]
}
