)]}'
{
  "log": [
    {
      "commit": "8aa7e847d834ed937a9ad37a0f2ad5b8584c1ab0",
      "tree": "76c8b4f1362a928d426f2201790ab5d128f57724",
      "parents": [
        "c2cc49a2f8a479dde96a599646d30b6cc9dbed78"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jul 09 14:52:32 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.(none)",
        "time": "Fri Jul 10 20:31:53 2009 +0200"
      },
      "message": "Fix congestion_wait() sync/async vs read/write confusion\n\nCommit 1faa16d22877f4839bd433547d770c676d1d964c accidentally broke\nthe bdi congestion wait queue logic, causing us to wait on congestion\nfor WRITE (\u003d\u003d 1) when we really wanted BLK_RW_ASYNC (\u003d\u003d 0) instead.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ad361c9884e809340f6daca80d56a9e9c871690a",
      "tree": "7ec02c9934964fecdc791a0df0fc722d3bda5c53",
      "parents": [
        "e3288775ff63900fbb7db505f2b9a1bee98f07df"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Jul 06 13:05:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 08 10:30:03 2009 -0700"
      },
      "message": "Remove multiple KERN_ prefixes from printk formats\n\nCommit 5fd29d6ccbc98884569d6f3105aeca70858b3e0f (\"printk: clean up\nhandling of log-levels and newlines\") changed printk semantics.  printk\nlines with multiple KERN_\u003clevel\u003e prefixes are no longer emitted as\nbefore the patch.\n\n\u003clevel\u003e is now included in the output on each additional use.\n\nRemove all uses of multiple KERN_\u003clevel\u003es in formats.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2027bd9f9290ede1664d5fa18b3fbd6c5f7401d3",
      "tree": "ba5a8fe8e2373744edc22974571a953840d6c9e8",
      "parents": [
        "544ae5f96e14998cabc637fa20cf409eb92a0dd0",
        "b706f64281b24d8b1fdc8ae883700131d365c412"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 01 10:41:09 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 01 10:41:09 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block:\n  cfq-iosched: remove redundant check for NULL cfqq in cfq_set_request()\n  blocK: Restore barrier support for md and probably other virtual devices.\n  block: get rid of queue-private command filter\n  block: Create bip slabs with embedded integrity vectors\n  cfq-iosched: get rid of the need for __GFP_NOFAIL in cfq_find_alloc_queue()\n  cfq-iosched: move cfqq initialization out of cfq_find_alloc_queue()\n  Trivial typo fixes in Documentation/block/data-integrity.txt.\n"
    },
    {
      "commit": "544ae5f96e14998cabc637fa20cf409eb92a0dd0",
      "tree": "163523ded713a8b90ac68543979e127795ecbc58",
      "parents": [
        "7b85425fac72588674d5c71604af618f690c91d7",
        "e62e58a5ffdc98ac28d8dbd070c857620d541f99"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 01 10:31:26 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 01 10:31:26 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md:\n  md: use interruptible wait when duration is controlled by userspace.\n  md/raid5: suspend shouldn\u0027t affect read requests.\n  md: tidy up error paths in md_alloc\n  md: fix error path when duplicate name is found on md device creation.\n  md: avoid dereferencing NULL pointer when accessing suspend_* sysfs attributes.\n  md: Use new topology calls to indicate alignment and I/O sizes\n"
    },
    {
      "commit": "7878cba9f0037f5599004b03a1260b32d9050360",
      "tree": "bff5e1a47b6e64e45df0428925cc6db8542cad62",
      "parents": [
        "6118b70b3a0b4c583439bb77600194c82f220ce3"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Jun 26 15:37:49 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Jul 01 10:56:25 2009 +0200"
      },
      "message": "block: Create bip slabs with embedded integrity vectors\n\nThis patch restores stacking ability to the block layer integrity\ninfrastructure by creating a set of dedicated bip slabs.  Each bip slab\nhas an embedded bio_vec array at the end.  This cuts down on memory\nallocations and also simplifies the code compared to the original bvec\nversion.  Only the largest bip slab is backed by a mempool.  The pool is\ncontained in the bio_set so stacking drivers can ensure forward\nprogress.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@carl.(none)\u003e\n"
    },
    {
      "commit": "e62e58a5ffdc98ac28d8dbd070c857620d541f99",
      "tree": "0ec3471f4e66e3a376ac8cb2da79d6123e7aa2cf",
      "parents": [
        "a5c308d4d1659b1f4833b863394e3e24cdbdfc6e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 13:15:35 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 13:15:35 2009 +1000"
      },
      "message": "md: use interruptible wait when duration is controlled by userspace.\n\nUser space can set various limits on an md array so that resync waits\nwhen it gets to a certain point, or so that I/O is blocked for a short\nwhile.\nWhen md is waiting against one of these limit, it should use an\ninterruptible wait so as not to add to the load average, and so are\nnot to trigger a warning if the wait goes on for too long.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a5c308d4d1659b1f4833b863394e3e24cdbdfc6e",
      "tree": "6affde6f3f03c01f651210cc042a07ba70533d03",
      "parents": [
        "0909dc448c98ed5021c87ffdfc09fb473aa464ab"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 13:15:35 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 13:15:35 2009 +1000"
      },
      "message": "md/raid5: suspend shouldn\u0027t affect read requests.\n\nmd allows write to regions on an array to be suspended temporarily.\nThis allows user-space to participate is aspects of reshape.\nIn particular, data can be copied with not risk of a race.\nWe should not be blocking read requests though, so don\u0027t.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0909dc448c98ed5021c87ffdfc09fb473aa464ab",
      "tree": "17c48d146c0f9eb7367a0d0feafea29838eae8eb",
      "parents": [
        "1ec22eb2b4a2e1a763106bce36b11c02eaa84e61"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 12:27:21 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 12:27:21 2009 +1000"
      },
      "message": "md: tidy up error paths in md_alloc\n\nAs the recent bug in md_alloc showed, having a single exit path for\nunlocking and putting is a good idea.  So restructure md_alloc to have\na single mutex_unlock and mddev_put, and use gotos where necessary.\n\nFound-by: Jiri Slaby \u003cjirislaby@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1ec22eb2b4a2e1a763106bce36b11c02eaa84e61",
      "tree": "2aa6e6539342a28263417f6a2f2551d541e9ead9",
      "parents": [
        "b8d966efd9a46a9a35beac50cbff6e30565125ef"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 12:27:21 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 12:27:21 2009 +1000"
      },
      "message": "md: fix error path when duplicate name is found on md device creation.\n\nWhen an md device is created by name (rather than number) we need to\ncheck that the name is not already in use.  If this check finds a\nduplicate, we return an error without dropping the lock or freeing\nthe newly create mddev.\nThis patch fixes that.\n\nCc: stable@kernel.org\nFound-by: Jiri Slaby \u003cjirislaby@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b8d966efd9a46a9a35beac50cbff6e30565125ef",
      "tree": "d1c59125e8ee9677e8594bdc4ab223e692a87e50",
      "parents": [
        "8f6c2e4b325a8e9f8f47febb2fd0ed4fae7d45a9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 11:14:04 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 11:14:04 2009 +1000"
      },
      "message": "md: avoid dereferencing NULL pointer when accessing suspend_* sysfs attributes.\n\nIf we try to modify one of the md/ sysfs files\n  suspend_lo or suspend_hi\nwhen the array is not active, we dereference a NULL.\nProtect against that.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8f6c2e4b325a8e9f8f47febb2fd0ed4fae7d45a9",
      "tree": "6e383e2ec48b5c90fe07325a7f6ab38ea1a97dfa",
      "parents": [
        "5a4f13fad1ab5bd08dea78fc55321e429d83cddf"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Wed Jul 01 11:13:45 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 11:13:45 2009 +1000"
      },
      "message": "md: Use new topology calls to indicate alignment and I/O sizes\n\nSwitch MD over to the new disk_stack_limits() function which checks for\naligment and adjusts preferred I/O sizes when stacking.\n\nAlso indicate preferred I/O sizes where applicable.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ea9df47cc92573b159ef3b4fda516c32cba9c4fd",
      "tree": "5d951e91c9be014420d5eb5772d7546e8ce5a435",
      "parents": [
        "874d2f61d31e596c36af7732dc1b3aa2dc233824"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Tue Jun 30 15:18:17 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jun 30 15:18:17 2009 +0100"
      },
      "message": "dm table: fix blk_stack_limits arg to use bytes not sectors\n\nThe offset passed to blk_stack_limits() must be in bytes not sectors.\nFixes false warnings like the following:\ndevice-mapper: table: 254:1: target device sda6 is misaligned\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nReported-by: Frans Pop \u003celendil@planet.nl\u003e\nTested-by: Frans Pop \u003celendil@planet.nl\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "874d2f61d31e596c36af7732dc1b3aa2dc233824",
      "tree": "5d135e78c6d8cabcaab563239933bf21ac3a7203",
      "parents": [
        "5a4f13fad1ab5bd08dea78fc55321e429d83cddf"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Tue Jun 30 15:18:14 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jun 30 15:18:14 2009 +0100"
      },
      "message": "dm exception store: really fix type lookup\n\nFix exception store name handling.\n\nWe need to reference exception store by zero terminated string.\n\nFixes regression introduced in commit f6bd4eb73cdf2a5bf954e497972842f39cabb7e3\n\nCc: Yi Yang \u003cyi.y.yang@intel.com\u003e\nCc: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nCc: stable@kernel.org\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f40c67f0f7e2767f80f7cbcbc1ab86c4113c202e",
      "tree": "e8a20f3ceac54ac6edd0f25ffa95c0216a949c52",
      "parents": [
        "523d9297d43cce3fa6de6474b7674329e98743b1"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Mon Jun 22 10:12:37 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:37 2009 +0100"
      },
      "message": "dm mpath: change to be request based\n\nThis patch converts dm-multipath target to request-based from bio-based.\n\nBasically, the patch just converts the I/O unit from struct bio\nto struct request.\nIn the course of the conversion, it also changes the I/O queueing\nmechanism.  The change in the I/O queueing is described in details\nas follows.\n\nI/O queueing mechanism change\n-----------------------------\nIn I/O submission, map_io(), there is no mechanism change from\nbio-based, since the clone request is ready for retry as it is.\nHowever, in I/O complition, do_end_io(), there is a mechanism change\nfrom bio-based, since the clone request is not ready for retry.\n\nIn do_end_io() of bio-based, the clone bio has all needed memory\nfor resubmission.  So the target driver can queue it and resubmit\nit later without memory allocations.\nThe mechanism has almost no overhead.\n\nOn the other hand, in do_end_io() of request-based, the clone request\ndoesn\u0027t have clone bios, so the target driver can\u0027t resubmit it\nas it is.  To resubmit the clone request, memory allocation for\nclone bios is needed, and it takes some overheads.\nTo avoid the overheads just for queueing, the target driver doesn\u0027t\nqueue the clone request inside itself.\nInstead, the target driver asks dm core for queueing and remapping\nthe original request of the clone request, since the overhead for\nqueueing is just a freeing memory for the clone request.\n\nAs a result, the target driver doesn\u0027t need to record/restore\nthe information of the original request for resubmitting\nthe clone request.  So dm_bio_details in dm_mpath_io is removed.\n\nmultipath_busy()\n---------------------\nThe target driver returns \"busy\", only when the following case:\n  o The target driver will map I/Os, if map() function is called\n  and\n  o The mapped I/Os will wait on underlying device\u0027s queue due to\n    their congestions, if map() function is called now.\n\nIn other cases, the target driver doesn\u0027t return \"busy\".\nOtherwise, dm core will keep the I/Os and the target driver can\u0027t\ndo what it wants.\n(e.g. the target driver can\u0027t map I/Os now, so wants to kill I/Os.)\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\nAcked-by: Hannes Reinecke \u003chare@suse.de\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "523d9297d43cce3fa6de6474b7674329e98743b1",
      "tree": "b889df9e26458c134a909c9ada51fa961fbf1291",
      "parents": [
        "5d67aa2366ccb8257d103d0b43df855605c3c086"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Mon Jun 22 10:12:37 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:37 2009 +0100"
      },
      "message": "dm: disable interrupt when taking map_lock\n\nThis patch disables interrupt when taking map_lock to avoid\nlockdep warnings in request-based dm.\n\nrequest-based dm takes map_lock after taking queue_lock with\ndisabling interrupt:\n  spin_lock_irqsave(queue_lock)\n  q-\u003erequest_fn() \u003d\u003d dm_request_fn()\n    \u003d\u003e dm_get_table()\n         \u003d\u003e read_lock(map_lock)\nwhile queue_lock could be (but isn\u0027t) taken in interrupt context.\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\nAcked-by: Christof Schmitt \u003cchristof.schmitt@de.ibm.com\u003e\nAcked-by: Hannes Reinecke \u003chare@suse.de\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5d67aa2366ccb8257d103d0b43df855605c3c086",
      "tree": "1d03f2e89ef47773a757f05b17741b8cbe47e882",
      "parents": [
        "e6ee8c0b767540f59e20da3ced282601db8aa502"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Mon Jun 22 10:12:36 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:36 2009 +0100"
      },
      "message": "dm: do not set QUEUE_ORDERED_DRAIN if request based\n\nRequest-based dm doesn\u0027t have barrier support yet.\nSo we need to set QUEUE_ORDERED_DRAIN only for bio-based dm.\nSince the device type is decided at the first table loading time,\nthe flag set is deferred until then.\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\nAcked-by: Hannes Reinecke \u003chare@suse.de\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "e6ee8c0b767540f59e20da3ced282601db8aa502",
      "tree": "101cb830994734eb45a4a47cd5988f24da67fa4f",
      "parents": [
        "cec47e3d4a861e1d942b3a580d0bbef2700d2bb2"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Mon Jun 22 10:12:36 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:36 2009 +0100"
      },
      "message": "dm: enable request based option\n\nThis patch enables request-based dm.\n\no Request-based dm and bio-based dm coexist, since there are\n  some target drivers which are more fitting to bio-based dm.\n  Also, there are other bio-based devices in the kernel\n  (e.g. md, loop).\n  Since bio-based device can\u0027t receive struct request,\n  there are some limitations on device stacking between\n  bio-based and request-based.\n\n                     type of underlying device\n                   bio-based      request-based\n   ----------------------------------------------\n    bio-based         OK                OK\n    request-based     --                OK\n\n  The device type is recognized by the queue flag in the kernel,\n  so dm follows that.\n\no The type of a dm device is decided at the first table binding time.\n  Once the type of a dm device is decided, the type can\u0027t be changed.\n\no Mempool allocations are deferred to at the table loading time, since\n  mempools for request-based dm are different from those for bio-based\n  dm and needed mempool type is fixed by the type of table.\n\no Currently, request-based dm supports only tables that have a single\n  target.  To support multiple targets, we need to support request\n  splitting or prevent bio/request from spanning multiple targets.\n  The former needs lots of changes in the block layer, and the latter\n  needs that all target drivers support merge() function.\n  Both will take a time.\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": "cec47e3d4a861e1d942b3a580d0bbef2700d2bb2",
      "tree": "2f92b957d515a5d887fe0147984cda3203c8b8ea",
      "parents": [
        "f5db4af466e2dca0fe822019812d586ca910b00c"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Mon Jun 22 10:12:35 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:35 2009 +0100"
      },
      "message": "dm: prepare for request based option\n\nThis patch adds core functions for request-based dm.\n\nWhen struct mapped device (md) is initialized, md-\u003equeue has\nan I/O scheduler and the following functions are used for\nrequest-based dm as the queue functions:\n    make_request_fn: dm_make_request()\n    pref_fn:         dm_prep_fn()\n    request_fn:      dm_request_fn()\n    softirq_done_fn: dm_softirq_done()\n    lld_busy_fn:     dm_lld_busy()\nActual initializations are done in another patch (PATCH 2).\n\nBelow is a brief summary of how request-based dm behaves, including:\n  - making request from bio\n  - cloning, mapping and dispatching request\n  - completing request and bio\n  - suspending md\n  - resuming md\n\n  bio to request\n  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n  md-\u003equeue-\u003emake_request_fn() (dm_make_request()) calls __make_request()\n  for a bio submitted to the md.\n  Then, the bio is kept in the queue as a new request or merged into\n  another request in the queue if possible.\n\n  Cloning and Mapping\n  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n  Cloning and mapping are done in md-\u003equeue-\u003erequest_fn() (dm_request_fn()),\n  when requests are dispatched after they are sorted by the I/O scheduler.\n\n  dm_request_fn() checks busy state of underlying devices using\n  target\u0027s busy() function and stops dispatching requests to keep them\n  on the dm device\u0027s queue if busy.\n  It helps better I/O merging, since no merge is done for a request\n  once it is dispatched to underlying devices.\n\n  Actual cloning and mapping are done in dm_prep_fn() and map_request()\n  called from dm_request_fn().\n  dm_prep_fn() clones not only request but also bios of the request\n  so that dm can hold bio completion in error cases and prevent\n  the bio submitter from noticing the error.\n  (See the \"Completion\" section below for details.)\n\n  After the cloning, the clone is mapped by target\u0027s map_rq() function\n    and inserted to underlying device\u0027s queue using\n    blk_insert_cloned_request().\n\n  Completion\n  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n  Request completion can be hooked by rq-\u003eend_io(), but then, all bios\n  in the request will have been completed even error cases, and the bio\n  submitter will have noticed the error.\n  To prevent the bio completion in error cases, request-based dm clones\n  both bio and request and hooks both bio-\u003ebi_end_io() and rq-\u003eend_io():\n      bio-\u003ebi_end_io(): end_clone_bio()\n      rq-\u003eend_io():     end_clone_request()\n\n  Summary of the request completion flow is below:\n  blk_end_request() for a clone request\n    \u003d\u003e blk_update_request()\n       \u003d\u003e bio-\u003ebi_end_io() \u003d\u003d end_clone_bio() for each clone bio\n          \u003d\u003e Free the clone bio\n          \u003d\u003e Success: Complete the original bio (blk_update_request())\n             Error:   Don\u0027t complete the original bio\n    \u003d\u003e blk_finish_request()\n       \u003d\u003e rq-\u003eend_io() \u003d\u003d end_clone_request()\n          \u003d\u003e blk_complete_request()\n             \u003d\u003e dm_softirq_done()\n                \u003d\u003e Free the clone request\n                \u003d\u003e Success: Complete the original request (blk_end_request())\n                   Error:   Requeue the original request\n\n  end_clone_bio() completes the original request on the size of\n  the original bio in successful cases.\n  Even if all bios in the original request are completed by that\n  completion, the original request must not be completed yet to keep\n  the ordering of request completion for the stacking.\n  So end_clone_bio() uses blk_update_request() instead of\n  blk_end_request().\n  In error cases, end_clone_bio() doesn\u0027t complete the original bio.\n  It just frees the cloned bio and gives over the error handling to\n  end_clone_request().\n\n  end_clone_request(), which is called with queue lock held, completes\n  the clone request and the original request in a softirq context\n  (dm_softirq_done()), which has no queue lock, to avoid a deadlock\n  issue on submission of another request during the completion:\n      - The submitted request may be mapped to the same device\n      - Request submission requires queue lock, but the queue lock\n        has been held by itself and it doesn\u0027t know that\n\n  The clone request has no clone bio when dm_softirq_done() is called.\n  So target drivers can\u0027t resubmit it again even error cases.\n  Instead, they can ask dm core for requeueing and remapping\n  the original request in that cases.\n\n  suspend\n  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\n  Request-based dm uses stopping md-\u003equeue as suspend of the md.\n  For noflush suspend, just stops md-\u003equeue.\n\n  For flush suspend, inserts a marker request to the tail of md-\u003equeue.\n  And dispatches all requests in md-\u003equeue until the marker comes to\n  the front of md-\u003equeue.  Then, stops dispatching request and waits\n  for the all dispatched requests to complete.\n  After that, completes the marker request, stops md-\u003equeue and\n  wake up the waiter on the suspend queue, md-\u003ewait.\n\n  resume\n  \u003d\u003d\u003d\u003d\u003d\u003d\n  Starts md-\u003equeue.\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": "f5db4af466e2dca0fe822019812d586ca910b00c",
      "tree": "1bbaaa36509df9f7eecc19ccffa434048cf4b555",
      "parents": [
        "754c5fc7ebb417b23601a6222a6005cc2e7f2913"
      ],
      "author": {
        "name": "Jonthan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Mon Jun 22 10:12:35 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:35 2009 +0100"
      },
      "message": "dm raid1: add userspace log\n\nThis patch contains a device-mapper mirror log module that forwards\nrequests to userspace for processing.\n\nThe structures used for communication between kernel and userspace are\nlocated in include/linux/dm-log-userspace.h.  Due to the frequency,\ndiversity, and 2-way communication nature of the exchanges between\nkernel and userspace, \u0027connector\u0027 was chosen as the interface for\ncommunication.\n\nThe first log implementations written in userspace - \"clustered-disk\"\nand \"clustered-core\" - support clustered shared storage.   A userspace\ndaemon (in the LVM2 source code repository) uses openAIS/corosync to\nprocess requests in an ordered fashion with the rest of the nodes in the\ncluster so as to prevent log state corruption.  Other implementations\nwith no association to LVM or openAIS/corosync, are certainly possible.\n\n(Imagine if two machines are writing to the same region of a mirror.\nThey would both mark the region dirty, but you need a cluster-aware\nentity that can handle properly marking the region clean when they are\ndone.  Otherwise, you might clear the region when the first machine is\ndone, not the second.)\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nCc: Evgeniy Polyakov \u003cjohnpol@2ka.mipt.ru\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "754c5fc7ebb417b23601a6222a6005cc2e7f2913",
      "tree": "6c31b055fc26ec541d67fc1123ebaa4b7a8eae7a",
      "parents": [
        "18d8594dd93a1ae2fafd591ec026e87d743292bf"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Mon Jun 22 10:12:34 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:34 2009 +0100"
      },
      "message": "dm: calculate queue limits during resume not load\n\nCurrently, device-mapper maintains a separate instance of \u0027struct\nqueue_limits\u0027 for each table of each device.  When the configuration of\na device is to be changed, first its table is loaded and this structure\nis populated, then the device is \u0027resumed\u0027 and the calculated\nqueue_limits are applied.\n\nThis places restrictions on how userspace may process related devices,\nwhere it is often advantageous to \u0027load\u0027 tables for several devices\nat once before \u0027resuming\u0027 them together.  As the new queue_limits\nonly take effect after the \u0027resume\u0027, if they are changing and one\ndevice uses another, the latter must be \u0027resumed\u0027 before the former\nmay be \u0027loaded\u0027.\n\nThis patch moves the calculation of these queue_limits out of\nthe \u0027load\u0027 operation into \u0027resume\u0027.  Since we are no longer\npre-calculating this struct, we no longer need to maintain copies\nwithin our dm structs.\n\ndm_set_device_limits() now passes the \u0027start\u0027 of the device\u0027s\ndata area (aka pe_start) as the \u0027offset\u0027 to blk_stack_limits().\n\ninit_valid_queue_limits() is replaced by blk_set_default_limits().\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: martin.petersen@oracle.com\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "18d8594dd93a1ae2fafd591ec026e87d743292bf",
      "tree": "9a4b0ac8512864666fef0c6e3bc26c5db172f649",
      "parents": [
        "af4874e03ed82f050d5872d8c39ce64bf16b5c38"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Mon Jun 22 10:12:33 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:33 2009 +0100"
      },
      "message": "dm log: fix create_log_context to use logical_block_size of log device\n\ncreate_log_context() must use the logical_block_size from the log disk,\nwhere the I/O happens, not the target\u0027s logical_block_size.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "af4874e03ed82f050d5872d8c39ce64bf16b5c38",
      "tree": "38aa5dee43b4bb7a369995d4f38dee992cb051e0",
      "parents": [
        "1197764e403d97231eb6da2b1e16f511a7fd3101"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Mon Jun 22 10:12:33 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:33 2009 +0100"
      },
      "message": "dm target:s introduce iterate devices fn\n\nAdd .iterate_devices to \u0027struct target_type\u0027 to allow a function to be\ncalled for all devices in a DM target.  Implemented it for all targets\nexcept those in dm-snap.c (origin and snapshot).\n\n(The raid1 version number jumps to 1.12 because we originally reserved\n1.1 to 1.11 for \u0027block_on_error\u0027 but ended up using \u0027handle_errors\u0027\ninstead.)\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: martin.petersen@oracle.com\n"
    },
    {
      "commit": "1197764e403d97231eb6da2b1e16f511a7fd3101",
      "tree": "9c38793927501989c4c74cae0887309bd17484d8",
      "parents": [
        "5ab97588fb266187b88d1ad893251c94388f18ba"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Mon Jun 22 10:12:32 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:32 2009 +0100"
      },
      "message": "dm table: establish queue limits by copying table limits\n\nCopy the table\u0027s queue_limits to the DM device\u0027s request_queue.  This\nproperly initializes the queue\u0027s topology limits and also avoids having\nto track the evolution of \u0027struct queue_limits\u0027 in\ndm_table_set_restrictions()\n\nAlso fixes a bug that was introduced in dm_table_set_restrictions() via\ncommit ae03bf639a5027d27270123f5f6e3ee6a412781d.  In addition to\nestablishing \u0027bounce_pfn\u0027 in the queue\u0027s limits blk_queue_bounce_limit()\nalso performs an allocation to setup the ISA DMA pool.  This allocation\nresulted in \"sleeping function called from invalid context\" when called\nfrom dm_table_set_restrictions().\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5ab97588fb266187b88d1ad893251c94388f18ba",
      "tree": "0dfd693fb3a31e22353e5640db8c17c989b5c65d",
      "parents": [
        "be6d4305db093ad1cc623f7dd3d2470b7bd73fa4"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Mon Jun 22 10:12:32 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:32 2009 +0100"
      },
      "message": "dm table: replace struct io_restrictions with struct queue_limits\n\nUse blk_stack_limits() to stack block limits (including topology) rather\nthan duplicate the equivalent within Device Mapper.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "be6d4305db093ad1cc623f7dd3d2470b7bd73fa4",
      "tree": "27935ca83626cba6ba2fac2cc83deeca0ff15492",
      "parents": [
        "02acc3a4fa0a6c2a5ccc4fb722b55fb710265882"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Mon Jun 22 10:12:31 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:31 2009 +0100"
      },
      "message": "dm table: validate device logical_block_size\n\nImpose necessary and sufficient conditions on a devices\u0027s table such\nthat any incoming bio which respects its logical_block_size can be\nprocessed successfully.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "02acc3a4fa0a6c2a5ccc4fb722b55fb710265882",
      "tree": "5abd5bf61c8fe1a9bed391c828ffff34384f6b20",
      "parents": [
        "60935eb21d3c5bac79618000f38f92c249d153c4"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Mon Jun 22 10:12:30 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:30 2009 +0100"
      },
      "message": "dm table: ensure targets are aligned to logical_block_size\n\nEnsure I/O is aligned to the logical block size of target devices.\n\nRename check_device_area() to device_area_is_valid() for clarity and\nestablish the device limits including the logical block size prior to\ncalling it.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "60935eb21d3c5bac79618000f38f92c249d153c4",
      "tree": "0fcd78d7d69e23cd062e5214ddf2959d5c74e605",
      "parents": [
        "486d220fe4909b5745c4faa67faddd30a707abe2"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Mon Jun 22 10:12:30 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:30 2009 +0100"
      },
      "message": "dm ioctl: support cookies for udev\n\nAdd support for passing a 32 bit \"cookie\" into the kernel with the\nDM_SUSPEND, DM_DEV_RENAME and DM_DEV_REMOVE ioctls.  The (unsigned)\nvalue of this cookie is returned to userspace alongside the uevents\nissued by these ioctls in the variable DM_COOKIE.\n\nThis means the userspace process issuing these ioctls can be notified\nby udev after udev has completed any actions triggered.\n\nTo minimise the interface extension, we pass the cookie into the\nkernel in the event_nr field which is otherwise unused when calling\nthese ioctls.  Incrementing the version number allows userspace to\ndetermine in advance whether or not the kernel supports the cookie.\nIf the kernel does support this but userspace does not, there should\nbe no impact as the new variable will just get ignored.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "486d220fe4909b5745c4faa67faddd30a707abe2",
      "tree": "eb7184f8299a5446532a6ff96d48fcdc3a461268",
      "parents": [
        "1b6da754594e6e26c24e6fbc1a34f9c03e4617a3"
      ],
      "author": {
        "name": "Peter Rajnoha",
        "email": "prajnoha@redhat.com",
        "time": "Mon Jun 22 10:12:29 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:29 2009 +0100"
      },
      "message": "dm: sysfs add suspended attribute\n\nAdd a file named \u0027suspended\u0027 to each device-mapper device directory in\nsysfs.  It holds the value 1 while the device is suspended.  Otherwise\nit holds 0.\n\nSigned-off-by: Peter Rajnoha \u003cprajnoha@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "1b6da754594e6e26c24e6fbc1a34f9c03e4617a3",
      "tree": "713b521ab6f0769752c57bebb7c10621abc09cea",
      "parents": [
        "f392ba889b019602976082bfe7bf486c2594f85c"
      ],
      "author": {
        "name": "Jonthan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Mon Jun 22 10:12:29 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:29 2009 +0100"
      },
      "message": "dm table: improve warning message when devices not freed before destruction\n\nReport any devices forgotten to be freed before a table is destroyed.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f392ba889b019602976082bfe7bf486c2594f85c",
      "tree": "962e8f354dfe3df2021476412be8d1bcec8a03d0",
      "parents": [
        "fd5e033908b7b743b5650790f196761dd930f988"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Mon Jun 22 10:12:28 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:28 2009 +0100"
      },
      "message": "dm mpath: add service time load balancer\n\nThis patch adds a service time oriented dynamic load balancer,\ndm-service-time, which selects the path with the shortest estimated\nservice time for the incoming I/O.\nThe service time is estimated by dividing the in-flight I/O size\nby a performance value of each path.\n\nThe performance value can be given as a table argument at the table\nloading time.  If no performance value is given, all paths are\nconsidered equal.\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": "fd5e033908b7b743b5650790f196761dd930f988",
      "tree": "cd264d11371b9410e98388e00f4d87459a5e6325",
      "parents": [
        "02ab823fd1a27d193bda06b74fdad685a20a3e5e"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Mon Jun 22 10:12:27 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:27 2009 +0100"
      },
      "message": "dm mpath: add queue length load balancer\n\nThis patch adds a dynamic load balancer, dm-queue-length, which\nbalances the number of in-flight I/Os across the paths.\n\nThe code is based on the patch posted by Stefan Bader:\nhttps://www.redhat.com/archives/dm-devel/2005-October/msg00050.html\n\nSigned-off-by: Stefan Bader \u003cstefan.bader@canonical.com\u003e\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": "02ab823fd1a27d193bda06b74fdad685a20a3e5e",
      "tree": "04b3db6e494f483fef34a55e487e88f6d7c585a5",
      "parents": [
        "2bd023452592e5f5cf90dd426cc39b7632b15b76"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Mon Jun 22 10:12:27 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:27 2009 +0100"
      },
      "message": "dm mpath: add start_io and nr_bytes to path selectors\n\nThis patch makes two additions to the dm path selector interface for\ndynamic load balancers:\n  o a new hook, start_io()\n  o a new parameter \u0027nr_bytes\u0027 to select_path()/start_io()/end_io()\n    to pass the size of the I/O\n\nstart_io() is called when a target driver actually submits I/O\nto the selected path.\nPath selectors can use it to start accounting of the I/O.\n(e.g. counting the number of in-flight I/Os.)\nThe start_io hook is based on the patch posted by Stefan Bader:\nhttps://www.redhat.com/archives/dm-devel/2005-October/msg00050.html\n\nnr_bytes, the size of the I/O, is so path selectors can take the\nsize of the I/O into account when deciding which path to use.\ndm-service-time uses it to estimate service time, for example.\n(Added the nr_bytes member to dm_mpath_io instead of using existing\n details.bi_size, since request-based dm patch deletes it.)\n\nSigned-off-by: Stefan Bader \u003cstefan.bader@canonical.com\u003e\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": "2bd023452592e5f5cf90dd426cc39b7632b15b76",
      "tree": "62fe4d816c597e1b6c58bf150603dd72c9ce6135",
      "parents": [
        "51aa322849581f1a73594e48ea0df63f914ee6a2"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:26 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:26 2009 +0100"
      },
      "message": "dm snapshot: use barrier when writing exception store\n\nSend barrier requests when updating the exception area.\n\nException area updates need to be ordered w.r.t. data writes, so that\nthe writes are not reordered in hardware disk cache.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "51aa322849581f1a73594e48ea0df63f914ee6a2",
      "tree": "19b3545084700fc36b5a916d71473936628bb062",
      "parents": [
        "5af443a7e1c0864100cc44525a9821aa2a2f4719"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:26 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:26 2009 +0100"
      },
      "message": "dm io: retry after barrier error\n\nIf -EOPNOTSUPP was returned and the request was a barrier request, retry it\nwithout barrier.\n\nRetry all regions for now. Barriers are submitted only for one-region requests,\nso it doesn\u0027t matter.  (In the future, retries can be limited to the actual\nregions that failed.)\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5af443a7e1c0864100cc44525a9821aa2a2f4719",
      "tree": "87ab19984e94c8aaba743e47ab62cf084afbdf2c",
      "parents": [
        "494b3ee7d4f69210def80aecce28d08c3f0755d5"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:25 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:25 2009 +0100"
      },
      "message": "dm io: record eopnotsupp\n\nAdd another field, eopnotsupp_bits. It is subset of error_bits, representing\nregions that returned -EOPNOTSUPP.  (The bit is set in both error_bits and\neopnotsupp_bits).\n\nThis value will be used in further patches.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "494b3ee7d4f69210def80aecce28d08c3f0755d5",
      "tree": "8cd8fc4de72cf9a1a56e45518019a3cae106515a",
      "parents": [
        "8627921fa2ef6d40fd9b787e163ba3a9ff8f471d"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:25 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:25 2009 +0100"
      },
      "message": "dm snapshot: support barriers\n\nFlush support for dm-snapshot target.\n\nThis patch just forwards the flush request to either the origin or the snapshot\ndevice.  (It doesn\u0027t flush exception store metadata.)\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "8627921fa2ef6d40fd9b787e163ba3a9ff8f471d",
      "tree": "a34175f655e47785104b204e1b461baa8d10ecce",
      "parents": [
        "c927259e34e518d913d86f51c71b786a513f94d6"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:24 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:24 2009 +0100"
      },
      "message": "dm mpath: support barriers\n\nFlush support for dm-multipath target.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c927259e34e518d913d86f51c71b786a513f94d6",
      "tree": "0797e9e4689749ad70b6739f845374dc9c57c65d",
      "parents": [
        "647c7db14ef9cacc4ccb3683e206b61f0de6dc2b"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:23 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:23 2009 +0100"
      },
      "message": "dm delay: support barriers\n\nFlush support for dm-delay target.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "647c7db14ef9cacc4ccb3683e206b61f0de6dc2b",
      "tree": "4ef2475e295813dcce1123f2c74ba04061db1b7e",
      "parents": [
        "374bf7e7f6cc38b0483351a2029a97910eadde1b"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:23 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:23 2009 +0100"
      },
      "message": "dm crypt: support flush\n\nFlush support for dm-crypt target.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "374bf7e7f6cc38b0483351a2029a97910eadde1b",
      "tree": "10db8f79cd22e0c4ecc683fdd304aca60815bf79",
      "parents": [
        "433bcac5645508b71eab2710b6817c3ef937eba8"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:22 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:22 2009 +0100"
      },
      "message": "dm: stripe support flush\n\nFlush support for the stripe target.\n\nThis sets ti-\u003enum_flush_requests to the number of stripes and\nremaps individual flush requests to the appropriate stripe devices.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "433bcac5645508b71eab2710b6817c3ef937eba8",
      "tree": "d2c1d8e9403d0f3e83c63085a9046f466de431c3",
      "parents": [
        "52b1fd5a27c625c78373e024bf570af3c9d44a79"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:22 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:22 2009 +0100"
      },
      "message": "dm: linear support flush\n\nFlush support for the linear target.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "52b1fd5a27c625c78373e024bf570af3c9d44a79",
      "tree": "a802b917b45685255220efaeb7b2b8ee2d04a2d4",
      "parents": [
        "9015df24a8008d7bea2bd3df881783ebe0dcb9af"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:21 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:21 2009 +0100"
      },
      "message": "dm: send empty barriers to targets in dm_flush\n\nPass empty barrier flushes to the targets in dm_flush().\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "9015df24a8008d7bea2bd3df881783ebe0dcb9af",
      "tree": "aff9a824a202525036d5f2dc52ad728dc9a38cbd",
      "parents": [
        "f9ab94cee313746573b2d693bc2afb807ebb0998"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:21 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:21 2009 +0100"
      },
      "message": "dm: initialise tio in alloc_tio\n\nMove repeated dm_target_io initialisation inside alloc_tio().\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f9ab94cee313746573b2d693bc2afb807ebb0998",
      "tree": "150155f364db0f26c7217e1f92d31344aa67a3f0",
      "parents": [
        "27eaa14975d8b53f0bad422e53cdf8e5f6dd44ec"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:20 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:20 2009 +0100"
      },
      "message": "dm: introduce num_flush_requests\n\nIntroduce num_flush_requests for a target to set to say how many flush\ninstructions (empty barriers) it wants to receive.  These are sent by\n__clone_and_map_empty_barrier with map_info-\u003eflush_request going from 0\nto (num_flush_requests - 1).\n\nOld targets without flush support won\u0027t receive any flush requests.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "27eaa14975d8b53f0bad422e53cdf8e5f6dd44ec",
      "tree": "647587ef410cfe862af501922704871f99ead273",
      "parents": [
        "fdb9572b73abd008b80931c3b1f157dac3888bb9"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:20 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:20 2009 +0100"
      },
      "message": "dm: remove check that prevents mapping empty bios\n\nRemove the check that the size of the cloned bio is not zero because a\nsubsequent patch needs to send zero-sized barriers down this path.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fdb9572b73abd008b80931c3b1f157dac3888bb9",
      "tree": "ae84d6ed1c97e77d536d0bcf2e25fa35d5cbfcba",
      "parents": [
        "5aa2781d964e9835c441932110484bc454b5c207"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:19 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:19 2009 +0100"
      },
      "message": "dm: remove EOPNOTSUPP for barriers\n\nIf the underlying device doesn\u0027t support barriers and dm receives a\nbarrier, it waits until all requests on that device drain so it no\nlonger needs to report -EOPNOTSUPP to the caller.\n\nThis patch deals with the confusing situation when moving a volume from\none physical device to another triggers an EOPNOTSUPP on a volume that\ndidn\u0027t report it before.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5aa2781d964e9835c441932110484bc454b5c207",
      "tree": "4f771f3e933eaedf67e5f9e8d5fcc10340af80e2",
      "parents": [
        "2761e95fe40ca0d01864310fa4d488d7c5e34e18"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:18 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:18 2009 +0100"
      },
      "message": "dm: store only first barrier error\n\nWith the following patches, more than one error can occur during\nprocessing.  Change md-\u003ebarrier_error so that only the first one is\nrecorded and returned to the caller.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "2761e95fe40ca0d01864310fa4d488d7c5e34e18",
      "tree": "a49245e8ebb022605c5d1ce04948cf4a7f9a5c3b",
      "parents": [
        "531fe96364f30879753d46c1f52ab839e12d2e5d"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:18 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:18 2009 +0100"
      },
      "message": "dm: process requeue in dm_wq_work\n\nIf barrier request was returned with DM_ENDIO_REQUEUE,\nrequeue it in dm_wq_work instead of dec_pending.\n\nThis allows us to correctly handle a situation when some targets\nare asking for a requeue and other targets signal an error.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "531fe96364f30879753d46c1f52ab839e12d2e5d",
      "tree": "61a625f68c3105c1525e2eebba0f046a3678eb37",
      "parents": [
        "32a926da5a16c01a8213331e5764472ce2f14a8d"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:17 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:17 2009 +0100"
      },
      "message": "dm: make dm_flush return void\n\nMake dm_flush return void.\n\nThe first error during flush is stored in md-\u003ebarrier_error instead.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "32a926da5a16c01a8213331e5764472ce2f14a8d",
      "tree": "edac1cef90e4754353a50fb948c4e34b4df8b5bc",
      "parents": [
        "db8fef4fabe4a546ce74f80bff64fd43776e5912"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:17 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:17 2009 +0100"
      },
      "message": "dm: always hold bdev reference\n\nFix a potential deadlock when creating multiple snapshots by holding a\nreference to struct block_device for the whole lifecycle of every dm\ndevice instead of obtaining it independently at each point it is needed.\n\nbdget_disk() was called while the device was being suspended, in\ndm_suspend().  However there could be other devices already suspended,\nfor example when creating additional snapshots of a device. bdget_disk()\ncan wait for IO and allocate memory resulting in waiting for the\nalready-suspended device - deadlock.\n\nThis patch changes the code so that it gets the reference to struct\nblock_device when struct mapped_device is allocated and initialized in\nalloc_dev() where it is always OK to allocate memory or wait for I/O.\nIt drops the reference when it is destroyed in free_dev().  Thus there\nis no call to bdget_disk() while any device is suspended.\n\nPreviously unlock_fs() was called only if bdev was held.  Now it is\ncalled unconditionally, but the superfluous calls are harmless because\nit returns immediately if the filesystem was not previously frozen.\n\nThis patch also now allows the device size to be changed in a\nnoflush suspend because the bdev is held.  This has no adverse effect.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "db8fef4fabe4a546ce74f80bff64fd43776e5912",
      "tree": "0e3cc2d7aa40783a1036cce6deb227a3a6d6c9e2",
      "parents": [
        "f6bd4eb73cdf2a5bf954e497972842f39cabb7e3"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:15 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:15 2009 +0100"
      },
      "message": "dm: rename suspended_bdev to bdev\n\nRename suspended_bdev to bdev.\n\nThis patch doesn\u0027t change any functionality, just renames the variable.\nIn the next patch, the variable will be used even for non-suspended device.\n\n(Pre-requisite for the per-target barrier support patches.)\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f6bd4eb73cdf2a5bf954e497972842f39cabb7e3",
      "tree": "f1f0ac6c9fe3ff31cccf6082397bd0802d999344",
      "parents": [
        "5657e8fa45cf230df278040c420fb80e06309d8f"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Mon Jun 22 10:12:15 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:15 2009 +0100"
      },
      "message": "dm exception store: fix exstore lookup to be case insensitive\n\nWhen snapshots are created using \u0027p\u0027 instead of \u0027P\u0027 as the\nexception store type, the device-mapper table loading fails.\n\nThis patch makes the code case insensitive as intended and fixes some\nregressions reported with device-mapper snapshots.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5657e8fa45cf230df278040c420fb80e06309d8f",
      "tree": "7817e1bd6c9b721be85fe54a1aec6ef971d7d96b",
      "parents": [
        "8cbeb67ad50f7d68e5e83be2cb2284de8f9c03b5"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:14 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:14 2009 +0100"
      },
      "message": "dm: use i_size_read\n\nUse i_size_read() instead of reading i_size.\n\nIf someone changes the size of the device simultaneously, i_size_read\nis guaranteed to return a valid value (either the old one or the new one).\n\ni_size can return some intermediate invalid value (on 32-bit computers\nwith 64-bit i_size, the reads to both halves of i_size can be interleaved\nwith updates to i_size, resulting in garbage being returned).\n\nCc: stable@kernel.org\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "8cbeb67ad50f7d68e5e83be2cb2284de8f9c03b5",
      "tree": "4fd4a467c06441ad7c07211b386c786062aa2aeb",
      "parents": [
        "53b351f972a882ea8b6cdb19602535f1057c884a"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:14 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:14 2009 +0100"
      },
      "message": "dm: avoid unsupported spanning of md stripe boundaries\n\nA bio that has two or more vector entries, size less than or equal to\npage size, that crosses a stripe boundary of an underlying md device is\naccepted by device mapper (it conforms to all its limits) but not by the\nunderlying device.\n\nThe fix is: If device mapper selects the one-page maximum request size,\nit also needs to set its own q-\u003emerge_bvec_fn to reject any bios with\nmultiple vector entries that span more pages.\n\nThe problem was discovered in the following scenario:\n  * MD - RAID-0\n  * LV on the top of it (raid1, snapshot or striped with chunk\nsize/stripe larger than RAID-0 stripe)\n  * one of the logical volumes is exported to xen domU\n  * inside xen domU it is partitioned, the key point is that the partition\nmust be unaligned on page boundary (fdisk normally aligns the partition to\n63 sectors which will trigger it)\n  * install the system on the partitioned disk in domU\nThis causes I/O failures in dom0.\nReference: https://bugzilla.redhat.com/show_bug.cgi?id\u003d223947\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "53b351f972a882ea8b6cdb19602535f1057c884a",
      "tree": "0a3736a570dc7ff3c6ebf0993950a36a9784b142",
      "parents": [
        "a72986c562eeec3f7b992198c168f0f41606fe53"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:13 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:13 2009 +0100"
      },
      "message": "dm mpath: flush keventd queue in destructor\n\nThe commit fe9cf30eb8186ef267d1868dc9f12f2d0f40835a moves dm table event\nsubmission from kmultipath queue to kernel kevent queue to avoid a\ndeadlock.\n\nThere is a possibility of race condition because kevent queue is not flushed\nin the multipath destructor. The scenario is:\n- some event happens and is queued to keventd\n- keventd thread is delayed due to scheuling latency or some other work\n- multipath device is destroyed\n- keventd now attempts to process work_struct that is residing in already\n  released memory.\n\nThe patch flushes the keventd queue in multipath constructor.\nI\u0027ve already fixed similar bug in dm-raid1.\n\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": "a72986c562eeec3f7b992198c168f0f41606fe53",
      "tree": "2ee7051fa43c04ab0d72487b249aa733ec129703",
      "parents": [
        "e54f77ddda72781ec1c1696b21aabd6a30cbb7c6"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:13 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:13 2009 +0100"
      },
      "message": "dm raid1: keep retrying alloc if mempool_alloc failed\n\nIf the code can\u0027t handle allocation failures, use __GFP_NOFAIL so that\nin case of memory pressure the allocator will retry indefinitely and\nwon\u0027t return NULL which would cause a crash in the function.\n\nThis is still not a correct fix, it may cause a classic deadlock when\nmemory manager waits for I/O being done and I/O waits for some free memory.\nI/O code shouldn\u0027t allocate any memory. But in this case it probably\ndoesn\u0027t matter much in practice, people usually do not swap on RAID.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "e54f77ddda72781ec1c1696b21aabd6a30cbb7c6",
      "tree": "9ba727373125fce5e75a02ac1b67b2b1f894c81e",
      "parents": [
        "a0cf7ea9549ec60988369f90e5c0f855f08abac9"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Mon Jun 22 10:12:12 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:12 2009 +0100"
      },
      "message": "dm mpath: call activate fn for each path in pg_init\n\nFixed a problem affecting reinstatement of passive paths.\n\nBefore we moved the hardware handler from dm to SCSI, it performed a pg_init\nfor a path group and didn\u0027t maintain any state about each path in hardware\nhandler code.\n\nBut in SCSI dh, such state is now maintained, as we want to fail I/O early on a\npath if it is not the active path.\n\nAll the hardware handlers have a state now and set to active or some form of\ninactive.  They have prep_fn() which uses this state to fail the I/O without\nit ever being sent to the device.\n\nSo in effect when dm-multipath calls scsi_dh_activate(), activate is\nsent to only one path and the \"state\" of that path is changed appropriately\nto \"active\" while other paths in the same path group are never changed\nas they never got an \"activate\".\n\nIn order make sure all the paths in a path group gets their state set\nproperly when a pg_init happens, we need to call scsi_dh_activate() on\nall paths in a path group.\n\nDoing this at the hardware handler layer is not a good option as we\nwant the multipath layer to define the relationship between path and path\ngroups and not the hardware handler.\n\nAttached patch sends an \"activate\" on each path in a path group when a\npath group is switched. It also sends an activate when a path is reinstated.\n\nSigned-off-by: Chandra Seetharaman \u003csekharan@us.ibm.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a0cf7ea9549ec60988369f90e5c0f855f08abac9",
      "tree": "9a073e2360afebe6485ac3a78c796627fc9e80b2",
      "parents": [
        "4d89b7b4e4726893453d0fb4ddbb5b3e16353994"
      ],
      "author": {
        "name": "Hannes Reinecke",
        "email": "hare@suse.de",
        "time": "Mon Jun 22 10:12:11 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:11 2009 +0100"
      },
      "message": "dm mpath: change attached scsi_dh\n\nWhen specifying a different hardware handler via multipath\nfeatures we should be able to override the built-in defaults.\n\nThe problem here is the hardware table from scsi_dh is compiled\nin and cannot be changed from userland. The multipath.conf OTOH\nis purely user-defined and, what\u0027s more, the user might have a valid\nreason for modifying it.\n(EG EMC Clariion can well be run in PNR mode even though ALUA is\nactive, or the user might want to try ALUA on any as-of-yet unknown\ndevices)\n\nSo _not_ allowing multipath to override the device handler setting\nwill just add to the confusion and makes error tracking even more\ndifficult.\n\nSigned-off-by: Hannes Reinecke \u003chare@suse.de\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4d89b7b4e4726893453d0fb4ddbb5b3e16353994",
      "tree": "f0775811ee4942eadd555d5ddcdbb5ff313290bb",
      "parents": [
        "e094f4f15f5169526c7200b9bde44b900548a81e"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Mon Jun 22 10:12:11 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:11 2009 +0100"
      },
      "message": "dm: sysfs skip output when device is being destroyed\n\nDo not process sysfs attributes when device is being destroyed.\n\nOtherwise code can cause\n  BUG_ON(test_bit(DMF_FREEING, \u0026md-\u003eflags));\nin dm_put() call.\n\nCc: stable@kernel.org\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "e094f4f15f5169526c7200b9bde44b900548a81e",
      "tree": "5ca573d45371779a183276066578bed1f38f11c6",
      "parents": [
        "0e0497c0c017664994819f4602dc07fd95896c52"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:10 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:10 2009 +0100"
      },
      "message": "dm mpath: validate hw_handler argument count\n\nFix arg count parsing error in hw handlers.\n\nCc: stable@kernel.org\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "0e0497c0c017664994819f4602dc07fd95896c52",
      "tree": "d6a70d29e5eae6ca9cf3ca197db9f0ab8a3b5e51",
      "parents": [
        "f234012f52a37e48f2330e1ca2df69800e797c3b"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:08:02 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:08:02 2009 +0100"
      },
      "message": "dm mpath: validate table argument count\n\nThe parser reads the argument count as a number but doesn\u0027t check that\nsufficient arguments are supplied. This command triggers the bug:\n\ndmsetup create mpath --table \"0 `blockdev --getsize /dev/mapper/cr0`\n    multipath 0 0 2 1 round-robin 1000 0 1 1 /dev/mapper/cr0\n    round-robin 0 1 1 /dev/mapper/cr1 1000\"\nkernel BUG at drivers/md/dm-mpath.c:530!\n\nCc: stable@kernel.org\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "31583d6acf940d2951bc8716557b06d9de5a0c4b",
      "tree": "607aef385b0998f0cb7ff63b05407afed5182840",
      "parents": [
        "ee37ba7a4212c7420f12e6a2ad8a3966649ede7a",
        "f740f5ca056f0a4eff3abdf272a8a4ba3965d57d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 19 17:43:04 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 19 17:43:04 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block:\n  Fix kernel-doc parameter name typo in blk-settings.c:\n  block: rename CONFIG_LBD to CONFIG_LBDAF\n  block: Fix bounce_pfn setting\n  hd: stop defining MAJOR_NR\n"
    },
    {
      "commit": "90c699a9ee4be165966d40f1837909ccb8890a68",
      "tree": "ff136ce7b73c7d7bbf5eb4241d01cb3b930d3566",
      "parents": [
        "3a02c8e8142f7f133d4c6e72bc3e1d830e6b8b9e"
      ],
      "author": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Fri Jun 19 08:08:50 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jun 19 08:08:50 2009 +0200"
      },
      "message": "block: rename CONFIG_LBD to CONFIG_LBDAF\n\nFollow-up to \"block: enable by default support for large devices\nand files on 32-bit archs\".\n\nRename CONFIG_LBD to CONFIG_LBDAF to:\n- allow update of existing [def]configs for \"default y\" change\n- reflect that it is used also for large files support nowadays\n\nSigned-off-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "9729a6eb5878a3daa18395f2b5fb38bf9359a761",
      "tree": "7ea32e9793c659d4059c49e7da2f38da795e7679",
      "parents": [
        "5ae8606d5746bc84e19018fc3753cc1faf18843f",
        "48606a9f2fc034f0b308d088c1f7ab6d407c462c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:11:50 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:11:50 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md: (39 commits)\n  md/raid5: correctly update sync_completed when we reach max_resync\n  md/raid5: add missing call to schedule() after prepare_to_wait()\n  md/linear: use call_rcu to free obsolete \u0027conf\u0027 structures.\n  md linear: Protecting mddev with rcu locks to avoid races\n  md: Move check for bitmap presence to personality code.\n  md: remove chunksize rounding from common code.\n  md: raid0/linear: ensure device sizes are rounded to chunk size.\n  md: move assignment of -\u003eutime so that it never gets skipped.\n  md: Push down reconstruction log message to personality code.\n  md: merge reconfig and check_reshape methods.\n  md: remove unnecessary arguments from -\u003ereconfig method.\n  md: raid5: check stripe cache is large enough in start_reshape\n  md: raid0: chunk_sectors cleanups.\n  md: fix some comments.\n  md/raid5: Use is_power_of_2() in raid5_reconfig()/raid6_reconfig().\n  md: convert conf-\u003echunk_size and conf-\u003eprev_chunk to sectors.\n  md: Convert mddev-\u003enew_chunk to sectors.\n  md: Make mddev-\u003echunk_size sector-based.\n  md: raid0 :Enables chunk size other than powers of 2.\n  md: prepare for non-power-of-two chunk sizes\n  ...\n"
    },
    {
      "commit": "48606a9f2fc034f0b308d088c1f7ab6d407c462c",
      "tree": "4d1e9f14a3400905ff6c1a6d16c423da013bee8d",
      "parents": [
        "7a3ab908948b6296ee7e81d42f7c176361c51975"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 09:14:12 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 09:14:12 2009 +1000"
      },
      "message": "md/raid5: correctly update sync_completed when we reach max_resync\n\nAt the end of reshape_request we update cyrr_resync_completed\nif we are about to pause due to reaching resync_max.\nHowever we update it to the wrong value.  We need to add the\n\"reshape_sectors\" that have just been reshaped.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7a3ab908948b6296ee7e81d42f7c176361c51975",
      "tree": "61a066da1bda9af8268bb865e609518be8efd024",
      "parents": [
        "495d357301e1de01fabe30ce9a555301fb4675c3"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jun 16 16:00:33 2009 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:50:18 2009 +1000"
      },
      "message": "md/raid5: add missing call to schedule() after prepare_to_wait()\n\nIn the unlikely event that reshape progresses past the current request\nwhile it is waiting for a stripe we need to schedule() before retrying\nfor 2 reasons:\n1/ Prevent list corruption from duplicated list_add() calls without\n   intervening list_del().\n2/ Give the reshape code a chance to make some progress to resolve the\n   conflict.\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "495d357301e1de01fabe30ce9a555301fb4675c3",
      "tree": "cff9506eec5e4008004a913acf8f58d85eae6de6",
      "parents": [
        "af11c397fd8835c70ec0bb777104e4ab98b2d660"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:49:42 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:49:42 2009 +1000"
      },
      "message": "md/linear: use call_rcu to free obsolete \u0027conf\u0027 structures.\n\nCurrent, when we update the \u0027conf\u0027 structure, when adding a\ndrive to a linear array, we keep the old version around until\nthe array is finally stopped, as it is not safe to free it\nimmediately.\n\nNow that we have rcu protection on all accesses to \u0027conf\u0027,\nwe can use call_rcu to free it more promptly.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "af11c397fd8835c70ec0bb777104e4ab98b2d660",
      "tree": "59371fb1f955083f890dd6434e4c2f0ab9b7a97a",
      "parents": [
        "0894cc3066aaa3e75a99383c0d25feebf9b688ac"
      ],
      "author": {
        "name": "SandeepKsinha",
        "email": "sandeepksinha@gmail.com",
        "time": "Thu Jun 18 08:49:35 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:49:35 2009 +1000"
      },
      "message": "md linear: Protecting mddev with rcu locks to avoid races\n\n\nDue to the lack of memory ordering guarantees, we may have races around\nmddev-\u003econf.\n\nIn particular, the correct contents of the structure we get from\ndereferencing -\u003eprivate might not be visible to this CPU yet, and\nthey might not be correct w.r.t mddev-\u003eraid_disks.\n\nThis patch addresses the problem using rcu protection to avoid\nsuch race conditions.\n\nSigned-off-by: SandeepKsinha \u003csandeepksinha@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0894cc3066aaa3e75a99383c0d25feebf9b688ac",
      "tree": "651664e6b288e36dc9553443e334e650139851c8",
      "parents": [
        "8190e754e0723de7cecb80bdd9eb93911dfa04a1"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Thu Jun 18 08:49:23 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:49:23 2009 +1000"
      },
      "message": "md: Move check for bitmap presence to personality code.\n\nIf the superblock of a component device indicates the presence of a\nbitmap but the corresponding raid personality does not support bitmaps\n(raid0, linear, multipath, faulty), then something is seriously wrong\nand we\u0027d better refuse to run such an array.\n\nCurrently, this check is performed while the superblocks are examined,\ni.e. before entering personality code. Therefore the generic md layer\nmust know which raid levels support bitmaps and which do not.\n\nThis patch avoids this layer violation without adding identical code\nto various personalities. This is accomplished by introducing a new\npublic function to md.c, md_check_no_bitmap(), which replaces the\nhard-coded checks in the superblock loading functions.\n\nA call to md_check_no_bitmap() is added to the -\u003erun method of each\npersonality which does not support bitmaps and assembly is aborted\nif at least one component device contains a bitmap.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8190e754e0723de7cecb80bdd9eb93911dfa04a1",
      "tree": "6fbd0edd64cb767b9421103301e198804c3aa40b",
      "parents": [
        "13f2682b7216ebebd72b3d5868fe7fccec91a92d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:48:58 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:48:58 2009 +1000"
      },
      "message": "md: remove chunksize rounding from common code.\n\nIt is easiest to round sizes to multiples of chunk size in\nthe personality code for those personalities which care.\nThose personalities now do the rounding, so we can\nremove that function from common code.\n\nAlso remove the upper bound on the size of a chunk, and the lower\nbound on the size of a device (1 chunk), neither of which really buy\nus anything.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "13f2682b7216ebebd72b3d5868fe7fccec91a92d",
      "tree": "a5ba7509f0f6d61b2d7b478494a210794a8e55e3",
      "parents": [
        "1b57f132231593923cb4ab99943ddd777e8745bc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:48:55 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:48:55 2009 +1000"
      },
      "message": "md: raid0/linear: ensure device sizes are rounded to chunk size.\n\nThis is currently ensured by common code, but it is more reliable to\nensure it where it is needed in personality code.\nAll the other personalities that care already round the size to\nthe chunk_size.  raid0 and linear are the only hold-outs.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1b57f132231593923cb4ab99943ddd777e8745bc",
      "tree": "b76f936d08e5ef72430c6fbcf9352f53721481ec",
      "parents": [
        "8c6ac868b107ed50a46204f6d14e2ad9443ff146"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:48:19 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:48:19 2009 +1000"
      },
      "message": "md: move assignment of -\u003eutime so that it never gets skipped.\n\nCurrently the assignment to utime gets skipped for \u0027external\u0027\nmetadata.  So move it to the top of the function so that it\nalways gets effected.\nThis is of largely cosmetic interest.  Nothing actually depends\non -\u003eutime being right for external arrays.\n\"mdadm --monitor\" does use it for 0.90 and 1.x arrays, but with\nmdadm-3.0, this is not important for external metadata.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8c6ac868b107ed50a46204f6d14e2ad9443ff146",
      "tree": "a0690ce92ed1993cc3211448948f3964c389c082",
      "parents": [
        "50ac168a6e0a061bf5346d53aa9e7beb94c97527"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Thu Jun 18 08:48:06 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:48:06 2009 +1000"
      },
      "message": "md: Push down reconstruction log message to personality code.\n\nCurrently, the md layer checks in analyze_sbs() if the raid level\nsupports reconstruction (mddev-\u003elevel \u003e\u003d 1) and if reconstruction is\nin progress (mddev-\u003erecovery_cp !\u003d MaxSector).\n\nMove that printk into the personality code of those raid levels that\ncare (levels 1, 4, 5, 6, 10).\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "50ac168a6e0a061bf5346d53aa9e7beb94c97527",
      "tree": "4f1eff67793bd8349a1995c921a63e9512be7818",
      "parents": [
        "597a711b69cfff95c4b8f6069037e7ad3fc71f56"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:47:55 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:47:55 2009 +1000"
      },
      "message": "md: merge reconfig and check_reshape methods.\n\nThe difference between these two methods is artificial.\nBoth check that a pending reshape is valid, and perform any\naspect of it that can be done immediately.\n\u0027reconfig\u0027 handles chunk size and layout.\n\u0027check_reshape\u0027 handles raid_disks.\n\nSo make them just one method.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "597a711b69cfff95c4b8f6069037e7ad3fc71f56",
      "tree": "8c2cfa4c1223827a560de2f14da426d4822151c4",
      "parents": [
        "01ee22b496c41384eaa6dcae983c86d8bc32fbb8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:47:42 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:47:42 2009 +1000"
      },
      "message": "md: remove unnecessary arguments from -\u003ereconfig method.\n\nPassing the new layout and chunksize as args is not necessary as\nthe mddev has fields for new_check and new_layout.\n\nThis is preparation for combining the check_reshape and reconfig\nmethods\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "01ee22b496c41384eaa6dcae983c86d8bc32fbb8",
      "tree": "aeb031b03e2a8b784fcf71ed462c0aa37b7006ef",
      "parents": [
        "d6e412eaa52db82010f12ea7d2c9b9468e933c44"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:47:20 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:47:20 2009 +1000"
      },
      "message": "md: raid5: check stripe cache is large enough in start_reshape\n\nIn reshape cases that do not change the number of devices,\nstart_reshape is called without first calling check_reshape.\n\nCurrently, the check that the stripe_cache is large enough is\nonly done in check_reshape.  It should be in start_reshape too.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d6e412eaa52db82010f12ea7d2c9b9468e933c44",
      "tree": "5170c4ba4fe50e441f112d2256ad8421f93dc980",
      "parents": [
        "cdc2ae6d6a30df8fd92c5e300d0e3005e13eb6b0"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:47:00 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:47:00 2009 +1000"
      },
      "message": "md: raid0: chunk_sectors cleanups.\n\nfollowing the conversion to chunk_sectors, there is room\nfor cleaning up a little.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "cdc2ae6d6a30df8fd92c5e300d0e3005e13eb6b0",
      "tree": "f64a34e565e8b8c8e983b278d9f17162a0f76ecc",
      "parents": [
        "0ba459d26260d4d13346c76642f461b2bf607eef"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Thu Jun 18 08:46:47 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:46:47 2009 +1000"
      },
      "message": "md: fix some comments.\n\n1/ Raid5 has learned to take over also raid4 and raid6 arrays.\n2/ new_chunk in mdp_superblock_1 is in sectors, not bytes.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0ba459d26260d4d13346c76642f461b2bf607eef",
      "tree": "39b4032b6f2e83caf35fe682fb190d7b8f029840",
      "parents": [
        "09c9e5fa1b93ad5b81c9dcf8ce3a5b9ae2ac31e4"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Thu Jun 18 08:46:10 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:46:10 2009 +1000"
      },
      "message": "md/raid5: Use is_power_of_2() in raid5_reconfig()/raid6_reconfig().\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "09c9e5fa1b93ad5b81c9dcf8ce3a5b9ae2ac31e4",
      "tree": "2b8767d6a94654944f18ad96347fa6fcddf1eda0",
      "parents": [
        "664e7c413f1e90eceb0b2596dd73a0832faec058"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Thu Jun 18 08:45:55 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:45:55 2009 +1000"
      },
      "message": "md: convert conf-\u003echunk_size and conf-\u003eprev_chunk to sectors.\n\nThis kills some more shifts.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "664e7c413f1e90eceb0b2596dd73a0832faec058",
      "tree": "72ea827a0f2a493766d3ea1fd14909c756aa4496",
      "parents": [
        "9d8f0363623b3da12c43007cf77f5e1a4e8a5964"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Thu Jun 18 08:45:27 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:45:27 2009 +1000"
      },
      "message": "md: Convert mddev-\u003enew_chunk to sectors.\n\nA straight-forward conversion which gets rid of some\nmultiplications/divisions/shifts. The patch also introduces a couple\nof new ones, most of which are due to conf-\u003echunk_size still being\nrepresented in bytes. This will be cleaned up in subsequent patches.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9d8f0363623b3da12c43007cf77f5e1a4e8a5964",
      "tree": "0fee53971a397ade209dd36c4f1ed50db6450faf",
      "parents": [
        "fbb704efb784e2c8418e34dc3013af76bdd58101"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Thu Jun 18 08:45:01 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:45:01 2009 +1000"
      },
      "message": "md: Make mddev-\u003echunk_size sector-based.\n\nThis patch renames the chunk_size field to chunk_sectors with the\nimplied change of semantics.  Since\n\n\tis_power_of_2(chunk_size) \u003d is_power_of_2(chunk_sectors \u003c\u003c 9)\n\t\t\t\t  \u003d is_power_of_2(chunk_sectors)\n\nthese bits don\u0027t need an adjustment for the shift.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6fd03301d76bc439382710e449f58efbb233df1b",
      "tree": "3c8a3217aed67319683ffc1debccdb5b3245b16c",
      "parents": [
        "cd5232bd6be2d215a800f3d88c287ca791debfbe",
        "e4792aa30f9d33584d7192685ed149cc5fee737f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 12:57:37 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 12:57:37 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6: (64 commits)\n  debugfs: use specified mode to possibly mark files read/write only\n  debugfs: Fix terminology inconsistency of dir name to mount debugfs filesystem.\n  xen: remove driver_data direct access of struct device from more drivers\n  usb: gadget: at91_udc: remove driver_data direct access of struct device\n  uml: remove driver_data direct access of struct device\n  block/ps3: remove driver_data direct access of struct device\n  s390: remove driver_data direct access of struct device\n  parport: remove driver_data direct access of struct device\n  parisc: remove driver_data direct access of struct device\n  of_serial: remove driver_data direct access of struct device\n  mips: remove driver_data direct access of struct device\n  ipmi: remove driver_data direct access of struct device\n  infiniband: ehca: remove driver_data direct access of struct device\n  ibmvscsi: gadget: at91_udc: remove driver_data direct access of struct device\n  hvcs: remove driver_data direct access of struct device\n  xen block: remove driver_data direct access of struct device\n  thermal: remove driver_data direct access of struct device\n  scsi: remove driver_data direct access of struct device\n  pcmcia: remove driver_data direct access of struct device\n  PCIE: remove driver_data direct access of struct device\n  ...\n\nManually fix up trivial conflicts due to different direct driver_data\ndirect access fixups in drivers/block/{ps3disk.c,ps3vram.c}\n"
    },
    {
      "commit": "e212d6f25084e8e9b02a04ba514d7bb1e4a4924a",
      "tree": "a94638953a7aa7f0bbd6f5d08fa3c649ce0ef8ce",
      "parents": [
        "5ced504b1bd1979378de35c56aa5d3d79fb5033f"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Jun 16 11:19:36 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jun 16 11:19:36 2009 +0200"
      },
      "message": "block: remove some includings of blktrace_api.h\n\nWhen porting blktrace to tracepoints, we changed to trace/block.h\nfor trace prober declarations.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "fbb704efb784e2c8418e34dc3013af76bdd58101",
      "tree": "814820430d00128cb5f3fc0d44bb579c19d5d2a9",
      "parents": [
        "2ac06c3332898103210b478c5a17c20e28929287"
      ],
      "author": {
        "name": "raz ben yehuda",
        "email": "raziebe@gmail.com",
        "time": "Tue Jun 16 17:02:05 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 17:02:05 2009 +1000"
      },
      "message": "md: raid0 :Enables chunk size other than powers of 2.\n\nMaintain two flows, one for pow2 chunk sizes (which uses masks and\nshift), and a flow for the general case (which uses sector_div).\nThis is for the sake of performance.\n\n - introduce map_sector and is_io_in_chunk_boundary to encapsulate\n   those two flows better for raid0_make_request\n - fix blk_mergeable to support the two flows.\n\nSigned-off-by: raziebe@gmail.com\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2ac06c3332898103210b478c5a17c20e28929287",
      "tree": "6f34315bbdcc8a8300ab2ab5edcd4cb96150e583",
      "parents": [
        "740da44918680a0c72411ae4ccdd1861069afcc4"
      ],
      "author": {
        "name": "raz ben yehuda",
        "email": "raziebe@gmail.com",
        "time": "Tue Jun 16 17:01:42 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 17:01:42 2009 +1000"
      },
      "message": "md: prepare for non-power-of-two chunk sizes\n\nRemove chunk size check from md as this is now performed in the run\nfunction in each personality.\n\nReplace chunk size power 2 code calculations by a regular division.\n\nSigned-off-by: raziebe@gmail.com\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "740da44918680a0c72411ae4ccdd1861069afcc4",
      "tree": "2d68483563ee16198af3418c40352c34828cc01f",
      "parents": [
        "964e7913b0d25b988e27a7cd9378bc55cc572bb4"
      ],
      "author": {
        "name": "raz ben yehuda",
        "email": "raziebe@gmail.com",
        "time": "Tue Jun 16 17:01:36 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 17:01:36 2009 +1000"
      },
      "message": "md: raid5: chunk size check in setup_conf\n\nhave raid5 check chunk size in run/reshape method instead of in md\n\nSigned-off-by: raziebe@gmail.com\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "964e7913b0d25b988e27a7cd9378bc55cc572bb4",
      "tree": "466f84698511b4b8639408530cfec0a2bd5dea4c",
      "parents": [
        "92e59b6ba21845fadd2cce725010a9351740b76e"
      ],
      "author": {
        "name": "raz ben yehuda",
        "email": "raziebe@gmail.com",
        "time": "Tue Jun 16 17:01:22 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 17:01:22 2009 +1000"
      },
      "message": "md: raid10: chunk size check in run\n\nhave raid10 check chunk size in run method instead of in md\n\nSigned-off-by: raziebe@gmail.com\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "92e59b6ba21845fadd2cce725010a9351740b76e",
      "tree": "01ae5dcf151a8e9e3f578acfac976f59638474ee",
      "parents": [
        "46994191ae8fdf1cbcc1f29282576b269a638c69"
      ],
      "author": {
        "name": "raz ben yehuda",
        "email": "raziebe@gmail.com",
        "time": "Tue Jun 16 17:00:57 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 17:00:57 2009 +1000"
      },
      "message": "md: raid0: chunk size check in raid0_run\n\nhave raid0 check chunk size in run method instead of in md.\nThis is part of a series moving the checks from common code to\nthe personalities where they belong.\n\nhardsect is short and chunksize is an int, so it is safe to use %.\n\nSigned-off-by: raziebe@gmail.com\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "46994191ae8fdf1cbcc1f29282576b269a638c69",
      "tree": "bb9b62ca26cb5fb13122e58c4681eca73accabad",
      "parents": [
        "1b9614291eb319fad96de45392eb4452ad39f0ee"
      ],
      "author": {
        "name": "raz ben yehuda",
        "email": "raziebe@gmail.com",
        "time": "Tue Jun 16 17:00:54 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 17:00:54 2009 +1000"
      },
      "message": "md: have raid0 report its formation\n\nReport to the user what are the raid zones\n\nSigned-off-by: raziebe@gmail.com\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1b9614291eb319fad96de45392eb4452ad39f0ee",
      "tree": "0662e5f234eb238e78a2c5d08e35033ee1141d05",
      "parents": [
        "aece3d1f40879759f641dfbfdbb9e2593adeb43c"
      ],
      "author": {
        "name": "raz ben yehuda",
        "email": "raziebe@gmail.com",
        "time": "Tue Jun 16 16:57:40 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 16:57:40 2009 +1000"
      },
      "message": "md: have raid0 compile with MD_DEBUG on\n\nBecause of the removal of the device list from\nthe strips raid0 did not compile with MD_DEBUG flag on\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "aece3d1f40879759f641dfbfdbb9e2593adeb43c",
      "tree": "0264ac8e02f4d08472c11b04305f8c39695d9007",
      "parents": [
        "4db7cdc859f56ecf0a186e0cfb238b5bb3af2efb"
      ],
      "author": {
        "name": "Sandeep K Sinha",
        "email": "sandeepksinha@gmail.com",
        "time": "Tue Jun 16 16:57:08 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 16:57:08 2009 +1000"
      },
      "message": "md: Binary search in linear raid\n\nReplace the linear search with binary search in which_dev.\n\nSigned-off-by: Sandeep K Sinha \u003csandeepksinha@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4db7cdc859f56ecf0a186e0cfb238b5bb3af2efb",
      "tree": "1ab673db74f584f0c954e0556db63304bc3de81c",
      "parents": [
        "45d4582f219619e368ea91ea1189085e1c5f1969"
      ],
      "author": {
        "name": "Sandeep K Sinha",
        "email": "sandeepksinha@gmail.com",
        "time": "Tue Jun 16 16:56:13 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 16:56:13 2009 +1000"
      },
      "message": "md: Removing num_sector and replacing start_sector with end_sector\n\nRemove num_sectors from dev_info and replace start_sector with\nend_sector.  This makes a lot of comparisons much simpler.\n\nSigned-off-by: Sandeep K Sinha \u003csandeepksinha@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "45d4582f219619e368ea91ea1189085e1c5f1969",
      "tree": "15c38d1090d67ecb600c395a5155f2630804d851",
      "parents": [
        "070ec55d07157a3041f92654135c3c6e2eaaf901"
      ],
      "author": {
        "name": "Sandeep K Sinha",
        "email": "sandeepksinha@gmail.com",
        "time": "Tue Jun 16 16:55:26 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 16:55:26 2009 +1000"
      },
      "message": "md: Removal of hash table in linear raid\n\nGet rid of sector_div and hash table for linear raid and replace\nwith a linear search in which_dev.\nThe hash table adds a lot of complexity for little if any gain.\nUltimately a binary search will be used which will have smaller\ncache foot print, a similar number of memory access, and no\ndivisions.\n\nSigned-off-by: Sandeep K Sinha \u003csandeepksinha@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "070ec55d07157a3041f92654135c3c6e2eaaf901",
      "tree": "10f24d859e669ba4a671204ce4176a2b43fdaae5",
      "parents": [
        "a6b3deafe0c50e3e873e8ed5cc8abfcb25c05eff"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 16:54:21 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 16:54:21 2009 +1000"
      },
      "message": "md: remove mddev_to_conf \"helper\" macro\n\nHaving a macro just to cast a void* isn\u0027t really helpful.\nI would must rather see that we are simply de-referencing -\u003eprivate,\nthan have to know what the macro does.\n\nSo open code the macro everywhere and remove the pointless cast.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a6b3deafe0c50e3e873e8ed5cc8abfcb25c05eff",
      "tree": "18ac1b0976a1e558316d45e50d7252ba4c14fd71",
      "parents": [
        "b414579f4573b6dc8583e31b01dcffd13f49fd62"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 16:54:07 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 16:54:07 2009 +1000"
      },
      "message": "md: raid0:  remove setting of segment boundary.\n\n\nThis setting doesn\u0027t seem to make sense (half the chunk size??) and\nshouldn\u0027t be needed.\nThe segment boundary exported by raid0 should simply be the minimum\nof the segment boundary of all component devices.  And we already\nget that right.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b414579f4573b6dc8583e31b01dcffd13f49fd62",
      "tree": "08358cac251421380642dac0fdeb3bc296a97232",
      "parents": [
        "49f357a22b3fa3eeac042dfa0a6cae920c174e48"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 16:50:52 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 16:50:52 2009 +1000"
      },
      "message": "md: raid0: remove -\u003edev pointer from strip_zone structure\n\nIf we treat conf-\u003edevlist more like a 2 dimensional array,\nwe can get the devlist for a particular zone simply by indexing\nthat array, so we don\u0027t need to store the pointers to subarrays\nin strip_zone.  This makes strip_zone smaller and so (hopefully)\nsearches faster.\n\nSigned-of-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "49f357a22b3fa3eeac042dfa0a6cae920c174e48",
      "tree": "55d90a158e990ea38c2487167c3d9a4f7f7943cf",
      "parents": [
        "fb5ab4b5d6e16fd5006c9f800d0116f3547cb760"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 16:50:35 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 16:50:35 2009 +1000"
      },
      "message": "md: raid0: remove -\u003esectors from the strip_zone structure.\n\nstoring -\u003esectors is redundant as is can be computed from the\ndifference  z-\u003ezone_end - (z-1)-\u003ezone_end\n\nThe one place where it is used, it is just as efficient to use\na zone_end value instead.\n\nAnd removing it makes strip_zone smaller, so they array of these that\nis searched on every request has a better chance to say in cache.\n\nSo discard the field and get the value from elsewhere.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fb5ab4b5d6e16fd5006c9f800d0116f3547cb760",
      "tree": "0094240e6c361d4e48e67103391dd29895eb5e68",
      "parents": [
        "ed7b00380d957ec770b5e90380d012c6062c13cc"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Tue Jun 16 16:48:19 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 16:48:19 2009 +1000"
      },
      "message": "md: raid0: Fix a memory leak when stopping a raid0 array.\n\nraid0_stop() removes all references to the raid0 configuration but\nmisses to free the -\u003edevlist buffer.\n\nThis patch closes this leak, removes a pointless initialization and\nfixes a coding style issue in raid0_stop().\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ed7b00380d957ec770b5e90380d012c6062c13cc",
      "tree": "8eced97cefca4be9f8eefce22ecb64a49ef6771b",
      "parents": [
        "5568a6035d9fca2cd8f1ef7005e215eae4e65fab"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Tue Jun 16 16:47:36 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 16:47:36 2009 +1000"
      },
      "message": "md: raid0: Allocate all buffers for the raid0 configuration in one function.\n\nCurrently the raid0 configuration is allocated in raid0_run() while\nthe buffers for the strip_zone and the dev_list arrays are allocated\nin create_strip_zones(). On errors, all three buffers are freed\nin raid0_run().\n\nIt\u0027s easier and more readable to do the allocation and cleanup within\na single function. So move that code into create_strip_zones().\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    }
  ],
  "next": "5568a6035d9fca2cd8f1ef7005e215eae4e65fab"
}
