)]}'
{
  "commit": "ecc65c9b3f9b9d740a5deade3d85b39be56401b6",
  "tree": "e6b4e827befc6849716689f573c89aa0a41e5d26",
  "parents": [
    "f0e43bcdebf709d747a3effb210aff1941e819ab"
  ],
  "author": {
    "name": "Dan Williams",
    "email": "dan.j.williams@intel.com",
    "time": "Sat Jun 28 08:31:57 2008 +1000"
  },
  "committer": {
    "name": "Neil Brown",
    "email": "neilb@notabene.brown",
    "time": "Sat Jun 28 08:31:57 2008 +1000"
  },
  "message": "md: replace STRIPE_OP_CHECK with \u0027check_states\u0027\n\nFrom: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\nThe STRIPE_OP_* flags record the state of stripe operations which are\nperformed outside the stripe lock.  Their use in indicating which\noperations need to be run is straightforward; however, interpolating what\nthe next state of the stripe should be based on a given combination of\nthese flags is not straightforward, and has led to bugs.  An easier to read\nimplementation with minimal degrees of freedom is needed.\n\nTowards this goal, this patch introduces explicit states to replace what was\npreviously interpolated from the STRIPE_OP_* flags.  For now this only converts\nthe handle_parity_checks5 path, removing a user of the\nops.{pending,ack,complete,count} fields of struct stripe_operations.\n\nThis conversion also found a remaining issue with the current code.  There is\na small window for a drive to fail between when we schedule a repair and when\nthe parity calculation for that repair completes.  When this happens we will\nwriteback to \u0027failed_num\u0027 when we really want to write back to \u0027pd_idx\u0027.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6f3dd12dd3a47370b140429c312ad5907147e7d5",
      "old_mode": 33188,
      "old_path": "drivers/md/raid5.c",
      "new_id": "544e1600f20828ed24532787ef06b14b69456803",
      "new_mode": 33188,
      "new_path": "drivers/md/raid5.c"
    },
    {
      "type": "modify",
      "old_id": "1301195abf4b6a7f261b42818b5dc9a3424a9709",
      "old_mode": 33188,
      "old_path": "include/linux/raid/raid5.h",
      "new_id": "2c96d5fd54bff4e441374f596b0f564c730d6d3d",
      "new_mode": 33188,
      "new_path": "include/linux/raid/raid5.h"
    }
  ]
}
