)]}'
{
  "commit": "e33129d84130459dbb764a1a52a4bfceab3da978",
  "tree": "c3f2742dac468a1c62e14ec1f2ec0cb5a37ee966",
  "parents": [
    "d84e0f10d38393f617227f0c831a99c69294651f"
  ],
  "author": {
    "name": "Dan Williams",
    "email": "dan.j.williams@intel.com",
    "time": "Tue Jan 02 13:52:30 2007 -0700"
  },
  "committer": {
    "name": "Dan Williams",
    "email": "dan.j.williams@intel.com",
    "time": "Fri Jul 13 08:06:16 2007 -0700"
  },
  "message": "md: handle_stripe5 - add request/completion logic for async write ops\n\nAfter handle_stripe5 decides whether it wants to perform a\nread-modify-write, or a reconstruct write it calls\nhandle_write_operations5.  A read-modify-write operation will perform an\nxor subtraction of the blocks marked with the R5_Wantprexor flag, copy the\nnew data into the stripe (biodrain) and perform a postxor operation across\nall up-to-date blocks to generate the new parity.  A reconstruct write is run\nwhen all blocks are already up-to-date in the cache so all that is needed\nis a biodrain and postxor.\n\nOn the completion path STRIPE_OP_PREXOR will be set if the operation was a\nread-modify-write.  The STRIPE_OP_BIODRAIN flag is used in the completion\npath to differentiate write-initiated postxor operations versus\nexpansion-initiated postxor operations.  Completion of a write triggers i/o\nto the drives.\n\nChangelog:\n* make the \u0027rcw\u0027 parameter to handle_write_operations5 a simple flag, Neil Brown\n* remove test_and_set/test_and_clear BUG_ONs, Neil Brown\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nAcked-By: NeilBrown \u003cneilb@suse.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d89a25e7c17bb0d50b0bc78bb290877ddb31ea8a",
      "old_mode": 33188,
      "old_path": "drivers/md/raid5.c",
      "new_id": "d9521aa69461040f08b151f002e8c2e283a8352c",
      "new_mode": 33188,
      "new_path": "drivers/md/raid5.c"
    }
  ]
}
