)]}'
{
  "commit": "6a8736d10cb413be95ea443ba40f25c93f4ef9b2",
  "tree": "0b0bb541cfe73fbbd25a1b39585a97fa923270d0",
  "parents": [
    "29e4013de7ad950280e4b220894986866697d419"
  ],
  "author": {
    "name": "Tejun Heo",
    "email": "tj@kernel.org",
    "time": "Wed Sep 08 18:07:00 2010 +0200"
  },
  "committer": {
    "name": "Jens Axboe",
    "email": "jaxboe@fusionio.com",
    "time": "Fri Sep 10 12:35:38 2010 +0200"
  },
  "message": "dm: relax ordering of bio-based flush implementation\n\nUnlike REQ_HARDBARRIER, REQ_FLUSH/FUA doesn\u0027t mandate any ordering\nagainst other bio\u0027s.  This patch relaxes ordering around flushes.\n\n* A flush bio is no longer deferred to workqueue directly.  It\u0027s\n  processed like other bio\u0027s but __split_and_process_bio() uses\n  md-\u003eflush_bio as the clone source.  md-\u003eflush_bio is initialized to\n  empty flush during md initialization and shared for all flushes.\n\n* As a flush bio now travels through the same execution path as other\n  bio\u0027s, there\u0027s no need for dedicated error handling path either.  It\n  can use the same error handling path in dec_pending().  Dedicated\n  error handling removed along with md-\u003eflush_error.\n\n* When dec_pending() detects that a flush has completed, it checks\n  whether the original bio has data.  If so, the bio is queued to the\n  deferred list w/ REQ_FLUSH cleared; otherwise, it\u0027s completed.\n\n* As flush sequencing is handled in the usual issue/completion path,\n  dm_wq_work() no longer needs to handle flushes differently.  Now its\n  only responsibility is re-issuing deferred bio\u0027s the same way as\n  _dm_request() would.  REQ_FLUSH handling logic including\n  process_flush() is dropped.\n\n* There\u0027s no reason for queue_io() and dm_wq_work() write lock\n  dm-\u003eio_lock.  queue_io() now only uses md-\u003edeferred_lock and\n  dm_wq_work() read locks dm-\u003eio_lock.\n\n* bio\u0027s no longer need to be queued on the deferred list while a flush\n  is in progress making DMF_QUEUE_IO_TO_THREAD unncessary.  Drop it.\n\nThis avoids stalling the device during flushes and simplifies the\nimplementation.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "65114e4d9f6500869b5fa287f7fc77edda24a677",
      "old_mode": 33188,
      "old_path": "drivers/md/dm.c",
      "new_id": "2011704b8ba0ca515159dfec69552c46c942162e",
      "new_mode": 33188,
      "new_path": "drivers/md/dm.c"
    }
  ]
}
