)]}'
{
  "log": [
    {
      "commit": "f0b4f7e2f29af678bd9af43422c537dcb6008603",
      "tree": "dfc2aa18bbf8411a499ef8117a5e15490eb44728",
      "parents": [
        "93b270f76e7ef3b81001576860c2701931cdc78b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 24 17:26:41 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 24 17:26:41 2011 +1100"
      },
      "message": "md: Fix - again - partition detection when array becomes active\n\nRevert\n    b821eaa572fd737faaf6928ba046e571526c36c6\nand\n    f3b99be19ded511a1bf05a148276239d9f13eefa\n\nWhen I wrote the first of these I had a wrong idea about the\nlifetime of \u0027struct block_device\u0027.  It can disappear at any time that\nthe block device is not open if it falls out of the inode cache.\n\nSo relying on the \u0027size\u0027 recorded with it to detect when the\ndevice size has changed and so we need to revalidate, is wrong.\n\nRather, we really do need the \u0027changed\u0027 attribute stored directly in\nthe mddev and set/tested as appropriate.\n\nWithout this patch, a sequence of:\n   mknod / open / close / unlink\n\n(which can cause a block_device to be created and then destroyed)\nwill result in a rescan of the partition table and consequence removal\nand addition of partitions.\nSeveral of these in a row can get udev racing to create and unlink and\nother code can get confused.\n\nWith the patch, the rescan is only performed when needed and so there\nare no races.\n\nThis is suitable for any stable kernel from 2.6.35.\n\nReported-by: \"Wojcik, Krzysztof\" \u003ckrzysztof.wojcik@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "da9cf5050a2e3dbc3cf26a8d908482eb4485ed49",
      "tree": "d5e7ea4ef419d07d294e88b47a4aaf2676a605eb",
      "parents": [
        "8f5f02c460b7ca74ce55ce126ce0c1e58a3f923d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Feb 21 18:25:57 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Feb 21 18:25:57 2011 +1100"
      },
      "message": "md: avoid spinlock problem in blk_throtl_exit\n\nblk_throtl_exit assumes that -\u003equeue_lock still exists,\nso make sure that it does.\nTo do this, we stop redirecting -\u003equeue_lock to conf-\u003edevice_lock\nand leave it pointing where it is initialised - __queue_lock.\n\nAs the blk_plug functions check the -\u003equeue_lock is held, we now\ntake that spin_lock explicitly around the plug functions.  We don\u0027t\nneed the locking, just the warning removal.\n\nThis is needed for any kernel with the blk_throtl code, which is\nwhich is 2.6.37 and later.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8f5f02c460b7ca74ce55ce126ce0c1e58a3f923d",
      "tree": "de4f933fe250bd2ba71727f535432a82ef68883b",
      "parents": [
        "cbe6ef1d2622e08e272600b3cb6040bed60f0450"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 16 13:58:51 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 16 13:58:51 2011 +1100"
      },
      "message": "md: correctly handle probe of an \u0027mdp\u0027 device.\n\n\u0027mdp\u0027 devices are md devices with preallocated device numbers\nfor partitions. As such it is possible to mknod and open a partition\nbefore opening the whole device.\n\nthis causes  md_probe() to be called with a device number of a\npartition, which in-turn calls mddev_find with such a number.\n\nHowever mddev_find expects the number of a \u0027whole device\u0027 and\ndoes the wrong thing with partition numbers.\n\nSo add code to mddev_find to remove the \u0027partition\u0027 part of\na device number and just work with the \u0027whole device\u0027.\n\nThis patch addresses https://bugzilla.kernel.org/show_bug.cgi?id\u003d28652\n\nReported-by: hkmaly@bigfoot.com\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: \u003cstable@kernel.org\u003e\n"
    },
    {
      "commit": "cbe6ef1d2622e08e272600b3cb6040bed60f0450",
      "tree": "03d1ae0fe73404a3bd7850d89c415f3412977693",
      "parents": [
        "f7bee80945155ad0326916486dabc38428c6cdef"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 16 13:58:38 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 16 13:58:38 2011 +1100"
      },
      "message": "md: don\u0027t set_capacity before array is active.\n\nIf the desired size of an array is set (via sysfs) before the array is\nactive (which is the normal sequence), we currrently call set_capacity\nimmediately.\nThis means that a subsequent \u0027open\u0027 (as can be caused by some\nudev-triggers program) will notice the new size and try to probe for\npartitions.  However as the array isn\u0027t quite ready yet the read will\nfail.  Then when the array is read, as the size doesn\u0027t change again\nwe don\u0027t try to re-probe.\n\nSo when setting array size via sysfs, only call set_capacity if the\narray is already active.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f7bee80945155ad0326916486dabc38428c6cdef",
      "tree": "adf054c298371d181aa2b3885425bcb766f3deb6",
      "parents": [
        "02214dc5461c36da26a34014cab4e1bb484edba2"
      ],
      "author": {
        "name": "Krzysztof Wojcik",
        "email": "krzysztof.wojcik@intel.com",
        "time": "Mon Feb 14 10:01:41 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Feb 14 10:01:41 2011 +1100"
      },
      "message": "md: Fix raid1-\u003eraid0 takeover\n\nTakeover raid1-\u003eraid0 not succeded. Kernel message is shown:\n\"md/raid0:md126: too few disks (1 of 2) - aborting!\"\n\nProblem was that we weren\u0027t updating -\u003eraid_disks for that\ntakeover, unlike all the others.\n\nSigned-off-by: Krzysztof Wojcik \u003ckrzysztof.wojcik@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "02214dc5461c36da26a34014cab4e1bb484edba2",
      "tree": "32137bdf12144af5ff6c946838e1bfbf3b2bc0f2",
      "parents": [
        "e91ece5590b3c728624ab57043fc7a05069c604a"
      ],
      "author": {
        "name": "Krzysztof Wojcik",
        "email": "krzysztof.wojcik@intel.com",
        "time": "Fri Feb 04 14:18:26 2011 +0100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 08 11:49:02 2011 +1100"
      },
      "message": "FIX: md: process hangs at wait_barrier after 0-\u003e10 takeover\n\nFollowing symptoms were observed:\n1. After raid0-\u003eraid10 takeover operation we have array with 2\nmissing disks.\nWhen we add disk for rebuild, recovery process starts as expected\nbut it does not finish- it stops at about 90%, md126_resync process\nhangs in \"D\" state.\n2. Similar behavior is when we have mounted raid0 array and we\nexecute takeover to raid10. After this when we try to unmount array-\nit causes process umount hangs in \"D\"\n\nIn scenarios above processes hang at the same function- wait_barrier\nin raid10.c.\nProcess waits in macro \"wait_event_lock_irq\" until the\n\"!conf-\u003ebarrier\" condition will be true.\nIn scenarios above it never happens.\n\nReason was that at the end of level_store, after calling pers-\u003erun,\nwe call mddev_resume. This calls pers-\u003equiesce(mddev, 0) with\nRAID10, that calls lower_barrier.\nHowever raise_barrier hadn\u0027t been called on that \u0027conf\u0027 yet,\nso conf-\u003ebarrier becomes negative, which is bad.\n\nThis patch introduces setting conf-\u003ebarrier\u003d1 after takeover\noperation. It prevents to become barrier negative after call\nlower_barrier().\n\nSigned-off-by: Krzysztof Wojcik \u003ckrzysztof.wojcik@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e91ece5590b3c728624ab57043fc7a05069c604a",
      "tree": "4c5fd4ad374caf5bd9c5f575b0a228b5cdf2f191",
      "parents": [
        "c6751b2bde477f56ceef67aa1d298ce44e8e2e23"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Feb 07 19:21:48 2011 -0500"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 08 09:53:28 2011 +1100"
      },
      "message": "md_make_request: don\u0027t touch the bio after calling make_request\n\nmd_make_request was calling bio_sectors() for part_stat_add\nafter it was calling the make_request function.  This is\nbad because the make_request function can free the bio and\nbecause the bi_size field can change around.\n\nThe fix here was suggested by Jens Axboe.  It saves the\nsector count before the make_request call.  I hit this\nwith CONFIG_DEBUG_PAGEALLOC turned on while trying to break\nhis pretty fusionio card.\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c6751b2bde477f56ceef67aa1d298ce44e8e2e23",
      "tree": "59916ec74802396ec4b3f871d27232550848bc8c",
      "parents": [
        "7281f8129c362436237b82c8c026494dd36479dc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 02 11:57:13 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 02 11:57:13 2011 +1100"
      },
      "message": "md: Don\u0027t allow slot_store while resync/recovery is happening.\n\nActivating a spare in an array while resync/recovery is already\nhappening can lead the that spare being marked in-sync when it isn\u0027t\nreally.\nSo don\u0027t allow the \u0027slot\u0027 to be set (this activating the device)\nwhile resync/recovery is happening.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7281f8129c362436237b82c8c026494dd36479dc",
      "tree": "c12196b42c807d4ee80d5f6e1657f31fa3ea4d7b",
      "parents": [
        "a8c42c7f476b5bb39bb3a5b32d5473b9a46cadb9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 14:30:27 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 14:30:27 2011 +1100"
      },
      "message": "md: don\u0027t clear curr_resync_completed at end of resync.\n\nThere is no need to set this to zero at this point.  It will be\nset to zero by remove_and_add_spares or at the start of\nmd_do_sync at the latest.\nAnd setting it to zero before MD_RECOVERY_RUNNING is cleared can\nmake a \u0027zero\u0027 appear briefly in the \u0027sync_completed\u0027 sysfs attribute\njust as resync is finishing.\n\nSo simply remove this setting to zero.\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a8c42c7f476b5bb39bb3a5b32d5473b9a46cadb9",
      "tree": "59b82042476e6b92ee293570d30a2580dba56d09",
      "parents": [
        "fc3a08b85b7a4f6c1069e5f71f6ad40d925ff55b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 13:47:13 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 13:47:13 2011 +1100"
      },
      "message": "md: Don\u0027t use remove_and_add_spares to remove failed devices from a read-only array\n\nremove_and_add_spares is called in two places where the needs really\nare very different.\nremove_and_add_spares should not be called on an array which is about\nto be reshaped as some extra devices might have been manually added\nand that would remove them.  However if the array is \u0027read-auto\u0027,\nthat will currently happen, which is bad.\n\nSo in the \u0027ro !\u003d 0\u0027 case don\u0027t call remove_and_add_spares but simply\nremove the failed devices as the comment suggests is needed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fc3a08b85b7a4f6c1069e5f71f6ad40d925ff55b",
      "tree": "1d23e67decd38615a38a50769c264f3a2636d582",
      "parents": [
        "f21e9ff7f77d41ceca4e1e5ee5a4efa5ad7a5e40"
      ],
      "author": {
        "name": "Krzysztof Wojcik",
        "email": "krzysztof.wojcik@intel.com",
        "time": "Mon Jan 31 13:47:13 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 13:47:13 2011 +1100"
      },
      "message": "Add raid1-\u003eraid0 takeover support\n\nThis patch introduces raid 1 to raid0 takeover operation\nin kernel space.\n\nSigned-off-by: Krzysztof Wojcik \u003ckrzysztof.wojcik@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@nbeee.brown\u003e\n"
    },
    {
      "commit": "f21e9ff7f77d41ceca4e1e5ee5a4efa5ad7a5e40",
      "tree": "c6bf9c0457ae891505983c1493bf15856e815c5b",
      "parents": [
        "50da08409654e036c4c964a473567a61a654cb83"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 12:10:09 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 12:10:09 2011 +1100"
      },
      "message": "md: Remove the AllReserved flag for component devices.\n\nThis flag is not needed and is used badly.\n\nDevices that are included in a native-metadata array are reserved\nexclusively for that array - and currently have AllReserved set.\nThey all are bd_claimed for the rdev and so cannot be shared.\n\nDevices that are included in external-metadata arrays can be shared\namong multiple arrays - providing there is no overlap.\nThese are bd_claimed for md in general - not for a particular rdev.\n\nWhen changing the amount of a device that is used in an array we need\nto check for overlap.  This currently includes a check on AllReserved\nSo even without overlap, sharing with an AllReserved device is not\nallowed.\nHowever the bd_claim usage already precludes sharing with these\ndevices, so the test on AllReserved is not needed.  And in fact it is\nwrong.\n\nAs this is the only use of AllReserved, simply remove all usage and\ndefinition of AllReserved.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "50da08409654e036c4c964a473567a61a654cb83",
      "tree": "18a4c5edf23ec5aaf8872d9639970a99c7f16d8e",
      "parents": [
        "469518a3455c79619e9231aeffeffa2e2989f738"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 11:57:43 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 11:57:43 2011 +1100"
      },
      "message": "md: don\u0027t abort checking spares as soon as one cannot be added.\n\nAs spares can be added manually before a reshape starts, we need to\nfind them all to mark some of them as in_sync.\n\nPreviously we would abort looking for spares when we found an\nunallocated spare what could not be added to the array (implying there\nwas no room for new spares).  However already-added spares could be\nlater in the list, so we need to keep searching.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "469518a3455c79619e9231aeffeffa2e2989f738",
      "tree": "ae92280e8be9df25fd20fea87efcbe72bd855ae9",
      "parents": [
        "87a8dec91e15954f0cf86be6c21741d991d83621"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 11:57:43 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 11:57:43 2011 +1100"
      },
      "message": "md: fix the test for finding spares in raid5_start_reshape.\n\nAs spares can be added to the array before the reshape is started,\nwe need to find and count them when checking there are enough.\nThe array could have been degraded, so we need to check all devices,\nno just those out side of the range of devices in the array before\nthe reshape.\n\nSo instead of checking the index, check the In_sync flag as that\nreliably tells if the device is a spare or this purpose.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "87a8dec91e15954f0cf86be6c21741d991d83621",
      "tree": "6719ef774c0e1a719b0365eae457c8ba4f130c70",
      "parents": [
        "de171cb9a52598cc023adceafc6c166112401386"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 11:57:43 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 11:57:43 2011 +1100"
      },
      "message": "md: simplify some \u0027if\u0027 conditionals in raid5_start_reshape.\n\nThere are two consecutive \u0027if\u0027 statements.\n\n if (mddev-\u003edelta_disks \u003e\u003d 0)\n      ....\n if (mddev-\u003edelta_disks \u003e 0)\n\nThe code in the second is equally valid if delta_disks \u003d\u003d 0, and these\ntwo statements are the only place that \u0027added_devices\u0027 is used.\n\nSo make them a single if statement, make added_devices a local\nvariable, and re-indent it all.\n\nNo functional change.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "de171cb9a52598cc023adceafc6c166112401386",
      "tree": "56fc899c45b538dedba0fc139e3213a0f47f9a59",
      "parents": [
        "1f0324caefd39985e9fe052fac97da31694db31e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 11:57:42 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 11:57:42 2011 +1100"
      },
      "message": "md: revert change to raid_disks on failure.\n\nIf we try to update_raid_disks and it fails, we should put\n\u0027delta_disks\u0027 back to zero.  This is important because some code,\nsuch as slot_store, assumes that delta_disks has been validated.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "49731baa41df404c2c3f44555869ab387363af43",
      "tree": "5d3476368fa546aebb1c223e9cf1bab5ad80f698",
      "parents": [
        "c553f8e335c00a7cff3ab3f13e793b13d3f2207f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jan 14 18:43:57 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jan 14 18:44:22 2011 +0100"
      },
      "message": "block: restore multiple bd_link_disk_holder() support\n\nCommit e09b457b (block: simplify holder symlink handling) incorrectly\nassumed that there is only one link at maximum.  dm may use multiple\nlinks and expects block layer to track reference count for each link,\nwhich is different from and unrelated to the exclusive device holder\nidentified by @holder when the device is opened.\n\nRemove the single holder assumption and automatic removal of the link\nand revive the per-link reference count tracking.  The code\nessentially behaves the same as before commit e09b457b sans the\nunnecessary kobject reference count dancing.\n\nWhile at it, note that this facility should not be used by anyone else\nthan the current ones.  Sysfs symlinks shouldn\u0027t be abused like this\nand the whole thing doesn\u0027t belong in the block layer at all.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Milan Broz \u003cmbroz@redhat.com\u003e\nCc: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: linux-raid@vger.kernel.org\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "f6bcfd94c0a97c11ce9197ade93a08bc8af6e057",
      "tree": "83d867565b4f2a7627b3288f9e000eaf2b217be9",
      "parents": [
        "509e4aef44eb10e4aef1f81c3c3ff1214671503b",
        "9d09e663d5502c46f2d9481c04c1087e1c2da698"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:30:47 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:30:47 2011 -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: (32 commits)\n  dm: raid456 basic support\n  dm: per target unplug callback support\n  dm: introduce target callbacks and congestion callback\n  dm mpath: delay activate_path retry on SCSI_DH_RETRY\n  dm: remove superfluous irq disablement in dm_request_fn\n  dm log: use PTR_ERR value instead of ENOMEM\n  dm snapshot: avoid storing private suspended state\n  dm snapshot: persistent make metadata_wq multithreaded\n  dm: use non reentrant workqueues if equivalent\n  dm: convert workqueues to alloc_ordered\n  dm stripe: switch from local workqueue to system_wq\n  dm: dont use flush_scheduled_work\n  dm snapshot: remove unused dm_snapshot queued_bios_work\n  dm ioctl: suppress needless warning messages\n  dm crypt: add loop aes iv generator\n  dm crypt: add multi key capability\n  dm crypt: add post iv call to iv generator\n  dm crypt: use io thread for reads only if mempool exhausted\n  dm crypt: scale to multiple cpus\n  dm crypt: simplify compatible table output\n  ...\n"
    },
    {
      "commit": "509e4aef44eb10e4aef1f81c3c3ff1214671503b",
      "tree": "b90daecbc3d05787b0dd141e524b67d8579a6dfd",
      "parents": [
        "375b6f5a40a3d8373561a3dbeed440a845e6d379",
        "bf2cb0dab8c97f00a71875d9b13dbac17a2f47ca"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:30:20 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:30:20 2011 -0800"
      },
      "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: Fix removal of extra drives when converting RAID6 to RAID5\n  md: range check slot number when manually adding a spare.\n  md/raid5: handle manually-added spares in start_reshape.\n  md: fix sync_completed reporting for very large drives (\u003e2TB)\n  md: allow suspend_lo and suspend_hi to decrease as well as increase.\n  md: Don\u0027t let implementation detail of curr_resync leak out through sysfs.\n  md: separate meta and data devs\n  md-new-param-to_sync_page_io\n  md-new-param-to-calc_dev_sboffset\n  md: Be more careful about clearing flags bit in -\u003erecovery\n  md: md_stop_writes requires mddev_lock.\n  md/raid5: use sysfs_notify_dirent_safe to avoid NULL pointer\n  md: Ensure no IO request to get md device before it is properly initialised.\n  md: Fix single printks with multiple KERN_\u003clevel\u003es\n  md: fix regression resulting in delays in clearing bits in a bitmap\n  md: fix regression with re-adding devices to arrays with no metadata\n"
    },
    {
      "commit": "bf2cb0dab8c97f00a71875d9b13dbac17a2f47ca",
      "tree": "68587eaff5c7cb85628c1f68aecb19f2a18c8f6e",
      "parents": [
        "ba1b41b6b4e30cb66ae2775faadea05cae3ce61c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md: Fix removal of extra drives when converting RAID6 to RAID5\n\nWhen a RAID6 is converted to a RAID5, the extra drive should\nbe discarded.  However it isn\u0027t due to a typo in a comparison.\n\nThis bug was introduced in commit e93f68a1fc6 in 2.6.35-rc4\nand is suitable for any -stable since than.\n\nAs the extra drive is not removed, the \u0027degraded\u0027 counter is wrong and\nso the RAID5 will not respond correctly to a subsequent failure.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ba1b41b6b4e30cb66ae2775faadea05cae3ce61c",
      "tree": "02da80f72095418dd1a08661f59c24607029a8e7",
      "parents": [
        "1a940fcee31ec6c18c2f24dbdad31d54e4c35048"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md: range check slot number when manually adding a spare.\n\nWhen adding a spare to an active array, we should check the slot\nnumber, but allow it to be larger than raid_disks if a reshape\nis being prepared.\n\nApply the same test when adding a device to an\narray-under-construction.  It already had most of the test in place,\nbut not quite all.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1a940fcee31ec6c18c2f24dbdad31d54e4c35048",
      "tree": "73de19d505bb0483462eb1445a86a848e5506478",
      "parents": [
        "13ae864bc86ff65547ffe7e966b6433a0d0edb8a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md/raid5: handle manually-added spares in start_reshape.\n\nIt is possible to manually add spares to specific slots before\nstarting a reshape.\nraid5_start_reshape should recognised this possibility and include\nit in the accounting.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "13ae864bc86ff65547ffe7e966b6433a0d0edb8a",
      "tree": "6e5ca3a6736b75fa0db8415c1e3a2506af6ab9cc",
      "parents": [
        "23ddff3792f61193695114c68d6ebd57e974c4f8"
      ],
      "author": {
        "name": "Rémi Rérolle",
        "email": "rrerolle@lacie.com",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md: fix sync_completed reporting for very large drives (\u003e2TB)\n\nThe values exported in the sync_completed file are unsigned long, which\noverflows with very large drives, resulting in wrong values reported.\n\nSince sync_completed uses sectors as unit, we\u0027ll start getting wrong\nvalues with components larger than 2TB.\n\nThis patch simply replaces the use of unsigned long by unsigned long long.\n\nSigned-off-by: Rémi Rérolle \u003crrerolle@lacie.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "23ddff3792f61193695114c68d6ebd57e974c4f8",
      "tree": "5b16efbc900648c8ef402a41cb308759a2706c61",
      "parents": [
        "75d3da43cb74d2e5fb87816dbfecb839cd97c7f4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md: allow suspend_lo and suspend_hi to decrease as well as increase.\n\nThe sysfs attributes \u0027suspend_lo\u0027 and \u0027suspend_hi\u0027 describe a region\nto which read/writes are suspended so that the under lying data can be\nmanipulated without user-space noticing.\nCurrently the window they describe can only move forwards along the\ndevice.  However this is an unnecessary restriction which will cause\nproblems with planned developments.\nSo relax this restriction and allow these endpoints to move\narbitrarily.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "75d3da43cb74d2e5fb87816dbfecb839cd97c7f4",
      "tree": "27074aceb801ada315329591f32c938b36150ed9",
      "parents": [
        "a6ff7e089c7fca813c956ccbed824087e89a3a49"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md: Don\u0027t let implementation detail of curr_resync leak out through sysfs.\n\nmddev-\u003ecurr_resync has artificial values of \u00271\u0027 and \u00272\u0027 which are used\nby the code which ensures only one resync is happening at a time on\nany given device.\n\nThese values are internal and should never be exposed to user-space\n(except when translated appropriately as in the \u0027pending\u0027 status in\n/proc/mdstat).\n\nUnfortunately they are as -\u003ecurr_resync is assigned to\n-\u003ecurr_resync_completed and that value is directly visible through\nsysfs.\n\nSo change the assignments to -\u003ecurr_resync_completed to get the same\nvalued from elsewhere in a form that doesn\u0027t have the magic \u00271\u0027 or \u00272\u0027\nvalues.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a6ff7e089c7fca813c956ccbed824087e89a3a49",
      "tree": "6537f72a2431c30601736676e9b1f89a7f1fe52e",
      "parents": [
        "ccebd4c4159462c96397ae9af9c667bb394d7b70"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md: separate meta and data devs\n\nAllow the metadata to be on a separate device from the\ndata.\n\nThis doesn\u0027t mean the data and metadata will by on separate\nphysical devices - it simply gives device-mapper and userspace\ntools more flexibility.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ccebd4c4159462c96397ae9af9c667bb394d7b70",
      "tree": "04554f0e7607d906c6b09f31a995fca0dd40c5b5",
      "parents": [
        "57b2caa394393f8870ed41bdcc38a7542593018f"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "message": "md-new-param-to_sync_page_io\n\nAdd new parameter to \u0027sync_page_io\u0027.\n\nThe new parameter allows us to distinguish between metadata and data\noperations.  This becomes important later when we add the ability to\nuse separate devices for data and metadata.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\n"
    },
    {
      "commit": "57b2caa394393f8870ed41bdcc38a7542593018f",
      "tree": "22579497603304e9694986a4cac2cd360c993fa9",
      "parents": [
        "7ebc0be7fff4146e87b4078f054977b72998abd3"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "message": "md-new-param-to-calc_dev_sboffset\n\nWhen we allow for separate devices for data and metadata\nin a later patch, we will need to be able to calculate\nthe superblock offset based on more than the bdev.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\n"
    },
    {
      "commit": "7ebc0be7fff4146e87b4078f054977b72998abd3",
      "tree": "f5b5b40674ec4e221e77eb1f9e4f36138f75df3c",
      "parents": [
        "defad61a5b16352d3e22a04d4c930a5b5a7fd1f0"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "message": "md: Be more careful about clearing flags bit in -\u003erecovery\n\nSetting -\u003erecovery to 0 is generally not a good idea as it could clear\nbits that shouldn\u0027t be cleared.  In particular, MD_RECOVERY_FROZEN\nshould only be cleared on explicit request from user-space.\n\nSo when we need to clear things, just clear the bits that need\nclearing.\n\nAs there are a few different places which reap a resync process - and\nsome do an incomplte job - factor out the code for doing the from\nmd_check_recovery and call that function instead of open coding part\nof it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReported-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\n"
    },
    {
      "commit": "defad61a5b16352d3e22a04d4c930a5b5a7fd1f0",
      "tree": "c353bd036c12011d0eee7f7924c230888fd34b0a",
      "parents": [
        "43c73ca43b3e03bb228ff9350b6b44d0e560f262"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "message": "md: md_stop_writes requires mddev_lock.\n\nAs md_stop_writes manipulates the sync_thread and calls md_update_sb,\nit need to be called with mddev_lock held.\n\nIn all internal cases it is, but the symbol is exported for dm-raid to\ncall and in that case the lock won\u0027t be help.\nDo make an exported version which takes the lock, and an internal\nversion which does not.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "43c73ca43b3e03bb228ff9350b6b44d0e560f262",
      "tree": "2a6fcff1e62c53ba0a95295cf02ae785b1efb501",
      "parents": [
        "0ca69886a8273ac1350143d562280bfcbe4760dc"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "message": "md/raid5: use sysfs_notify_dirent_safe to avoid NULL pointer\n\nWith the module parameter \u0027start_dirty_degraded\u0027 set,\nraid5_spare_active() previously called sysfs_notify_dirent() with a NULL\nargument (rdev-\u003esysfs_state) when a rebuild finished.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\n"
    },
    {
      "commit": "0ca69886a8273ac1350143d562280bfcbe4760dc",
      "tree": "98acbe1e5682e4455bf7d2e7a9413b5a3fd43b2a",
      "parents": [
        "067032bc628598606056412594042564fcf09e22"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "message": "md: Ensure no IO request to get md device before it is properly initialised.\n\nWhen an md device is in the process of coming on line it is possible\nfor an IO request (typically a partition table probe) to get through\nbefore the array is fully initialised, which can cause unexpected\nbehaviour (e.g. a crash).\n\nSo explicitly record when the array is ready for IO and don\u0027t allow IO\nthrough until then.\n\nThere is no possibility for a similar problem when the array is going\noff-line as there must only be one \u0027open\u0027 at that time, and it is busy\noff-lining the array and so cannot send IO requests.  So no memory\nbarrier is needed in md_stop()\n\nThis has been a bug since commit 409c57f3801 in 2.6.30 which\nintroduced md_make_request.  Before then, each personality would\nregister its own make_request_fn when it was ready.\nThis is suitable for any stable kernel from 2.6.30.y onwards.\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReported-by:  \"Hawrylewicz Czarnowski, Przemyslaw\" \u003cprzemyslaw.hawrylewicz.czarnowski@intel.com\u003e\n"
    },
    {
      "commit": "067032bc628598606056412594042564fcf09e22",
      "tree": "5e64b6446c2156631cc66f34330ba7b134a451bf",
      "parents": [
        "6c9879101442b08581e8a0e3ae6b7f643a78fd63"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "message": "md: Fix single printks with multiple KERN_\u003clevel\u003es\n\nNoticed-by: Russell King \u003clinux@arm.linux.org.uk\u003e\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6c9879101442b08581e8a0e3ae6b7f643a78fd63",
      "tree": "bfe780d4e09896988fe367aa329a94daf55163c9",
      "parents": [
        "bf572541ab44240163eaa2d486b06f306a31d45a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:13:53 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:13:53 2011 +1100"
      },
      "message": "md: fix regression resulting in delays in clearing bits in a bitmap\n\ncommit 589a594be1fb (2.6.37-rc4) fixed a problem were md_thread would\nsometimes call the -\u003erun function at a bad time.\n\nIf an error is detected during array start up after the md_thread has\nbeen started, the md_thread is killed.  This resulted in the -\u003erun\nfunction being called once.  However the array may not be in a state\nthat it is safe to call -\u003erun.\n\nHowever the fix imposed meant that  -\u003erun was not called on a timeout.\nThis means that when an array goes idle, bitmap bits do not get\ncleared promptly.  While the array is busy the bits will still be\ncleared when appropriate so this is not very serious.  There is no\nrisk to data.\n\nChange the test so that we only avoid calling -\u003erun when the thread\nis being stopped.  This more explicitly addresses the problem situation.\n\nThis is suitable for 2.6.37-stable and any -stable kernel to which\n589a594be1fb was applied.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9d09e663d5502c46f2d9481c04c1087e1c2da698",
      "tree": "993f10eb7100a6ce8c00c0cff7951d7ffea9488e",
      "parents": [
        "99d03c141b40914b67d63c9d23b8da4386422ed7"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jan 13 20:00:02 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 20:00:02 2011 +0000"
      },
      "message": "dm: raid456 basic support\n\nThis patch is the skeleton for the DM target that will be\nthe bridge from DM to MD (initially RAID456 and later RAID1).  It\nprovides a way to use device-mapper interfaces to the MD RAID456\ndrivers.\n\nAs with all device-mapper targets, the nominal public interfaces are the\nconstructor (CTR) tables and the status outputs (both STATUSTYPE_INFO\nand STATUSTYPE_TABLE).  The CTR table looks like the following:\n\n1: \u003cs\u003e \u003cl\u003e raid \\\n2:\t\u003craid_type\u003e \u003c#raid_params\u003e \u003craid_params\u003e \\\n3:\t\u003c#raid_devs\u003e \u003cmeta_dev1\u003e \u003cdev1\u003e .. \u003cmeta_devN\u003e \u003cdevN\u003e\n\nLine 1 contains the standard first three arguments to any device-mapper\ntarget - the start, length, and target type fields.  The target type in\nthis case is \"raid\".\n\nLine 2 contains the arguments that define the particular raid\ntype/personality/level, the required arguments for that raid type, and\nany optional arguments.  Possible raid types include: raid4, raid5_la,\nraid5_ls, raid5_rs, raid6_zr, raid6_nr, and raid6_nc.  (again, raid1 is\nplanned for the future.)  The list of required and optional parameters\nis the same for all the current raid types.  The required parameters are\npositional, while the optional parameters are given as key/value pairs.\nThe possible parameters are as follows:\n \u003cchunk_size\u003e\t\tChunk size in sectors.\n [[no]sync]\t\tForce/Prevent RAID initialization\n [rebuild \u003cidx\u003e]\tRebuild the drive indicated by the index\n [daemon_sleep \u003cms\u003e]\tTime between bitmap daemon work to clear bits\n [min_recovery_rate \u003ckB/sec/disk\u003e]\tThrottle RAID initialization\n [max_recovery_rate \u003ckB/sec/disk\u003e]\tThrottle RAID initialization\n [max_write_behind \u003cvalue\u003e]\t\tSee \u0027-write-behind\u003d\u0027 (man mdadm)\n [stripe_cache \u003csectors\u003e]\t\tStripe cache size for higher RAIDs\n\nLine 3 contains the list of devices that compose the array in\nmetadata/data device pairs.  If the metadata is stored separately, a \u0027-\u0027\nis given for the metadata device position.  If a drive has failed or is\nmissing at creation time, a \u0027-\u0027 can be given for both the metadata and\ndata drives for a given position.\n\nExamples:\n# RAID4 - 4 data drives, 1 parity\n# No metadata devices specified to hold superblock/bitmap info\n# Chunk size of 1MiB\n# (Lines separated for easy reading)\n0 1960893648 raid \\\n\traid4 1 2048 \\\n\t5 - 8:17 - 8:33 - 8:49 - 8:65 - 8:81\n\n# RAID4 - 4 data drives, 1 parity (no metadata devices)\n# Chunk size of 1MiB, force RAID initialization,\n#\tmin recovery rate at 20 kiB/sec/disk\n0 1960893648 raid \\\n        raid4 4 2048 min_recovery_rate 20 sync\\\n        5 - 8:17 - 8:33 - 8:49 - 8:65 - 8:81\n\nPerforming a \u0027dmsetup table\u0027 should display the CTR table used to\nconstruct the mapping (with possible reordering of optional\nparameters).\n\nPerforming a \u0027dmsetup status\u0027 will yield information on the state and\nhealth of the array.  The output is as follows:\n1: \u003cs\u003e \u003cl\u003e raid \\\n2:\t\u003craid_type\u003e \u003c#devices\u003e \u003c1 health char for each dev\u003e \u003cresync_ratio\u003e\n\nLine 1 is standard DM output.  Line 2 is best shown by example:\n\t0 1960893648 raid raid4 5 AAAAA 2/490221568\nHere we can see the RAID type is raid4, there are 5 devices - all of\nwhich are \u0027A\u0027live, and the array is 2/490221568 complete with recovery.\n\nCc: linux-raid@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "99d03c141b40914b67d63c9d23b8da4386422ed7",
      "tree": "d9c2d4da01f749325fac949d96e35aedea05cfc4",
      "parents": [
        "9d357b0787bb3c91835d5e658c3bda178f9ca419"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jan 13 20:00:02 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 20:00:02 2011 +0000"
      },
      "message": "dm: per target unplug callback support\n\nAdd per-target unplug callback support.\n\nCc: linux-raid@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "9d357b0787bb3c91835d5e658c3bda178f9ca419",
      "tree": "48f2c3adc8ae06918ef0523f073291990407fa28",
      "parents": [
        "4e2d19e46b507018c6ed15f6c081d8f887ae229c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jan 13 20:00:01 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 20:00:01 2011 +0000"
      },
      "message": "dm: introduce target callbacks and congestion callback\n\nDM currently implements congestion checking by checking on congestion\nin each component device.  For raid456 we need to also check if the\nstripe cache is congested.\n\nAdd per-target congestion checker callback support.\n\nExtending the target_callbacks structure with additional callback\nfunctions allows for establishing multiple callbacks per-target (a\ncallback is also needed for unplug).\n\nCc: linux-raid@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4e2d19e46b507018c6ed15f6c081d8f887ae229c",
      "tree": "c4004056ca62763c87e5dae1c19d7e22877ec571",
      "parents": [
        "052189a2ec956810feefb6a681416c5e6a207646"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Thu Jan 13 20:00:01 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 20:00:01 2011 +0000"
      },
      "message": "dm mpath: delay activate_path retry on SCSI_DH_RETRY\n\nThis patch adds a user-configurable \u0027pg_init_delay_msecs\u0027 feature.  Use\nthis feature to specify the number of milliseconds to delay before\nretrying scsi_dh_activate, when SCSI_DH_RETRY is returned.\n\nSCSI Device Handlers return SCSI_DH_IMM_RETRY if we could retry\nactivation immediately and SCSI_DH_RETRY in cases where it is better to\nretry after some delay.\n\nCurrently we immediately retry scsi_dh_activate irrespective of\nSCSI_DH_IMM_RETRY and SCSI_DH_RETRY.\n\nThe \u0027pg_init_delay_msecs\u0027 feature may be provided during table create or\nload, e.g.:\n    dmsetup create --table \"0 20971520 multipath 3 queue_if_no_path \\\n\tpg_init_delay_msecs 2500 ...\" mpatha\n\nThe default for \u0027pg_init_delay_msecs\u0027 is 2000 milliseconds.\nMaximum configurable delay is 60000 milliseconds.  Specifying a\n\u0027pg_init_delay_msecs\u0027 of 0 will cause immediate retry.\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nSigned-off-by: Chandra Seetharaman \u003csekharan@us.ibm.com\u003e\nAcked-by: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "052189a2ec956810feefb6a681416c5e6a207646",
      "tree": "52a1fbec2878788c6a2f6565999b97331493bc4c",
      "parents": [
        "dbc883f1570d992ba926a8c9e22140ba473c6cc1"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Jan 13 20:00:00 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 20:00:00 2011 +0000"
      },
      "message": "dm: remove superfluous irq disablement in dm_request_fn\n\nThis patch changes spin_lock_irq() to spin_lock() in dm_request_fn().\nThis patch is just a clean-up and no functional change.\n\nThe spin_lock_irq() was leftover from the early request-based dm code,\nwhere map_request() used to enable interrupts.\nSince current map_request() never enables interrupts, we can change it\nto spin_lock() to match the prior spin_unlock().\n\nAuditing through the dm and block-layer code called from\nmap_request(), I confirmed all functions save/restore interrupt\nstatus, so no function returning with interrupts enabled.\nAlso I haven\u0027t observed any problem on my test environment which\nuses scsi and lpfc driver after heavy I/O testing with occasional\npath down/up.\n\nAdded BUG_ON() to detect breakage in future.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "dbc883f1570d992ba926a8c9e22140ba473c6cc1",
      "tree": "1a6bfde475cbbe2a978a13b9e2f2a8fec959d7fe",
      "parents": [
        "b83b2f295aec418c7501c05df4dfd168a79d165a"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Thu Jan 13 20:00:00 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 20:00:00 2011 +0000"
      },
      "message": "dm log: use PTR_ERR value instead of ENOMEM\n\nIt\u0027s nicer to return the PTR_ERR() value instead of just returning\n-ENOMEM.  In the current code the PTR_ERR() value is always equal to\n-ENOMEM so this doesn\u0027t actually affect anything, but still...\n\nIn addition, dm_dirty_log_create() doesn\u0027t check for a specific -ENOMEM\nreturn.  So this change is safe relative to potential for a non -ENOMEM\nreturn in the future.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nAcked-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b83b2f295aec418c7501c05df4dfd168a79d165a",
      "tree": "55249c09281930055439c449f55f156784d0bb68",
      "parents": [
        "239c8dd533e74de4a7f3c85c4f9f430eb08867c1"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Jan 13 19:59:59 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:59 2011 +0000"
      },
      "message": "dm snapshot: avoid storing private suspended state\n\nUse dm_suspended() rather than having each snapshot target maintain a\nprivate \u0027suspended\u0027 flag in struct dm_snapshot.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "239c8dd533e74de4a7f3c85c4f9f430eb08867c1",
      "tree": "0dfb9e39aad0f2ab09a4f278a6e7f1b46bf64307",
      "parents": [
        "9c4376de98719d2768dd919553843de34bb094a6"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 13 19:59:59 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:59 2011 +0000"
      },
      "message": "dm snapshot: persistent make metadata_wq multithreaded\n\nmetadata_wq serves on-stack work items from chunk_io().  Even if\nmultiple chunk_io() are simultaneously in progress, each is\nindependent and queued only once, so multithreaded workqueue can be\nsafely used.\n\nSwitch metadata_wq to multithread and flush the work item instead of\nthe workqueue in chunk_io().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "9c4376de98719d2768dd919553843de34bb094a6",
      "tree": "c20b10e9018bb51803c535a38a04ee8b12b6d98a",
      "parents": [
        "4d4d66ab5322fa9b0f51842a76139387a40e1ce9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 13 19:59:58 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:58 2011 +0000"
      },
      "message": "dm: use non reentrant workqueues if equivalent\n\nkmirrord_wq, kcopyd_work and md-\u003ewq are created per dm instance and\nserve only a single work item from the dm instance, so non-reentrant\nworkqueues would provide the same ordering guarantees as ordered ones\nwhile allowing CPU affinity and use of the workqueues for other\npurposes.  Switch them to non-reentrant workqueues.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4d4d66ab5322fa9b0f51842a76139387a40e1ce9",
      "tree": "37485e2fa56c38044c496ac5632e8304c5cc25db",
      "parents": [
        "f521f074abe7b3990f5df65482cdc3d851b80665"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 13 19:59:57 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:57 2011 +0000"
      },
      "message": "dm: convert workqueues to alloc_ordered\n\nConvert all create[_singlethread]_work() users to the new\nalloc[_ordered]_workqueue().  This conversion is mechanical and\ndoesn\u0027t introduce any behavior change.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f521f074abe7b3990f5df65482cdc3d851b80665",
      "tree": "b2d7693a14ce9bd8138790a9916074103cd4f957",
      "parents": [
        "d5ffa387e24646cb1cb55d80fd0f182a00e0edb7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 13 19:59:57 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:57 2011 +0000"
      },
      "message": "dm stripe: switch from local workqueue to system_wq\n\nkstriped only serves sc-\u003ekstriped_ws which runs dm_table_event().\nThis doesn\u0027t need to be executed from an ordered workqueue w/ rescuer.\nDrop kstriped and use the system_wq instead.  While at it, rename\nkstriped_ws to trigger_event so that it\u0027s consistent with other dm\nmodules.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "d5ffa387e24646cb1cb55d80fd0f182a00e0edb7",
      "tree": "87f253780f49fc1e438a89fa45ae7313ace6cb3f",
      "parents": [
        "fecec20e55ec117a09857ac1a455e2e6e2f17df4"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 13 19:59:56 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:56 2011 +0000"
      },
      "message": "dm: dont use flush_scheduled_work\n\nflush_scheduled_work() is being deprecated.  Flush the used work\ndirectly instead.  In all dm targets, the only work which uses\nsystem_wq is -\u003etrigger_event.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fecec20e55ec117a09857ac1a455e2e6e2f17df4",
      "tree": "60974cfaa003679e04321ae19d9216a1da66691e",
      "parents": [
        "810b492375f4aed5ce222982054adc0394a4bd33"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 13 19:59:56 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:56 2011 +0000"
      },
      "message": "dm snapshot: remove unused dm_snapshot queued_bios_work\n\ndm_snapshot-\u003equeued_bios_work isn\u0027t used.  Remove -\u003equeued_bios[_work]\nfrom dm_snapshot structure, the flush_queued_bios work function and\nksnapd workqueue.\n\nThe DM snapshot changes that were going to use the ksnapd workqueue were\neither superseded (fix for origin write races) or never completed\n(deallocation of invalid snapshot\u0027s memory via workqueue).\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "810b492375f4aed5ce222982054adc0394a4bd33",
      "tree": "f67808075083d82a9719af4c657100d5d6d5547b",
      "parents": [
        "34745785937a2003c144c0d4802fa637470d87af"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Thu Jan 13 19:59:55 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:55 2011 +0000"
      },
      "message": "dm ioctl: suppress needless warning messages\n\nThe device-mapper should not send warning messages to syslog\nif a device is not found. This can be done by userspace\naccording to the returned dm-ioctl error code.\n\nSo move these messages to debug level and use rate limiting\nto not flood syslog.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "34745785937a2003c144c0d4802fa637470d87af",
      "tree": "580d8654326deb17f9c26b3b04c598727d8d94d9",
      "parents": [
        "d1f9642381847e2b94caa34c3533211cf36ffcf4"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Thu Jan 13 19:59:55 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:55 2011 +0000"
      },
      "message": "dm crypt: add loop aes iv generator\n\nThis patch adds a compatible implementation of the block\nchaining mode used by the Loop-AES block device encryption\nsystem (http://loop-aes.sourceforge.net/) designed\nby Jari Ruusu.\n\nIt operates on full 512 byte sectors and uses CBC\nwith an IV derived from the sector number, the data and\noptionally extra IV seed.\n\nThis means that after CBC decryption the first block of sector\nmust be tweaked according to decrypted data.\n\nLoop-AES can use three encryption schemes:\n version 1: is plain aes-cbc mode (already compatible)\n version 2: uses 64 multikey scheme with own IV generator\n version 3: the same as version 2 with additional IV seed\n            (it uses 65 keys, last key is used as IV seed)\n\nThe IV generator is here named lmk (Loop-AES multikey)\nand for the cipher specification looks like: aes:64-cbc-lmk\n\nVersion 2 and 3 is recognised according to length\nof provided multi-key string (which is just hexa encoded\n\"raw key\" used in original Loop-AES ioctl).\n\nConfiguration of the device and decoding key string will\nbe done in userspace (cryptsetup).\n(Loop-AES stores keys in gpg encrypted file, raw keys are\noutput of simple hashing of lines in this file).\n\nBased on an implementation by Max Vozeler:\n  http://article.gmane.org/gmane.linux.kernel.cryptoapi/3752/\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCC: Max Vozeler \u003cmax@hinterhof.net\u003e\n"
    },
    {
      "commit": "d1f9642381847e2b94caa34c3533211cf36ffcf4",
      "tree": "32ae1cc4b0946247384fe1a31e257658f734b3f7",
      "parents": [
        "2dc5327d3acb3340ab6fa3981401b076b78a51f4"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Thu Jan 13 19:59:54 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:54 2011 +0000"
      },
      "message": "dm crypt: add multi key capability\n\nThis patch adds generic multikey handling to be used\nin following patch for Loop-AES mode compatibility.\n\nThis patch extends mapping table to optional keycount and\nimplements generic multi-key capability.\n\nWith more keys defined the \u003ckey\u003e string is divided into\nseveral \u003ckeycount\u003e sections and these are used for tfms.\n\nThe tfm is used according to sector offset\n(sector 0-\u003etfm[0], sector 1-\u003etfm[1], sector N-\u003etfm[N modulo keycount])\n(only power of two values supported for keycount here).\n\nBecause of tfms per-cpu allocation, this mode can be take\na lot of memory on large smp systems.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Max Vozeler \u003cmax@hinterhof.net\u003e\n"
    },
    {
      "commit": "2dc5327d3acb3340ab6fa3981401b076b78a51f4",
      "tree": "32297319cd947ea8ab867ec97042983382959db8",
      "parents": [
        "20c82538e4f5ede51bc2b4795bc6e5cae772796d"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Thu Jan 13 19:59:54 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:54 2011 +0000"
      },
      "message": "dm crypt: add post iv call to iv generator\n\nIV (initialisation vector) can in principle depend not only\non sector but also on plaintext data (or other attributes).\n\nChange IV generator interface to work directly with dmreq\nstructure to allow such dependence in generator.\n\nAlso add post() function which is called after the crypto\noperation.\n\nThis allows tricky modification of decrypted data or IV\ninternals.\n\nIn asynchronous mode the post() can be called after\nctx-\u003esector count was increased so it is needed\nto add iv_sector copy directly to dmreq structure.\n(N.B. dmreq always include only one sector in scatterlists)\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "20c82538e4f5ede51bc2b4795bc6e5cae772796d",
      "tree": "a70248a06b21bf249382d6f6beac4b8681bf8f35",
      "parents": [
        "c029772125594e31eb1a5ad9e0913724ed9891f2"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Thu Jan 13 19:59:53 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:53 2011 +0000"
      },
      "message": "dm crypt: use io thread for reads only if mempool exhausted\n\nIf there is enough memory, code can directly submit bio\ninstead queing this operation in separate thread.\n\nTry to alloc bio clone with GFP_NOWAIT and only if it\nfails use separate queue (map function cannot block here).\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c029772125594e31eb1a5ad9e0913724ed9891f2",
      "tree": "f97dc6534b0d3af9447002fe7d08ff25dfffed92",
      "parents": [
        "7dbcd137414f3877737802438926d6dba7906a9a"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Thu Jan 13 19:59:53 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:53 2011 +0000"
      },
      "message": "dm crypt: scale to multiple cpus\n\nCurrently dm-crypt does all the encryption work for a single dm-crypt\nmapping in a single workqueue. This does not scale well when multiple\nCPUs are submitting IO at a high rate. The single CPU running the single\nthread cannot keep up with the encryption and encrypted IO performance\ntanks.\n\nThis patch changes the crypto workqueue to be per CPU. This means\nthat as long as the IO submitter (or the interrupt target CPUs\nfor reads) runs on different CPUs the encryption work will be also\nparallel.\n\nTo avoid a bottleneck on the IO worker I also changed those to be\nper-CPU threads.\n\nThere is still some shared data, so I suspect some bouncing\ncache lines. But I haven\u0027t done a detailed study on that yet.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "7dbcd137414f3877737802438926d6dba7906a9a",
      "tree": "cb1062484dfbfab08c66d39129c63aab29ef0c30",
      "parents": [
        "86a54a4802df10d23ccd655e2083e812fe990243"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Thu Jan 13 19:59:52 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:52 2011 +0000"
      },
      "message": "dm crypt: simplify compatible table output\n\nRename cc-\u003ecipher_mode to cc-\u003ecipher_string and store the whole of the cipher\ninformation so it can easily be printed when processing the DM_DEV_STATUS ioctl.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "86a54a4802df10d23ccd655e2083e812fe990243",
      "tree": "168ccb5f1824e16fb55ac64e2d4754775aeaa958",
      "parents": [
        "085ae0651b2791f3a430ddb76da92925b9952e13"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Jan 13 19:59:52 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:52 2011 +0000"
      },
      "message": "dm log userspace: add version number to comms\n\nThis patch adds a \u0027version\u0027 field to the \u0027dm_ulog_request\u0027\nstructure.\n\nThe \u0027version\u0027 field is taken from a portion of the unused\n\u0027padding\u0027 field in the \u0027dm_ulog_request\u0027 structure.  This\nwas done to avoid changing the size of the structure and\npossibly disrupting backwards compatibility.\n\nThe version number will help notify user-space daemons\nwhen a change has been made to the kernel/userspace\nlog API.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "085ae0651b2791f3a430ddb76da92925b9952e13",
      "tree": "8d15e4fed61628e285f7c22956f77319e5e839d5",
      "parents": [
        "909cc4fb48dd9870f6ebe4bd32cfbe37c102df62"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Jan 13 19:59:51 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:51 2011 +0000"
      },
      "message": "dm log userspace: group clear and mark requests\n\nAllow the device-mapper log\u0027s \u0027mark\u0027 and \u0027clear\u0027 requests to be\ngrouped and processed in a batch.  This can significantly reduce the\namount of traffic going between the kernel and userspace (where the\nprocessing daemon resides).\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "909cc4fb48dd9870f6ebe4bd32cfbe37c102df62",
      "tree": "c88ef5cc536d49871a6b176d2742048c659bbdc8",
      "parents": [
        "8d35d3e37eed884ba15229a146df846f399909b4"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Jan 13 19:59:50 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:50 2011 +0000"
      },
      "message": "dm log userspace: split flush queue\n\nSplit the \u0027flush_list\u0027, which contained a mix of both \u0027mark\u0027 and \u0027clear\u0027\nrequests, into two distinct lists (\u0027mark_list\u0027 and \u0027clear_list\u0027).\n\nThe device mapper log implementations (used by various DM targets) are\nallowed to cache \u0027mark\u0027 and \u0027clear\u0027 requests until a \u0027flush\u0027 is\nreceived.  Until now, these cached requests were kept in the same list.\nThey will now be put into distinct lists to facilitate group processing\nof these requests (in the next patch).\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "8d35d3e37eed884ba15229a146df846f399909b4",
      "tree": "795c77c941229f413750e99242f1b2199bebe7a1",
      "parents": [
        "4a038677df4da84e42fd68b5ab2dfa4d82baa444"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Jan 13 19:59:50 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:50 2011 +0000"
      },
      "message": "dm kcopyd: delay unplugging\n\nMake kcopyd merge more I/O requests by using device unplugging.\n\nWithout this patch, each I/O request is dispatched separately to the device.\nIf the device supports tagged queuing, there are many small requests sent\nto the device. To improve performance, this patch will batch as many requests\nas possible, allowing the queue to merge consecutive requests, and send them\nto the device at once.\n\nIn my tests (15k SCSI disk), this patch improves sequential write throughput:\n\n  Sequential write throughput (chunksize of 4k, 32k, 512k)\n  unpatched: 15.2, 18.5, 17.5 MB/s\n  patched:   14.4, 22.6, 23.0 MB/s\n\nIn most common uses (snapshot or two-way mirror), kcopyd is only used for\ntwo devices, one for reading and the other for writing, thus this optimization\nis implemented only for two devices. The optimization may be extended to n-way\nmirrors with some code complexity increase.\n\nWe keep track of two block devices to unplug (one for read and the\nother for write) and unplug them when exiting \"do_work\" thread.  If\nthere are more devices used (in theory it could happen, in practice it\nis rare), we unplug immediately.\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": "4a038677df4da84e42fd68b5ab2dfa4d82baa444",
      "tree": "83ba491f4af4cf736b44088ad23eab45dcf92277",
      "parents": [
        "69a8cfcda21017364df1c21b720daf304b5598a6"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Jan 13 19:59:49 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:49 2011 +0000"
      },
      "message": "dm log userspace: trap all failed log construction errors\n\nWhen constructing a mirror log, it is possible for the initial request\nto fail for other reasons besides -ESRCH.  These must be handled too.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "69a8cfcda21017364df1c21b720daf304b5598a6",
      "tree": "c727770359b9295154194f0d8459ba7be3898b94",
      "parents": [
        "4a1aeb98297e17f4e0a8cdda919e63bf528b2e5d"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Thu Jan 13 19:59:49 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:49 2011 +0000"
      },
      "message": "dm crypt: set key size early\n\nSimplify key size verification (hexadecimal string) and\nset key size early in constructor.\n\n(Patch required by later changes.)\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4a1aeb98297e17f4e0a8cdda919e63bf528b2e5d",
      "tree": "4709346914cbdab86200c59241262d0ea2cbd204",
      "parents": [
        "5fc2ffeabb9ee0fc0e71ff16b49f34f0ed3d05b4"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Thu Jan 13 19:59:48 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:48 2011 +0000"
      },
      "message": "dm: remove dm_mutex after bkl conversion\n\nThis patch replaces dm_mutex with _minor_lock in dm_blk_close()\nand then removes it.\n\nDuring the BKL conversion, commit 6e9624b8caec290d28b4c6d9ec75749df6372b87\n(block: push down BKL into .open and .release) pushed lock_kernel()\ndown into dm_blk_open/close calls.\nCommit 2a48fc0ab24241755dc93bfd4f01d68efab47f5a\n(block: autoconvert trivial BKL users to private mutex) converted it to a\nlocal mutex, but _minor_lock is sufficient.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5fc2ffeabb9ee0fc0e71ff16b49f34f0ed3d05b4",
      "tree": "338c273e43209ebf5de5aef13186ce0666e7e06f",
      "parents": [
        "84c89557a302e18414a011cc52b1abd034860743"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Jan 13 19:59:48 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:48 2011 +0000"
      },
      "message": "dm raid1: support discard\n\nEnable discard support in the DM mirror target.\nAlso change an existing use of \u0027bvec\u0027 to \u0027addr\u0027 in the union.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "84c89557a302e18414a011cc52b1abd034860743",
      "tree": "6b6ca2c400b7a6e09da46b051c177317316f0b93",
      "parents": [
        "d9bf0b508ddfe19883b982b29a03c02ccbf53806"
      ],
      "author": {
        "name": "Peter Jones",
        "email": "pjones@redhat.com",
        "time": "Thu Jan 13 19:59:47 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:47 2011 +0000"
      },
      "message": "dm ioctl: allow rename to fill empty uuid\n\nAllow the uuid of a mapped device to be set after device creation.\nPreviously the uuid (which is optional) could only be set by\nDM_DEV_CREATE.  If no uuid was supplied it could not be set later.\n\nSometimes it\u0027s necessary to create the device before the uuid is known,\nand in such cases the uuid must be filled in after the creation.\n\nThis patch extends DM_DEV_RENAME to accept a uuid accompanied by\na new flag DM_UUID_FLAG.  This can only be done once and if no\nuuid was previously supplied.  It cannot be used to change an\nexisting uuid.\n\nDM_VERSION_MINOR is also bumped to 19 to indicate this interface\nextension is available.\n\nSigned-off-by: Peter Jones \u003cpjones@redhat.com\u003e\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "d9bf0b508ddfe19883b982b29a03c02ccbf53806",
      "tree": "815334dee3eabcf0cc35cd23928cc456c0212d2d",
      "parents": [
        "09c9d4c9b6a2b5909ae3c6265e4cd3820b636863"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Jan 13 19:59:47 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:47 2011 +0000"
      },
      "message": "dm io: remove BIO_RW_SYNCIO flag from kcopyd\n\nRemove the REQ_SYNC flag to improve write throughput when writing\nto the origin with a snapshot on the same device (using the CFQ I/O\nscheduler).\n\nSequential write throughput (chunksize of 4k, 32k, 512k)\n  unpatched:  8.5,  8.6,  9.3 MB/s\n  patched:   15.2, 18.5, 17.5 MB/s\n\nSnapshot exception reallocations are triggered by writes that are\nusually async, so mark the associated dm_io_request as async as well.\nThis helps when using the CFQ I/O scheduler because it has separate\nqueues for sync and async I/O.  Async is optimized for throughput; sync\nfor latency.  With this change we\u0027re consciously favoring throughput over\nlatency.\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": "09c9d4c9b6a2b5909ae3c6265e4cd3820b636863",
      "tree": "340925bf6af03a51f13f165cf68263be247c9d25",
      "parents": [
        "c217649bf2d60ac119afd71d938278cffd55962b"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Jan 13 19:59:46 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:46 2011 +0000"
      },
      "message": "dm mpath: disable blk_abort_queue\n\nRevert commit 224cb3e981f1b2f9f93dbd49eaef505d17d894c2\n  dm: Call blk_abort_queue on failed paths\n\nMultipath began to use blk_abort_queue() to allow for\nlower latency path deactivation.  This was found to\ncause list corruption:\n\n   the cmd gets blk_abort_queued/timedout run on it and the scsi eh\n   somehow is able to complete and run scsi_queue_insert while\n   scsi_request_fn is still trying to process the request.\n\n   https://www.redhat.com/archives/dm-devel/2010-November/msg00085.html\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Mike Anderson \u003candmike@linux.vnet.ibm.com\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "c217649bf2d60ac119afd71d938278cffd55962b",
      "tree": "5addf2130d59f9fab614d852ac8fe7724ef78c9f",
      "parents": [
        "581548db3b3c0f6e25b500329eb02e3c72e7acbe"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Jan 13 19:53:46 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:53:46 2011 +0000"
      },
      "message": "dm: dont take i_mutex to change device size\n\nNo longer needlessly hold md-\u003ebdev-\u003ebd_inode-\u003ei_mutex when changing the\nsize of a DM device.  This additional locking is unnecessary because\ni_size_write() is already protected by the existing critical section in\ndm_swap_table().  DM already has a reference on md-\u003ebdev so the\nassociated bd_inode may be changed without lifetime concerns.\n\nA negative side-effect of having held md-\u003ebdev-\u003ebd_inode-\u003ei_mutex was\nthat a concurrent DM device resize and flush (via fsync) would deadlock.\nDropping md-\u003ebdev-\u003ebd_inode-\u003ei_mutex eliminates this potential for\ndeadlock.  The following reproducer no longer deadlocks:\n  https://www.redhat.com/archives/dm-devel/2009-July/msg00284.html\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "275220f0fcff1adf28a717076e00f575edf05fda",
      "tree": "d249bccc80c64443dab211639050c4fb14332648",
      "parents": [
        "fe3c560b8a22cb28e54fe8950abef38e88d75831",
        "81c5e2ae33c4b19e53966b427e33646bf6811830"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:45:01 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:45:01 2011 -0800"
      },
      "message": "Merge branch \u0027for-2.6.38/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.38/core\u0027 of git://git.kernel.dk/linux-2.6-block: (43 commits)\n  block: ensure that completion error gets properly traced\n  blktrace: add missing probe argument to block_bio_complete\n  block cfq: don\u0027t use atomic_t for cfq_group\n  block cfq: don\u0027t use atomic_t for cfq_queue\n  block: trace event block fix unassigned field\n  block: add internal hd part table references\n  block: fix accounting bug on cross partition merges\n  kref: add kref_test_and_get\n  bio-integrity: mark kintegrityd_wq highpri and CPU intensive\n  block: make kblockd_workqueue smarter\n  Revert \"sd: implement sd_check_events()\"\n  block: Clean up exit_io_context() source code.\n  Fix compile warnings due to missing removal of a \u0027ret\u0027 variable\n  fs/block: type signature of major_to_index(int) to major_to_index(unsigned)\n  block: convert !IS_ERR(p) \u0026\u0026 p to !IS_ERR_NOR_NULL(p)\n  cfq-iosched: don\u0027t check cfqg in choose_service_tree()\n  fs/splice: Pull buf-\u003eops-\u003econfirm() from splice_from_pipe actors\n  cdrom: export cdrom_check_events()\n  sd: implement sd_check_events()\n  sr: implement sr_check_events()\n  ...\n"
    },
    {
      "commit": "bf572541ab44240163eaa2d486b06f306a31d45a",
      "tree": "ef9630d692ce3681bf226877056622afd070f1c0",
      "parents": [
        "3c0eee3fe6a3a1c745379547c7e7c904aa64f6d5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jan 12 09:03:35 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jan 12 09:03:35 2011 +1100"
      },
      "message": "md: fix regression with re-adding devices to arrays with no metadata\n\nCommit 1a855a0606 (2.6.37-rc4) fixed a problem where devices were\nre-added when they shouldn\u0027t be but caused a regression in a less\ncommon case that means sometimes devices cannot be re-added when they\nshould be.\n\nIn particular, when re-adding a device to an array without metadata\nwe should always access the device, but after the above commit we\ndidn\u0027t.\n\nThis patch sets the In_sync flag in that case so that the re-add\nsucceeds.\n\nThis patch is suitable for any -stable kernel to which 1a855a0606 was\napplied.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b7908c1035af7652cd613991b54dbff9c8b6bd3a",
      "tree": "91dc24bbb1299ba7f84e22bbaffd28950dd04713",
      "parents": [
        "6c23a9681c0fe7fb7dd331b39dda11926f43746e"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Thu Jan 06 20:41:42 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jan 07 08:43:55 2011 +0100"
      },
      "message": "block: trace event block fix unassigned field\n\nThe \"error\" field in block_bio_complete is not assigned, leaving the memory area\nuninitialized (keeping garbage data). Pass an additional tracepoint argument to\nthis event to initialize this field.\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nCC: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCC: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCC: Ingo Molnar \u003cmingo@elte.hu\u003e\nCC: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCC: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCC: Alan.Brunelle@hp.com\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7f8635cc9e66a26d7280ba680b044fa2f65104af",
      "tree": "0d8506e86d07e15c473aca1a09af7ad6ff7d8b49",
      "parents": [
        "3cb50ddf97a0a1ca4c68bc12fa1e727a6b45fbf2",
        "0fc13c8995cd96f4123de400c71c223d80400ed9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 20 09:19:46 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 20 09:19:46 2010 -0800"
      },
      "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  cciss: fix cciss_revalidate panic\n  block: max hardware sectors limit wrapper\n  block: Deprecate QUEUE_FLAG_CLUSTER and use queue_limits instead\n  blk-throttle: Correct the placement of smp_rmb()\n  blk-throttle: Trim/adjust slice_end once a bio has been dispatched\n  block: check for proper length of iov entries earlier in blk_rq_map_user_iov()\n  drbd: fix for spin_lock_irqsave in endio callback\n  drbd: don\u0027t recvmsg with zero length\n"
    },
    {
      "commit": "72d4cd9f38b5ed96b75df4c622be25e1c2648dd3",
      "tree": "a229645cbbc63aad3fa5b57ea9f092e618588890",
      "parents": [
        "e692cb668fdd5a712c6ed2a2d6f2a36ee83997b4"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Dec 17 08:34:20 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Dec 17 08:36:01 2010 +0100"
      },
      "message": "block: max hardware sectors limit wrapper\n\nImplement blk_limits_max_hw_sectors() and make\nblk_queue_max_hw_sectors() a wrapper around it.\n\nDM needs this to avoid setting queue_limits\u0027 max_hw_sectors and\nmax_sectors directly.  dm_set_device_limits() now leverages\nblk_limits_max_hw_sectors() logic to establish the appropriate\nmax_hw_sectors minimum (PAGE_SIZE).  Fixes issue where DM was\nincorrectly setting max_sectors rather than max_hw_sectors (which\ncaused dm_merge_bvec()\u0027s max_hw_sectors check to be ineffective).\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@kernel.org\nAcked-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "e692cb668fdd5a712c6ed2a2d6f2a36ee83997b4",
      "tree": "accf682fe5e1388f305b5fc364a931dfda5f3fb9",
      "parents": [
        "04a6b516cdc6efc2500b52a540cf65be8c5aaf9e"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Wed Dec 01 19:41:49 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Dec 17 08:35:53 2010 +0100"
      },
      "message": "block: Deprecate QUEUE_FLAG_CLUSTER and use queue_limits instead\n\nWhen stacking devices, a request_queue is not always available. This\nforced us to have a no_cluster flag in the queue_limits that could be\nused as a carrier until the request_queue had been set up for a\nmetadevice.\n\nThere were several problems with that approach. First of all it was up\nto the stacking device to remember to set queue flag after stacking had\ncompleted. Also, the queue flag and the queue limits had to be kept in\nsync at all times. We got that wrong, which could lead to us issuing\ncommands that went beyond the max scatterlist limit set by the driver.\n\nThe proper fix is to avoid having two flags for tracking the same thing.\nWe deprecate QUEUE_FLAG_CLUSTER and use the queue limit directly in the\nblock layer merging functions. The queue_limit \u0027no_cluster\u0027 is turned\ninto \u0027cluster\u0027 to avoid double negatives and to ease stacking.\nClustering defaults to being enabled as before. The queue flag logic is\nremoved from the stacking function, and explicitly setting the cluster\nflag is no longer necessary in DM and MD.\n\nReported-by: Ed Lin \u003ced.lin@promise.com\u003e\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "589a594be1fb8815b3f18e517be696c48664f728",
      "tree": "9de6f6b4f9244802ccf77312f7fba8612dd13a75",
      "parents": [
        "1a855a0606653d2d82506281e2c686bacb4b2f45"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 09 17:02:14 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 09 17:02:14 2010 +1100"
      },
      "message": "md: protect against NULL reference when waiting to start a raid10.\n\nWhen we fail to start a raid10 for some reason, we call\nmd_unregister_thread to kill the thread that was created.\n\nUnfortunately md_thread() will then make one call into the handler\n(raid10d) even though md_wakeup_thread has not been called.  This is\nnot safe and as md_unregister_thread is called after mddev-\u003eprivate\nhas been set to NULL, it will definitely cause a NULL dereference.\n\nSo fix this at both ends:\n - md_thread should only call the handler if THREAD_WAKEUP has been\n   set.\n - raid10 should call md_unregister_thread before setting things\n   to NULL just like all the other raid modules do.\n\nThis is applicable to 2.6.35 and later.\n\nCc: stable@kernel.org\nReported-by: \"Citizen\" \u003ccitizen_lee@thecus.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1a855a0606653d2d82506281e2c686bacb4b2f45",
      "tree": "7eeca410e738491318c0d80bd0a0940c392e513f",
      "parents": [
        "a035fc3e2531703b539f23bec4ca7943cfc69349"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 09 16:36:28 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 09 16:36:28 2010 +1100"
      },
      "message": "md: fix bug with re-adding of partially recovered device.\n\nWith v0.90 metadata, a hot-spare does not become a full member of the\narray until recovery is complete.  So if we re-add such a device to\nthe array, we know that all of it is as up-to-date as the event count\nwould suggest, and so it a bitmap-based recovery is possible.\n\nHowever with v1.x metadata, the hot-spare immediately becomes a full\nmember of the array, but it record how much of the device has been\nrecovered.  If the array is stopped and re-assembled recovery starts\nfrom this point.\n\nWhen such a device is hot-added to an array we currently lose the \u0027how\nmuch is recovered\u0027 information and incorrectly included it as a full\nin-sync member (after bitmap-based fixup).\nThis is wrong and unsafe and could corrupt data.\n\nSo be more careful about setting saved_raid_disk - which is what\nguides the re-adding of devices back into an array.\nThe new code matches the code in slot_store which does a similar\nthing, which is encouraging.\n\nThis is suitable for any -stable kernel.\n\nReported-by: \"Dailey, Nate\" \u003cNate.Dailey@stratus.com\u003e\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a035fc3e2531703b539f23bec4ca7943cfc69349",
      "tree": "f10e160ce65745fd7ac56838c491a45ae180cb1e",
      "parents": [
        "a7a07e69653acf8540daa1da053cd84bf86e8e66"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 09 16:17:51 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 09 16:17:51 2010 +1100"
      },
      "message": "md: fix possible deadlock in handling flush requests.\n\nAs recorded in\n    https://bugzilla.kernel.org/show_bug.cgi?id\u003d24012\n\nit is possible for a flush request through md to hang.  This is due to\nan interaction between the recursion avoidance in\ngeneric_make_request, the insistence in md of only having one flush\nactive at a time, and the possibility of dm (or md) submitting two\nflush requests to a device from the one generic_make_request.\n\nIf a generic_make_request call into dm causes two flush requests to be\nqueued (as happens if the dm table has two targets - they get one\neach), these two will be queued inside generic_make_request.\n\nAssume they are for the same md device.\nThe first is processed and causes 1 or more flush requests to be sent\nto lower devices.  These get queued within generic_make_request too.\nThen the second flush to the md device gets handled and it blocks\nwaiting for the first flush to complete.  But it won\u0027t complete until\nthe two lower-device requests complete, and they haven\u0027t even been\nsubmitted yet as they are on the generic_make_request queue.\n\nThe deadlock can be broken by using a separate thread to submit the\nrequests to lower devices.  md has such a thread readily available:\nmd_wq.\n\nSo use it to submit these requests.\n\nReported-by: Giacomo Catenazzi \u003ccate@cateee.net\u003e\nTested-by: Giacomo Catenazzi \u003ccate@cateee.net\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a7a07e69653acf8540daa1da053cd84bf86e8e66",
      "tree": "edeb5ec7fc686c8699193338d3c3964aeb6279a8",
      "parents": [
        "2b74e12e567feb4163e32815bce0be57489e73b9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 09 16:04:25 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 09 16:04:25 2010 +1100"
      },
      "message": "md: move code in to submit_flushes.\n\nsubmit_flushes is called from exactly one place.\nMove the code that is before and after that call into\nsubmit_flushes.\n\nThis has not functional change, but will make the next patch\nsmaller and easier to follow.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2b74e12e567feb4163e32815bce0be57489e73b9",
      "tree": "2eef8f977209a7e5ff88b4366bd72ccf59c8a987",
      "parents": [
        "be20e6c67b6c6024c19094d3447f144d118733b0"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 09 15:59:01 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 09 15:59:01 2010 +1100"
      },
      "message": "md: remove handling of flush_pending in md_submit_flush_data\n\nNone of the functions called between setting flush_pending to 1, and\natomic_dec_and_test can change flush_pending, or will anything\nrunning in any other thread (as -\u003eflush_bio is not NULL).  So the\natomic_dec_and_test will always succeed.\nSo remove the atomic_sec and the atomic_dec_and_test.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f30195c50245d8ace628e1978b1daa8df86e7224",
      "tree": "edf4f91c4356c41d50fb07f15cebd1e6442538ad",
      "parents": [
        "d07335e51df0c6dec202d315fc4f1f7e100eec4e",
        "d4d77629953eabd3c14f6fa5746f6b28babfc55f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Nov 27 19:49:18 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Nov 27 19:49:18 2010 +0100"
      },
      "message": "Merge branch \u0027cleanup-bd_claim\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc into for-2.6.38/core\n"
    },
    {
      "commit": "be20e6c67b6c6024c19094d3447f144d118733b0",
      "tree": "170f7a810d5947cdba7edc965676ad7d5ea8948c",
      "parents": [
        "8f9e0ee38f75d4740daa9e42c8af628d33d19a02"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Wed Nov 24 16:40:33 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Nov 24 16:40:33 2010 +1100"
      },
      "message": "md: Call blk_queue_flush() to establish flush/fua support\n\nBefore 2.6.37, the md layer had a mechanism for catching I/Os with the\nbarrier flag set, and translating the barrier into barriers for all\nthe underlying devices.  With 2.6.37, I/O barriers have become plain\nold flushes, and the md code was updated to reflect this.  However,\none piece was left out -- the md layer does not tell the block layer\nthat it supports flushes or FUA access at all, which results in md\nsilently dropping flush requests.\n\nSince the support already seems there, just add this one piece of\nbookkeeping.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@us.ibm.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8f9e0ee38f75d4740daa9e42c8af628d33d19a02",
      "tree": "4e1b3fe1460cd0c71258cfb2f68bb28cf71eeca4",
      "parents": [
        "c26a44ed1e552aaa1d4ceb71842002d235fe98d7"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Nov 24 16:39:46 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Nov 24 16:39:46 2010 +1100"
      },
      "message": "md/raid1: really fix recovery looping when single good device fails.\n\nCommit 4044ba58dd15cb01797c4fd034f39ef4a75f7cc3 supposedly fixed a\nproblem where if a raid1 with just one good device gets a read-error\nduring recovery, the recovery would abort and immediately restart in\nan infinite loop.\n\nHowever it depended on raid1_remove_disk removing the spare device\nfrom the array.  But that does not happen in this case.  So add a test\nso that in the \u0027recovery_disabled\u0027 case, the device will be removed.\n\nThis suitable for any kernel since 2.6.29 which is when\nrecovery_disabled was introduced.\n\nCc: stable@kernel.org\nReported-by: Sebastian Färber \u003cfaerber@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c26a44ed1e552aaa1d4ceb71842002d235fe98d7",
      "tree": "47e0d62c2693ae60ae7a5bc44c2dfcd6a2f7e47e",
      "parents": [
        "3561d43fd289f590fdae672e5eb831b8d5cf0bf6"
      ],
      "author": {
        "name": "Justin Maggard",
        "email": "jmaggard10@gmail.com",
        "time": "Wed Nov 24 16:36:17 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Nov 24 16:36:17 2010 +1100"
      },
      "message": "md: fix return value of rdev_size_change()\n\nWhen trying to grow an array by enlarging component devices,\nrdev_size_store() expects the return value of rdev_size_change() to be\nin sectors, but the actual value is returned in KBs.\n\nThis functionality was broken by commit\n     dd8ac336c13fd8afdb082ebacb1cddd5cf727889\nso this patch is suitable for any kernel since 2.6.30.\n\nCc: stable@kernel.org\nSigned-off-by: Justin Maggard \u003cjmaggard10@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d07335e51df0c6dec202d315fc4f1f7e100eec4e",
      "tree": "db6ac1db8d87738b9e44497e082d490c14413f5d",
      "parents": [
        "5fbf85639287b6ea287f4f5e5e7e36608f0f60bd"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Tue Nov 16 12:52:38 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Nov 16 12:53:39 2010 +0100"
      },
      "message": "block: Rename \"block_remap\" tracepoint to \"block_bio_remap\" to clarify the event.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "d4d77629953eabd3c14f6fa5746f6b28babfc55f",
      "tree": "38cce0d4764ecb34a9f7f49332959780e28bb786",
      "parents": [
        "75f1dc0d076d1c1168f2115f1941ea627d38bd5a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:18 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:18 2010 +0100"
      },
      "message": "block: clean up blkdev_get() wrappers and their users\n\nAfter recent blkdev_get() modifications, open_by_devnum() and\nopen_bdev_exclusive() are simple wrappers around blkdev_get().\nReplace them with blkdev_get_by_dev() and blkdev_get_by_path().\n\nblkdev_get_by_dev() is identical to open_by_devnum().\nblkdev_get_by_path() is slightly different in that it doesn\u0027t\nautomatically add %FMODE_EXCL to @mode.\n\nAll users are converted.  Most conversions are mechanical and don\u0027t\nintroduce any behavior difference.  There are several exceptions.\n\n* btrfs now sets FMODE_EXCL in btrfs_device-\u003emode, so there\u0027s no\n  reason to OR it explicitly on blkdev_put().\n\n* gfs2, nilfs2 and the generic mount_bdev() now set FMODE_EXCL in\n  sb-\u003es_mode.\n\n* With the above changes, sb-\u003es_mode now always should contain\n  FMODE_EXCL.  WARN_ON_ONCE() added to kill_block_super() to detect\n  errors.\n\nThe new blkdev_get_*() functions are with proper docbook comments.\nWhile at it, add function description to blkdev_get() too.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: Joern Engel \u003cjoern@lazybastard.org\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: KONISHI Ryusuke \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: reiserfs-devel@vger.kernel.org\nCc: xfs-masters@oss.sgi.com\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e525fd89d380c4a94c0d63913a1dd1a593ed25e7",
      "tree": "d226ef40d3f99e42fcf272ad432585cbd641ebec",
      "parents": [
        "e09b457bdb7e8d23fc54dcef0930ac697d8de895"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "message": "block: make blkdev_get/put() handle exclusive access\n\nOver time, block layer has accumulated a set of APIs dealing with bdev\nopen, close, claim and release.\n\n* blkdev_get/put() are the primary open and close functions.\n\n* bd_claim/release() deal with exclusive open.\n\n* open/close_bdev_exclusive() are combination of open and claim and\n  the other way around, respectively.\n\n* bd_link/unlink_disk_holder() to create and remove holder/slave\n  symlinks.\n\n* open_by_devnum() wraps bdget() + blkdev_get().\n\nThe interface is a bit confusing and the decoupling of open and claim\nmakes it impossible to properly guarantee exclusive access as\nin-kernel open + claim sequence can disturb the existing exclusive\nopen even before the block layer knows the current open if for another\nexclusive access.  Reorganize the interface such that,\n\n* blkdev_get() is extended to include exclusive access management.\n  @holder argument is added and, if is @FMODE_EXCL specified, it will\n  gain exclusive access atomically w.r.t. other exclusive accesses.\n\n* blkdev_put() is similarly extended.  It now takes @mode argument and\n  if @FMODE_EXCL is set, it releases an exclusive access.  Also, when\n  the last exclusive claim is released, the holder/slave symlinks are\n  removed automatically.\n\n* bd_claim/release() and close_bdev_exclusive() are no longer\n  necessary and either made static or removed.\n\n* bd_link_disk_holder() remains the same but bd_unlink_disk_holder()\n  is no longer necessary and removed.\n\n* open_bdev_exclusive() becomes a simple wrapper around lookup_bdev()\n  and blkdev_get().  It also has an unexpected extra bdev_read_only()\n  test which probably should be moved into blkdev_get().\n\n* open_by_devnum() is modified to take @holder argument and pass it to\n  blkdev_get().\n\nMost of bdev open/close operations are unified into blkdev_get/put()\nand most exclusive accesses are tested atomically at the open time (as\nit should).  This cleans up code and removes some, both valid and\ninvalid, but unnecessary all the same, corner cases.\n\nopen_bdev_exclusive() and open_by_devnum() can use further cleanup -\nrename to blkdev_get_by_path() and blkdev_get_by_devt() and drop\nspecial features.  Well, let\u0027s leave them for another day.\n\nMost conversions are straight-forward.  drbd conversion is a bit more\ninvolved as there was some reordering, but the logic should stay the\nsame.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nAcked-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nAcked-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nCc: Peter Osterlund \u003cpetero2@telia.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Andreas Dilger \u003cadilger.kernel@dilger.ca\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: dm-devel@redhat.com\nCc: drbd-dev@lists.linbit.com\nCc: Leo Chen \u003cleochen@broadcom.com\u003e\nCc: Scott Branden \u003csbranden@broadcom.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nCc: Joern Engel \u003cjoern@logfs.org\u003e\nCc: reiserfs-devel@vger.kernel.org\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e09b457bdb7e8d23fc54dcef0930ac697d8de895",
      "tree": "41035bf61a8acb08292d01c0f66e5450502688af",
      "parents": [
        "37004c42f7240035bc2726c340c4efa726b4818e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "message": "block: simplify holder symlink handling\n\nCode to manage symlinks in /sys/block/*/{holders|slaves} are overly\ncomplex with multiple holder considerations, redundant extra\nreferences to all involved kobjects, unused generic kobject holder\nsupport and unnecessary mixup with bd_claim/release functionalities.\n\nStrip it down to what\u0027s necessary (single gendisk holder) and make it\nuse a separate interface.  This is a step for cleaning up\nbd_claim/release.  This patch makes dm-table slightly more complex but\nit will be simplified again with further changes.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: dm-devel@redhat.com\n"
    },
    {
      "commit": "77304d2abac6101f7249754ffdd4421258877ab0",
      "tree": "8ee5914529d70120528a630a8e904c22f8c4f98c",
      "parents": [
        "90fdb0b98a62d78a0650b9fd3ddc58a48f71d740"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Mon Nov 08 14:39:12 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Nov 10 14:40:53 2010 +0100"
      },
      "message": "block: read i_size with i_size_read()\n\nConvert direct reads of an inode\u0027s i_size to using i_size_read().\n\ni_size_{read,write} use a seqcount to protect reads from accessing\nincomple writes.  Concurrent i_size_write()s require mutual exclussion\nto protect the seqcount that is used by i_size_{read,write}.  But\ni_size_read() callers do not need to use additional locking.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nAcked-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "f3ac8bf7ce1c5abd763ea762e95d1cdcf7799372",
      "tree": "bb903d4265520d5c96a9ee08557dd7f92c1f08df",
      "parents": [
        "046abeede717909feec38587d667cde1fc6c459c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Sep 06 14:10:08 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 29 16:40:33 2010 +1100"
      },
      "message": "md: tidy up device searches in read_balance.\n\nThe code for searching through the device list to read-balance in\nraid1 is rather clumsy and hard to follow.  Try to simplify it a bit.\n\nNo important functionality change here.\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "046abeede717909feec38587d667cde1fc6c459c",
      "tree": "e273b3c9aa887d2bc571b5ddff0bdff954f303e0",
      "parents": [
        "9b19553e0bd342957846037c996861d280ed694d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 26 15:46:20 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 29 16:40:33 2010 +1100"
      },
      "message": "md/raid1: fix some typos in comments.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n\n"
    },
    {
      "commit": "9b19553e0bd342957846037c996861d280ed694d",
      "tree": "8275aadb773bf89a7f4a6c84ccd18412744ab8a7",
      "parents": [
        "be2a2656eef95c32ca73e7a6a8c85671aa92e3f1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 27 15:39:14 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 29 16:40:33 2010 +1100"
      },
      "message": "md/raid1: discard unused variable.\n\nThis structure field (flushing_bio_list) is never used, so remove it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "be2a2656eef95c32ca73e7a6a8c85671aa92e3f1",
      "tree": "caea637e7247c0d57d8b1fe0042a5b7a0994ed9c",
      "parents": [
        "a167f663243662aa9153c01086580a11cde9ffdc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 27 15:37:41 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 29 16:40:32 2010 +1100"
      },
      "message": "md: unplug writes to external bitmaps.\n\nWhen writing to an \u0027external\u0027 bitmap we don\u0027t currently unplug the\ndevice before waiting, so we can get a 3msec delay each time;\nSo use REQ_UNPLUG to force and unplug.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a167f663243662aa9153c01086580a11cde9ffdc",
      "tree": "886e64787421bbf17a1eab7853d67258b598f050",
      "parents": [
        "2b193363ef68667ad717a6723165e0dccf99470f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 26 18:31:13 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:36:15 2010 +1100"
      },
      "message": "md: use separate bio pool for each md device.\n\nbio_clone and bio_alloc allocate from a common bio pool.\nIf an md device is stacked with other devices that use this pool, or under\nsomething like swap which uses the pool, then the multiple calls on\nthe pool can cause deadlocks.\n\nSo allocate a local bio pool for each md array and use that rather\nthan the common pool.\n\nThis pool is used both for regular IO and metadata updates.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2b193363ef68667ad717a6723165e0dccf99470f",
      "tree": "bd45d5186f0edf2b546c4503d794b479d126ad1f",
      "parents": [
        "1c4588e9c19cae6209a28c9da2f16a18a610b935"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 27 15:16:40 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:36:11 2010 +1100"
      },
      "message": "md: change type of first arg to sync_page_io.\n\nCurrently sync_page_io takes a \u0027bdev\u0027.\nEvery caller passes \u0027rdev-\u003ebdev\u0027.\nWe will soon want another field out of the rdev in sync_page_io,\nSo just pass the rdev instead of the bdev out of it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1c4588e9c19cae6209a28c9da2f16a18a610b935",
      "tree": "74ffb14a5586c3a297b0fd372be5b72cf7e53bcd",
      "parents": [
        "6746557f0325a66f57d179126426e38a8ea66945"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 26 17:41:22 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:36:09 2010 +1100"
      },
      "message": "md/raid1: perform mem allocation before disabling writes during resync.\n\nThough this mem alloc is GFP_NOIO an so will not deadlock, it seems\nbetter to do the allocation before \u0027raise_barrier\u0027 which stops any IO\nrequests while the resync proceeds.\n\nraid10 always uses this order, so it is at least consistent to do the\nsame in raid1.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6746557f0325a66f57d179126426e38a8ea66945",
      "tree": "3b1db04c854b6ccc4752560f0d30c85e6cbbda6a",
      "parents": [
        "4e78064f42ad474ce9c31760861f7fb0cfc22532"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 26 17:33:54 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:36:06 2010 +1100"
      },
      "message": "md: use bio_kmalloc rather than bio_alloc when failure is acceptable.\n\nbio_alloc can never fail (as it uses a mempool) but an block\nindefinitely, especially if the caller is holding a reference to a\npreviously allocated bio.\n\nSo these to places which both handle failure and hold multiple bios\nshould not use bio_alloc, they should use bio_kmalloc.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4e78064f42ad474ce9c31760861f7fb0cfc22532",
      "tree": "3a1abaa98ebcbd62eacfbe95d72e44195fb3bc1f",
      "parents": [
        "e804ac780e2f01cb3b914daca2fd4780d1743db1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 19 12:54:01 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:34:07 2010 +1100"
      },
      "message": "md: Fix possible deadlock with multiple mempool allocations.\n\nIt is not safe to allocate from a mempool while holding an item\npreviously allocated from that mempool as that can deadlock when the\nmempool is close to exhaustion.\n\nSo don\u0027t use a bio list to collect the bios to write to multiple\ndevices in raid1 and raid10.\nInstead queue each bio as it becomes available so an unplug will\nactivate all previously allocated bios and so a new bio has a chance\nof being allocated.\n\nThis means we must set the \u0027remaining\u0027 count to \u00271\u0027 before submitting\nany requests, then when all are submitted, decrement \u0027remaining\u0027 and\npossible handle the write completion at that point.\n\nReported-by: Torsten Kaiser \u003cjust.for.lkml@googlemail.com\u003e\nTested-by: Torsten Kaiser \u003cjust.for.lkml@googlemail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e804ac780e2f01cb3b914daca2fd4780d1743db1",
      "tree": "60447c76ea9dbaa526c8cabc14898e4df4498bf6",
      "parents": [
        "57dab0bdf689d42972975ec646d862b0900a4bf3"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Oct 15 15:36:08 2010 +0200"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:32:29 2010 +1100"
      },
      "message": "md: fix and update workqueue usage\n\nWorkqueue usage in md has two problems.\n\n* Flush can be used during or depended upon by memory reclaim, but md\n  uses the system workqueue for flush_work which may lead to deadlock.\n\n* md depends on flush_scheduled_work() to achieve exclusion against\n  completion of removal of previous instances.  flush_scheduled_work()\n  may incur unexpected amount of delay and is scheduled to be removed.\n\nThis patch adds two workqueues to md - md_wq and md_misc_wq.  The\nformer is guaranteed to make forward progress under memory pressure\nand serves flush_work.  The latter serves as the flush domain for\nother works.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "57dab0bdf689d42972975ec646d862b0900a4bf3",
      "tree": "d136f69b8a68850e40844397ebaffde31787c988",
      "parents": [
        "4b532c9b8c87eb8e51605c4d08dfb5139c758dc5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 19 10:03:39 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:32:26 2010 +1100"
      },
      "message": "md: use sector_t in bitmap_get_counter\n\nbitmap_get_counter returns the number of sectors covered\nby the counter in a pass-by-reference variable.\nIn some cases this can be very large, so make it a sector_t\nfor safety.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n\n"
    },
    {
      "commit": "4b532c9b8c87eb8e51605c4d08dfb5139c758dc5",
      "tree": "14d4813285bb4aff8e1d7a58a2fdfadd14803a9f",
      "parents": [
        "d97a41dc9c44f5829b7af7aa69fda10fd82b6b4e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:30:21 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:30:21 2010 +1100"
      },
      "message": "md: remove md_mutex locking.\n\nlock_kernel calls were recently pushed down into open/release\nfunctions.\nmd doesn\u0027t need that protection.\nThen the BKL calls were change to md_mutex.  We don\u0027t need those\neither.\nSo remove it all.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d97a41dc9c44f5829b7af7aa69fda10fd82b6b4e",
      "tree": "4a834cce291edf6798f57d925a6134c287de974d",
      "parents": [
        "12ba8d1e9262ce81a695795410bd9ee5c9407ba1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:30:20 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:30:20 2010 +1100"
      },
      "message": "md: Fix regression with raid1 arrays without persistent metadata.\n\nA RAID1 which has no persistent metadata, whether internal or\nexternal, will hang on the first write.\nThis is caused by commit  070dc6dd7103b6b3f7e4d46e754354a5c15f366e\nIn that case, MD_CHANGE_PENDING never gets cleared.\n\nSo during md_update_sb, is neither persistent or external,\nclear MD_CHANGE_PENDING.\n\nThis is suitable for 2.6.36-stable.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "ca1cab37d91cbe8a8333732540d43cabb54cfa85",
      "tree": "ea936dc8e5eb80b02fdf1d970bcb6f2e836051b9",
      "parents": [
        "99dc829256bb8cfcb1f58b7f118893fdbf608e60"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue Oct 26 14:22:34 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:14 2010 -0700"
      },
      "message": "workqueues: s/ON_STACK/ONSTACK/\n\nSilly though it is, completions and wait_queue_heads use foo_ONSTACK\n(COMPLETION_INITIALIZER_ONSTACK, DECLARE_COMPLETION_ONSTACK,\n__WAIT_QUEUE_HEAD_INIT_ONSTACK and DECLARE_WAIT_QUEUE_HEAD_ONSTACK) so I\nguess workqueues should do the same thing.\n\ns/INIT_WORK_ON_STACK/INIT_WORK_ONSTACK/\ns/INIT_DELAYED_WORK_ON_STACK/INIT_DELAYED_WORK_ONSTACK/\n\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "a2887097f25cd38cadfc11d10769e2b349fb5eca"
}
