)]}'
{
  "log": [
    {
      "commit": "8215d6ec5fee1e76545decea2cd73717efb5cb42",
      "tree": "54ed2c995c3b91417def0ad31368e3094f72bd81",
      "parents": [
        "0f3649a9e305ea22eb196a84a2d7520afcaa6060"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@novell.com",
        "time": "Sat Mar 06 02:32:27 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:32:27 2010 +0000"
      },
      "message": "dm table: remove unused dm_get_device range parameters\n\nRemove unused parameters(start and len) of dm_get_device()\nand fix the callers.\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ecdb2e257abc33ae6798d3ccba87bdafa40ef6b6",
      "tree": "497db6a95a9f06270506f6a75354d5df855d5a66",
      "parents": [
        "f7b934c8127deebf4eb56fbe4a4ae0da16b6dbcd"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Sat Mar 06 02:29:52 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:29:52 2010 +0000"
      },
      "message": "dm table: remove dm_get from dm_table_get_md\n\nRemove the dm_get() in dm_table_get_md() because dm_table_get_md() could\nbe called from presuspend/postsuspend, which are called while\nmapped_device is in DMF_FREEING state, where dm_get() is not allowed.\n\nJustification for that is the lifetime of both objects: As far as the\ncurrent dm design/implementation, mapped_device is never freed while\ntargets are doing something, because dm core waits for targets to become\nquiet in dm_put() using presuspend/postsuspend.  So targets should be\nable to touch mapped_device without holding reference count of the\nmapped_device, and we should allow targets to touch mapped_device even\nif it is in DMF_FREEING state.\n\nBackgrounds:\nI\u0027m trying to remove the multipath internal queue, since dm core now has\na generic queue for request-based dm.  In the patch-set, the multipath\ntarget wants to request dm core to start/stop queue.  One of such\nstart/stop requests can happen during postsuspend() while the target\nwaits for pg-init to complete, because the target stops queue when\nstarting pg-init and tries to restart it when completing pg-init.  Since\nqueue belongs to mapped_device, it involves calling dm_table_get_md()\nand dm_put().  On the other hand, postsuspend() is called in dm_put()\nfor mapped_device which is in DMF_FREEING state, and that triggers\nBUG_ON(DMF_FREEING) in the 2nd dm_put().\n\nI had tried to solve this problem by changing only multipath not to\ntouch mapped_device which is in DMF_FREEING state, but I couldn\u0027t and I\ncame up with a question why we need dm_get() in dm_table_get_md().\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b27d7f16d3c6c27345d4280a739809c1c2c4c0b5",
      "tree": "cb2947bf2c466616dad6a160a9efb47208432d96",
      "parents": [
        "17be8c245054b9c7786545af3ba3ca4e54cd4ad9"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Mon Jan 11 03:21:50 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jan 11 14:29:20 2010 +0100"
      },
      "message": "DM: Fix device mapper topology stacking\n\nMake DM use bdev_stack_limits() function so that partition offsets get\ntaken into account when calculating alignment.  Clarify stacking\nwarnings.\n\nAlso remove obsolete clearing of final alignment_offset and misalignment\nflag.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: Alasdair G. Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "53365383c4667aba55385cd1858582c19a7a8a36",
      "tree": "b290d003534b3947834762c2fb492d9d0beb985f",
      "parents": [
        "51b736b85155a56543fda8aeca5f8592795d7983",
        "d2fdb776e08d4231d7e86a879cc663a93913c202"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 09:12:01 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 09:12:01 2009 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm: (80 commits)\n  dm snapshot: use merge origin if snapshot invalid\n  dm snapshot: report merge failure in status\n  dm snapshot: merge consecutive chunks together\n  dm snapshot: trigger exceptions in remaining snapshots during merge\n  dm snapshot: delay merging a chunk until writes to it complete\n  dm snapshot: queue writes to chunks being merged\n  dm snapshot: add merging\n  dm snapshot: permit only one merge at once\n  dm snapshot: support barriers in snapshot merge target\n  dm snapshot: avoid allocating exceptions in merge\n  dm snapshot: rework writing to origin\n  dm snapshot: add merge target\n  dm exception store: add merge specific methods\n  dm snapshot: create function for chunk_is_tracked wait\n  dm snapshot: make bio optional in __origin_write\n  dm mpath: reject messages when device is suspended\n  dm: export suspended state to targets\n  dm: rename dm_suspended to dm_suspended_md\n  dm: swap target postsuspend call and setting suspended flag\n  dm crypt: add plain64 iv\n  ...\n"
    },
    {
      "commit": "e7d2860b690d4f3bed6824757c540579638e3d1e",
      "tree": "84268ee28893256fd6a6a7e1d4474f61dbee74e7",
      "parents": [
        "84c95c9acf088c99d8793d78036b67faa5d0b851"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Mon Dec 14 18:01:06 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:32 2009 -0800"
      },
      "message": "tree-wide: convert open calls to remove spaces to skip_spaces() lib function\n\nMakes use of skip_spaces() defined in lib/string.c for removing leading\nspaces from strings all over the tree.\n\nIt decreases lib.a code size by 47 bytes and reuses the function tree-wide:\n   text    data     bss     dec     hex filename\n  64688     584     592   65864   10148 (TOTALS-BEFORE)\n  64641     584     592   65817   10119 (TOTALS-AFTER)\n\nAlso, while at it, if we see (*str \u0026\u0026 isspace(*str)), we can be sure to\nremove the first condition (*str) as the second one (isspace(*str)) also\nevaluates to 0 whenever *str \u003d\u003d 0, making it redundant. In other words,\n\"a char equals zero is never a space\".\n\nJulia Lawall tried the semantic patch (http://coccinelle.lip6.fr) below,\nand found occurrences of this pattern on 3 more files:\n    drivers/leds/led-class.c\n    drivers/leds/ledtrig-timer.c\n    drivers/video/output.c\n\n@@\nexpression str;\n@@\n\n( // ignore skip_spaces cases\nwhile (*str \u0026\u0026  isspace(*str)) { \\(str++;\\|++str;\\) }\n|\n- *str \u0026\u0026\nisspace(*str)\n)\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Richard Purdie \u003crpurdie@rpsys.net\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nCc: Samuel Ortiz \u003csamuel@sortiz.org\u003e\nCc: Patrick McHardy \u003ckaber@trash.net\u003e\nCc: Takashi Iwai \u003ctiwai@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a794015597a2d9b437470c7692aac77e5fc08cd2",
      "tree": "d25dd56edd53f8f1890ed005b5531ccfa07c28ee",
      "parents": [
        "1d0f3ce83200edc5d43723c77c62b09ad6560294"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:23 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:23 2009 +0000"
      },
      "message": "dm: bind new table before destroying old\n\nWhen replacing a mapped device\u0027s table during a \u0027resume\u0027, delay the\ndestruction of the old table until the new one is successfully in place.\n\nThis will make it easier for a later patch to transfer internal state\ninformation from the old table to the new one (something we do not currently\nsupport) while giving us more options for reversion if a later part\nof the operation fails.\n\nDevices are always in the suspended state during dm_swap_table().\nThis patch reinforces the requirement that all I/O must have been\nflushed from the table targets while in this state (including any in\nworkqueues).  In the case of \u0027noflush\u0027 suspending, unprocessed\nI/O should have been \u0027pushed back\u0027 to the dm core prior to this point,\nfor resubmission after the new table is in place.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "40bea431274c247425e7f5970d796ff7b37a2b22",
      "tree": "cc9791861c01605d2dca28d3eac9182c301a832c",
      "parents": [
        "a963a956225eb0f8c4d3537f428153c30adf54b8"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Sep 04 20:40:25 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:25 2009 +0100"
      },
      "message": "dm stripe: expose correct io hints\n\nSet sensible I/O hints for striped DM devices in the topology\ninfrastructure added for 2.6.31 for userspace tools to\nobtain via sysfs.\n\nAdd .io_hints to \u0027struct target_type\u0027 to allow the I/O hints portion\n(io_min and io_opt) of the \u0027struct queue_limits\u0027 to be set by each\ntarget and implement this for dm-stripe.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a963a956225eb0f8c4d3537f428153c30adf54b8",
      "tree": "d4204f64aaf23b7a1615f4f293358eca5125c748",
      "parents": [
        "f6a1ed10864b7540fa758bbccf3433fe17070329"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Sep 04 20:40:24 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:24 2009 +0100"
      },
      "message": "dm table: add more context to terse warning messages\n\nA couple of recent warning messages make it difficult for the reader to\ndetermine exactly what is wrong.  This patch adds more information to\nthose messages.\n\nThe messages were added by these commits:\n  5dea271b6d87bd1d79a59c1d5baac2596a841c37 (\"dm table: pass correct dev area size\nto device_area_is_valid\")\n  ea9df47cc92573b159ef3b4fda516c32cba9c4fd (\"dm table: fix blk_stack_limits arg\nto use bytes not sectors\")\n\nThe patch also corrects references to logical_block_size in printk format\nstrings from %hu to %u.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f6a1ed10864b7540fa758bbccf3433fe17070329",
      "tree": "e0b8f1c02f0527e0870dee2977f311695856f8a5",
      "parents": [
        "8811f46c1f9386fc7017150de9d52359e5b1826e"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Sep 04 20:40:22 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:22 2009 +0100"
      },
      "message": "dm table: fix queue_limit checking device iterator\n\nThe logic to check for valid device areas is inverted relative to proper\nuse with iterate_devices.\n\nThe iterate_devices method calls its callback for every underlying\ndevice in the target.  If any callback returns non-zero, iterate_devices\nexits immediately.  But the callback device_area_is_valid() returns 0 on\nerror and 1 on success.  The overall effect without is that an error is\nissued only if every device is invalid.\n\nThis patch renames device_area_is_valid to device_area_is_invalid and\ninverts the logic so that one invalid device is sufficient to raise\nan error.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5dea271b6d87bd1d79a59c1d5baac2596a841c37",
      "tree": "c85bcee4f90729927285fc282c6df94bf18d023d",
      "parents": [
        "a732c207d19e899845ae47139708af898daaf9fd"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Jul 23 20:30:42 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jul 23 20:30:42 2009 +0100"
      },
      "message": "dm table: pass correct dev area size to device_area_is_valid\n\nIncorrect device area lengths are being passed to device_area_is_valid().\n\nThe regression appeared in 2.6.31-rc1 through commit\n754c5fc7ebb417b23601a6222a6005cc2e7f2913.\n\nWith the dm-stripe target, the size of the target (ti-\u003elen) was used\ninstead of the stripe_width (ti-\u003elen/#stripes).  An example of a\nconsequent incorrect error message is:\n\n  device-mapper: table: 254:0: sdb too small for target\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a732c207d19e899845ae47139708af898daaf9fd",
      "tree": "aed98221e373868b4fe0fbba9c4fcf5ac8ede128",
      "parents": [
        "69885683d22d8c05910fd808c01fdce1322739b4"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Jul 23 20:30:40 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jul 23 20:30:40 2009 +0100"
      },
      "message": "dm: remove queue next_ordered workaround for barriers\n\nThis patch removes DM\u0027s bio-based vs request-based conditional setting\nof next_ordered.  For bio-based DM the next_ordered check is no longer a\nconcern (as that check is now in the __make_request path).  For\nrequest-based DM the default of QUEUE_ORDERED_NONE is now appropriate.\n\nbio-based DM was changed to work-around the previously misplaced\nnext_ordered check with this commit:\n99360b4c18f7675b50d283301d46d755affe75fd\n\nrequest-based DM does not yet support barriers but reacted to the above\nbio-based DM change with this commit:\n5d67aa2366ccb8257d103d0b43df855605c3c086\n\nThe above changes are no longer needed given Neil Brown\u0027s recent fix to\nput the next_ordered check in the __make_request path:\ndb64f680ba4b5c56c4be59f0698000df89ff0281\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: NeilBrown \u003cneilb@suse.de\u003e\nAcked-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nAcked-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\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": "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": "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": "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": "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": "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": "9df1bb9b516daeece159ab7fb262d01a0359247c",
      "tree": "602c7b02e85b031d0269a1f70ece81bac524c0ac",
      "parents": [
        "3969251b80a7b143d01576780073fe0cc9ef6253"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jun 09 06:22:57 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jun 09 06:22:57 2009 +0200"
      },
      "message": "Revert \"block: Fix bounce limit setting in DM\"\n\nThis reverts commit a05c0205ba031c01bba33a21bf0a35920eb64833.\n\nDM doesn\u0027t need to access the bounce_pfn directly.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a05c0205ba031c01bba33a21bf0a35920eb64833",
      "tree": "517c7682fc415cdb122ee7fcfc75eff674cc7b78",
      "parents": [
        "dbdc9dd342f0a7e32f40f0d4ade662bdfe057484"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Wed Jun 03 09:33:18 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Jun 03 09:33:18 2009 +0200"
      },
      "message": "block: Fix bounce limit setting in DM\n\nblk_queue_bounce_limit() is more than a wrapper about the request queue\nlimits.bounce_pfn variable.  Introduce blk_queue_bounce_pfn() which can\nbe called by stacking drivers that wish to set the bounce limit\nexplicitly.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ae03bf639a5027d27270123f5f6e3ee6a412781d",
      "tree": "d705f41a188ad656b1f47f7952626a9f992e3b8f",
      "parents": [
        "e1defc4ff0cf57aca6c5e3ff99fa503f5943c1f1"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri May 22 17:17:50 2009 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 22 23:22:54 2009 +0200"
      },
      "message": "block: Use accessor functions for queue limits\n\nConvert all external users of queue limits to using wrapper functions\ninstead of poking the request queue variables directly.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e1defc4ff0cf57aca6c5e3ff99fa503f5943c1f1",
      "tree": "d60d15a082171c58ac811d547d51a9c3119f23e3",
      "parents": [
        "9bd7de51ee8537094656149eaf45338cadb7d7d4"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri May 22 17:17:49 2009 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 22 23:22:54 2009 +0200"
      },
      "message": "block: Do away with the notion of hardsect_size\n\nUntil now we have had a 1:1 mapping between storage device physical\nblock size and the logical block sized used when addressing the device.\nWith SATA 4KB drives coming out that will no longer be the case.  The\nsector size will be 4KB but the logical block size will remain\n512-bytes.  Hence we need to distinguish between the physical block size\nand the logical ditto.\n\nThis patch renames hardsect_size to logical_block_size.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "692d0eb9e02cf81fb387ff891f53840db2f3110a",
      "tree": "0e6aa42d81cd47c55de37b55d2ffad419fe57cd0",
      "parents": [
        "9c47008d13add50ec4597a8b9eee200c515282c8"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Apr 09 00:27:13 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 09 00:27:13 2009 +0100"
      },
      "message": "dm: remove limited barrier support\n\nPrepare for full barrier implementation: first remove the restricted support.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "9c47008d13add50ec4597a8b9eee200c515282c8",
      "tree": "debd8ebb2fef2687d4548a177505ec30bda95503",
      "parents": [
        "577c9c456f0e1371cbade38eaf91ae8e8a308555"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Thu Apr 09 00:27:12 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 09 00:27:12 2009 +0100"
      },
      "message": "dm: add integrity support\n\nThis patch provides support for data integrity passthrough in the device\nmapper.\n\n - If one or more component devices support integrity an integrity\n   profile is preallocated for the DM device.\n\n - If all component devices have compatible profiles the DM device is\n   flagged as capable.\n\n - Handle integrity metadata when splitting and cloning bios.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "570b9d968bf9b16974252ef7cbce73fa6dac34f3",
      "tree": "1a356ada71b373b363f9fc2204769f8eee920f30",
      "parents": [
        "aea9058801c0acfa2831af1714da412dfb0018c2"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 02 19:55:28 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 02 19:55:28 2009 +0100"
      },
      "message": "dm table: fix upgrade mode race\n\nupgrade_mode() sets bdev to NULL temporarily, and does not have any\nlocking to exclude anything from seeing that NULL.\n\nIn dm_table_any_congested() bdev_get_queue() can dereference that NULL and\ncause a reported oops.\n\nFix this by not changing that field during the mode upgrade.\n\nCc: stable@kernel.org\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "d58168763f74d1edbc296d7038c60efe6493fdd4",
      "tree": "03866d641211fe16961a5b8aab6d9132bf07d9c8",
      "parents": [
        "ab4c1424882be9cd70b89abf2b484add355712fa"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Jan 06 03:05:10 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:05:10 2009 +0000"
      },
      "message": "dm table: rework reference counting\n\nRework table reference counting.\n\nThe existing code uses a reference counter. When the last reference is\ndropped and the counter reaches zero, the table destructor is called.\nTable reference counters are acquired/released from upcalls from other\nkernel code (dm_any_congested, dm_merge_bvec, dm_unplug_all).\nIf the reference counter reaches zero in one of the upcalls, the table\ndestructor is called from almost random kernel code.\n\nThis leads to various problems:\n* dm_any_congested being called under a spinlock, which calls the\n  destructor, which calls some sleeping function.\n* the destructor attempting to take a lock that is already taken by the\n  same process.\n* stale reference from some other kernel code keeps the table\n  constructed, which keeps some devices open, even after successful\n  return from \"dmsetup remove\". This can confuse lvm and prevent closing\n  of underlying devices or reusing device minor numbers.\n\nThe patch changes reference counting so that the table destructor can be\ncalled only at predetermined places.\n\nThe table has always exactly one reference from either mapped_device-\u003emap\nor hash_cell-\u003enew_map. After this patch, this reference is not counted\nin table-\u003eholders.  A pair of dm_create_table/dm_destroy_table functions\nis used for table creation/destruction.\n\nTemporary references from the other code increase table-\u003eholders. A pair\nof dm_table_get/dm_table_put functions is used to manipulate it.\n\nWhen the table is about to be destroyed, we wait for table-\u003eholders to\nreach 0. Then, we call the table destructor.  We use active waiting with\nmsleep(1), because the situation happens rarely (to one user in 5 years)\nand removing the device isn\u0027t performance-critical task: the user doesn\u0027t\ncare if it takes one tick more or not.\n\nThis way, the destructor is called only at specific points\n(dm_table_destroy function) and the above problems associated with lazy\ndestruction can\u0027t happen.\n\nFinally remove the temporary protection added to dm_any_congested().\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ab4c1424882be9cd70b89abf2b484add355712fa",
      "tree": "8baed3606be67900df9f02e42fcdb091b78c5def",
      "parents": [
        "7d76345da6ed3927c9cbf5d3f7a7021e8bba7374"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Tue Jan 06 03:05:09 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:05:09 2009 +0000"
      },
      "message": "dm: support barriers on simple devices\n\nImplement barrier support for single device DM devices\n\nThis patch implements barrier support in DM for the common case of dm linear\njust remapping a single underlying device. In this case we can safely\npass the barrier through because there can be no reordering between\ndevices.\n\n NB. Any DM device might cease to support barriers if it gets\n     reconfigured so code must continue to allow for a possible\n     -EOPNOTSUPP on every barrier bio submitted.  - agk\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "0e435ac26e3f951d83338ed3d4ab7dc0fe0055bc",
      "tree": "8f208a3093de1a314a981ae47e5ef92a5909c13b",
      "parents": [
        "53a08807c01989c6847bb135d8d43f61c5dfdda5"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Wed Dec 03 12:55:08 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Dec 03 12:55:55 2008 +0100"
      },
      "message": "block: fix setting of max_segment_size and seg_boundary mask\n\nFix setting of max_segment_size and seg_boundary mask for stacked md/dm\ndevices.\n\nWhen stacking devices (LVM over MD over SCSI) some of the request queue\nparameters are not set up correctly in some cases by default, namely\nmax_segment_size and and seg_boundary mask.\n\nIf you create MD device over SCSI, these attributes are zeroed.\n\nProblem become when there is over this mapping next device-mapper mapping\n- queue attributes are set in DM this way:\n\nrequest_queue   max_segment_size  seg_boundary_mask\nSCSI                65536             0xffffffff\nMD RAID1                0                      0\nLVM                 65536                 -1 (64bit)\n\nUnfortunately bio_add_page (resp.  bio_phys_segments) calculates number of\nphysical segments according to these parameters.\n\nDuring the generic_make_request() is segment cout recalculated and can\nincrease bio-\u003ebi_phys_segments count over the allowed limit.  (After\nbio_clone() in stack operation.)\n\nThi is specially problem in CCISS driver, where it produce OOPS here\n\n    BUG_ON(creq-\u003enr_phys_segments \u003e MAXSGENTRIES);\n\n(MAXSEGENTRIES is 31 by default.)\n\nSometimes even this command is enough to cause oops:\n\n  dd iflag\u003ddirect if\u003d/dev/\u003cvg\u003e/\u003clv\u003e of\u003d/dev/null bs\u003d128000 count\u003d10\n\nThis command generates bios with 250 sectors, allocated in 32 4k-pages\n(last page uses only 1024 bytes).\n\nFor LVM layer, it allocates bio with 31 segments (still OK for CCISS),\nunfortunatelly on lower layer it is recalculated to 32 segments and this\nviolates CCISS restriction and triggers BUG_ON().\n\nThe patch tries to fix it by:\n\n * initializing attributes above in queue request constructor\n   blk_queue_make_request()\n\n * make sure that blk_queue_stack_limits() inherits setting\n\n (DM uses its own function to set the limits because it\n blk_queue_stack_limits() was introduced later.  It should probably switch\n to use generic stack limit function too.)\n\n * sets the default seg_boundary value in one place (blkdev.h)\n\n * use this mask as default in DM (instead of -1, which differs in 64bit)\n\nBugs related to this:\nhttps://bugzilla.redhat.com/show_bug.cgi?id\u003d471639\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d8672\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nReviewed-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Mike Miller \u003cmike.miller@hp.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "22484856402bfa1ff3defe47f6029ab0418240d9",
      "tree": "140c67bf59674da350a7b51765d6ff7eb101b597",
      "parents": [
        "5ed487bc2c44ca4e9668ef9cb54c830e2a9fac47",
        "56b26add02b4bdea81d5e0ebda60db1fe3311ad4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 23 10:23:07 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 23 10:23:07 2008 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/viro/bdev\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/viro/bdev: (66 commits)\n  [PATCH] kill the rest of struct file propagation in block ioctls\n  [PATCH] get rid of struct file use in blkdev_ioctl() BLKBSZSET\n  [PATCH] get rid of blkdev_locked_ioctl()\n  [PATCH] get rid of blkdev_driver_ioctl()\n  [PATCH] sanitize blkdev_get() and friends\n  [PATCH] remember mode of reiserfs journal\n  [PATCH] propagate mode through swsusp_close()\n  [PATCH] propagate mode through open_bdev_excl/close_bdev_excl\n  [PATCH] pass fmode_t to blkdev_put()\n  [PATCH] kill the unused bsize on the send side of /dev/loop\n  [PATCH] trim file propagation in block/compat_ioctl.c\n  [PATCH] end of methods switch: remove the old ones\n  [PATCH] switch sr\n  [PATCH] switch sd\n  [PATCH] switch ide-scsi\n  [PATCH] switch tape_block\n  [PATCH] switch dcssblk\n  [PATCH] switch dasd\n  [PATCH] switch mtd_blkdevs\n  [PATCH] switch mmc\n  ...\n"
    },
    {
      "commit": "72e8264eda02b6ba85a222b9620802ebf23c6a10",
      "tree": "4c82b49f538b1ae4e469bbf9a98d76766ab3f768",
      "parents": [
        "3516586a424ea5727be089da6541cbd5644f0497"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Aug 11 00:24:08 2008 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 23 05:12:57 2008 -0400"
      },
      "message": "[PATCH] dm: kill lookup_device wrapper\n\nNow that lookup_bdev is exported and used by dm just use it directly\ninstead of through a trivial wrapper.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9a1c3542768b5a58e45a9216921cd10a3bae1205",
      "tree": "c20ffda950db868ec7e1e35aed532962de2ecfd9",
      "parents": [
        "511de73ff09034fb89c8d54bed201a10d057328c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 22 20:40:24 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:48:58 2008 -0400"
      },
      "message": "[PATCH] pass fmode_t to blkdev_put()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "aeb5d727062a0238a2f96c9c380fbd2be4640c6f",
      "tree": "51dae8a071fcf42e4431a66d37c5b843c8e99cf6",
      "parents": [
        "2515ddc6db8eb49a79f0fe5e67ff09ac7c81eab4"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Sep 02 15:28:45 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:47:06 2008 -0400"
      },
      "message": "[PATCH] introduce fmode_t, do annotations\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0c2322e4ce144e130c03d813fe92de3798662c5e",
      "tree": "a42eeb1a75d9e70a20a6d4d850064ba8292c2289",
      "parents": [
        "54160904260fa764ba6e2dc738770be30fdf9553"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 10 13:37:13 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 10 13:37:13 2008 +0100"
      },
      "message": "dm: detect lost queue\n\nDetect and report buggy drivers that destroy their request_queue.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Stefan Raspl \u003craspl@linux.vnet.ibm.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "82b1519b345d61dcfae526e3fcb08128f39f9bcc",
      "tree": "240bc646da63557ed7fa81fa3c17d05b95853f45",
      "parents": [
        "933f01d43326fb12a978a8e0bb062c28a2de4d5a"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Oct 10 13:37:09 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 10 13:37:09 2008 +0100"
      },
      "message": "dm: export struct dm_dev\n\nSplit struct dm_dev in two and publish the part that other targets need in\ninclude/linux/device-mapper.h.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "d5686b444ff3f72808d2b3fbd58672a86cdf38e7",
      "tree": "d3cdebc042269641f7134556e2f8d263d526581a",
      "parents": [
        "a95164d979c5ca061f15bcaadc829c146693d4d9"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Aug 01 05:00:11 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Aug 01 11:25:31 2008 -0400"
      },
      "message": "[PATCH] switch mtd and dm-table to lookup_bdev()\n\nNo need to open-code it...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9980c638a666ecd88acaf0a7ab91043d4a3f44d1",
      "tree": "89434f8d20d4e330400d8663dcc53188a9956f8c",
      "parents": [
        "7bc3447b692185c5ea78bee93d0ef1dee2fd7ce7"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Mon Jul 21 12:00:39 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jul 21 12:00:39 2008 +0100"
      },
      "message": "dm table: remove merge_bvec sector restriction\n\nRemove max_sector restriction - merge function replaced it.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c9a3f6d6f541915bd7451fc7e9cb23a8b33a3ab8",
      "tree": "3d6d54e43b4bd7d5409bc47837e72b45788da1d4",
      "parents": [
        "a217656cb26c5b7ebe9900354b2e808c1f74b470"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 29 19:12:35 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 10:21:12 2008 -0700"
      },
      "message": "dm: use unlocked variants of queue flag check/set\n\ndm.c already provides mutual exclusion through -\u003emap_lock.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "75ad23bc0fcb4f992a5d06982bf0857ab1738e9e",
      "tree": "8668ef63b1f420252ae41aed9e13737d49fd8054",
      "parents": [
        "68154e90c9d1492d570671ae181d9a8f8530da55"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Apr 29 14:48:33 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 29 14:48:33 2008 +0200"
      },
      "message": "block: make queue flags non-atomic\n\nWe can save some atomic ops in the IO path, if we clearly define\nthe rules of how to modify the queue flags.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "4fdfe401e9d7e30029972d568c667234c0c1d828",
      "tree": "e9e8f45ceccda2e73008da8f404302b056a059b3",
      "parents": [
        "e8488d08586e6df7fab3db7881631bb13619311b"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Thu Apr 24 22:10:56 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:27:00 2008 +0100"
      },
      "message": "dm table: remove unused dm_create_error_table\n\ndm_create_error_table() was added in kernel 2.6.18 and never used...\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "e8488d08586e6df7fab3db7881631bb13619311b",
      "tree": "9fdd6451287c1eb0396f5ea43ca638f905f50e70",
      "parents": [
        "7ff14a36159d947872870e7a3e9dcaebc46b23eb"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Thu Apr 24 22:10:51 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:59 2008 +0100"
      },
      "message": "dm table: drop void suspend_targets return\n\nvoid returning functions returned the return value of another void\nreturning function...\n\nSpotted by sparse.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "1d957f9bf87da74f420424d16ece005202bbebd3",
      "tree": "363d4770c0c74a536524c99ccd2762ce96ee9bbe",
      "parents": [
        "4ac9137858e08a19f29feac4e1f4df7c268b0ba5"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:34:35 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:13:33 2008 -0800"
      },
      "message": "Introduce path_put()\n\n* Add path_put() functions for releasing a reference to the dentry and\n  vfsmount of a struct path in the right order\n\n* Switch from path_release(nd) to path_put(\u0026nd-\u003epath)\n\n* Rename dput_path() to path_put_conditional()\n\n[akpm@linux-foundation.org: fix cifs]\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: \u003clinux-fsdevel@vger.kernel.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4ac9137858e08a19f29feac4e1f4df7c268b0ba5",
      "tree": "f5b5d84fd12fcc2b0ba0e7ce1a79ff381ad8f5dd",
      "parents": [
        "c5e725f33b733a77de622e91b6ba5645fcf070be"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:34:32 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:13:33 2008 -0800"
      },
      "message": "Embed a struct path into struct nameidata instead of nd-\u003e{dentry,mnt}\n\nThis is the central patch of a cleanup series. In most cases there is no good\nreason why someone would want to use a dentry for itself. This series reflects\nthat fact and embeds a struct path into nameidata.\n\nTogether with the other patches of this series\n- it enforced the correct order of getting/releasing the reference count on\n  \u003cdentry,vfsmount\u003e pairs\n- it prepares the VFS for stacking support since it is essential to have a\n  struct path in every place where the stack can be traversed\n- it reduces the overall code size:\n\nwithout patch series:\n   text    data     bss     dec     hex filename\n5321639  858418  715768 6895825  6938d1 vmlinux\n\nwith patch series:\n   text    data     bss     dec     hex filename\n5320026  858418  715768 6894212  693284 vmlinux\n\nThis patch:\n\nSwitch from nd-\u003e{dentry,mnt} to nd-\u003epath.{dentry,mnt} everywhere.\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: fix cifs]\n[akpm@linux-foundation.org: fix smack]\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Casey Schaufler \u003ccasey@schaufler-ca.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "69a2ce72a4efe0653479a5d69fc86b5726e83219",
      "tree": "2fa4c50f83782356c5202c1a987a83cdea4a4c6a",
      "parents": [
        "e48b9db251122b88783844b1d2d69c6780f898ff"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Fri Feb 08 02:10:14 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:10:14 2008 +0000"
      },
      "message": "dm: table use uninitialized_var\n\ndrivers/md/dm-table.c: In function \u0027dm_get_device\u0027:\ndrivers/md/dm-table.c:478: warning: \u0027dev\u0027 may be used uninitialized in this function\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "82d601dc076deb5f348cc3a70f57248bc976ae0c",
      "tree": "9047dc31a5fde553b64b96bc5b426065b77772c2",
      "parents": [
        "4f41b09f86e0e3b48194b2ad0356391bf6d47e40"
      ],
      "author": {
        "name": "Jun\u0027ichi Nomura",
        "email": "j-nomura@ce.jp.nec.com",
        "time": "Fri Feb 08 02:10:04 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:10:04 2008 +0000"
      },
      "message": "dm: table remove unused total\n\n\"total \u003d 0\" does nothing.\n\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "afb24528f9012e5c6361ca9a9128c7c089c1cc7c",
      "tree": "1aa47aca62308becafc05464f5020b4ffbf3ce67",
      "parents": [
        "76c072b48e39e9291fbf02d6c912cf27d65e093d"
      ],
      "author": {
        "name": "Paul Jimenez",
        "email": "pj@place.org",
        "time": "Fri Feb 08 02:09:59 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:09:59 2008 +0000"
      },
      "message": "dm: table use list_for_each\n\nThis patch is some minor janitorish cleanup, using some macros\nfrom linux/list.h (already #included via dm.h) to improve\nreadability.\n\nSigned-off-by: Paul Jimenez \u003cpj@place.org\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "91212507f93778c09d4c1335207b6f4b995f5ad1",
      "tree": "651bc8678413d7d6d6879214264f4bb7f9fb089d",
      "parents": [
        "69267a30bed1fabec658058c63845528a8b813d4"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 13 14:16:04 2007 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 20 17:32:12 2007 +0000"
      },
      "message": "dm: merge max_hw_sector\n\nMake sure dm honours max_hw_sectors of underlying devices\n\n  We still have no firm testing evidence in support of this patch but\n  believe it may help to resolve some bug reports.  - agk\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "512875bd9661368da6f993205a61213b79ba1df0",
      "tree": "7a2e010060b6233cd02e2e36b62f5dcaa96c2c36",
      "parents": [
        "fbdcf18df73758b2e187ab94678b30cd5f6ff9f9"
      ],
      "author": {
        "name": "Jun\u0027ichi Nomura",
        "email": "j-nomura@ce.jp.nec.com",
        "time": "Thu Dec 13 14:15:25 2007 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 20 17:32:08 2007 +0000"
      },
      "message": "dm: table detect io beyond device\n\nThis patch fixes a panic on shrinking a DM device if there is\noutstanding I/O to the part of the device that is being removed.\n(Normally this doesn\u0027t happen - a filesystem would be resized first,\nfor example.)\n\nThe bug is that __clone_and_map() assumes dm_table_find_target()\nalways returns a valid pointer.  It may fail if a bio arrives from the\nblock layer but its target sector is no longer included in the DM\nbtree.\n\nThis patch appends an empty entry to table-\u003etargets[] which will\nbe returned by a lookup beyond the end of the device.\n\nAfter calling dm_table_find_target(), __clone_and_map() and target_message()\ncheck for this condition using\ndm_target_is_valid().\n\nSample test script to trigger oops:\n"
    },
    {
      "commit": "2ad8b1ef11c98c5603580878aebf9f1bc74129e4",
      "tree": "f7bdc2484513f6ffd174b1385bb216dcf97d2c78",
      "parents": [
        "d85532ed284e63b5c56eaf2418f262822af60be4"
      ],
      "author": {
        "name": "Alan D. Brunelle",
        "email": "Alan.Brunelle@hp.com",
        "time": "Wed Nov 07 14:26:56 2007 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Nov 09 13:41:32 2007 +0100"
      },
      "message": "Add UNPLUG traces to all appropriate places\n\nAdded blk_unplug interface, allowing all invocations of unplugs to result\nin a generated blktrace UNPLUG.\n\nSigned-off-by: Alan D. Brunelle \u003cAlan.Brunelle@hp.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "5ec140e600b7d6624c657f008833f0e71bd5ef48",
      "tree": "44691c88d767418a57797e84253a4633825c0c98",
      "parents": [
        "6f5d8aa6382eef2b26032c88656270bdae7f0c42"
      ],
      "author": {
        "name": "Vasily Averin",
        "email": "vvs@sw.ru",
        "time": "Wed Oct 31 08:33:24 2007 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.home.kernel.dk",
        "time": "Fri Nov 02 08:47:25 2007 +0100"
      },
      "message": "dm: bounce_pfn limit added\n\nDevice mapper uses its own bounce_pfn that may differ from one on underlying\ndevice. In that way dm can build incorrect requests that contain sg elements\ngreater than underlying device is able to handle.\n\nThis is the cause of slab corruption in i2o layer, occurred on i386 arch when\nvery long direct IO requests are addressed to dm-over-i2o device.\n\nSigned-off-by: Vasily Averin \u003cvvs@sw.ru\u003e\nCc: \u003cstable@kernel.org\u003e\nCc: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "094262db9e4c615e0db7a7b924d244b7a6c186b0",
      "tree": "c8c79edd122d9b32b1cd61c9c7070e14d3656a67",
      "parents": [
        "6f3c3f0afa50782dc1742c968646c491657d255a"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Fri Oct 19 22:38:51 2007 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Oct 20 02:01:07 2007 +0100"
      },
      "message": "dm: use kzalloc\n\nConvert kmalloc() + memset() to kzalloc().\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fd5d806266935179deda1502101624832eacd01f",
      "tree": "b0d01c2ed7d754f2a6daef6c77d108a81d8a470e",
      "parents": [
        "bf2de6f5a4faf0197268f18d08969b003b87b6e8"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Oct 16 11:05:02 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Oct 16 11:05:02 2007 +0200"
      },
      "message": "block: convert blkdev_issue_flush() to use empty barriers\n\nThen we can get rid of -\u003eissue_flush_fn() and all the driver private\nimplementations of that.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "165125e1e480f9510a5ffcfbfee4e3ee38c05f23",
      "tree": "8009c8a5ff09e26dc2418d42f66ecafb055c52a2",
      "parents": [
        "f695baf2df9e0413d3521661070103711545207a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jul 24 09:28:11 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jul 24 09:28:11 2007 +0200"
      },
      "message": "[BLOCK] Get rid of request_queue_t typedef\n\nSome of the code has been gradually transitioned to using the proper\nstruct request_queue, but there\u0027s lots left. So do a full sweet of\nthe kernel and get rid of this typedef and replace its uses with\nthe proper type.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "2cd54d9bedb79a97f014e86c0da393416b264eb3",
      "tree": "bb7b81120cdd84e106da22222b6eec57e45ac5c4",
      "parents": [
        "79eb885c96b5ccf8bbffd0dddc4c15a5dd436a1c"
      ],
      "author": {
        "name": "Mike Anderson",
        "email": "andmike@us.ibm.com",
        "time": "Wed May 09 02:32:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:47 2007 -0700"
      },
      "message": "dm: allow offline devices\n\nAllow check_device_area to succeed if a device has an i_size of zero.  This\naddresses an issue seen on DASD devices setting up a multipath table for paths\nin online and offline state.\n\nSigned-off-by: Mike Anderson \u003candmike@us.ibm.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "999d816851c3e080412a19558f111d01852d2f04",
      "tree": "8b75a8e97d6fa7c41e81169e9b2ba5f7806e23a9",
      "parents": [
        "3cb4021453a69585e458ec2177677c0c1300dccf"
      ],
      "author": {
        "name": "Bryn Reeves",
        "email": "breeves@redhat.com",
        "time": "Tue Oct 03 01:15:43 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:16 2006 -0700"
      },
      "message": "[PATCH] dm table: add target flush\n\nThis patch adds support for a per-target dm_flush_fn method.  This is needed\nto allow dm-loop to invalidate page cache mappings in response to BLKFLSBUF\nioctl commands.\n\nSigned-off-by: Bryn Reeves \u003cbreeves@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3cb4021453a69585e458ec2177677c0c1300dccf",
      "tree": "cc2394e0eb52d6bed2fbc523641499714d6159c4",
      "parents": [
        "9faf400f7e51e56ec76b2fc481c3191c01cb3a57"
      ],
      "author": {
        "name": "Bryn Reeves",
        "email": "breeves@redhat.com",
        "time": "Tue Oct 03 01:15:42 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:16 2006 -0700"
      },
      "message": "[PATCH] dm: extract device limit setting\n\nSeparate the setting of device I/O limits from dm_get_device().  dm-loop will\nuse this.\n\nSigned-off-by: Bryn Reeves \u003cbreeves@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8757b7764f13e336f3c0eb1f634440d4ee4c3a67",
      "tree": "c91b00ace6ee438a9e447bce311808a698e9d487",
      "parents": [
        "cc1092019ce3d9b3e85a285b41e852ff94a6b590"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Tue Oct 03 01:15:36 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:15 2006 -0700"
      },
      "message": "[PATCH] dm table: add target preresume\n\nThis patch adds a target preresume hook.\n\nIt is called before the targets are resumed and if it returns an error the\nresume gets cancelled.\n\nThe crypt target will use this to indicate that it is unable to process I/O\nbecause no encryption key has been supplied.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "72d9486169a2a8353e022813185ba2f32d7dde69",
      "tree": "2fe6c382feb3f21d829abf543c54be486007557c",
      "parents": [
        "5c6bd75d06db512515a3781aa97e42df2faf0815"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 26 00:27:35 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:36 2006 -0700"
      },
      "message": "[PATCH] dm: improve error message consistency\n\nTidy device-mapper error messages to include context information\nautomatically.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c2ade42dd35466d90aa6fc7cc717f396e165492f",
      "tree": "245baeabfea43a3b2654adb962e776a877da0059",
      "parents": [
        "17b2f66f2a39a4e4d1ed456f35ee3bb598e41d35"
      ],
      "author": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Mon Jun 26 00:27:33 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:36 2006 -0700"
      },
      "message": "[PATCH] dm: create error table\n\nAdd a library function dm_create_error_table() to create a table that rejects\nany I/O sent to a device with EIO.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "814d68629b40e863997fa0eea459be4cc99a06cc",
      "tree": "85dddcb7d8c1885a2af45aa4be36b0b78a4c7ddd",
      "parents": [
        "ce503f59ae899c3e75a8a1cf46f2d44c0c5b5c7c"
      ],
      "author": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Mon Jun 26 00:27:31 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:36 2006 -0700"
      },
      "message": "[PATCH] dm table split_args: handle no input\n\nReturn sense if dm_split_args is called with a NULL input parameter.\n\nSigned-off-by: David Teigland \u003cteigland@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "143535396c7ebd9395a931a000b3963f457712b8",
      "tree": "725203a6ed6be6c795fa0f0441aa1b91f5ea8721",
      "parents": [
        "e4c8b3ba34cc1aeab451c7a5cc843c5fd62cbe3d"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Mon Jun 26 00:27:27 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:35 2006 -0700"
      },
      "message": "[PATCH] dm table: get_target: fix last index\n\nThe table is indexed from 0, so an index equal to t-\u003enum_targets should be\nrejected.\n\n(There is no code in the current tree that would exercise this bug.)\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "48c9c27b8bcd2a328a06151e2d5c1170db0b701b",
      "tree": "804fb1c410e0a246c92105710f1cd22a9daa8edc",
      "parents": [
        "2f889129de148b0ba2e1fbc9e9d33a4ef4c5f2cb"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Mon Mar 27 01:18:20 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:45:03 2006 -0800"
      },
      "message": "[PATCH] sem2mutex: drivers/md\n\nSemaphore to mutex conversion.\n\nThe conversion was generated via scripts, and the result was validated\nautomatically via a script as well.\n\nSigned-off-by: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f165921df46a977e3561f1bd9f13a348441486d1",
      "tree": "a44679427f97090aeb4d5ba62568a41f4b367763",
      "parents": [
        "5463c7904c952aa6b6804dd902c72a5332fa5221"
      ],
      "author": {
        "name": "Jun\u0027ichi Nomura",
        "email": "j-nomura@ce.jp.nec.com",
        "time": "Mon Mar 27 01:17:59 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:45:00 2006 -0800"
      },
      "message": "[PATCH] dm/md dependency tree in sysfs: dm to use bd_claim_by_disk\n\nUse bd_claim_by_disk.\n\nFollowing symlinks are created if dm-0 maps to sda:\n  /sys/block/dm-0/slaves/sda --\u003e /sys/block/sda\n  /sys/block/sda/holders/dm-0 --\u003e /sys/block/dm-0\n\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1134e5ae79bab61c05657ca35a6297cf87202e35",
      "tree": "16d5e9c722fbe17dc343c65b85628c8e6ee36199",
      "parents": [
        "9ade92a9a5b0a3a10efa6551b8c67a9277bf0438"
      ],
      "author": {
        "name": "Mike Anderson",
        "email": "andmike@us.ibm.com",
        "time": "Mon Mar 27 01:17:54 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:44:59 2006 -0800"
      },
      "message": "[PATCH] dm table: store md\n\nStore an up-pointer to the owning struct mapped_device in every table when it\nis created.\n\nAccess it with:\n  struct mapped_device *dm_table_get_md(struct dm_table *t)\n\nTables linked to md must be destroyed before the md itself.\n\nSigned-off-by: Mike Anderson \u003candmike@us.ibm.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "969429b504ae866d3f8b1cafd68a2c099e305093",
      "tree": "538c0a77049450e434cfc890807822491f766113",
      "parents": [
        "4ee218cd67b385759993a6c840ea45f0ee0a8b30"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 27 01:17:49 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:44:59 2006 -0800"
      },
      "message": "[PATCH] dm: make sure QUEUE_FLAG_CLUSTER is set properly\n\nThis flag should be set for a virtual device iff it is set for all\nunderlying devices.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nAcked-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "547bc92649345af6014578a64b27cc5787617935",
      "tree": "4b2a097badd0bef9003846813dec53d5daa5030e",
      "parents": [
        "c163c7293eb68bf6c0c824d122a2192b9f129193"
      ],
      "author": {
        "name": "Eric Sesterhenn",
        "email": "snakebyte@gmx.de",
        "time": "Sun Mar 26 18:22:50 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Sun Mar 26 18:22:50 2006 +0200"
      },
      "message": "BUG_ON() Conversion in md/dm-table.c\n\nthis changes if() BUG(); constructs to BUG_ON() which is\ncleaner and can better optimized away\n\nSigned-off-by: Eric Sesterhenn \u003csnakebyte@gmx.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "3ee247ebce93a526f482d6bc714ce796fa85a81a",
      "tree": "7e796c3a2cb37aa5be802783fae23e8d0636caab",
      "parents": [
        "4aac0a63fe8d418a2b74e43708f59380ba379a3b"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Feb 01 03:04:55 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Feb 01 08:53:11 2006 -0800"
      },
      "message": "[PATCH] dm: dm-table warning fix\n\ndrivers/md/dm-table.c:500: warning: comparison of distinct pointer types lacks a cast\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "defd94b75409b983f94548ea2f52ff5787ddb848",
      "tree": "0138b2dae748de88edaee4da23431f1a9dd347a1",
      "parents": [
        "8b05b773b6030de5b1bab1cbb0bf1ff8c34cdbe0"
      ],
      "author": {
        "name": "Mike Christie",
        "email": "michaelc@cs.wisc.edu",
        "time": "Mon Dec 05 02:37:06 2005 -0600"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "jejb@mulgrave.(none)",
        "time": "Thu Dec 15 15:11:40 2005 -0800"
      },
      "message": "[SCSI] seperate max_sectors from max_hw_sectors\n\n- export __blk_put_request and blk_execute_rq_nowait\nneeded for async REQ_BLOCK_PC requests\n- seperate max_hw_sectors and max_sectors for block/scsi_ioctl.c and\nSG_IO bio.c helpers per Jens\u0027s last comments. Since block/scsi_ioctl.c SG_IO was\nalready testing against max_sectors and SCSI-ml was setting max_sectors and\nmax_hw_sectors to the same value this does not change any scsi SG_IO behavior. It only\nprepares ll_rw_blk.c, scsi_ioctl.c and bio.c for when SCSI-ml begins to set\na valid max_hw_sectors for all LLDs. Today if a LLD does not set it\nSCSI-ml sets it to a safe default and some LLDs set it to a artificial low\nvalue to overcome memory and feedback issues.\n\nNote: Since we now cap max_sectors to BLK_DEF_MAX_SECTORS, which is 1024,\ndrivers that used to call blk_queue_max_sectors with a large value of\nmax_sectors will now see the fs requests capped to BLK_DEF_MAX_SECTORS.\n\nSigned-off-by: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@SteelEye.com\u003e\n"
    },
    {
      "commit": "cf222b3769c3759488579441ab724ed33a2da5f4",
      "tree": "b49e2a731a02cc9a280183232ecad5c165f121eb",
      "parents": [
        "8c56ac3f3b12936b03d2626c7572fed5977af515"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jul 28 21:15:57 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Jul 28 21:46:03 2005 -0700"
      },
      "message": "[PATCH] device-mapper: fix deadlocks in core (prep)\n\nSome code tidy-ups in preparation for the next patches.  Change\ndm_table_pre/postsuspend_targets to accept NULL.  Use dm_suspended()\nthroughout.\n\nSigned-Off-By: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d5e404c10a98fc2979643476851e9cbdb1944812",
      "tree": "1d7d846b43a6a8a022e5cf4fd5453b27abf0de94",
      "parents": [
        "93c534aefb906824d71ea779ed0c7f1573843f4e"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jul 12 15:53:05 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jul 12 16:19:11 2005 -0700"
      },
      "message": "[PATCH] device-mapper snapshots: Handle origin extension\n\nHandle writes to a snapshot-origin device that has been extended since the\nsnapshot was taken.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5e198d94dd0c3ec7f6138229e2e412c2c6268c38",
      "tree": "303c284a5a90e813ca1c92a0c3698a63089a86b2",
      "parents": [
        "f1daa40b638891a62e1be40f78d752c500265362"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu May 05 16:16:09 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu May 05 16:36:46 2005 -0700"
      },
      "message": "[PATCH] device-mapper: Some missing statics\n\nThis patch makes some needlessly global code static.\n\nSigned-Off-By: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
