)]}'
{
  "commit": "b54c2ca475fa7d7450a45b6d778dae9dbe0bcbfe",
  "tree": "a67f530a3f426d756a0383f8dc11b5928810d0f5",
  "parents": [
    "3939fda4b389993caf8741df5739b3e49f33a263"
  ],
  "author": {
    "name": "Tristan Ye",
    "email": "tristan.ye@oracle.com",
    "time": "Fri Mar 19 09:21:10 2010 +0800"
  },
  "committer": {
    "name": "Joel Becker",
    "email": "joel.becker@oracle.com",
    "time": "Tue Mar 23 18:22:55 2010 -0700"
  },
  "message": "Ocfs2: Handle deletion of reflinked oprhan inodes correctly.\n\nThe rule is that all inodes in the orphan dir have ORPHANED_FL,\notherwise we treated it as an ERROR.  This rule works well except\nfor some rare cases of reflink operation:\n\nhttp://oss.oracle.com/bugzilla/show_bug.cgi?id\u003d1215\n\nThe problem is caused by how reflink and our orphan_scan thread\ninteract.\n\n * The orphan scan pulls the orphans into a queue first, then runs the\n   queue at a later time.  We only hold the orphan_dir\u0027s lock\n   during scanning.\n\n * Reflink create a oprhaned target in orphan_dir as its first step.\n   It removes the target and clears the flag as the final step.\n   These two steps take the orphan_dir\u0027s lock, but it is not held for\n   the duration.\n\nBased on the above semantics, a reflink inode can be moved out of the\norphan dir and have its ORPHANED_FL cleared before the queue of orphans\nis run.  This leads to a ERROR in ocfs2_query_wipde_inode().\n\nThis patch teaches ocfs2_query_wipe_inode() to detect previously\norphaned reflink targets.  If a reflink fails or a crash occurs during\nthe relfink operation, the inode will retain ORPHANED_FL and will be\nproperly wiped.\n\nSigned-off-by: Tristan Ye \u003ctristan.ye@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "278a223aae14b8a2d347890735c729567e3840cc",
      "old_mode": 33188,
      "old_path": "fs/ocfs2/inode.c",
      "new_id": "ab207901d32a28e2423019007e10da4ed5eb2a0f",
      "new_mode": 33188,
      "new_path": "fs/ocfs2/inode.c"
    }
  ]
}
