)]}'
{
  "commit": "b5470dc5fc18a8ff6517c3bb538d1479e58ecb02",
  "tree": "37b0eb3a4691bdbe58dc5c6c73b2dc8d3925b332",
  "parents": [
    "1fe797e67fb07d605b82300934d0de67068a0aca"
  ],
  "author": {
    "name": "Dan Williams",
    "email": "dan.j.williams@intel.com",
    "time": "Fri Jun 27 21:44:04 2008 -0700"
  },
  "committer": {
    "name": "Dan Williams",
    "email": "dan.j.williams@intel.com",
    "time": "Mon Jun 30 17:18:19 2008 -0700"
  },
  "message": "md: resolve external metadata handling deadlock in md_allow_write\n\nmd_allow_write() marks the metadata dirty while holding mddev-\u003elock and then\nwaits for the write to complete.  For externally managed metadata this causes a\ndeadlock as userspace needs to take the lock to communicate that the metadata\nupdate has completed.\n\nChange md_allow_write() in the \u0027external\u0027 case to start the \u0027mark active\u0027\noperation and then return -EAGAIN.  The expected side effects while waiting for\nuserspace to write \u0027active\u0027 to \u0027array_state\u0027 are holding off reshape (code\ncurrently handles -ENOMEM), cause some \u0027stripe_cache_size\u0027 change requests to\nfail, cause some GET_BITMAP_FILE ioctl requests to fall back to GFP_NOIO, and\ncause updates to \u0027raid_disks\u0027 to fail.  Except for \u0027stripe_cache_size\u0027 changes\nthese failures can be mitigated by coordinating with mdmon.\n\nmd_write_start() still prevents writes from occurring until the metadata\nhandler has had a chance to take action as it unconditionally waits for\nMD_CHANGE_CLEAN to be cleared.\n\n[neilb@suse.de: return -EAGAIN, try GFP_NOIO]\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "df1230af02cd5cb3db9f8bdc1771841d707b4011",
      "old_mode": 33188,
      "old_path": "drivers/md/md.c",
      "new_id": "43d033d9a05a7e8a1d0bd4bc8d6b79fc9760be02",
      "new_mode": 33188,
      "new_path": "drivers/md/md.c"
    },
    {
      "type": "modify",
      "old_id": "f05d5983efb64db1654edef6412eccf1b08ef1f1",
      "old_mode": 33188,
      "old_path": "drivers/md/raid1.c",
      "new_id": "491dc2d4ad5fe7dc81c95bfb168e97d98a67a95d",
      "new_mode": 33188,
      "new_path": "drivers/md/raid1.c"
    },
    {
      "type": "modify",
      "old_id": "442622067caef55823100e73ea33e9eb11dcf8ac",
      "old_mode": 33188,
      "old_path": "drivers/md/raid5.c",
      "new_id": "8f4c70a5321067a21d780eb60b8d47ed5a8082ab",
      "new_mode": 33188,
      "new_path": "drivers/md/raid5.c"
    },
    {
      "type": "modify",
      "old_id": "b7386ae9d288551b979a42a94ae59726563a035b",
      "old_mode": 33188,
      "old_path": "include/linux/raid/md.h",
      "new_id": "dc0e3fcb9f281b15bc9d0f040ce38a42191a4ea5",
      "new_mode": 33188,
      "new_path": "include/linux/raid/md.h"
    }
  ]
}
