)]}'
{
  "commit": "26a4c0c6ccecf6814cf44f951c97222bd795bc1a",
  "tree": "9b3a2fa02c61464ead1456499cad46e41644878b",
  "parents": [
    "781f143ea0fd7981ebe2e8cd96114997c8cf6c07"
  ],
  "author": {
    "name": "Theodore Ts\u0027o",
    "email": "tytso@mit.edu",
    "time": "Wed Apr 03 12:45:17 2013 -0400"
  },
  "committer": {
    "name": "Theodore Ts\u0027o",
    "email": "tytso@mit.edu",
    "time": "Wed Apr 03 12:45:17 2013 -0400"
  },
  "message": "ext4: refactor punch hole code\n\nMove common code in ext4_ind_punch_hole() and ext4_ext_punch_hole()\ninto ext4_punch_hole().  This saves over 150 lines of code.\n\nThis also fixes a potential bug when the punch_hole() code is racing\nagainst indirect-to-extents or extents-to-indirect migation.  We are\ncurrently using i_mutex to protect against changes to the inode flag;\nspecifically, the append-only, immutable, and extents inode flags.  So\nwe need to take i_mutex before deciding whether to use the\nextents-specific or indirect-specific punch_hole code.\n\nAlso, there was a missing call to ext4_inode_block_unlocked_dio() in\nthe indirect punch codepath.  This was added in commit 02d262dffcf4c\nto block DIO readers racing against the punch operation in the\ncodepath for extent-mapped inodes, but it was missing for\nindirect-block mapped inodes.  One of the advantages of refactoring\nthe code is that it makes such oversights much less likely.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f91e11bd975374b4d191ed1c97baceac4f34a7ab",
      "old_mode": 33188,
      "old_path": "fs/ext4/ext4.h",
      "new_id": "0649253804c4e46c4fe26fbebf4cb504390e6199",
      "new_mode": 33188,
      "new_path": "fs/ext4/ext4.h"
    },
    {
      "type": "modify",
      "old_id": "9c6d06dcef8bf1f997c0f05bfe443fcde993d72b",
      "old_mode": 33188,
      "old_path": "fs/ext4/extents.c",
      "new_id": "d58365e40df7fe1b981c5b699e6cfac34de27a1b",
      "new_mode": 33188,
      "new_path": "fs/ext4/extents.c"
    },
    {
      "type": "modify",
      "old_id": "c0f9e4699f0b129d5acccfc84c085e4f973b940e",
      "old_mode": 33188,
      "old_path": "fs/ext4/indirect.c",
      "new_id": "d8846779f4eab6ccaca26af4baddcbac4dfc0188",
      "new_mode": 33188,
      "new_path": "fs/ext4/indirect.c"
    },
    {
      "type": "modify",
      "old_id": "a4ffb470fbf33547b3c52b8440f0e3f5c4c19962",
      "old_mode": 33188,
      "old_path": "fs/ext4/inode.c",
      "new_id": "9bda50aa34e2f45ff4402fff2301d5e6b17a6c63",
      "new_mode": 33188,
      "new_path": "fs/ext4/inode.c"
    }
  ]
}
