)]}'
{
  "log": [
    {
      "commit": "b0d8ed4d96a26ef3ac54a4aa8911c9413070662e",
      "tree": "b43cc88d671e85840a625cdb0de75754182043ac",
      "parents": [
        "df5d2e9089c7d5b8c46f767e4278610ea3e815b9"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:49 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:49 2013 +0000"
      },
      "message": "dm: add target num_write_bios fn\n\nAdd a num_write_bios function to struct target.\n\nIf an instance of a target sets this, it will be queried before the\ntarget\u0027s mapping function is called on a write bio, and the response\ncontrols the number of copies of the write bio that the target will\nreceive.\n\nThis provides a convenient way for a target to send the same data to\nmore than one device.  The new cache target uses this in writethrough\nmode, to send the data both to the cache and the backing device.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5f01520415e82f8e354807484ef842335070a3bd",
      "tree": "0100b4309d01d22bd3726b20d76b5cd56c64df5e",
      "parents": [
        "23e5083b4d47e778bf7983329989dab7543def14"
      ],
      "author": {
        "name": "Jun\u0027ichi Nomura",
        "email": "j-nomura@ce.jp.nec.com",
        "time": "Fri Mar 01 22:45:48 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:48 2013 +0000"
      },
      "message": "dm: merge io_pool and tio_pool\n\nThis patch merges io_pool and tio_pool into io_pool and cleans up\nrelated functions.\n\nThough device-mapper used to have 2 pools of objects for each dm device,\nthe use of bioset frontbad for per-bio data has shrunk the number of\npools to 1 for both bio-based and request-based device types.\n(See c0820cf5 \"dm: introduce per_bio_data\" and\n 94818742 \"dm: Use bioset\u0027s front_pad for dm_rq_clone_bio_info\")\n\nSo dm no longer has to maintain 2 different pointers.\n\nNo functional changes.\n\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "23e5083b4d47e778bf7983329989dab7543def14",
      "tree": "2df0c48d02a4af159cbbe08231a26d94143cc809",
      "parents": [
        "87eb5b21d92a92ac2da3163039d62df88c2b8422"
      ],
      "author": {
        "name": "Jun\u0027ichi Nomura",
        "email": "j-nomura@ce.jp.nec.com",
        "time": "Fri Mar 01 22:45:48 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:48 2013 +0000"
      },
      "message": "dm: remove unused _rq_bio_info_cache\n\nRemove _rq_bio_info_cache, which is no longer used.\nNo functional changes.\n\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "87eb5b21d92a92ac2da3163039d62df88c2b8422",
      "tree": "ada6ec7e575e4b95a018ecbe023af135da2b639e",
      "parents": [
        "23cb21092eb9dcec9d3604b68d95192b79915890"
      ],
      "author": {
        "name": "Mike Christie",
        "email": "michaelc@cs.wisc.edu",
        "time": "Fri Mar 01 22:45:48 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:48 2013 +0000"
      },
      "message": "dm: fix limits initialization when there are no data devices\n\ndm_calculate_queue_limits will first reset the provided limits to\ndefaults using blk_set_stacking_limits; whereby defeating the purpose of\nretaining the original live table\u0027s limits -- as was intended via commit\n3ae706561637331aa578e52bb89ecbba5edcb7a9 (\"dm: retain table limits when\nswapping to new table with no devices\").\n\nFix this improper limits initialization (in the no data devices case) by\navoiding the call to dm_calculate_queue_limits.\n\n[patch header revised by Mike Snitzer]\n\nSigned-off-by: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@vger.kernel.org # v3.6+\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "e4c938111f25dbbf2579e65ce4a7cb2d20a59308",
      "tree": "4aa990cb93b7ea3318a1ebde458044c57f87d1f0",
      "parents": [
        "14fe594d679c9ba8c8e3d6ad1a3ed9c0ba336df0"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:47 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:47 2013 +0000"
      },
      "message": "dm: refactor bio cloning\n\nRefactor part of the bio splitting and cloning code to try to make it\neasier to understand.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "14fe594d679c9ba8c8e3d6ad1a3ed9c0ba336df0",
      "tree": "9b0da04f6ddf9024f69f2196853b79c9ba6a440e",
      "parents": [
        "55a62eef8d1b50ceff3b7bf46851103bdcc7e5b0"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:47 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:47 2013 +0000"
      },
      "message": "dm: rename bio cloning functions\n\nRename functions involved in splitting and cloning bios.\n\nThe sequence of functions is now:\n  (1) __split_and_process* - entry point that selects the processing strategy\n  (2) __send* - prepare the details for each bio needed and loop through them\n  (3) __clone_and_map* - creates a clone and maps it\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "55a62eef8d1b50ceff3b7bf46851103bdcc7e5b0",
      "tree": "7fb8ce46abe5e6f4a0a2dbcf2d3c848fdbfe4a56",
      "parents": [
        "bd2a49b86d9aae0c505dcc99c0a073f9da2cc889"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:47 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:47 2013 +0000"
      },
      "message": "dm: rename request variables to bios\n\nUse \u0027bio\u0027 in the name of variables and functions that deal with\nbios rather than \u0027request\u0027 to avoid confusion with the normal\nblock layer use of \u0027request\u0027.\n\nNo functional changes.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "bd2a49b86d9aae0c505dcc99c0a073f9da2cc889",
      "tree": "cf11f71d96195abd2035695c5acf1fd2c0c789b1",
      "parents": [
        "88ae4c5294b319431c8c2ec86495b2de295adf62"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:46 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:46 2013 +0000"
      },
      "message": "dm: clean up clone_bio\n\nRemove the no-longer-used struct bio_set argument from clone_bio and split_bvec.\nUse tio-\u003eti in __map_bio() instead of passing in ti.\nFactor out some code for setting up cloned bios.\nTake target_request_nr as a parameter to alloc_tio().\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "16245bdc9d3e22d1460341a655c8b5288953bc14",
      "tree": "61b6373392d2c074c2fc18203c6b9134174bed4b",
      "parents": [
        "b6669737d3db7df79fad07180837c23dbe581db5"
      ],
      "author": {
        "name": "Jun\u0027ichi Nomura",
        "email": "j-nomura@ce.jp.nec.com",
        "time": "Fri Mar 01 22:45:44 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:44 2013 +0000"
      },
      "message": "dm: do not replace bioset for request based dm\n\nThis patch fixes a regression introduced in v3.8, which causes oops\nlike this when dm-multipath is used:\n\ngeneral protection fault: 0000 [#1] SMP\nRIP: 0010:[\u003cffffffff810fe754\u003e]  [\u003cffffffff810fe754\u003e] mempool_free+0x24/0xb0\nCall Trace:\n  \u003cIRQ\u003e\n  [\u003cffffffff81187417\u003e] bio_put+0x97/0xc0\n  [\u003cffffffffa02247a5\u003e] end_clone_bio+0x35/0x90 [dm_mod]\n  [\u003cffffffff81185efd\u003e] bio_endio+0x1d/0x30\n  [\u003cffffffff811f03a3\u003e] req_bio_endio.isra.51+0xa3/0xe0\n  [\u003cffffffff811f2f68\u003e] blk_update_request+0x118/0x520\n  [\u003cffffffff811f3397\u003e] blk_update_bidi_request+0x27/0xa0\n  [\u003cffffffff811f343c\u003e] blk_end_bidi_request+0x2c/0x80\n  [\u003cffffffff811f34d0\u003e] blk_end_request+0x10/0x20\n  [\u003cffffffffa000b32b\u003e] scsi_io_completion+0xfb/0x6c0 [scsi_mod]\n  [\u003cffffffffa000107d\u003e] scsi_finish_command+0xbd/0x120 [scsi_mod]\n  [\u003cffffffffa000b12f\u003e] scsi_softirq_done+0x13f/0x160 [scsi_mod]\n  [\u003cffffffff811f9fd0\u003e] blk_done_softirq+0x80/0xa0\n  [\u003cffffffff81044551\u003e] __do_softirq+0xf1/0x250\n  [\u003cffffffff8142ee8c\u003e] call_softirq+0x1c/0x30\n  [\u003cffffffff8100420d\u003e] do_softirq+0x8d/0xc0\n  [\u003cffffffff81044885\u003e] irq_exit+0xd5/0xe0\n  [\u003cffffffff8142f3e3\u003e] do_IRQ+0x63/0xe0\n  [\u003cffffffff814257af\u003e] common_interrupt+0x6f/0x6f\n  \u003cEOI\u003e\n  [\u003cffffffffa021737c\u003e] srp_queuecommand+0x8c/0xcb0 [ib_srp]\n  [\u003cffffffffa0002f18\u003e] scsi_dispatch_cmd+0x148/0x310 [scsi_mod]\n  [\u003cffffffffa000a38e\u003e] scsi_request_fn+0x31e/0x520 [scsi_mod]\n  [\u003cffffffff811f1e57\u003e] __blk_run_queue+0x37/0x50\n  [\u003cffffffff811f1f69\u003e] blk_delay_work+0x29/0x40\n  [\u003cffffffff81059003\u003e] process_one_work+0x1c3/0x5c0\n  [\u003cffffffff8105b22e\u003e] worker_thread+0x15e/0x440\n  [\u003cffffffff8106164b\u003e] kthread+0xdb/0xe0\n  [\u003cffffffff8142db9c\u003e] ret_from_fork+0x7c/0xb0\n\nThe regression was introduced by the change\nc0820cf5 \"dm: introduce per_bio_data\", where dm started to replace\nbioset during table replacement.\nFor bio-based dm, it is good because clone bios do not exist during the\ntable replacement.\nFor request-based dm, however, (not-yet-mapped) clone bios may stay in\nrequest queue and survive during the table replacement.\nSo freeing the old bioset could cause the oops in bio_put().\n\nSince the size of front_pad may change only with bio-based dm,\nit is not necessary to replace bioset for request-based dm.\n\nReported-by: Bart Van Assche \u003cbvanassche@acm.org\u003e\nTested-by: Bart Van Assche \u003cbvanassche@acm.org\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nAcked-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ee89f81252179dcbf6cd65bd48299f5e52292d88",
      "tree": "805846cd12821f84cfe619d44c9e3e36e0b0f9e6",
      "parents": [
        "21f3b24da9328415792efc780f50b9f434c12465",
        "de33127d8d3f1d570aad8c2223cd81b206636bc1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 28 12:52:24 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 28 12:52:24 2013 -0800"
      },
      "message": "Merge branch \u0027for-3.9/core\u0027 of git://git.kernel.dk/linux-block\n\nPull block IO core bits from Jens Axboe:\n \"Below are the core block IO bits for 3.9.  It was delayed a few days\n  since my workstation kept crashing every 2-8h after pulling it into\n  current -git, but turns out it is a bug in the new pstate code (divide\n  by zero, will report separately).  In any case, it contains:\n\n   - The big cfq/blkcg update from Tejun and and Vivek.\n\n   - Additional block and writeback tracepoints from Tejun.\n\n   - Improvement of the should sort (based on queues) logic in the plug\n     flushing.\n\n   - _io() variants of the wait_for_completion() interface, using\n     io_schedule() instead of schedule() to contribute to io wait\n     properly.\n\n   - Various little fixes.\n\n  You\u0027ll get two trivial merge conflicts, which should be easy enough to\n  fix up\"\n\nFix up the trivial conflicts due to hlist traversal cleanups (commit\nb67bfe0d42ca: \"hlist: drop the node parameter from iterators\").\n\n* \u0027for-3.9/core\u0027 of git://git.kernel.dk/linux-block: (39 commits)\n  block: remove redundant check to bd_openers()\n  block: use i_size_write() in bd_set_size()\n  cfq: fix lock imbalance with failed allocations\n  drivers/block/swim3.c: fix null pointer dereference\n  block: don\u0027t select PERCPU_RWSEM\n  block: account iowait time when waiting for completion of IO request\n  sched: add wait_for_completion_io[_timeout]\n  writeback: add more tracepoints\n  block: add block_{touch|dirty}_buffer tracepoint\n  buffer: make touch_buffer() an exported function\n  block: add @req to bio_{front|back}_merge tracepoints\n  block: add missing block_bio_complete() tracepoint\n  block: Remove should_sort judgement when flush blk_plug\n  block,elevator: use new hashtable implementation\n  cfq-iosched: add hierarchical cfq_group statistics\n  cfq-iosched: collect stats from dead cfqgs\n  cfq-iosched: separate out cfqg_stats_reset() from cfq_pd_reset_stats()\n  blkcg: make blkcg_print_blkgs() grab q locks instead of blkcg lock\n  block: RCU free request_queue\n  blkcg: implement blkg_[rw]stat_recursive_sum() and blkg_[rw]stat_merge()\n  ...\n"
    },
    {
      "commit": "c9d76be696bbb76ba1081d2b0fc0086f449788da",
      "tree": "67040374b1c276b0be5b2c5373e4af74f6e2f08d",
      "parents": [
        "80f22b4430cd5c108a4676803439ecb0c5cfeca1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 27 17:04:26 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:17 2013 -0800"
      },
      "message": "dm: convert to idr_alloc()\n\nConvert to the much saner new idr interface.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Alasdair Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "adaedbd9fe5c07e7fbd5854c0cfe5ce1dac7d9bd",
      "tree": "73efd6e24cf2fac1be9679b37a353dd053fc2a1a",
      "parents": [
        "4d53233a36fdda567cd4d080e27e1ee4b669ddd1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 27 17:03:41 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:13 2013 -0800"
      },
      "message": "dm: don\u0027t use idr_remove_all()\n\nidr_destroy() can destroy idr by itself and idr_remove_all() is being\ndeprecated.  Drop its usage.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Alasdair Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fe7af2d3babefabd96a39e8b0d58ede88f3c7993",
      "tree": "43f3facbed2274c5cec7df6ef2fc9ecdfa527f4c",
      "parents": [
        "0f640dca08330dfc7820d610578e5935b5e654b2"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 31 14:23:36 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 31 14:23:36 2013 +0000"
      },
      "message": "dm: fix write same requests counting\n\nWhen processing write same requests, fix dm to send the configured\nnumber of WRITE SAME requests to the target rather than the number of\ndiscards, which is not always the same.\n\nDevice-mapper WRITE SAME support was introduced by commit\n23508a96cd2e857d57044a2ed7d305f2d9daf441 (\"dm: add WRITE SAME support\").\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\n"
    },
    {
      "commit": "3a366e614d0837d9fc23f78cdb1a1186ebc3387f",
      "tree": "5be6ec716687234ac1e6202db62c84ee1d2246be",
      "parents": [
        "ac9a19745196388ae5d828c0be7a1d6e472101f3"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jan 11 13:06:33 2013 -0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Jan 14 15:00:36 2013 +0100"
      },
      "message": "block: add missing block_bio_complete() tracepoint\n\nbio completion didn\u0027t kick block_bio_complete TP.  Only dm was\nexplicitly triggering the TP on IO completion.  This makes\nblock_bio_complete TP useless for tracers which want to know about\nbios, and all other bio based drivers skip generating blktrace\ncompletion events.\n\nThis patch makes all bio completions via bio_endio() generate\nblock_bio_complete TP.\n\n* Explicit trace_block_bio_complete() invocation removed from dm and\n  the trace point is unexported.\n\n* @rq dropped from trace_block_bio_complete().  bios may fly around\n  w/o queue associated.  Verifying and accessing the assocaited queue\n  belongs to TP probes.\n\n* blktrace now gets both request and bio completions.  Make it ignore\n  bio completions if request completion path is happening.\n\nThis makes all bio based drivers generate blktrace completion events\nproperly and makes the block_bio_complete TP actually useful.\n\nv2: With this change, block_bio_complete TP could be invoked on sg\n    commands which have bio\u0027s with %NULL bi_bdev.  Update TP\n    assignment code to check whether bio-\u003ebi_bdev is %NULL before\n    dereferencing.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nOriginal-patch-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Alasdair Kergon \u003cagk@redhat.com\u003e\nCc: dm-devel@redhat.com\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "7de3ee57da4b717050e79c9313a9bf66ccc72519",
      "tree": "dd9bf250c6d9139528e563167cabdb811c8fd6cb",
      "parents": [
        "ee18026ac69efba804144541171299efd41747d2"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Dec 21 20:23:41 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:41 2012 +0000"
      },
      "message": "dm: remove map_info\n\nThis patch removes map_info from bio-based device mapper targets.\nmap_info is still used for request-based targets.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ddbd658f6446a35e4d6ba84812fd71023320cae2",
      "tree": "6c5bf9fd1cab10d20c21eb8582a5cc73f1bccc85",
      "parents": [
        "42bc954f2a4525c9034667dedc9bd1c342208013"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Dec 21 20:23:39 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:39 2012 +0000"
      },
      "message": "dm: move target request nr to dm_target_io\n\nThis patch moves target_request_nr from map_info to dm_target_io and\nmakes it accessible with dm_bio_get_target_request_nr.\n\nThis patch is a preparation for the next patch that removes map_info.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c0820cf5ad09522bdd9ff68e84841a09c9f339d8",
      "tree": "04817d6d9a7d213ac96d1e014a9714f8f29ff07a",
      "parents": [
        "70d6c400acc386ea910c77318688541fc32e7ce8"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Dec 21 20:23:38 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:38 2012 +0000"
      },
      "message": "dm: introduce per_bio_data\n\nIntroduce a field per_bio_data_size in struct dm_target.\n\nTargets can set this field in the constructor. If a target sets this\nfield to a non-zero value, \"per_bio_data_size\" bytes of auxiliary data\nare allocated for each bio submitted to the target. These data can be\nused for any purpose by the target and help us improve performance by\nremoving some per-target mempools.\n\nPer-bio data is accessed with dm_per_bio_data. The\nargument data_size must be the same as the value per_bio_data_size in\ndm_target.\n\nIf the target has a pointer to per_bio_data, it can get a pointer to\nthe bio with dm_bio_from_per_bio_data() function (data_size must be the\nsame as the value passed to dm_per_bio_data).\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "23508a96cd2e857d57044a2ed7d305f2d9daf441",
      "tree": "149ead46c45a0fdd159fb32a6bfb6439eae3d652",
      "parents": [
        "d54eaa5a0fde0a202e4e91f200f818edcef15bee"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Dec 21 20:23:37 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:37 2012 +0000"
      },
      "message": "dm: add WRITE SAME support\n\nWRITE SAME bios have a payload that contain a single page.  When\ncloning WRITE SAME bios DM has no need to modify the bi_io_vec\nattributes (and doing so would be detrimental).  DM need only alter the\nstart and end of the WRITE SAME bio accordingly.\n\nRather than duplicate __clone_and_map_discard, factor out a common\nfunction that is also used by __clone_and_map_write_same.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a8c32a5c98943d370ea606a2e7dc04717eb92206",
      "tree": "234dc265f7af235e1360da7d6e862abacd2f32c0",
      "parents": [
        "eac7cc52c6b410e542af431b2ee93f3d7dbfb6af"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Nov 06 12:24:26 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Nov 23 14:32:54 2012 +0100"
      },
      "message": "dm: fix deadlock with request based dm and queue request_fn recursion\n\nRequest based dm attempts to re-run the request queue off the\nrequest completion path. If used with a driver that potentially does\nend_io from its request_fn, we could deadlock trying to recurse\nback into request dispatch. Fix this by punting the request queue\nrun to kblockd.\n\nTested to fix a quickly reproducible deadlock in such a scenario.\n\nCc: stable@kernel.org\nAcked-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "dba141601d1327146c84b575bd581ea8730e901c",
      "tree": "fb2f82b07d682e5e8cbe5bca94249ad7dc6bbbd7",
      "parents": [
        "4f81a4176297db57c7ef3b2893092dd837c1e2a8"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Oct 12 21:02:15 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 12 21:02:15 2012 +0100"
      },
      "message": "dm: store dm_target_io in bio front_pad\n\nUse the recently-added bio front_pad field to allocate struct dm_target_io.\n\nPrior to this patch, dm_target_io was allocated from a mempool. For each\ndm_target_io, there is exactly one bio allocated from a bioset.\n\nThis patch merges these two allocations into one allocation: we create a\nbioset with front_pad equal to the size of dm_target_io so that every\nbio allocated from the bioset has sizeof(struct dm_target_io) bytes\nbefore it. We allocate a bio and use the bytes before the bio as\ndm_target_io.\n\n_tio_cache is removed and the tio_pool mempool is now only used for\nrequest-based devices.\n\nThis idea was introduced by Kent Overstreet.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nCc: Kent Overstreet \u003ckoverstreet@google.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: tj@kernel.org\nCc: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nCc: Bill Pemberton \u003cwfp5p@viridian.itc.virginia.edu\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ce40be7a820bb393ac4ac69865f018d2f4038cf0",
      "tree": "b1fe5a93346eb06f22b1c303d63ec5456d7212ab",
      "parents": [
        "ba0a5a36f60e4c1152af3a2ae2813251974405bf",
        "02f3939e1a9357b7c370a4a69717cf9c02452737"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 11 09:04:23 2012 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 11 09:04:23 2012 +0900"
      },
      "message": "Merge branch \u0027for-3.7/core\u0027 of git://git.kernel.dk/linux-block\n\nPull block IO update from Jens Axboe:\n \"Core block IO bits for 3.7.  Not a huge round this time, it contains:\n\n   - First series from Kent cleaning up and generalizing bio allocation\n     and freeing.\n\n   - WRITE_SAME support from Martin.\n\n   - Mikulas patches to prevent O_DIRECT crashes when someone changes\n     the block size of a device.\n\n   - Make bio_split() work on data-less bio\u0027s (like trim/discards).\n\n   - A few other minor fixups.\"\n\nFixed up silent semantic mis-merge as per Mikulas Patocka and Andrew\nMorton.  It is due to the VM no longer using a prio-tree (see commit\n6b2dbba8b6ac: \"mm: replace vma prio_tree with an interval tree\").\n\nSo make set_blocksize() use mapping_mapped() instead of open-coding the\ninternal VM knowledge that has changed.\n\n* \u0027for-3.7/core\u0027 of git://git.kernel.dk/linux-block: (26 commits)\n  block: makes bio_split support bio without data\n  scatterlist: refactor the sg_nents\n  scatterlist: add sg_nents\n  fs: fix include/percpu-rwsem.h export error\n  percpu-rw-semaphore: fix documentation typos\n  fs/block_dev.c:1644:5: sparse: symbol \u0027blkdev_mmap\u0027 was not declared\n  blockdev: turn a rw semaphore into a percpu rw semaphore\n  Fix a crash when block device is read and block size is changed at the same time\n  block: fix request_queue-\u003eflags initialization\n  block: lift the initial queue bypass mode on blk_register_queue() instead of blk_init_allocated_queue()\n  block: ioctl to zero block ranges\n  block: Make blkdev_issue_zeroout use WRITE SAME\n  block: Implement support for WRITE SAME\n  block: Consolidate command flag and queue limit checks for merges\n  block: Clean up special command handling logic\n  block/blk-tag.c: Remove useless kfree\n  block: remove the duplicated setting for congestion_threshold\n  block: reject invalid queue attribute values\n  block: Add bio_clone_bioset(), bio_clone_kmalloc()\n  block: Consolidate bio_alloc_bioset(), bio_kmalloc()\n  ...\n"
    },
    {
      "commit": "3ae706561637331aa578e52bb89ecbba5edcb7a9",
      "tree": "681ff02fc4687617e9293ac3c28919ec26f225b0",
      "parents": [
        "c3c4555edd10dbc0b388a0125b9c50de5e79af05"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Wed Sep 26 23:45:45 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Sep 26 23:45:45 2012 +0100"
      },
      "message": "dm: retain table limits when swapping to new table with no devices\n\nAdd a safety net that will re-use the DM device\u0027s existing limits in the\nevent that DM device has a temporary table that doesn\u0027t have any\ncomponent devices.  This is to reduce the chance that requests not\nrespecting the hardware limits will reach the device.\n\nDM recalculates queue limits based only on devices which currently exist\nin the table.  This creates a problem in the event all devices are\ntemporarily removed such as all paths being lost in multipath.  DM will\nreset the limits to the maximum permissible, which can then assemble\nrequests which exceed the limits of the paths when the paths are\nrestored.  The request will fail the blk_rq_check_limits() test when\nsent to a path with lower limits, and will be retried without end by\nmultipath.  This became a much bigger issue after v3.6 commit fe86cdcef\n(\"block: do not artificially constrain max_sectors for stacking\ndrivers\").\n\nReported-by: David Jeffery \u003cdjeffery@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ba1cbad93dd47223b1f3b8edd50dd9ef2abcb2ed",
      "tree": "3cf301491e0c9ce60a8b90f8e9313ce95d75d695",
      "parents": [
        "7ba10aa6fbac7158a50bec142132b04bc480bb29"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Wed Sep 26 23:45:42 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Sep 26 23:45:42 2012 +0100"
      },
      "message": "dm: handle requests beyond end of device instead of using BUG_ON\n\nThe access beyond the end of device BUG_ON that was introduced to\ndm_request_fn via commit 29e4013de7ad950280e4b2208 (\"dm: implement\nREQ_FLUSH/FUA support for request-based dm\") was an overly\ndrastic (but simple) response to this situation.\n\nI have received a report that this BUG_ON was hit and now think\nit would be better to use dm_kill_unmapped_request() to fail the clone\nand original request with -EIO.\n\nmap_request() will assign the valid target returned by\ndm_table_find_target to tio-\u003eti.  But when the target\nisn\u0027t valid tio-\u003eti is never assigned (because map_request isn\u0027t\ncalled); so add a check for tio-\u003eti !\u003d NULL to dm_done().\n\nReported-by: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: stable@vger.kernel.org # v2.6.37+\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "bf800ef1816b4283a885e55ad38068aec9711e4d",
      "tree": "c99cbe70b68ede65b478b3006a7ed7e34b453f3d",
      "parents": [
        "3f86a82aeb03e6100f7ab39f4702e033a5e38166"
      ],
      "author": {
        "name": "Kent Overstreet",
        "email": "koverstreet@google.com",
        "time": "Thu Sep 06 15:35:02 2012 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Sep 09 10:35:39 2012 +0200"
      },
      "message": "block: Add bio_clone_bioset(), bio_clone_kmalloc()\n\nPreviously, there was bio_clone() but it only allocated from the fs bio\nset; as a result various users were open coding it and using\n__bio_clone().\n\nThis changes bio_clone() to become bio_clone_bioset(), and then we add\nbio_clone() and bio_clone_kmalloc() as wrappers around it, making use of\nthe functionality the last patch adedd.\n\nThis will also help in a later patch changing how bio cloning works.\n\nSigned-off-by: Kent Overstreet \u003ckoverstreet@google.com\u003e\nCC: Jens Axboe \u003caxboe@kernel.dk\u003e\nCC: NeilBrown \u003cneilb@suse.de\u003e\nCC: Alasdair Kergon \u003cagk@redhat.com\u003e\nCC: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nCC: Jeff Garzik \u003cjeff@garzik.org\u003e\nAcked-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "94818742316e27d01506240cf8b07d69844d31af",
      "tree": "d940b88519a4755422cfcfcffc63174b918fdc92",
      "parents": [
        "1e2a410ff71504a64d1af2e354287ac51aeac1b0"
      ],
      "author": {
        "name": "Kent Overstreet",
        "email": "koverstreet@google.com",
        "time": "Fri Sep 07 13:44:01 2012 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Sep 09 10:35:38 2012 +0200"
      },
      "message": "dm: Use bioset\u0027s front_pad for dm_rq_clone_bio_info\n\nPreviously, dm_rq_clone_bio_info needed to be freed by the bio\u0027s\ndestructor to avoid a memory leak in the blk_rq_prep_clone() error path.\nThis gets rid of a memory allocation and means we can kill\ndm_rq_bio_destructor.\n\nThe _rq_bio_info_cache kmem cache is unused now and needs to be deleted,\nbut due to the way io_pool is used and overloaded this looks not quite\ntrivial so I\u0027m leaving it for a later patch.\n\nv6: Fix comment on struct dm_rq_clone_bio_info, per Tejun\n\nSigned-off-by: Kent Overstreet \u003ckoverstreet@google.com\u003e\nCC: Alasdair Kergon \u003cagk@redhat.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "1e2a410ff71504a64d1af2e354287ac51aeac1b0",
      "tree": "e4ae4669d958fc932e5ae67cafd8de860f1f91c9",
      "parents": [
        "395c72a707d966b36d5a42fe12c3a237ded3a0d9"
      ],
      "author": {
        "name": "Kent Overstreet",
        "email": "koverstreet@google.com",
        "time": "Thu Sep 06 15:34:56 2012 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Sep 09 10:35:38 2012 +0200"
      },
      "message": "block: Ues bi_pool for bio_integrity_alloc()\n\nNow that bios keep track of where they were allocated from,\nbio_integrity_alloc_bioset() becomes redundant.\n\nRemove bio_integrity_alloc_bioset() and drop bio_set argument from the\nrelated functions and make them use bio-\u003ebi_pool.\n\nSigned-off-by: Kent Overstreet \u003ckoverstreet@google.com\u003e\nCC: Jens Axboe \u003caxboe@kernel.dk\u003e\nCC: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "395c72a707d966b36d5a42fe12c3a237ded3a0d9",
      "tree": "79e4450a4f31409815d80ee8e1a7e1490a140f22",
      "parents": [
        "eeea3ac912207dcf759b95b2b4c36f96bce583bf"
      ],
      "author": {
        "name": "Kent Overstreet",
        "email": "koverstreet@google.com",
        "time": "Thu Sep 06 15:34:55 2012 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Sep 09 10:35:38 2012 +0200"
      },
      "message": "block: Generalized bio pool freeing\n\nWith the old code, when you allocate a bio from a bio pool you have to\nimplement your own destructor that knows how to find the bio pool the\nbio was originally allocated from.\n\nThis adds a new field to struct bio (bi_pool) and changes\nbio_alloc_bioset() to use it. This makes various bio destructors\nunnecessary, so they\u0027re then deleted.\n\nv6: Explain the temporary if statement in bio_put\n\nSigned-off-by: Kent Overstreet \u003ckoverstreet@google.com\u003e\nCC: Jens Axboe \u003caxboe@kernel.dk\u003e\nCC: NeilBrown \u003cneilb@suse.de\u003e\nCC: Alasdair Kergon \u003cagk@redhat.com\u003e\nCC: Nicholas Bellinger \u003cnab@linux-iscsi.org\u003e\nCC: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Nicholas Bellinger \u003cnab@linux-iscsi.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "7acf0277cea0f2da89ffffcc9892bea23f618e63",
      "tree": "5f5c77f9ab0750826691d53a027cdcd786771fbb",
      "parents": [
        "55f2b8bdb0c7387eb2dc645b9ecbe5d0faa6b54e"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Jul 27 15:08:03 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:03 2012 +0100"
      },
      "message": "dm: introduce split_discard_requests\n\nThis patch introduces a new variable split_discard_requests. It can be\nset by targets so that discard requests are split on max_io_len\nboundaries.\n\nWhen split_discard_requests is not set, discard requests are only split on\nboundaries between targets, as was the case before this patch.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "542f90381422676544382d4071ba44a2de90a0c1",
      "tree": "0eae6798ab2fdef68a0eb1ea5ac14f3cc3ffb740",
      "parents": [
        "1df05483d758ea43abc375869fbe06be506ba827"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Jul 27 15:08:00 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:00 2012 +0100"
      },
      "message": "dm: support non power of two target max_io_len\n\nRemove the restriction that limits a target\u0027s specified maximum incoming\nI/O size to be a power of 2.\n\nRename this setting from \u0027split_io\u0027 to the less-ambiguous \u0027max_io_len\u0027.\nChange it from sector_t to uint32_t, which is plenty big enough, and\nintroduce a wrapper function dm_set_target_max_io_len() to set it.\nUse sector_div() to process it now that it is not necessarily a power of 2.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4d7b38b7d944a79da3793b6c92d38682f3905ac9",
      "tree": "88f187c760c0dfd3cb8d7957a635254b3fcabd36",
      "parents": [
        "574ce07eb0014069f1da763c219bb30ea4c266ec"
      ],
      "author": {
        "name": "Hannes Reinecke",
        "email": "hare@suse.de",
        "time": "Wed Mar 28 18:41:25 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:25 2012 +0100"
      },
      "message": "dm: clear bi_end_io on remapping failure\n\nAs a precaution, set bi_end_io to NULL when failing to remap.\n\nSigned-off-by: Hannes Reinecke \u003chare@suse.de\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ff01bb4832651c6d25ac509a06a10fcbd75c461c",
      "tree": "bbfdebd317db97d346df78293566f36e883b1be9",
      "parents": [
        "94ea4158f1733e3b10cef067d535f504866e0c41"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Sep 16 02:31:11 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:07 2012 -0500"
      },
      "message": "fs: move code out of buffer.c\n\nMove invalidate_bdev, block_sync_page into fs/block_dev.c.  Export\nkill_bdev as well, so brd doesn\u0027t have to open code it.  Reduce\nbuffer_head.h requirement accordingly.\n\nRemoved a rather large comment from invalidate_bdev, as it looked a bit\nobsolete to bother moving.  The small comment replacing it says enough.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b4fdcb02f1e39c27058a885905bd0277370ba441",
      "tree": "fd4cfd1994f21f44afe5e7904681fb5ac09f81b8",
      "parents": [
        "044595d4e448305fbaec472eb7d22636d24e7d8c",
        "6dd9ad7df2019b1e33a372a501907db293ebcd0d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 04 17:06:58 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 04 17:06:58 2011 -0700"
      },
      "message": "Merge branch \u0027for-3.2/core\u0027 of git://git.kernel.dk/linux-block\n\n* \u0027for-3.2/core\u0027 of git://git.kernel.dk/linux-block: (29 commits)\n  block: don\u0027t call blk_drain_queue() if elevator is not up\n  blk-throttle: use queue_is_locked() instead of lockdep_is_held()\n  blk-throttle: Take blkcg-\u003elock while traversing blkcg-\u003epolicy_list\n  blk-throttle: Free up policy node associated with deleted rule\n  block: warn if tag is greater than real_max_depth.\n  block: make gendisk hold a reference to its queue\n  blk-flush: move the queue kick into\n  blk-flush: fix invalid BUG_ON in blk_insert_flush\n  block: Remove the control of complete cpu from bio.\n  block: fix a typo in the blk-cgroup.h file\n  block: initialize the bounce pool if high memory may be added later\n  block: fix request_queue lifetime handling by making blk_queue_cleanup() properly shutdown\n  block: drop @tsk from attempt_plug_merge() and explain sync rules\n  block: make get_request[_wait]() fail if queue is dead\n  block: reorganize throtl_get_tg() and blk_throtl_bio()\n  block: reorganize queue draining\n  block: drop unnecessary blk_get/put_queue() in scsi_cmd_ioctl() and blk_get_tg()\n  block: pass around REQ_* flags instead of broken down booleans during request alloc/free\n  block: move blk_throtl prototypes to block/blk.h\n  block: fix genhd refcounting in blkio_policy_parse_and_set()\n  ...\n\nFix up trivial conflicts due to \"mddev_t\" -\u003e \"struct mddev\" conversion\nand making the request functions be of type \"void\" instead of \"int\" in\n - drivers/md/{faulty.c,linear.c,md.c,md.h,multipath.c,raid0.c,raid1.c,raid10.c,raid5.c}\n - drivers/staging/zram/zram_drv.c\n"
    },
    {
      "commit": "3cf2e4ba74ca1bf5d8ad26cd18592f02b32964f5",
      "tree": "5520a8bcdbabc01956ce774724388e013b6f55f4",
      "parents": [
        "36a0456fbf2d9680bf9af81b39daf4a8e22cb1b8"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:19:06 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:19:06 2011 +0000"
      },
      "message": "dm: export dm get md\n\nExport dm_get_md() for the new thin provisioning target to use.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "36a0456fbf2d9680bf9af81b39daf4a8e22cb1b8",
      "tree": "a19af18640d538e8357c195e6b4c77d0f6c92391",
      "parents": [
        "cc6cbe141a20f6d876b161b60af38d93935bfa85"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:19:04 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:19:04 2011 +0000"
      },
      "message": "dm table: add immutable feature\n\nIntroduce DM_TARGET_IMMUTABLE to indicate that the target type cannot be mixed\nwith any other target type, and once loaded into a device, it cannot be\nreplaced with a table containing a different type.\n\nThe thin provisioning pool device will use this.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fbdc86f3bd597e108fa03d998132d04fcfe1d669",
      "tree": "3d0ad8ea43576c0b57523a71d345a209f6ffd6fa",
      "parents": [
        "71a16736a15e3fd11d283c42aa86bf704f6d25ff"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Mon Oct 31 20:18:56 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:18:56 2011 +0000"
      },
      "message": "dm: remove superfluous smp_mb\n\nSince set_current_state() contains a memory barrier in it,\nan additional barrier isn\u0027t needed.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "71a16736a15e3fd11d283c42aa86bf704f6d25ff",
      "tree": "1c6c54e8229b422756ec775cc04ad0066d1ad0c8",
      "parents": [
        "4693c9668fdcec229825b3763876b4744f9e6d5e"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Mon Oct 31 20:18:54 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:18:54 2011 +0000"
      },
      "message": "dm: use local printk ratelimit\n\nprintk_ratelimit() shares global ratelimiting state with all\nother subsystems, so its usage is discouraged. Instead,\ndefine and use dm\u0027s local state.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5a7bbad27a410350e64a2d7f5ec18fc73836c14f",
      "tree": "3447cd62dbcbd77b4071e2eb7576f1d7632ef2d3",
      "parents": [
        "c20e8de27fef9f59869c81c288ad6cf28200e00c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Sep 12 12:12:01 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Sep 12 12:12:01 2011 +0200"
      },
      "message": "block: remove support for bio remapping from -\u003emake_request\n\nThere is very little benefit in allowing to let a -\u003emake_request\ninstance update the bios device and sector and loop around it in\n__generic_make_request when we can archive the same through calling\ngeneric_make_request from the driver and letting the loop in\ngeneric_make_request handle it.\n\nNote that various drivers got the return value from -\u003emake_request and\nreturned non-zero values for errors.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "c20e8de27fef9f59869c81c288ad6cf28200e00c",
      "tree": "c1d972bfdf6b0f562169a923f2d77f422578fac1",
      "parents": [
        "166e1f901b01872e8b70733a3f2e2c6980389cf8"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Sep 12 12:03:37 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Sep 12 12:08:31 2011 +0200"
      },
      "message": "block: rename __make_request() to blk_queue_bio()\n\nNow that it\u0027s exported, lets put it in a more sane namespace.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "166e1f901b01872e8b70733a3f2e2c6980389cf8",
      "tree": "bb0a52bfe76e60bb430cd6a5f91ceb9b6ecaa7b2",
      "parents": [
        "484fc254b88257a2d8b3759aa062e8e8b35e0988"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Sep 12 12:08:27 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Sep 12 12:08:27 2011 +0200"
      },
      "message": "block: export __make_request\n\nAvoid the hacks need for request based device mappers currently by simply\nexporting the symbol instead of trying to get it through the back door.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "ed8b752bccf2560e305e25125721d2f0ac759e88",
      "tree": "b909fcf21ca7cdda3e7a680b37162212cce99586",
      "parents": [
        "772ae5f54d69c38a5e3c4352c5fdbdaff141af21"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Tue Aug 02 12:32:08 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:08 2011 +0100"
      },
      "message": "dm table: set flush capability based on underlying devices\n\nDM has always advertised both REQ_FLUSH and REQ_FUA flush capabilities\nregardless of whether or not a given DM device\u0027s underlying devices\nalso advertised a need for them.\n\nBlock\u0027s flush-merge changes from 2.6.39 have proven to be more costly\nfor DM devices.  Performance regressions have been reported even when\nDM\u0027s underlying devices do not advertise that they have a write cache.\n\nFix the performance regressions by configuring a DM device\u0027s flushing\ncapabilities based on those of the underlying devices\u0027 capabilities.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "d5b9dd04bd74b774b8e8d93ced7a0d15ad403fa9",
      "tree": "060512c4c411e4adda203fd721b79b50b0ff54df",
      "parents": [
        "08649012545cfb116798260352547cf4d47064ec"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Aug 02 12:32:04 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:04 2011 +0100"
      },
      "message": "dm: ignore merge_bvec for snapshots when safe\n\nAdd a new flag DMF_MERGE_IS_OPTIONAL to struct mapped_device to indicate\nwhether the device can accept bios larger than the size its merge\nfunction returns.  When set, use this to send large bios to snapshots\nwhich can split them if necessary.  Snapshot I/O may be significantly\nfragmented and this approach seems to improve peformance.\n\nBefore the patch, dm_set_device_limits restricted bio size to page size\nif the underlying device had a merge function and the target didn\u0027t\nprovide a merge function.  After the patch, dm_set_device_limits\nrestricts bio size to page size if the underlying device has a merge\nfunction, doesn\u0027t have DMF_MERGE_IS_OPTIONAL flag and the target doesn\u0027t\nprovide a merge function.\n\nThe snapshot target can\u0027t provide a merge function because when the merge\nfunction is called, it is impossible to determine where the bio will be\nremapped.  Previously this led us to impose a 4k limit, which we can\nnow remove if the snapshot store is located on a device without a merge\nfunction.  Together with another patch for optimizing full chunk writes,\nit improves performance from 29MB/s to 40MB/s when writing to the\nfilesystem on snapshot store.\n\nIf the snapshot store is placed on a non-dm device with a merge function\n(such as md-raid), device mapper still limits all bios to page size.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "936688d7eb0f39be96c5791be1a04994cc8d6aa0",
      "tree": "4001f52284d39f5353174096e76b357f52ee2fb7",
      "parents": [
        "283a8328ca5b987e547848de8ff0e28edcfb9e08"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Tue Aug 02 12:32:01 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:01 2011 +0100"
      },
      "message": "dm table: fix discard support\n\nRemove \u0027discards_supported\u0027 from the dm_table structure.  The same\ninformation can be easily discovered from the table\u0027s target(s) in\ndm_table_supports_discards().\n\nBefore this fix dm_table_supports_discards() would skip checking the\nindividual targets\u0027 \u0027discards_supported\u0027 flag if any one target in the\ntable didn\u0027t set num_discard_requests \u003e 0.  Now the per-target\n\u0027discards_supported\u0027 flag is effective at insuring the final DM device\nadvertises discard support.  But, to be clear, targets that don\u0027t\nsupport discards (!num_discard_requests) will not receive discard\nrequests.\n\nAlso DMWARN if a target sets \u0027discards_supported\u0027 override but forgets\nto set \u0027num_discard_requests\u0027.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "d15b774c2920d55e3d58275c97fbe3adc3afde38",
      "tree": "4801d4e5a70f1e8e57475e6ea2f8e1238b6bbc75",
      "parents": [
        "bb91bc7bacb906c9f3a9b22744c53fa7564b51ba"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:01 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:01 2011 +0100"
      },
      "message": "dm: fix idr leak on module removal\n\nDestroy _minor_idr when unloading the core dm module.  (Found by kmemleak.)\n\nCc: stable@kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "1e9bb8808ac11094d711d20d580e7b45a4992d0c",
      "tree": "d0e228b619664b7f507e37e5eba4a5ebeef103a0",
      "parents": [
        "5e84ea3a9c662dc2d7a48703a4468fad954a3b7f"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Tue Mar 22 08:35:35 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Mar 22 08:35:35 2011 +0100"
      },
      "message": "block: fix non-atomic access to genhd inflight structures\n\nAfter the stack plugging introduction, these are called lockless.\nEnsure that the counters are updated atomically.\n\nSigned-off-by: Shaohua Li\u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "a91a2785b200864aef2270ed6a3babac7a253a20",
      "tree": "3d21d7ef82ddabbdbfb74499d68a73f15adc819f",
      "parents": [
        "82f04ab47e1d94d78503591a7460b2cad9601ede"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Thu Mar 17 11:11:05 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 17 11:11:05 2011 +0100"
      },
      "message": "block: Require subsystems to explicitly allocate bio_set integrity mempool\n\nMD and DM create a new bio_set for every metadevice. Each bio_set has an\nintegrity mempool attached regardless of whether the metadevice is\ncapable of passing integrity metadata. This is a waste of memory.\n\nInstead we defer the allocation decision to MD and DM since we know at\nmetadevice creation time whether integrity passthrough is needed or not.\n\nAutomatic integrity mempool allocation can then be removed from\nbioset_create() and we make an explicit integrity allocation for the\nfs_bio_set.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nReported-by: Zdenek Kabelac \u003czkabelac@redhat.com\u003e\nAcked-by: Mike Snitzer \u003csnizer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7eaceaccab5f40bbfda044629a6298616aeaed50",
      "tree": "33954d12f63e25a47eb6d86ef3d3d0a5e62bf752",
      "parents": [
        "73c101011926c5832e6e141682180c4debe2cf45"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "message": "block: remove per-queue plugging\n\nCode has been converted over to the new explicit on-stack plugging,\nand delay users have been converted to use the new API for that.\nSo lets kill off the old plugging along with aops-\u003esync_page().\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "052189a2ec956810feefb6a681416c5e6a207646",
      "tree": "52a1fbec2878788c6a2f6565999b97331493bc4c",
      "parents": [
        "dbc883f1570d992ba926a8c9e22140ba473c6cc1"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Jan 13 20:00:00 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 20:00:00 2011 +0000"
      },
      "message": "dm: remove superfluous irq disablement in dm_request_fn\n\nThis patch changes spin_lock_irq() to spin_lock() in dm_request_fn().\nThis patch is just a clean-up and no functional change.\n\nThe spin_lock_irq() was leftover from the early request-based dm code,\nwhere map_request() used to enable interrupts.\nSince current map_request() never enables interrupts, we can change it\nto spin_lock() to match the prior spin_unlock().\n\nAuditing through the dm and block-layer code called from\nmap_request(), I confirmed all functions save/restore interrupt\nstatus, so no function returning with interrupts enabled.\nAlso I haven\u0027t observed any problem on my test environment which\nuses scsi and lpfc driver after heavy I/O testing with occasional\npath down/up.\n\nAdded BUG_ON() to detect breakage in future.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "9c4376de98719d2768dd919553843de34bb094a6",
      "tree": "c20b10e9018bb51803c535a38a04ee8b12b6d98a",
      "parents": [
        "4d4d66ab5322fa9b0f51842a76139387a40e1ce9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 13 19:59:58 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:58 2011 +0000"
      },
      "message": "dm: use non reentrant workqueues if equivalent\n\nkmirrord_wq, kcopyd_work and md-\u003ewq are created per dm instance and\nserve only a single work item from the dm instance, so non-reentrant\nworkqueues would provide the same ordering guarantees as ordered ones\nwhile allowing CPU affinity and use of the workqueues for other\npurposes.  Switch them to non-reentrant workqueues.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4d4d66ab5322fa9b0f51842a76139387a40e1ce9",
      "tree": "37485e2fa56c38044c496ac5632e8304c5cc25db",
      "parents": [
        "f521f074abe7b3990f5df65482cdc3d851b80665"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 13 19:59:57 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:57 2011 +0000"
      },
      "message": "dm: convert workqueues to alloc_ordered\n\nConvert all create[_singlethread]_work() users to the new\nalloc[_ordered]_workqueue().  This conversion is mechanical and\ndoesn\u0027t introduce any behavior change.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4a1aeb98297e17f4e0a8cdda919e63bf528b2e5d",
      "tree": "4709346914cbdab86200c59241262d0ea2cbd204",
      "parents": [
        "5fc2ffeabb9ee0fc0e71ff16b49f34f0ed3d05b4"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Thu Jan 13 19:59:48 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:48 2011 +0000"
      },
      "message": "dm: remove dm_mutex after bkl conversion\n\nThis patch replaces dm_mutex with _minor_lock in dm_blk_close()\nand then removes it.\n\nDuring the BKL conversion, commit 6e9624b8caec290d28b4c6d9ec75749df6372b87\n(block: push down BKL into .open and .release) pushed lock_kernel()\ndown into dm_blk_open/close calls.\nCommit 2a48fc0ab24241755dc93bfd4f01d68efab47f5a\n(block: autoconvert trivial BKL users to private mutex) converted it to a\nlocal mutex, but _minor_lock is sufficient.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c217649bf2d60ac119afd71d938278cffd55962b",
      "tree": "5addf2130d59f9fab614d852ac8fe7724ef78c9f",
      "parents": [
        "581548db3b3c0f6e25b500329eb02e3c72e7acbe"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Jan 13 19:53:46 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:53:46 2011 +0000"
      },
      "message": "dm: dont take i_mutex to change device size\n\nNo longer needlessly hold md-\u003ebdev-\u003ebd_inode-\u003ei_mutex when changing the\nsize of a DM device.  This additional locking is unnecessary because\ni_size_write() is already protected by the existing critical section in\ndm_swap_table().  DM already has a reference on md-\u003ebdev so the\nassociated bd_inode may be changed without lifetime concerns.\n\nA negative side-effect of having held md-\u003ebdev-\u003ebd_inode-\u003ei_mutex was\nthat a concurrent DM device resize and flush (via fsync) would deadlock.\nDropping md-\u003ebdev-\u003ebd_inode-\u003ei_mutex eliminates this potential for\ndeadlock.  The following reproducer no longer deadlocks:\n  https://www.redhat.com/archives/dm-devel/2009-July/msg00284.html\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "b7908c1035af7652cd613991b54dbff9c8b6bd3a",
      "tree": "91dc24bbb1299ba7f84e22bbaffd28950dd04713",
      "parents": [
        "6c23a9681c0fe7fb7dd331b39dda11926f43746e"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Thu Jan 06 20:41:42 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jan 07 08:43:55 2011 +0100"
      },
      "message": "block: trace event block fix unassigned field\n\nThe \"error\" field in block_bio_complete is not assigned, leaving the memory area\nuninitialized (keeping garbage data). Pass an additional tracepoint argument to\nthis event to initialize this field.\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nCC: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCC: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCC: Ingo Molnar \u003cmingo@elte.hu\u003e\nCC: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCC: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCC: Alan.Brunelle@hp.com\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "d07335e51df0c6dec202d315fc4f1f7e100eec4e",
      "tree": "db6ac1db8d87738b9e44497e082d490c14413f5d",
      "parents": [
        "5fbf85639287b6ea287f4f5e5e7e36608f0f60bd"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Tue Nov 16 12:52:38 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Nov 16 12:53:39 2010 +0100"
      },
      "message": "block: Rename \"block_remap\" tracepoint to \"block_bio_remap\" to clarify the event.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "a2887097f25cd38cadfc11d10769e2b349fb5eca",
      "tree": "cd4adcb305365d6ba9acd2c02d4eb9d0125c6f8d",
      "parents": [
        "8abfc6e7a45eb74e51904bbae676fae008b11366",
        "005a1d15f5a6b2bb4ada80349513effbf22b4588"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:07:18 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:07:18 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.37/barrier\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.37/barrier\u0027 of git://git.kernel.dk/linux-2.6-block: (46 commits)\n  xen-blkfront: disable barrier/flush write support\n  Added blk-lib.c and blk-barrier.c was renamed to blk-flush.c\n  block: remove BLKDEV_IFL_WAIT\n  aic7xxx_old: removed unused \u0027req\u0027 variable\n  block: remove the BH_Eopnotsupp flag\n  block: remove the BLKDEV_IFL_BARRIER flag\n  block: remove the WRITE_BARRIER flag\n  swap: do not send discards as barriers\n  fat: do not send discards as barriers\n  ext4: do not send discards as barriers\n  jbd2: replace barriers with explicit flush / FUA usage\n  jbd2: Modify ASYNC_COMMIT code to not rely on queue draining on barrier\n  jbd: replace barriers with explicit flush / FUA usage\n  nilfs2: replace barriers with explicit flush / FUA usage\n  reiserfs: replace barriers with explicit flush / FUA usage\n  gfs2: replace barriers with explicit flush / FUA usage\n  btrfs: replace barriers with explicit flush / FUA usage\n  xfs: replace barriers with explicit flush / FUA usage\n  block: pass gfp_mask and flags to sb_issue_discard\n  dm: convey that all flushes are processed as empty\n  ...\n"
    },
    {
      "commit": "2a48fc0ab24241755dc93bfd4f01d68efab47f5a",
      "tree": "fa9ae10ce89b26b7d8ae9ce24bdfda5e3007b763",
      "parents": [
        "613655fa39ff6957754fa8ceb8559980920eb8ee"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Jun 02 14:28:52 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Tue Oct 05 15:01:10 2010 +0200"
      },
      "message": "block: autoconvert trivial BKL users to private mutex\n\nThe block device drivers have all gained new lock_kernel\ncalls from a recent pushdown, and some of the drivers\nwere already using the BKL before.\n\nThis turns the BKL into a set of per-driver mutexes.\nStill need to check whether this is safe to do.\n\nfile\u003d$1\nname\u003d$2\nif grep -q lock_kernel ${file} ; then\n    if grep -q \u0027include.*linux.mutex.h\u0027 ${file} ; then\n            sed -i \u0027/include.*\u003clinux\\/smp_lock.h\u003e/d\u0027 ${file}\n    else\n            sed -i \u0027s/include.*\u003clinux\\/smp_lock.h\u003e.*$/include \u003clinux\\/mutex.h\u003e/g\u0027 ${file}\n    fi\n    sed -i ${file} \\\n        -e \"/^#include.*linux.mutex.h/,$ {\n                1,/^\\(static\\|int\\|long\\)/ {\n                     /^\\(static\\|int\\|long\\)/istatic DEFINE_MUTEX(${name}_mutex);\n\n} }\"  \\\n    -e \"s/\\(un\\)*lock_kernel\\\u003e[ ]*()/mutex_\\1lock(\\\u0026${name}_mutex)/g\" \\\n    -e \u0027/[      ]*cycle_kernel_lock();/d\u0027\nelse\n    sed -i -e \u0027/include.*\\\u003csmp_lock.h\\\u003e/d\u0027 ${file}  \\\n                -e \u0027/cycle_kernel_lock()/d\u0027\nfi\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\n"
    },
    {
      "commit": "b372d360df6deaf79a58a02fa0cc0d7e0aa3e92f",
      "tree": "e103bc03bae17f7a995ba44825aefd5fc5fdba66",
      "parents": [
        "05447420f99c1c44063c7f00054667c022cc1365"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Wed Sep 08 18:07:01 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:38 2010 +0200"
      },
      "message": "dm: convey that all flushes are processed as empty\n\nRename __clone_and_map_flush to __clone_and_map_empty_flush for added\nclarity.\n\nSimplify logic associated with REQ_FLUSH conditionals.\n\nIntroduce a BUG_ON() and add a few more helpful comments to the code\nso that it is clear that all flushes are empty.\n\nCleanup __split_and_process_bio() so that an empty flush isn\u0027t processed\nby a \u0027sector_count\u0027 focused while loop.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "05447420f99c1c44063c7f00054667c022cc1365",
      "tree": "9d70e7c0037d821784b76d9d7d99c174c73d0576",
      "parents": [
        "6a8736d10cb413be95ea443ba40f25c93f4ef9b2"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Wed Sep 08 18:07:01 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:38 2010 +0200"
      },
      "message": "dm: fix locking context in queue_io()\n\nNow queue_io() is called from dec_pending(), which may be called with\ninterrupts disabled, so queue_io() must not enable interrupts\nunconditionally and must save/restore the current interrupts status.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "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"
    },
    {
      "commit": "29e4013de7ad950280e4b220894986866697d419",
      "tree": "302e99d146940d043696f3e53b3814e65f99b269",
      "parents": [
        "d87f4c14f27dc82d215108d8392a7d26687148a1"
      ],
      "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: implement REQ_FLUSH/FUA support for request-based dm\n\nThis patch converts request-based dm to support the new REQ_FLUSH/FUA.\n\nThe original request-based flush implementation depended on\nrequest_queue blocking other requests while a barrier sequence is in\nprogress, which is no longer true for the new REQ_FLUSH/FUA.\n\nIn general, request-based dm doesn\u0027t have infrastructure for cloning\none source request to multiple targets, but the original flush\nimplementation had a special mostly independent path which can issue\nflushes to multiple targets and sequence them.  However, the\ncapability isn\u0027t currently in use and adds a lot of complexity.\nMoreoever, it\u0027s unlikely to be useful in its current form as it\ndoesn\u0027t make sense to be able to send out flushes to multiple targets\nwhen write requests can\u0027t be.\n\nThis patch rips out special flush code path and deals handles\nREQ_FLUSH/FUA requests the same way as other requests.  The only\nspecial treatment is that REQ_FLUSH requests use the block address 0\nwhen finding target, which is enough for now.\n\n* added BUG_ON(!dm_target_is_valid(ti)) in dm_request_fn() as\n  suggested by Mike Snitzer\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nTested-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "d87f4c14f27dc82d215108d8392a7d26687148a1",
      "tree": "55f2a81f3df5d70fd85c4428089f6fe28540bcf4",
      "parents": [
        "3a2edd0d6ddbd5fa3b389ea6db811285415ce6c8"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:19 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:38 2010 +0200"
      },
      "message": "dm: implement REQ_FLUSH/FUA support for bio-based dm\n\nThis patch converts bio-based dm to support REQ_FLUSH/FUA instead of\nnow deprecated REQ_HARDBARRIER.\n\n* -EOPNOTSUPP handling logic dropped.\n\n* Preflush is handled as before but postflush is dropped and replaced\n  with passing down REQ_FUA to member request_queues.  This replaces\n  one array wide cache flush w/ member specific FUA writes.\n\n* __split_and_process_bio() now calls __clone_and_map_flush() directly\n  for flushes and guarantees all FLUSH bio\u0027s going to targets are zero\n`  length.\n\n* It\u0027s now guaranteed that all FLUSH bio\u0027s which are passed onto dm\n  targets are zero length.  bio_empty_barrier() tests are replaced\n  with REQ_FLUSH tests.\n\n* Empty WRITE_BARRIERs are replaced with WRITE_FLUSHes.\n\n* Dropped unlikely() around REQ_FLUSH tests.  Flushes are not unlikely\n  enough to be marked with unlikely().\n\n* Block layer now filters out REQ_FLUSH/FUA bio\u0027s if the request_queue\n  doesn\u0027t support cache flushing.  Advertise REQ_FLUSH | REQ_FUA\n  capability.\n\n* Request based dm isn\u0027t converted yet.  dm_init_request_based_queue()\n  resets flush support to 0 for now.  To avoid disturbing request\n  based dm code, dm-\u003eflush_error is added for bio based dm while\n  requested based dm continues to use dm-\u003ebarrier_error.\n\nLightly tested linear, stripe, raid1, snap and crypt targets.  Please\nproceed with caution as I\u0027m not familiar with the code base.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: dm-devel@redhat.com\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4913efe456c987057e5d36a3f0a55422a9072cae",
      "tree": "295f04a7214e1933df3301dd42c12ff3f282a22c",
      "parents": [
        "6958f145459ca7ad9715024de97445addacb8510"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:16 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:36 2010 +0200"
      },
      "message": "block: deprecate barrier and replace blk_queue_ordered() with blk_queue_flush()\n\nBarrier is deemed too heavy and will soon be replaced by FLUSH/FUA\nrequests.  Deprecate barrier.  All REQ_HARDBARRIERs are failed with\n-EOPNOTSUPP and blk_queue_ordered() is replaced with simpler\nblk_queue_flush().\n\nblk_queue_flush() takes combinations of REQ_FLUSH and FUA.  If a\ndevice has write cache and can flush it, it should set REQ_FLUSH.  If\nthe device can handle FUA writes, it should also set REQ_FUA.\n\nAll blk_queue_ordered() users are converted.\n\n* ORDERED_DRAIN is mapped to 0 which is the default value.\n* ORDERED_DRAIN_FLUSH is mapped to REQ_FLUSH.\n* ORDERED_DRAIN_FLUSH_FUA is mapped to REQ_FLUSH | REQ_FUA.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: Geert Uytterhoeven \u003cGeert.Uytterhoeven@sonycom.com\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Pierre Ossman \u003cdrzeus@drzeus.cx\u003e\nCc: Stefan Weinhuber \u003cwein@de.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "a79245b3e5669dc203fec63644d988c451fe55d5",
      "tree": "8814720781708a95ac0bd23bb5232aa5ed9337bd",
      "parents": [
        "c96053b767d494d7c30e2be68097ac9defa9403f"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Aug 12 04:14:24 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:24 2010 +0100"
      },
      "message": "dm: split discard requests on target boundaries\n\nUpdate __clone_and_map_discard to loop across all targets in a DM\ndevice\u0027s table when it processes a discard bio.  If a discard crosses a\ntarget boundary it must be split accordingly.\n\nUpdate __issue_target_requests and __issue_target_request to allow a\ncloned discard bio to have a custom start sector and size.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "56a67df766039666f61fb15b079f713e44a735ae",
      "tree": "cfeeb4f0a151b440293da593c723e9982368a58f",
      "parents": [
        "06a426cee9b35505aeb7516a67bd26496ca7ed08"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Aug 12 04:14:10 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:10 2010 +0100"
      },
      "message": "dm: factor out max_io_len_target_boundary\n\nSplit max_io_len_target_boundary out of max_io_len so that the discard\nsupport can make use of it without duplicating max_io_len code.\n\nAvoiding max_io_len\u0027s split_io logic enables DM\u0027s discard support to\nsubmit the entire discard request to a target.  But discards must still\nbe split on target boundaries.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "06a426cee9b35505aeb7516a67bd26496ca7ed08",
      "tree": "008d8d20b667b195dbe7e53a53e5003aec0a0a5f",
      "parents": [
        "5ae89a8720c28caf35c4e53711d77df2856c404e"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Aug 12 04:14:09 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:09 2010 +0100"
      },
      "message": "dm: use common __issue_target_request for flush and discard support\n\nRename __flush_target to __issue_target_request now that it is used to\nissue both flush and discard requests.\n\nIntroduce __issue_target_requests as a convenient wrapper to\n__issue_target_request \u0027num_flush_requests\u0027 or \u0027num_discard_requests\u0027\ntimes per target.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5ae89a8720c28caf35c4e53711d77df2856c404e",
      "tree": "712ddc158309d7ad77e3c19e70f0ae9fafb94446",
      "parents": [
        "5ebaee6d290279d1df6ce45d6d54de8cfc473273"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Aug 12 04:14:08 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:08 2010 +0100"
      },
      "message": "dm: linear support discard\n\nAllow discards to be passed through to linear mappings if at least one\nunderlying device supports it.  Discards will be forwarded only to\ndevices that support them.\n\nA target that supports discards should set num_discard_requests to\nindicate how many times each discard request must be submitted to it.\n\nVerify table\u0027s underlying devices support discards prior to setting the\nassociated DM device as capable of discards (via QUEUE_FLAG_DISCARD).\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nReviewed-by: Joe Thornber \u003cthornber@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "57cba5d3658d9fdc019c6af14a2d80aefa651e56",
      "tree": "4905a162b6785e1a1228b8870d8011cf9035147a",
      "parents": [
        "26803b9f06d365122fae82e7554a66ef8278e0bb"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Aug 12 04:14:04 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:04 2010 +0100"
      },
      "message": "dm: rename map_info flush_request to target_request_nr\n\n\u0027target_request_nr\u0027 is a more generic name that reflects the fact that\nit will be used for both flush and discard support.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4a0b4ddf261fc89c050fe0a10ec57a61251d7ac0",
      "tree": "23854bb6d42e7cedec9100fcdd63c307ee5d1332",
      "parents": [
        "a5664dad7e1a278d2915c2bf79cf42250e12d7db"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Aug 12 04:14:02 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:02 2010 +0100"
      },
      "message": "dm: do not initialise full request queue when bio based\n\nChange bio-based mapped devices no longer to have a fully initialized\nrequest_queue (request_fn, elevator, etc).  This means bio-based DM\ndevices no longer register elevator sysfs attributes (\u0027iosched/\u0027 tree\nor \u0027scheduler\u0027 other than \"none\").\n\nIn contrast, a request-based DM device will continue to have a full\nrequest_queue and will register elevator sysfs attributes.  Therefore\na user can determine a DM device\u0027s type by checking if elevator sysfs\nattributes exist.\n\nFirst allocate a minimalist request_queue structure for a DM device\n(needed for both bio and request-based DM).\n\nInitialization of a full request_queue is deferred until it is known\nthat the DM device is request-based, at the end of the table load\nsequence.\n\nFactor DM device\u0027s request_queue initialization:\n- common to both request-based and bio-based into dm_init_md_queue().\n- specific to request-based into dm_init_request_based_queue().\n\nThe md-\u003etype_lock mutex is used to protect md-\u003equeue, in addition to\nmd-\u003etype, during table_load().\n\nA DM device\u0027s first table_load will establish the immutable md-\u003etype.\nBut md-\u003equeue initialization, based on md-\u003etype, may fail at that time\n(because blk_init_allocated_queue cannot allocate memory).  Therefore\nany subsequent table_load must (re)try dm_setup_md_queue independently of\nestablishing md-\u003etype.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nAcked-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a5664dad7e1a278d2915c2bf79cf42250e12d7db",
      "tree": "3bdbe17f12376c63ea05100c2597757e01dc95e2",
      "parents": [
        "708e929513502fb050c0a3c3ee267cab5b056ded"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Aug 12 04:14:01 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:01 2010 +0100"
      },
      "message": "dm ioctl: make bio or request based device type immutable\n\nDetermine whether a mapped device is bio-based or request-based when\nloading its first (inactive) table and don\u0027t allow that to be changed\nlater.\n\nThis patch performs different device initialisation in each of the two\ncases.  (We don\u0027t think it\u0027s necessary to add code to support changing\nbetween the two types.)\n\nAllowed md-\u003etype transitions:\n  DM_TYPE_NONE to DM_TYPE_BIO_BASED\n  DM_TYPE_NONE to DM_TYPE_REQUEST_BASED\n\nWe now prevent table_load from replacing the inactive table with a\nconflicting type of table even after an explicit table_clear.\n\nIntroduce \u0027type_lock\u0027 into the struct mapped_device to protect md-\u003etype\nand to prepare for the next patch that will change the queue\ninitialization and allocate memory while md-\u003etype_lock is held.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nAcked-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n\n drivers/md/dm-ioctl.c    |   15 +++++++++++++++\n drivers/md/dm.c          |   37 ++++++++++++++++++++++++++++++-------\n drivers/md/dm.h          |    5 +++++\n include/linux/dm-ioctl.h |    4 ++--\n 4 files changed, 52 insertions(+), 9 deletions(-)\n"
    },
    {
      "commit": "708e929513502fb050c0a3c3ee267cab5b056ded",
      "tree": "e7b6845a3d53c5b92350f1755b4e89418f0c351c",
      "parents": [
        "87c961cb747fa55b664b76abfcb9d44c14ae851f"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Aug 12 04:14:00 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:00 2010 +0100"
      },
      "message": "dm: skip second flush on bio unsupported error\n\nWhen processing barriers, skip the second flush if processing the bio\nfailed with -EOPNOTSUPP.  This can happen with discard+barrier requests.\nIf the device doesn\u0027t support discard, there would be two useless\nSYNCHRONIZE CACHE commands.  The first dm_flush cannot be so easily\noptimized out, so we leave it there.\n\nPreviously, -EOPNOTSUPP could be received in dec_pending only with empty\nbarriers and we ignored that error, assuming the device not supporting\ncache flushes has cache always consistent.  With the addition of discard\nbarriers, this -EOPNOTSUPP can also be generated by discards and we\nmust record it in md-\u003ebarrier_error for process_barrier.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "3f77316de0ec0fd208467fbee8d9edc70e2c73b2",
      "tree": "73a91aa53eefe9537432a344ebf116cc7d106e51",
      "parents": [
        "98f332855effef02aeb738e4d62e9a5b903c52fd"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Aug 12 04:13:56 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:13:56 2010 +0100"
      },
      "message": "dm: separate device deletion from dm_put\n\nThis patch separates the device deletion code from dm_put()\nto make sure the deletion happens in the process context.\n\nBy this patch, device deletion always occurs in an ioctl (process)\ncontext and dm_put() can be called in interrupt context.\nAs a result, the request-based dm\u0027s bad dm_put() usage pointed out\nby Mikulas below disappears.\n    http://marc.info/?l\u003ddm-devel\u0026m\u003d126699981019735\u0026w\u003d2\n\nWithout this patch, I confirmed there is a case to crash the system:\n    dm_put() \u003d\u003e dm_table_destroy() \u003d\u003e vfree() \u003d\u003e BUG_ON(in_interrupt())\n\nSome more backgrounds and details:\nIn request-based dm, a device opener can remove a mapped_device\nwhile the last request is still completing, because bios in the last\nrequest complete first and then the device opener can close and remove\nthe mapped_device before the last request completes:\n  CPU0                                          CPU1\n  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n  \u003c\u003cINTERRUPT\u003e\u003e\n  blk_end_request_all(clone_rq)\n    blk_update_request(clone_rq)\n      bio_endio(clone_bio) \u003d\u003d end_clone_bio\n        blk_update_request(orig_rq)\n          bio_endio(orig_bio)\n                                                \u003c\u003cI/O completed\u003e\u003e\n                                                dm_blk_close()\n                                                dev_remove()\n                                                  dm_put(md)\n                                                    \u003c\u003cFree md\u003e\u003e\n   blk_finish_request(clone_rq)\n     ....\n     dm_end_request(clone_rq)\n       free_rq_clone(clone_rq)\n       blk_end_request_all(orig_rq)\n       rq_completed(md)\n\nSo request-based dm used dm_get()/dm_put() to hold md for each I/O\nuntil its request completion handling is fully done.\nHowever, the final dm_put() can call the device deletion code which\nmust not be run in interrupt context and may cause kernel panic.\n\nTo solve the problem, this patch moves the device deletion code,\ndm_destroy(), to predetermined places that is actually deleting\nthe mapped_device in ioctl (process) context, and changes dm_put()\njust to decrement the reference count of the mapped_device.\nBy this change, dm_put() can be used in any context and the symmetric\nmodel below is introduced:\n    dm_create():  create a mapped_device\n    dm_destroy(): destroy a mapped_device\n    dm_get():     increment the reference count of a mapped_device\n    dm_put():     decrement the reference count of a mapped_device\n\ndm_destroy() waits for all references of the mapped_device to disappear,\nthen deletes the mapped_device.\n\ndm_destroy() uses active waiting with msleep(1), since deleting\nthe mapped_device isn\u0027t performance-critical task.\nAnd since at this point, nobody opens the mapped_device and no new\nreference will be taken, the pending counts are just for racing\ncompleting activity and will eventually decrease to zero.\n\nFor the unlikely case of the forced module unload, dm_destroy_immediate(),\nwhich doesn\u0027t wait and forcibly deletes the mapped_device, is also\nintroduced and used in dm_hash_remove_all().  Otherwise, \"rmmod -f\"\nmay be stuck and never return.\nAnd now, because the mapped_device is deleted at this point, subsequent\naccesses to the mapped_device may cause NULL pointer references.\n\nCc: stable@kernel.org\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "abdc568b0540bec6d3e0afebac496adef1189b77",
      "tree": "1c88c8de6e90b7f9cbbc788fa9e3fb539f1d231c",
      "parents": [
        "856a6f1dbd8940e72755af145ebcd806408ecedd"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Aug 12 04:13:54 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:13:54 2010 +0100"
      },
      "message": "dm: prevent access to md being deleted\n\nThis patch prevents access to mapped_device which is being deleted.\n\nCurrently, even after a mapped_device has been removed from the hash,\nit could be accessed through idr_find() using minor number.\nThat could cause a race and NULL pointer reference below:\n  CPU0                          CPU1\n  ------------------------------------------------------------------\n  dev_remove(param)\n    down_write(_hash_lock)\n    dm_lock_for_deletion(md)\n      spin_lock(_minor_lock)\n      set_bit(DMF_DELETING)\n      spin_unlock(_minor_lock)\n    __hash_remove(hc)\n    up_write(_hash_lock)\n                                dev_status(param)\n                                  md \u003d find_device(param)\n                                         down_read(_hash_lock)\n                                         __find_device_hash_cell(param)\n                                           dm_get_md(param-\u003edev)\n                                             md \u003d dm_find_md(dev)\n                                                    spin_lock(_minor_lock)\n                                                    md \u003d idr_find(MINOR(dev))\n                                                    spin_unlock(_minor_lock)\n    dm_put(md)\n      free_dev(md)\n                                             dm_get(md)\n                                         up_read(_hash_lock)\n                                  __dev_status(md, param)\n                                  dm_put(md)\n\nThis patch fixes such problems.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6e9624b8caec290d28b4c6d9ec75749df6372b87",
      "tree": "47225b544e1da82742795553dc4e8aa70c17afdc",
      "parents": [
        "8a6cfeb6deca3a8fefd639d898b0d163c0b5d368"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sat Aug 07 18:25:34 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:25:34 2010 +0200"
      },
      "message": "block: push down BKL into .open and .release\n\nThe open and release block_device_operations are currently\ncalled with the BKL held. In order to change that, we must\nfirst make sure that all drivers that currently rely\non this have no regressions.\n\nThis blindly pushes the BKL into all .open and .release\noperations for all block drivers to prepare for the\nnext step. The drivers can subsequently replace the BKL\nwith their own locks or remove it completely when it can\nbe shown that it is not needed.\n\nThe functions blkdev_get and blkdev_put are the only\nremaining users of the big kernel lock in the block\nlayer, besides a few uses in the ioctl code, none\nof which need to serialize with blkdev_{get,put}.\n\nMost of these two functions is also under the protection\nof bdev-\u003ebd_mutex, including the actual calls to\n-\u003eopen and -\u003erelease, and the common code does not\naccess any global data structures that need the BKL.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "00fff26539bfe3fad21c164fc4002d9ede056fb0",
      "tree": "4909c8eed03133b1d46f689e465ed1f579b8e282",
      "parents": [
        "afc23068103ccfbf1917eb2a007bc15ab5418cc9"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Sat Jul 03 17:45:40 2010 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:24:15 2010 +0200"
      },
      "message": "block: remove q-\u003eprepare_flush_fn completely\n\nThis removes q-\u003eprepare_flush_fn completely (changes the\nblk_queue_ordered API).\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "144d6ed551ce430084489b198826c89bac5680dc",
      "tree": "78b59ca5c4487784bfc2a16bcd91c0cb41631f8a",
      "parents": [
        "98d8c8f40ed72d997e50bc107a5cc1a6cee19e76"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Sat Jul 03 17:45:37 2010 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:24:14 2010 +0200"
      },
      "message": "dm: stop using q-\u003eprepare_flush_fn\n\nuse REQ_FLUSH flag instead.\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: Alasdair G Kergon \u003cagk@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7b6d91daee5cac6402186ff224c3af39d79f4a0e",
      "tree": "b1518cf0b6c301178e0a320f80610cd5b3aa7625",
      "parents": [
        "33659ebbae262228eef4e0fe990f393d1f0ed941"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "message": "block: unify flags for struct bio and struct request\n\nRemove the current bio flags and reuse the request flags for the bio, too.\nThis allows to more easily trace the type of I/O from the filesystem\ndown to the block driver.  There were two flags in the bio that were\nmissing in the requests:  BIO_RW_UNPLUG and BIO_RW_AHEAD.  Also I\u0027ve\nrenamed two request flags that had a superflous RW in them.\n\nNote that the flags are in bio.h despite having the REQ_ name - as\nblkdev.h includes bio.h that is the only way to go for now.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "33659ebbae262228eef4e0fe990f393d1f0ed941",
      "tree": "fcb537f09359c8dad3a6f6e16dc4319562dc42cc",
      "parents": [
        "7e005f79791dcd58436c88ded4a7f5aed1b82147"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Aug 07 18:17:56 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:17:56 2010 +0200"
      },
      "message": "block: remove wrappers for request type/flags\n\nRemove all the trivial wrappers for the cmd_type and cmd_flags fields in\nstruct requests.  This allows much easier grepping for different request\ntypes instead of unwinding through macros.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "3abf85b5b5851b5f28d3d8a920ebb844edd08352",
      "tree": "b59e5c9322cc116b0ce5dc183d3b8286080c6031",
      "parents": [
        "a97f925a32aad2a37971d7bfb657006acf04e42d"
      ],
      "author": {
        "name": "Peter Rajnoha",
        "email": "prajnoha@redhat.com",
        "time": "Sat Mar 06 02:32:31 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:32:31 2010 +0000"
      },
      "message": "dm ioctl: introduce flag indicating uevent was generated\n\nSet a new DM_UEVENT_GENERATED_FLAG when returning from ioctls to\nindicate that a uevent was actually generated.  This tells the userspace\ncaller that it may need to wait for the event to be processed.\n\nSigned-off-by: Peter Rajnoha \u003cprajnoha@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a97f925a32aad2a37971d7bfb657006acf04e42d",
      "tree": "38c74c60f756dd05611138f864340a31f4fc393f",
      "parents": [
        "8215d6ec5fee1e76545decea2cd73717efb5cb42"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Sat Mar 06 02:32:29 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:32:29 2010 +0000"
      },
      "message": "dm: free dm_io before bio_endio not after\n\nFree the dm_io structure before calling bio_endio() instead of after it,\nto ensure that the io_pool containing it is not referenced after it is\nfreed.\n\nThis partially fixes a problem described here\n  https://www.redhat.com/archives/dm-devel/2010-February/msg00109.html\n\nthread 1:\nbio_endio(bio, io_error);\n/* scheduling happens */\n\t\t\t\t\tthread 2:\n\t\t\t\t\tclose the device\n\t\t\t\t\tremove the device\nthread 1:\nfree_io(md, io);\n\nThread 2, when removing the device, sees non-empty md-\u003eio_pool (because the\nio hasn\u0027t been freed by thread 1 yet) and may crash with BUG in mempool_free.\nThread 1 may also crash, when freeing into a nonexisting mempool.\n\nTo fix this we must make sure that bio_endio() is the last call and\nthe md structure is not accessed afterwards.\n\nThere is another bio_endio in process_barrier, but it is called from the thread\nand the thread is destroyed prior to freeing the mempools, so this call is\nnot affected by the bug.\n\nA similar bug exists with module unloads - the module may be unloaded\nimmediately after bio_endio - but that is more difficult to fix.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ecdb2e257abc33ae6798d3ccba87bdafa40ef6b6",
      "tree": "497db6a95a9f06270506f6a75354d5df855d5a66",
      "parents": [
        "f7b934c8127deebf4eb56fbe4a4ae0da16b6dbcd"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Sat Mar 06 02:29:52 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:29:52 2010 +0000"
      },
      "message": "dm table: remove dm_get from dm_table_get_md\n\nRemove the dm_get() in dm_table_get_md() because dm_table_get_md() could\nbe called from presuspend/postsuspend, which are called while\nmapped_device is in DMF_FREEING state, where dm_get() is not allowed.\n\nJustification for that is the lifetime of both objects: As far as the\ncurrent dm design/implementation, mapped_device is never freed while\ntargets are doing something, because dm core waits for targets to become\nquiet in dm_put() using presuspend/postsuspend.  So targets should be\nable to touch mapped_device without holding reference count of the\nmapped_device, and we should allow targets to touch mapped_device even\nif it is in DMF_FREEING state.\n\nBackgrounds:\nI\u0027m trying to remove the multipath internal queue, since dm core now has\na generic queue for request-based dm.  In the patch-set, the multipath\ntarget wants to request dm core to start/stop queue.  One of such\nstart/stop requests can happen during postsuspend() while the target\nwaits for pg-init to complete, because the target stops queue when\nstarting pg-init and tries to restart it when completing pg-init.  Since\nqueue belongs to mapped_device, it involves calling dm_table_get_md()\nand dm_put().  On the other hand, postsuspend() is called in dm_put()\nfor mapped_device which is in DMF_FREEING state, and that triggers\nBUG_ON(DMF_FREEING) in the 2nd dm_put().\n\nI had tried to solve this problem by changing only multipath not to\ntouch mapped_device which is in DMF_FREEING state, but I couldn\u0027t and I\ncame up with a question why we need dm_get() in dm_table_get_md().\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "9eef87da2a8ea4920e0d913ff977cac064b68ee0",
      "tree": "811eb358ce2fa66517b0cf59501522c17dfbe6bc",
      "parents": [
        "558569aa9d83e016295bac77d900342908d7fd85"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Tue Feb 16 18:43:01 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Feb 16 18:43:01 2010 +0000"
      },
      "message": "dm mpath: fix stall when requeueing io\n\nThis patch fixes the problem that system may stall if target\u0027s -\u003emap_rq\nreturns DM_MAPIO_REQUEUE in map_request().\nE.g. stall happens on 1 CPU box when a dm-mpath device with queue_if_no_path\n     bounces between all-paths-down and paths-up on I/O load.\n\nWhen target\u0027s -\u003emap_rq returns DM_MAPIO_REQUEUE, map_request() requeues\nthe request and returns to dm_request_fn().  Then, dm_request_fn()\ndoesn\u0027t exit the I/O dispatching loop and continues processing\nthe requeued request again.\nThis map and requeue loop can be done with interrupt disabled,\nso 1 CPU system can be stalled if this situation happens.\n\nFor example, commands below can stall my 1 CPU box within 1 minute or so:\n  # dmsetup table mp\n  mp: 0 2097152 multipath 1 queue_if_no_path 0 1 1 service-time 0 1 2 8:144 1 1\n  # while true; do dd if\u003d/dev/mapper/mp of\u003d/dev/null bs\u003d1M count\u003d100; done \u0026\n  # while true; do \\\n  \u003e dmsetup message mp 0 \"fail_path 8:144\" \\\n  \u003e dmsetup suspend --noflush mp \\\n  \u003e dmsetup resume mp \\\n  \u003e dmsetup message mp 0 \"reinstate_path 8:144\" \\\n  \u003e done\n\nTo fix the problem above, this patch changes dm_request_fn() to exit\nthe I/O dispatching loop once if a request is requeued in map_request().\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "64dbce580d5a7e89e8de20b91f80c7267cdad91d",
      "tree": "9d8a8bb8afd9d7b856d90abd7c5c35137547d09a",
      "parents": [
        "4f186f8bbfa92bf1a2b39f7a8674348bfdba9437"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:27 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:27 2009 +0000"
      },
      "message": "dm: export suspended state to targets\n\nThis patch adds the exported dm_suspended() function so that targets\ncan check whether or not they are suspended.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: Mike Anderson \u003candmike@linux.vnet.ibm.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4f186f8bbfa92bf1a2b39f7a8674348bfdba9437",
      "tree": "9fd65776c0314abf6774f30e542d565e22ae4698",
      "parents": [
        "4d4471cb5c1ec426c0f24818b270dc7b3ad7e655"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:26 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:26 2009 +0000"
      },
      "message": "dm: rename dm_suspended to dm_suspended_md\n\nThis patch renames dm_suspended() to dm_suspended_md() and\nkeeps it internal to dm.\nNo functional change.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: Mike Anderson \u003candmike@linux.vnet.ibm.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4d4471cb5c1ec426c0f24818b270dc7b3ad7e655",
      "tree": "37407a97b8a9a96bae462860b1ed5c13da3da24f",
      "parents": [
        "61afef614b013ee1b767cdd10325acae1db1f4d2"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:26 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:26 2009 +0000"
      },
      "message": "dm: swap target postsuspend call and setting suspended flag\n\nThis patch moves DMF_SUSPENDED flag set before postsuspend.\nNo one should care about the ordering, because the flag set and\nthe postsuspend are protected by a single lock, md-\u003esuspend_lock,\nand all strict flag-checkers take the lock.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: Mike Anderson \u003candmike@linux.vnet.ibm.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6db4ccd6357f28c9ef7058b3bc48904c4b2ac419",
      "tree": "affd099b88123c0717ec4bbfbb2503c3d7cc91f8",
      "parents": [
        "c1f0c183f6acc6d32c5a1d0249ec68bf783af7b1"
      ],
      "author": {
        "name": "Jun\u0027ichi Nomura",
        "email": "j-nomura@ce.jp.nec.com",
        "time": "Thu Dec 10 23:52:25 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:25 2009 +0000"
      },
      "message": "dm: trace request based remapping\n\nThis patch adds a remapping trace to request-based dm.\nBIO-based dm already has the equivalent tracepoint.\n\nFor example, under this dm stack (linear LV on multipath):\n  # dmsetup ls --tree -o ascii\n  vg-lv0 (253:1)\n   `-mpath0 (253:0)\n      |- (8:160)\n      |- (66:80)\n      |- (65:176)\n      `- (65:160)\n\nTrace of \u0027dd of\u003d/dev/vg/lv0 bs\u003d128k count\u003d1 oflag\u003ddirect\u0027 looks like this:\n\nwithout the patch:\n  dd-6674  [000]   539.727384: block_bio_queue: 253,1 WS 0 + 256 [dd]\n  dd-6674  [000]   539.727392: block_remap: 253,0 WS 384 + 256 \u003c- (253,1) 0\n  dd-6674  [000]   539.727394: block_bio_queue: 253,0 WS 384 + 256 [dd]\n  dd-6674  [000]   539.727405: block_getrq: 253,0 WS 384 + 256 [dd]\n  dd-6674  [000]   539.727409: block_plug: [dd]\n  dd-6674  [000]   539.727410: block_rq_insert: 253,0 W 0 () 384 + 256 [dd]\n  dd-6674  [000]   539.727416: block_rq_issue: 253,0 W 0 () 384 + 256 [dd]\n  dd-6674  [000]   539.727426: block_rq_insert: 65,176 W 0 () 384 + 256 [dd]\n  dd-6674  [000]   539.727427: block_rq_issue: 65,176 W 0 () 384 + 256 [dd]\n  ...\n\nand with the patch: (the line with \u0027**\u0027 is the trace added by this patch)\n  dd-6617  [002]   162.914301: block_bio_queue: 253,1 WS 0 + 256 [dd]\n  dd-6617  [002]   162.914314: block_remap: 253,0 WS 384 + 256 \u003c- (253,1) 0\n  dd-6617  [002]   162.914316: block_bio_queue: 253,0 WS 384 + 256 [dd]\n  dd-6617  [002]   162.914331: block_getrq: 253,0 WS 384 + 256 [dd]\n  dd-6617  [002]   162.914335: block_plug: [dd]\n  dd-6617  [002]   162.914337: block_rq_insert: 253,0 W 0 () 384 + 256 [dd]\n  dd-6617  [002]   162.914347: block_rq_issue: 253,0 W 0 () 384 + 256 [dd]\n**dd-6617  [002]   162.914356: block_rq_remap: 65,176 W 384 + 256 \u003c- (253,0) 384\n  dd-6617  [002]   162.914358: block_rq_insert: 65,176 W 0 () 384 + 256 [dd]\n  dd-6617  [002]   162.914359: block_rq_issue: 65,176 W 0 () 384 + 256 [dd]\n  ...\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "042d2a9bcd80fe12d4b0871706aa9dd2231e8238",
      "tree": "69a7b6675e2cd020807729de50cd99747f6470f4",
      "parents": [
        "a794015597a2d9b437470c7692aac77e5fc08cd2"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:24 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:24 2009 +0000"
      },
      "message": "dm: keep old table until after resume succeeded\n\nWhen swapping a new table into place, retain the old table until\nits replacement is in place.\n\nAn old check for an empty table is removed because this is enforced\nin populate_table().\n\n__unbind() becomes redundant when followed by __bind().\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a794015597a2d9b437470c7692aac77e5fc08cd2",
      "tree": "d25dd56edd53f8f1890ed005b5531ccfa07c28ee",
      "parents": [
        "1d0f3ce83200edc5d43723c77c62b09ad6560294"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:23 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:23 2009 +0000"
      },
      "message": "dm: bind new table before destroying old\n\nWhen replacing a mapped device\u0027s table during a \u0027resume\u0027, delay the\ndestruction of the old table until the new one is successfully in place.\n\nThis will make it easier for a later patch to transfer internal state\ninformation from the old table to the new one (something we do not currently\nsupport) while giving us more options for reversion if a later part\nof the operation fails.\n\nDevices are always in the suspended state during dm_swap_table().\nThis patch reinforces the requirement that all I/O must have been\nflushed from the table targets while in this state (including any in\nworkqueues).  In the case of \u0027noflush\u0027 suspending, unprocessed\nI/O should have been \u0027pushed back\u0027 to the dm core prior to this point,\nfor resubmission after the new table is in place.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "432a212c0dd0f4ca386cf37c5b740ac9dbda4479",
      "tree": "0eb05111e9290856c9e7543e5d12e1e3ee0c8ef3",
      "parents": [
        "6df400ab64c68fc4072a13019fc20fd7e3d51303"
      ],
      "author": {
        "name": "Mike Anderson",
        "email": "andmike@linux.vnet.ibm.com",
        "time": "Thu Dec 10 23:52:20 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:20 2009 +0000"
      },
      "message": "dm: add dm_deleting_md function\n\nAdd dm_deleting_md to check whether or not a given mapped\ndevice is currently being deleted.\n\nSigned-off-by: Mike Anderson \u003candmike@linux.vnet.ibm.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "7c6664114b7342a36f14a6836564e865669b3cea",
      "tree": "0f00dcd89bec3ae1e4003b23018a2b1bf5464ff0",
      "parents": [
        "d0bcb8786532b01206f04258eb6b7d4ac858436a"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:19 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:19 2009 +0000"
      },
      "message": "dm: rename dm_get_table to dm_get_live_table\n\nRename dm_get_table to dm_get_live_table.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "d0bcb8786532b01206f04258eb6b7d4ac858436a",
      "tree": "49c27a02ebd5f58072f5d2234609fa0e6816038e",
      "parents": [
        "980691e5f3a1b5ebbb2d34014e028fd7f1c6e4fb"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:18 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:18 2009 +0000"
      },
      "message": "dm: add request based barrier support\n\nThis patch adds barrier support for request-based dm.\n\nCORE DESIGN\n\nThe design is basically same as bio-based dm, which emulates barrier\nby mapping empty barrier bios before/after a barrier I/O.\nBut request-based dm has been using struct request_queue for I/O\nqueueing, so the block-layer\u0027s barrier mechanism can be used.\n\no Summary of the block-layer\u0027s behavior (which is depended by dm-core)\n  Request-based dm uses QUEUE_ORDERED_DRAIN_FLUSH ordered mode for\n  I/O barrier.  It means that when an I/O requiring barrier is found\n  in the request_queue, the block-layer makes pre-flush request and\n  post-flush request just before and just after the I/O respectively.\n\n  After the ordered sequence starts, the block-layer waits for all\n  in-flight I/Os to complete, then gives drivers the pre-flush request,\n  the barrier I/O and the post-flush request one by one.\n  It means that the request_queue is stopped automatically by\n  the block-layer until drivers complete each sequence.\n\no dm-core\n  For the barrier I/O, treats it as a normal I/O, so no additional\n  code is needed.\n\n  For the pre/post-flush request, flushes caches by the followings:\n    1. Make the number of empty barrier requests required by target\u0027s\n       num_flush_requests, and map them (dm_rq_barrier()).\n    2. Waits for the mapped barriers to complete (dm_rq_barrier()).\n       If error has occurred, save the error value to md-\u003ebarrier_error\n       (dm_end_request()).\n       (*) Basically, the first reported error is taken.\n           But -EOPNOTSUPP supersedes any error and DM_ENDIO_REQUEUE\n           follows.\n    3. Requeue the pre/post-flush request if the error value is\n       DM_ENDIO_REQUEUE.  Otherwise, completes with the error value\n       (dm_rq_barrier_work()).\n  The pre/post-flush work above is done in the kernel thread (kdmflush)\n  context, since memory allocation which might sleep is needed in\n  dm_rq_barrier() but sleep is not allowed in dm_request_fn(), which is\n  an irq-disabled context.\n  Also, clones of the pre/post-flush request share an original, so\n  such clones can\u0027t be completed using the softirq context.\n  Instead, complete them in the context of underlying device drivers.\n  It should be safe since there is no I/O dispatching during\n  the completion of such clones.\n\n  For suspend, the workqueue of kdmflush needs to be flushed after\n  the request_queue has been stopped.  Otherwise, the next flush work\n  can be kicked even after the suspend completes.\n\nTARGET INTERFACE\n\nNo new interface is added.\nJust use the existing num_flush_requests in struct target_type\nas same as bio-based dm.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "980691e5f3a1b5ebbb2d34014e028fd7f1c6e4fb",
      "tree": "a4d593cf3818a54c41e6a4115cad63128b738c0b",
      "parents": [
        "11a68244e16b0c35e122dd55b4e7c595e0fb67a1"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:17 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:17 2009 +0000"
      },
      "message": "dm: move dm_end_request\n\nThis patch moves dm_end_request() to make the next patch more readable.\nNo functional change.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "11a68244e16b0c35e122dd55b4e7c595e0fb67a1",
      "tree": "ac982eb9abf6eca76ae35a9e0900323b54bb3ab9",
      "parents": [
        "b4324feeae304ae39e631a254d238a7d63be004b"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:17 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:17 2009 +0000"
      },
      "message": "dm: refactor request based completion functions\n\nThis patch factors out the clone completion code, dm_done(),\nfrom dm_softirq_done() in preparation for a subsequent patch.\nNo functional change.\n\ndm_done() will be used in barrier completion, which can\u0027t use and\ndoesn\u0027t need softirq.  The softirq_done callback needs to get a clone\nfrom an original request but it can\u0027t in the case of barrier, where\nan original request is shared by multiple clones.  On the other hand,\nthe completion of barrier clones doesn\u0027t involve re-submitting requests,\nwhich was the primary reason of the need for softirq.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b4324feeae304ae39e631a254d238a7d63be004b",
      "tree": "12495362c9301129912a8d706de0f6cdb7de8ccf",
      "parents": [
        "9f518b27cf682dd5155a4c1679d52cd4b5be82f2"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:16 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:16 2009 +0000"
      },
      "message": "dm: use md pending for in flight IO counting\n\nThis patch changes the counter for the number of in_flight I/Os\nto md-\u003epending from q-\u003ein_flight in preparation for a later patch.\nNo functional change.\n\nRequest-based dm used q-\u003ein_flight to count the number of in-flight\nclones assuming the counter is always incremented for an in-flight\noriginal request and original:clone is 1:1 relationship.\nHowever, it this no longer true for barrier requests.\nSo use md-\u003epending to count the number of in-flight clones.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "9f518b27cf682dd5155a4c1679d52cd4b5be82f2",
      "tree": "3515037fb33d11065cbc02a8aa8c13ef6a406fa9",
      "parents": [
        "6facdaff229f2b25d0de82be9be99b9f562e72ba"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:16 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:16 2009 +0000"
      },
      "message": "dm: simplify request based suspend\n\nThe semantics of bio-based dm were changed recently in the case of\nsuspend with \"--nolockfs\" but without \"--noflush\".\nBefore 2.6.30, I/Os submitted before the suspend invocation were always\nflushed.  From 2.6.30 onwards, I/Os submitted before the suspend\ninvocation might not be flushed.  (For details, see\nhttp://marc.info/?t\u003d123994433400003\u0026r\u003d1\u0026w\u003d2)\n\nThis patch brings the behaviour of request-based dm into line with\nbio-based dm, simplifying the code and preparing for a subsequent patch\nthat will wait for all in_flight I/Os to complete without stopping\nrequest_queue and use dm_wait_for_completion() for it.\n\nThis change in semantics simplifies the suspend code as follows:\n  o Suspend is implemented as stopping request_queue\n    in request-based dm, and all I/Os are queued in the request_queue\n    even after suspend is invoked.\n  o In the old semantics, we had to track whether I/Os were\n    queued before or after the suspend invocation, so a special\n    barrier-like request called \u0027suspend marker\u0027 was introduced.\n  o With the new semantics, we don\u0027t need to flush any I/O\n    so we can remove the marker and the code related to the marker\n    handling and I/O flushing.\n\nAfter removing this codes, the suspend sequence is now:\n  1. Flush all I/Os by lock_fs() if needed.\n  2. Stop dispatching any I/O by stopping the request_queue.\n  3. Wait for all in-flight I/Os to be completed or requeued.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6facdaff229f2b25d0de82be9be99b9f562e72ba",
      "tree": "4faa8e98b33e804525c7873d160cb0d7014a2a0d",
      "parents": [
        "0888564393a1277ce2d0564d819e1bcff1120343"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:15 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:15 2009 +0000"
      },
      "message": "dm: abstract clone_rq\n\nThis patch factors out the request cloning code in dm_prep_fn()\nas clone_rq().  No functional change.\n\nThis patch is a preparation for a later patch in this series which needs to\nmake clones from an original barrier request.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "0888564393a1277ce2d0564d819e1bcff1120343",
      "tree": "cac54095a48b4662ee5a3ff17550693300be2692",
      "parents": [
        "598de40947909e6b948569710383661ecc0ddc8e"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:15 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:15 2009 +0000"
      },
      "message": "dm: pass gfp_mask to alloc_rq_tio\n\nThis patch adds the gfp_mask argument to alloc_rq_tio().\nNo functional change.\n\nThis patch is a preparation for a later patch in this series which needs to\nallocate tio (for barrier I/O) with different allocation flag (GFP_NOIO) from\nthe one in the normal I/O code path.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "598de40947909e6b948569710383661ecc0ddc8e",
      "tree": "05d342fb20877b9c8944ba9309f46f62094ef021",
      "parents": [
        "90abb8c4cec8f0aa4ce58790542e3cf13071601a"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:14 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:14 2009 +0000"
      },
      "message": "dm: use clone in map_request function\n\nThis patch changes the argument of map_request() to clone request\nfrom original request.  No functional change.\n\nThis patch is a preparation for PATCH 9, which needs to use\nmap_request() for clones sharing an original barrier request.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "90abb8c4cec8f0aa4ce58790542e3cf13071601a",
      "tree": "4233757994b2ff97c29c81d5aae9f4660dcea1b3",
      "parents": [
        "9ca170a3c0cbb0d5251cef6f5a3300fa436ba8ec"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:13 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:13 2009 +0000"
      },
      "message": "dm: abstract dm_in_flight function\n\nThis patch adds md_in_flight() to get the number of in_flight I/Os.\nNo functional change.\n\nThis patch is a preparation for a later patch in this series, which\nchanges I/O counter to md-\u003epending from q-\u003ein_flight in request-based dm.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "952b355760c196ec014dd0b6878f85a11496e3da",
      "tree": "0a6907fa6dce2bac8afdc2efea774f19bdbb9a17",
      "parents": [
        "542da317668c35036e8471822a564b609d05af66"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Dec 10 23:51:57 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:51:57 2009 +0000"
      },
      "message": "dm io: use slab for struct io\n\nAllocate \"struct io\" from a slab.\n\nThis patch changes dm-io, so that \"struct io\" is allocated from a slab cache.\nIt used to be allocated with kmalloc. Allocating from a slab will be needed\nfor the next patch, because it requires a special alignment of \"struct io\"\nand kmalloc cannot meet this alignment.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f88fb981183e71daf40bbd84bc8251bbf7b59e19",
      "tree": "b1de0c32afb6a540624a0e53a25ce522a9935202",
      "parents": [
        "03022c54b9725026c0370a810168975c387ad04c"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Fri Oct 16 23:18:15 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 16 23:18:15 2009 +0100"
      },
      "message": "dm: dec_pending needs locking to save error value\n\nMultiple instances of dec_pending() can run concurrently so a lock is\nneeded when it saves the first error code.\n\nI have never experienced actual problem without locking and just found\nthis during code inspection while implementing the barrier support\npatch for request-based dm.\n\nThis patch adds the locking.\nI\u0027ve done compile, boot and basic I/O testings.\n\nCc: stable@kernel.org\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "03022c54b9725026c0370a810168975c387ad04c",
      "tree": "3d16ed7e303effca715f0ea78f022252f48e1257",
      "parents": [
        "bca915aae803cf01fde4461fc9c093cf5a86d7fc"
      ],
      "author": {
        "name": "Zdenek Kabelac",
        "email": "zkabelac@redhat.com",
        "time": "Fri Oct 16 23:18:15 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 16 23:18:15 2009 +0100"
      },
      "message": "dm: add missing del_gendisk to alloc_dev error path\n\nAdd missing del_gendisk() to error path when creation of workqueue fails.\nOtherwice there is a resource leak and following warning is shown:\n\nWARNING: at fs/sysfs/dir.c:487 sysfs_add_one+0xc5/0x160()\nsysfs: cannot create duplicate filename \u0027/devices/virtual/block/dm-0\u0027\n\nCc: stable@kernel.org\nSigned-off-by: Zdenek Kabelac \u003czkabelac@redhat.com\u003e\nReviewed-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    }
  ],
  "next": "316d315bffa4026f28085f6b24ebcebede370ac7"
}
