)]}'
{
  "log": [
    {
      "commit": "4d39aa1b998fffd481517c1dd03d83c38e1706f9",
      "tree": "76c4e4cf52b148ae035f71c7c30692b6634cd343",
      "parents": [
        "4a68d54c983514f123e99fc720951a4ee4d84270",
        "db91ff55bdf06736b849afc1b1fce5763bbb8d5d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 08 19:06:30 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 08 19:06:30 2012 -0800"
      },
      "message": "Merge tag \u0027md-3.3-fixes\u0027 of git://neil.brown.name/md\n\nSome simple md-related fixes.\n\n1/ two small fixes to ensure we handle an interrupted resync properly.\n2/ avoid loading the bitmap multiple times in dm-raid\n\n* tag \u0027md-3.3-fixes\u0027 of git://neil.brown.name/md:\n  md: two small fixes to handling interrupt resync.\n  Prevent DM RAID from loading bitmap twice.\n"
    },
    {
      "commit": "db91ff55bdf06736b849afc1b1fce5763bbb8d5d",
      "tree": "ade2010773b721e3d699e75a9348f200e7ad31c4",
      "parents": [
        "34f8ac6d79e5446c6242e4bcb474f152c857c5c6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 07 12:01:51 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 07 12:01:51 2012 +1100"
      },
      "message": "md: two small fixes to handling interrupt resync.\n\n1/ If a resync is aborted we should record how far we got\n (recovery_cp) the last request that we know has completed\n (-\u003ecurr_resync_completed) rather than the last request that was\n submitted (-\u003ecurr_resync).\n\n2/ When a resync aborts we still want to update the metadata with\n any changes, so set MD_CHANGE_DEVS even if we \u0027skip\u0027.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "34f8ac6d79e5446c6242e4bcb474f152c857c5c6",
      "tree": "5a0be3b7910428e52603304aa53e8da4476fb4b2",
      "parents": [
        "307729c8bc5b5a41361af8af95906eee7552acb1"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Jan 27 14:53:53 2012 -0600"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jan 31 09:43:41 2012 +1100"
      },
      "message": "Prevent DM RAID from loading bitmap twice.\n\nThe life cycle of a device-mapper target is:\n1) create\n2) resume\n3) suspend\n*) possibly repeat from 2\n4) destroy\n\nThe dm-raid target is unconditionally calling MD\u0027s bitmap_load function upon\nevery resume.  If steps 2 \u0026 3 above are repeated, bitmap_load is called\nmultiple times.  It is only written to be called once; otherwise, it allocates\nnew memory for the bitmap (without freeing the old) and incrementing the number\nof pages it thinks it has without zeroing first.  This ultimately leads to\naccess beyond allocated memory and lost memory.\n\nSimply avoiding the bitmap_load call upon resume is not sufficient.  If the\ntarget was suspended while the initial recovery was only partially complete,\nit needs to be restarted when the target is resumed.  This is why\n\u0027md_wakeup_thread\u0027 is called before issuing the \u0027mddev_resume\u0027.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b3c9dd182ed3bdcdaf0e42625a35924b0497afdc",
      "tree": "ad48ad4d923fee147c736318d0fad35b3755f4f5",
      "parents": [
        "83c2f912b43c3a7babbb6cb7ae2a5276c1ed2a3e",
        "5d381efb3d1f1ef10535a31ca0dd9b22fe1e1922"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 15 12:24:45 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 15 12:24:45 2012 -0800"
      },
      "message": "Merge branch \u0027for-3.3/core\u0027 of git://git.kernel.dk/linux-block\n\n* \u0027for-3.3/core\u0027 of git://git.kernel.dk/linux-block: (37 commits)\n  Revert \"block: recursive merge requests\"\n  block: Stop using macro stubs for the bio data integrity calls\n  blockdev: convert some macros to static inlines\n  fs: remove unneeded plug in mpage_readpages()\n  block: Add BLKROTATIONAL ioctl\n  block: Introduce blk_set_stacking_limits function\n  block: remove WARN_ON_ONCE() in exit_io_context()\n  block: an exiting task should be allowed to create io_context\n  block: ioc_cgroup_changed() needs to be exported\n  block: recursive merge requests\n  block, cfq: fix empty queue crash caused by request merge\n  block, cfq: move icq creation and rq-\u003eelv.icq association to block core\n  block, cfq: restructure io_cq creation path for io_context interface cleanup\n  block, cfq: move io_cq exit/release to blk-ioc.c\n  block, cfq: move icq cache management to block core\n  block, cfq: move io_cq lookup to blk-ioc.c\n  block, cfq: move cfqd-\u003eicq_list to request_queue and add request-\u003eelv.icq\n  block, cfq: reorganize cfq_io_context into generic and cfq specific parts\n  block: remove elevator_queue-\u003eops\n  block: reorder elevator switch sequence\n  ...\n\nFix up conflicts in:\n - block/blk-cgroup.c\n\tSwitch from can_attach_task to can_attach\n - block/cfq-iosched.c\n\tconflict with now removed cic index changes (we now use q-\u003eid instead)\n"
    },
    {
      "commit": "ec8013beddd717d1740cfefb1a9b900deef85462",
      "tree": "7aa28de51cb2f375baf6fe943afd85e75ca7bcb9",
      "parents": [
        "0bfc96cb77224736dfa35c3c555d37b3646ef35e"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Thu Jan 12 16:01:29 2012 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 14 15:07:24 2012 -0800"
      },
      "message": "dm: do not forward ioctls from logical volumes to the underlying device\n\nA logical volume can map to just part of underlying physical volume.\nIn this case, it must be treated like a partition.\n\nBased on a patch from Alasdair G Kergon.\n\nCc: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: dm-devel@redhat.com\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c086ae4ed94f9a1d283318e006813268c2dbf9fc",
      "tree": "dbabbb09ddafcb818f32af038831419702574917",
      "parents": [
        "7b67e751479d50b7f84d1a3cc5216eed5e534b66",
        "307729c8bc5b5a41361af8af95906eee7552acb1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 11 18:51:55 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 11 18:51:55 2012 -0800"
      },
      "message": "Merge tag \u0027md-3.3-fixes\u0027 of git://neil.brown.name/md\n\nTwo bugfixes for md.\n\nOne is a recently introduced regression that affects an unusual\nconfiguration with a guaranteed BUG_ON.  Has been tagged for -stable.\nThe other is minor missing functionality.\n\n* tag \u0027md-3.3-fixes\u0027 of git://neil.brown.name/md:\n  md/raid1: perform bad-block tests for WriteMostly devices too.\n  md: notify the \u0027degraded\u0027 sysfs attribute on failure.\n"
    },
    {
      "commit": "b1bd055d397e09f99dcef9b138ed104ff1812fcb",
      "tree": "e8e1d3d0b6a33859392bcba516933aff256dc4b4",
      "parents": [
        "c98b2cc29af8e84e7364b53e9bb4cc7cfaf62555"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Wed Jan 11 16:27:11 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Jan 11 16:27:11 2012 +0100"
      },
      "message": "block: Introduce blk_set_stacking_limits function\n\nStacking driver queue limits are typically bounded exclusively by the\ncapabilities of the low level devices, not by the stacking driver\nitself.\n\nThis patch introduces blk_set_stacking_limits() which has more liberal\nmetrics than the default queue limits function. This allows us to\ninherit topology parameters from bottom devices without manually\ntweaking the default limits in each driver prior to calling the stacking\nfunction.\n\nSince there is now a clear distinction between stacking and low-level\ndevices, blk_set_default_limits() has been modified to carry the more\nconservative values that we used to manually set in\nblk_queue_make_request().\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "307729c8bc5b5a41361af8af95906eee7552acb1",
      "tree": "9b20fe9c898ee4de85b64a8e41c92123dae0b093",
      "parents": [
        "f2a371c5e74dd5685ab47effa4ac7b23b1fdaae5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 09 01:41:51 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jan 11 08:35:17 2012 +1100"
      },
      "message": "md/raid1: perform bad-block tests for WriteMostly devices too.\n\nWe normally try to avoid reading from write-mostly devices, but when\nwe do we really have to check for bad blocks and be sure not to\ntry reading them.\n\nWith the current code, best_good_sectors might not get set and that\ncauses zero-length read requests to be send down which is very\nconfusing.\n\nThis bug was introduced in commit d2eb35acfdccbe2 and so the patch\nis suitable for 3.1.x and 3.2.x\n\nReported-and-tested-by: Michał Mirosław \u003cmirq-linux@rere.qmqm.pl\u003e\nReported-and-tested-by: Art -kwaak- van Breemen \u003card@telegraafnet.nl\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "f2a371c5e74dd5685ab47effa4ac7b23b1fdaae5",
      "tree": "e1960be50588ef0a4461fa54609df7ebea95eac5",
      "parents": [
        "19d671695e1931ebfd75b2b888778201aefe35ca"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 09 00:46:41 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jan 11 08:35:14 2012 +1100"
      },
      "message": "md: notify the \u0027degraded\u0027 sysfs attribute on failure.\n\nWe currently only \u0027notify\u0027 changes to the \u0027degraded\u0027 attribute\nwhen it decreases, not when it increases.\n\nNotifying on failure is a little awkward as it happen in\ninterrupt context.\nSo instead, notify when we remove the failed device from the array,\nwhich is very soon afterwards.\n\nReported-and-tested-by: Mikhail Balabin \u003cmbalabin@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2943c833222ef87c111ee0c6b7b8519ad2983e99",
      "tree": "0ef8cc4f72a63b325e7ae858ec68822ec4f3c64f",
      "parents": [
        "98793265b429a3f0b3f1750e74d67cd4d740d162",
        "19d671695e1931ebfd75b2b888778201aefe35ca"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 13:28:33 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 13:28:33 2012 -0800"
      },
      "message": "Merge tag \u0027md-3.3\u0027 of git://neil.brown.name/md\n\nmd update for 3.3\n\nBig change is new hot-replacement.\nA slot in an array can hold 2 devices - one that\nwants-replacement and one that is the replacement.\nOnce the replacement is built - either from the\noriginal or (in the case of errors) from elsewhere,\nthe wants-replacement device will be removed.\n\n* tag \u0027md-3.3\u0027 of git://neil.brown.name/md: (36 commits)\n  md/raid1: Mark device want_replacement when we see a write error.\n  md/raid1: If there is a spare and a want_replacement device, start replacement.\n  md/raid1: recognise replacements when assembling arrays.\n  md/raid1: handle activation of replacement device when recovery completes.\n  md/raid1: Allow a failed replacement device to be removed.\n  md/raid1: Allocate spare to store replacement devices and their bios.\n  md/raid1:  Replace use of mddev-\u003eraid_disks with conf-\u003eraid_disks.\n  md/raid10: If there is a spare and a want_replacement device, start replacement.\n  md/raid10: recognise replacements when assembling array.\n  md/raid10: Allow replacement device to be replace old drive.\n  md/raid10: handle recovery of replacement devices.\n  md/raid10:  Handle replacement devices during resync.\n  md/raid10: writes should get directed to replacement as well as original.\n  md/raid10: allow removal of failed replacement devices.\n  md/raid10: preferentially read from replacement device if possible.\n  md/raid10:  change read_balance to return an rdev\n  md/raid10: prepare data structures for handling replacement.\n  md/raid5: Mark device want_replacement when we see a write error.\n  md/raid5: If there is a spare and a want_replacement device, start replacement.\n  md/raid5: recognise replacements when assembling array.\n  ...\n"
    },
    {
      "commit": "ff01bb4832651c6d25ac509a06a10fcbd75c461c",
      "tree": "bbfdebd317db97d346df78293566f36e883b1be9",
      "parents": [
        "94ea4158f1733e3b10cef067d535f504866e0c41"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Sep 16 02:31:11 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:07 2012 -0500"
      },
      "message": "fs: move code out of buffer.c\n\nMove invalidate_bdev, block_sync_page into fs/block_dev.c.  Export\nkill_bdev as well, so brd doesn\u0027t have to open code it.  Reduce\nbuffer_head.h requirement accordingly.\n\nRemoved a rather large comment from invalidate_bdev, as it looked a bit\nobsolete to bother moving.  The small comment replacing it says enough.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "19d671695e1931ebfd75b2b888778201aefe35ca",
      "tree": "b3c54cdb0812632f830453b6a6c9b8b966c9dcc4",
      "parents": [
        "7ef449d1ec3668acbba6af6a500d0c84636b436f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:57 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:57 2011 +1100"
      },
      "message": "md/raid1: Mark device want_replacement when we see a write error.\n\nNow that WantReplacement drives are replaced cleanly, mark a drive\nas want_replacement when we see a write error.  It might get failed soon so\nthe WantReplacement flag is irrelevant, but if the write error is recorded\nin the bad block log, we still want to activate any spare that might\nbe available.\n\nSigned-off-by:  NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7ef449d1ec3668acbba6af6a500d0c84636b436f",
      "tree": "4a9e23c9b88f404e896ba8748bdc7bb2b18ec65c",
      "parents": [
        "c19d57980b38a5bb613a898937a1cf85f422fb9b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:57 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:57 2011 +1100"
      },
      "message": "md/raid1: If there is a spare and a want_replacement device, start replacement.\n\nWhen attempting to add a spare to a RAID1 array, also consider\nadding it as a replacement for a want_replacement device.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c19d57980b38a5bb613a898937a1cf85f422fb9b",
      "tree": "ddc9f7ae53a4cd0464240ec8c49c03d35823a103",
      "parents": [
        "8c7a2c2bcfaf0ee29c74437a4814d1aa780d6a26"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:57 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:57 2011 +1100"
      },
      "message": "md/raid1: recognise replacements when assembling arrays.\n\nIf a Replacement is seen, file it as such.\n\nIf we see two replacements (or two normal devices) for the one slot,\nabort.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8c7a2c2bcfaf0ee29c74437a4814d1aa780d6a26",
      "tree": "74093a74ea43965f04502bc5d71b6976a74c7305",
      "parents": [
        "b014f14c81bc5db4e40e2a4db10998fd79c1c64c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:57 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:57 2011 +1100"
      },
      "message": "md/raid1: handle activation of replacement device when recovery completes.\n\nWhen recovery completes -\u003espare_active is called.\nThis checks if the replacement is ready and if so it fails\nthe original.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b014f14c81bc5db4e40e2a4db10998fd79c1c64c",
      "tree": "78c5499e8af9a3e850ca2f93d215c53d55c40003",
      "parents": [
        "8f19ccb2fd70deb1f278be5e75076074cfddee46"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:56 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:56 2011 +1100"
      },
      "message": "md/raid1: Allow a failed replacement device to be removed.\n\nReplacement devices are stored at a different offset, so look\nthere too.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8f19ccb2fd70deb1f278be5e75076074cfddee46",
      "tree": "59419e814d4d02dfdefaf6f5ef152c3468c890e8",
      "parents": [
        "301946364e0aa67c4cfaec82e94c389993c9f7c6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:56 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:56 2011 +1100"
      },
      "message": "md/raid1: Allocate spare to store replacement devices and their bios.\n\nIn RAID1, a replacement is much like a normal device, so we just\ndouble the size of the relevant arrays and look at all possible\ndevices for reads and writes.\n\nThis means that the array looks like it is now double the size in some\nway - we need to be careful about that.\nIn particular, we checking if the array is still degraded while\ncreating a recovery request we need to only consider the first \u0027half\u0027\n- i.e. the real (non-replacement) devices.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "301946364e0aa67c4cfaec82e94c389993c9f7c6",
      "tree": "fff6390d22ba68f6726700cd4979f0de4c205a6f",
      "parents": [
        "b7044d41b5a09ce9082699f74c8f10e0fe59f704"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:56 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:56 2011 +1100"
      },
      "message": "md/raid1:  Replace use of mddev-\u003eraid_disks with conf-\u003eraid_disks.\n\nIn general mddev-\u003eraid_disks can change unexpectedly while\nconf-\u003eraid_disks will only change in a very controlled way.  So change\nsome uses of one to the other.\n\nThe use of mddev-\u003eraid_disks will not cause actually problems but\nthis way is more consistent and safer in the long term.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b7044d41b5a09ce9082699f74c8f10e0fe59f704",
      "tree": "6eccbaddb40861aeba8459cb4f0efe3c340fb936",
      "parents": [
        "56a2559bb654ae2555b2ae3b29c837615d0c45c9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:56 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:56 2011 +1100"
      },
      "message": "md/raid10: If there is a spare and a want_replacement device, start replacement.\n\nWhen attempting to add a spare to a RAID10 array, also consider\nadding it as a replacement for a want_replacement device.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "56a2559bb654ae2555b2ae3b29c837615d0c45c9",
      "tree": "f90a0d605260f668ad13af654f7951bcb27dfe64",
      "parents": [
        "4ca40c2ce099e4f1ce35445994f49836662596c8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:55 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:55 2011 +1100"
      },
      "message": "md/raid10: recognise replacements when assembling array.\n\nIf a Replacement is seen, file it as such.\n\nIf we see two replacements (or two normal devices) for the one slot,\nabort.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4ca40c2ce099e4f1ce35445994f49836662596c8",
      "tree": "7d6f2187e8d6aaab0cdcf4924017aeb9725d87b0",
      "parents": [
        "24afd80d99f80a79d8824d2805114b8b067e9823"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:55 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:55 2011 +1100"
      },
      "message": "md/raid10: Allow replacement device to be replace old drive.\n\nWhen recovery finish and spare_active is called, check for a\nreplace that might have just become fully synced and mark it\nas such, marking the original as failed.\n\nThen when the original is removed, move the replacement into\nits position.\n\nThis means that \u0027replacement\u0027 and spontaneously become NULL in some\nsituations.  Make sure we check for those.\nIt also means that \u0027rdev\u0027 and \u0027replacement\u0027 could appear to be\nidentical - check for that too.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "24afd80d99f80a79d8824d2805114b8b067e9823",
      "tree": "c4ba36331ee56c64ba74a69ec5d0b56b6e860832",
      "parents": [
        "9ad1aefc8ae8d2e482b4cc4b7199e2354148bbdc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:55 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:55 2011 +1100"
      },
      "message": "md/raid10: handle recovery of replacement devices.\n\nIf there is a replacement device, then recover to it,\nreading from any drives - maybe the one being replaced, maybe not.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9ad1aefc8ae8d2e482b4cc4b7199e2354148bbdc",
      "tree": "c501f70c4726aade7eec3d743741f1568bba41df",
      "parents": [
        "475b0321a4df381f64db10ddd750a8b7bb82d88b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:55 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:55 2011 +1100"
      },
      "message": "md/raid10:  Handle replacement devices during resync.\n\nIf we need to resync an array which has replacement devices,\nwe always write any block checked to every replacement.\n\nIf the resync was bitmap-based resync we will then complete the\nreplacement normally.\nIf it was a full resync, we mark the replacements as fully recovered\nwhen the resync finishes so no further recovery is needed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "475b0321a4df381f64db10ddd750a8b7bb82d88b",
      "tree": "c8433c702892962091e617c83ada4560a208e4de",
      "parents": [
        "c8ab903ea9d7309044910c33dc087418be84f9b5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:55 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:55 2011 +1100"
      },
      "message": "md/raid10: writes should get directed to replacement as well as original.\n\nWhen writing, we need to submit two writes, one to the original,\nand one to the replacements - if there is a replacement.\n\nIf the write to the replacement results in a write error we just\nfail the device.  We only try to record write errors to the\noriginal.\n\nThis only handles writing new data.  Writing for resync/recovery\nwill come later.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c8ab903ea9d7309044910c33dc087418be84f9b5",
      "tree": "1113f320a71e50bc5ed22b7f6ca0ec1800b37b08",
      "parents": [
        "abbf098e6e1e23d5d247b9eaaf325e67f67b0328"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:54 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:54 2011 +1100"
      },
      "message": "md/raid10: allow removal of failed replacement devices.\n\nEnhance raid10_remove_disk to be able to remove -\u003ereplacement\nas well as -\u003erdev\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "abbf098e6e1e23d5d247b9eaaf325e67f67b0328",
      "tree": "e2d8dc88c99ecc14d6d87596d95b3de9b9dc87c9",
      "parents": [
        "96c3fd1f3802371610c620cff03f9d825707e80e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:54 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:54 2011 +1100"
      },
      "message": "md/raid10: preferentially read from replacement device if possible.\n\nWhen reading (for array reads, not for recovery etc) we read from the\nreplacement device if it has recovered far enough.\nThis requires storing the chosen rdev in the \u0027r10_bio\u0027 so we can make\nsure to drop the ref on the right device when the read finishes.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "96c3fd1f3802371610c620cff03f9d825707e80e",
      "tree": "822e95ed42ca9d1526964b3d06ef66ec4edd0ab9",
      "parents": [
        "69335ef3bc5b766f34db2d688be1d35313138bca"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:54 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:54 2011 +1100"
      },
      "message": "md/raid10:  change read_balance to return an rdev\n\nIt makes more sense to return an rdev than just an index as\nread_balance() gets a reference to the rdev and so returning\nthe pointer make this more idiomatic.\n\nThis will be needed in a future patch when we might return\na \u0027replacement\u0027 rdev instead of the main rdev.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "69335ef3bc5b766f34db2d688be1d35313138bca",
      "tree": "dcd87ffc4c97540d374a20de7380368e3679ac3b",
      "parents": [
        "3a6de2924af602f9c1b5a5154438c37f2d712dfa"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:54 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:54 2011 +1100"
      },
      "message": "md/raid10: prepare data structures for handling replacement.\n\nAllow each slot in the RAID10 to have 2 devices, the want_replacement\nand the replacement.\n\nAlso an r10bio to have 2 bios, and for resync/recovery allocate the\nsecond bio if there are any replacement devices.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3a6de2924af602f9c1b5a5154438c37f2d712dfa",
      "tree": "895462dfefd70827c5b6d860503d1244d003a56e",
      "parents": [
        "7bfec5f35c68121e7b1849f3f4166dd96c8da5b3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:54 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:54 2011 +1100"
      },
      "message": "md/raid5: Mark device want_replacement when we see a write error.\n\nNow that WantReplacement drives are replaced cleanly, mark a drive\nas WantReplacement when we see a write error.  It might get failed soon so\nthe WantReplacement flag is irrelevant, but if the write error is recorded\nin the bad block log, we still want to activate any spare that might\nbe available.\n\nReviewed-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by:  NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7bfec5f35c68121e7b1849f3f4166dd96c8da5b3",
      "tree": "14bab6480ccc14a6cdf9e5ee34662897e5e2e94a",
      "parents": [
        "17045f52ac76d9cd1a120e52af5d83b570af4ba8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:53 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:53 2011 +1100"
      },
      "message": "md/raid5: If there is a spare and a want_replacement device, start replacement.\n\nWhen attempting to add a spare to a RAID[456] array, also consider\nadding it as a replacement for a want_replacement device.\n\nThis requires that common md code attempt hot_add even when the array\nis not formally degraded.\n\nReviewed-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "17045f52ac76d9cd1a120e52af5d83b570af4ba8",
      "tree": "2bbd692eaab68ffa60f3dcf6757752b9b89a7a9b",
      "parents": [
        "dd054fce88d33da1aa81d018db75b91b102a6959"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:53 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:53 2011 +1100"
      },
      "message": "md/raid5: recognise replacements when assembling array.\n\nIf a Replacement is seen, file it as such.\n\nIf we see two replacements (or two normal devices) for the one slot,\nabort.\n\nReviewed-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "dd054fce88d33da1aa81d018db75b91b102a6959",
      "tree": "9528caece6b444ebcdb41453b60a1bb4054a1a4d",
      "parents": [
        "9a3e1101b827a59ac9036a672f5fa8d5279d0fe2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:53 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:53 2011 +1100"
      },
      "message": "md/raid5: handle activation of replacement device when recovery completes.\n\nWhen recovery completes - as reported by a call to -\u003espare_active,\nwe clear In_sync on the original and set it on the replacement.\n\nThen when the original gets removed we move the replacement from\n\u0027replacement\u0027 to \u0027rdev\u0027.\n\nThis could race with other code that is looking at these pointers,\nso we use memory barriers and careful ordering to ensure that\na reader might see one device twice, but never no devices.\nThen the readers guard against using both devices, which could\nonly happen when writing.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9a3e1101b827a59ac9036a672f5fa8d5279d0fe2",
      "tree": "9e629fbc1bab31b588c475181246bbe30778f67a",
      "parents": [
        "977df36255ab0ea78b048cbc9055300c586dcc91"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:53 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:53 2011 +1100"
      },
      "message": "md/raid5:  detect and handle replacements during recovery.\n\nDuring recovery we want to write to the replacement but not\nthe original.  So we have two new flags\n - R5_NeedReplace if this stripe has a replacement that needs to\n   be written at some stage\n - R5_WantReplace if NeedReplace, and the data is available, and\n   a \u0027sync\u0027 has been requested on this stripe.\n\nWe also distinguish between \u0027sync and replace\u0027 which need to read\nall other devices, and \u0027replace\u0027 which only needs to read the\ndevices being replaced.\n\nNote that during resync we always write to any replacement device.\nIt might not need to be written to, but as we don\u0027t read to compare,\nwe have to write to be sure.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "977df36255ab0ea78b048cbc9055300c586dcc91",
      "tree": "6d89e08ebe7702ccbb5e160b99ea2440ab08fcda",
      "parents": [
        "657e3e4d88461a5ab660dd87f8f773f55e748da4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:53 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:53 2011 +1100"
      },
      "message": "md/raid5: writes should get directed to replacement as well as original.\n\nWhen writing, we need to submit two writes, one to the original, and\none to the replacement - if there is a replacement.\n\nIf the write to the replacement results in a write error, we just fail\nthe device.  We only try to record write errors to the original.\n\nWhen writing for recovery, we shouldn\u0027t write to the original.  This\nwill be addressed in a subsequent patch that generally addresses\nrecovery.\n\nReviewed-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "657e3e4d88461a5ab660dd87f8f773f55e748da4",
      "tree": "1eecf97f8e5eac95cf37b4f28e262a37dd3e116d",
      "parents": [
        "14a75d3e07c784c004b4b44b34af996b8e4ac453"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:52 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:52 2011 +1100"
      },
      "message": "md/raid5: allow removal for failed replacement devices.\n\nEnhance raid5_remove_disk to be able to remove -\u003ereplacement\nas well as -\u003erdev.\n\nReviewed-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "14a75d3e07c784c004b4b44b34af996b8e4ac453",
      "tree": "6009e1ccc1b766d4c55434e3b4c1d171b8a2c004",
      "parents": [
        "995c4275a7e14b8752f301e4570831a108ae4303"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:52 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:52 2011 +1100"
      },
      "message": "md/raid5: preferentially read from replacement device if possible.\n\nIf a replacement device is present and has been recovered far enough,\nthen use it for reading into the stripe cache.\n\nIf we get an error we don\u0027t try to repair it, we just fail the device.\nA replacement device that gives errors does not sound sensible.\n\nThis requires removing the setting of R5_ReadError when we get\na read error during a read that bypasses the cache.  It was probably\na bad idea anyway as we don\u0027t know that every block in the read\ncaused an error, and it could cause ReadError to be set for the\nreplacement device, which is bad.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "995c4275a7e14b8752f301e4570831a108ae4303",
      "tree": "2bee4c8daf14b6453371bb348b18d37d7e3cdb07",
      "parents": [
        "ede7ee8b4d007f308aa033be676b1a048f99e9db"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:52 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:52 2011 +1100"
      },
      "message": "md/raid5: remove redundant bio initialisations.\n\nWe current initialise some fields of a bio when preparing a\nstripe_head, and again just before submitting the request.\n\nRemove the duplication by only setting the fields that lower level\ndevices don\u0027t touch in raid5_build_block, and only set the changeable\nfields in ops_run_io.\n\nReviewed-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ede7ee8b4d007f308aa033be676b1a048f99e9db",
      "tree": "2ce0dad4009b0f05617976034686855883f382bd",
      "parents": [
        "671488cc25f7c194c7c7a9f258bab1df17a6ff69"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:52 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:52 2011 +1100"
      },
      "message": "md/raid5: raid5.h cleanup\n\nRemove some #defines that are no longer used, and replace some\nothers with an enum.\nAnd remove an unused field.\n\nReviewed-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "671488cc25f7c194c7c7a9f258bab1df17a6ff69",
      "tree": "00bec63c7789dbf7439418ee903490d6ee076a70",
      "parents": [
        "2d78f8c451785f030ac1676a18691896b59c69d8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:52 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:52 2011 +1100"
      },
      "message": "md/raid5: allow each slot to have an extra replacement device\n\nJust enhance data structures to record a second device per slot to be\nused as a \u0027replacement\u0027 device, replacing the original.\nWe also have a second bio in each slot in each stripe_head.  This will\nonly be used when writing to the array - we need to write to both the\noriginal and the replacement at the same time, so will need two bios.\n\nFor now, only try using the replacement drive for aligned-reads.\nIn this case, we prefer the replacement if it has been recovered far\nenough, otherwise use the original.\n\nThis includes a small enhancement.  Previously we would only do\naligned reads if the target device was fully recovered.  Now we also\ndo them if it has recovered far enough.\n\nReviewed-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2d78f8c451785f030ac1676a18691896b59c69d8",
      "tree": "4dfe69115b2ca2fb8be2a671e7c8399c3925fcb9",
      "parents": [
        "b8321b68d1445f308324517e45fb0a5c2b48e271"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:51 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:51 2011 +1100"
      },
      "message": "md: create externally visible flags for supporting hot-replace.\n\nhot-replace is a feature being added to md which will allow a\ndevice to be replaced without removing it from the array first.\n\nWith hot-replace a spare can be activated and recovery can start while\nthe original device is still in place, thus allowing a transition from\nan unreliable device to a reliable device without leaving the array\ndegraded during the transition.  It can also be use when the original\ndevice is still reliable but it not wanted for some reason.\n\nThis will eventually be supported in RAID4/5/6 and RAID10.\n\nThis patch adds a super-block flag to distinguish the replacement\ndevice.  If an old kernel sees this flag it will reject the device.\n\nIt also adds two per-device flags which are viewable and settable via\nsysfs.\n   \"want_replacement\" can be set to request that a device be replaced.\n   \"replacement\" is set to show that this device is replacing another\n   device.\n\nThe \"rd%d\" links in /sys/block/mdXx/md only apply to the original\ndevice, not the replacement.  We currently don\u0027t make links for the\nreplacement - there doesn\u0027t seem to be a need.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b8321b68d1445f308324517e45fb0a5c2b48e271",
      "tree": "3fc4c9b253435753d2154d9bd697a7869163c29a",
      "parents": [
        "476a7abb9b00adfe6bf70e82800367319ab8078b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:51 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:51 2011 +1100"
      },
      "message": "md: change hot_remove_disk to take an rdev rather than a number.\n\nSoon an array will be able to have multiple devices with the\nsame raid_disk number (an original and a replacement).  So removing\na device based on the number won\u0027t work.  So pass the actual device\nhandle instead.\n\nReviewed-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "476a7abb9b00adfe6bf70e82800367319ab8078b",
      "tree": "92387465b8ded45abad9dbb7382136476a31e120",
      "parents": [
        "915c420ddfa3eb22a0dbdb7a8e0ecf020c31961f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:51 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:51 2011 +1100"
      },
      "message": "md: remove test for duplicate device when setting slot number.\n\nWhen setting the slot number on a device in an active array we\ncurrently check that the number is not already in use.\nWe then call into the personality\u0027s hot_add_disk function\nwhich performs the same test and returns the same error.\n\nThus the common test is not needed.\n\nAs we will shortly be changing some personalities to allow duplicates\nin some cases (to support hot-replace), the common test will become\ninconvenient.\n\nSo remove the common test.\n\nReviewed-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "915c420ddfa3eb22a0dbdb7a8e0ecf020c31961f",
      "tree": "24915c8f3380e390130d1d437389b5cb805c28fd",
      "parents": [
        "38059ec2bd2ce9e4709f49f34795aa0944287908"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:51 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:51 2011 +1100"
      },
      "message": "md/bitmap: be more consistent when setting new bits in memory bitmap.\n\nFor each active region corresponding to a bit in the bitmap with have\na 14bit counter (and some flags).\nThis counts\n   number of active writes + bit in the on-disk bitmap + delay-needed.\n\nThe \"delay-needed\" is because we always want a delay before clearing a\nbit.  So the number here is normally number of active writes plus 2.\nIf there have been no writes for a while, we drop to 1.\nIf still no writes we clear the bit and drop to 0.\n\nSo for consistency, when setting bit from the on-disk bitmap or by\nrequest from user-space it is best to set the counter to \u00272\u0027 to start\nwith.\n\nIn particular we might also set the NEEDED_MASK flag at this time, and\nin all other cases NEEDED_MASK is only set when the counter is 2 or\nmore.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "908f4fbd265733310c17ecc906299846b5dac44a",
      "tree": "71e364c57887213431143e6fd1296e8433cc6293",
      "parents": [
        "2e61ebbcc45438899235d7a39f17291cb24e746c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:50 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:50 2011 +1100"
      },
      "message": "md/raid5: be more thorough in calculating \u0027degraded\u0027 value.\n\nWhen an array is being reshaped to change the number of devices,\nthe two halves can be differently degraded.  e.g. one could be\nmissing a device and the other not.\n\nSo we need to be more careful about calculating the \u0027degraded\u0027\nattribute.\n\nInstead of just inc/dec at appropriate times, perform a full\nre-calculation examining both possible cases.  This doesn\u0027t happen\noften so it not a big cost, and we already have most of the code to\ndo it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2e61ebbcc45438899235d7a39f17291cb24e746c",
      "tree": "9d12a2a641c9980fb08f704449631d8012db0686",
      "parents": [
        "506c9e44a85f6a79fc0643f2d2498ab6cda3d3f8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:50 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:50 2011 +1100"
      },
      "message": "md/bitmap: daemon_work cleanup.\n\nWe have a variable \u0027mddev\u0027 in this function, but repeatedly get the\nsame value by dereferencing bitmap-\u003emddev.\nThere is room for simplification here...\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "506c9e44a85f6a79fc0643f2d2498ab6cda3d3f8",
      "tree": "94dd7741a688b2c57494819ca3a22d228462ff98",
      "parents": [
        "961902c0f8240175729274cd14198872f42072b7"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:26 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:26 2011 +1100"
      },
      "message": "md: allow non-privileged uses to GET_*_INFO about raid arrays.\n\nThe info is already available in /proc/mdstat and /sys/block in\nan accessible form so there is no point in putting a road-block in\nthe ioctl for information gathering.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "961902c0f8240175729274cd14198872f42072b7",
      "tree": "808b47d32174e970465dc00cea9150ff978bfc95",
      "parents": [
        "60fc13702a1b35118c1548e9c257fa038cecb658"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 09:57:48 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 09:57:48 2011 +1100"
      },
      "message": "md/bitmap: It is OK to clear bits during recovery.\n\ncommit d0a4bb492772ce5c4bdfba3744a99ed6f6fb238f introduced a\nregression which is annoying but fairly harmless.\n\nWhen writing to an array that is undergoing recovery (a spare\nin being integrated into the array), writing to the array will\nset bits in the bitmap, but they will not be cleared when the\nwrite completes.\n\nFor bits covering areas that have not been recovered yet this is not a\nproblem as the recovery will clear the bits.  However bits set in\nalready-recovered region will stay set and never be cleared.\nThis doesn\u0027t risk data integrity.  The only negatives are:\n - next time there is a crash, more resyncing than necessary will\n   be done.\n - the bitmap doesn\u0027t look clean, which is confusing.\n\nWhile an array is recovering we don\u0027t want to update the\n\u0027events_cleared\u0027 setting in the bitmap but we do still want to clear\nbits that have very recently been set - providing they were written to\nthe recovering device.\n\nSo split those two needs - which previously both depended on \u0027success\u0027\nand always clear the bit of the write went to all devices.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "60fc13702a1b35118c1548e9c257fa038cecb658",
      "tree": "163094eb4ae229f9263bfd05b788f29cc14e94f5",
      "parents": [
        "30d7a4836847bdb10b32c78a4879d4aebe0f193b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 09:57:19 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 09:57:19 2011 +1100"
      },
      "message": "md: don\u0027t give up looking for spares on first failure-to-add\n\nBefore performing a recovery we try to remove any spares that\nmight not be working, then add any that might have become relevant.\n\nCurrently we abort on the first spare that cannot be added.\nThis is a false optimisation.\nIt is conceivable that - depending on rules in the personality - a\nsubsequent spare might be accepted.\nAlso the loop does other things like count the available spares and\nreset the \u0027recovery_offset\u0027 value.\n\nIf we abort early these might not happen properly.\n\nSo remove the early abort.\n\nIn particular if you have an array what is undergoing recovery and\nwhich has extra spares, then the recovery may not restart after as\nreboot as the could of \u0027spares\u0027 might end up as zero.\n\nReported-by: Anssi Hannula \u003canssi.hannula@iki.fi\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "30d7a4836847bdb10b32c78a4879d4aebe0f193b",
      "tree": "039d4eaec57d67cbfc49d92f12e592b46c251c01",
      "parents": [
        "09cd9270ea52e0f9851528e8ed028073f96b3c34"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 09:57:00 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 09:57:00 2011 +1100"
      },
      "message": "md/raid5: ensure correct assessment of drives during degraded reshape.\n\nWhile reshaping a degraded array (as when reshaping a RAID0 by first\nconverting it to a degraded RAID4) we currently get confused about\nwhich devices are in_sync.  In most cases we get it right, but in the\nregion that is being reshaped we need to treat non-failed devices as\nin-sync when we have the data but haven\u0027t actually written it out yet.\n\nReported-by: Adam Kwolek \u003cadam.kwolek@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "09cd9270ea52e0f9851528e8ed028073f96b3c34",
      "tree": "8cfb20f05531dc1e83c7d295e6b59dd692bdf99d",
      "parents": [
        "5d8c71f9e5fbdd95650be00294d238e27a363b5c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 09:56:55 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 09:56:55 2011 +1100"
      },
      "message": "md/linear: fix hot-add of devices to linear arrays.\n\ncommit d70ed2e4fafdbef0800e73942482bb075c21578b\nbroke hot-add to a linear array.\nAfter that commit, metadata if not written to devices until they\nhave been fully integrated into the array as determined by\nsaved_raid_disk.  That patch arranged to clear that field after\na recovery completed.\n\nHowever for linear arrays, there is no recovery - the integration is\ninstantaneous.  So we need to explicitly clear the saved_raid_disk\nfield.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5d8c71f9e5fbdd95650be00294d238e27a363b5c",
      "tree": "51f7ae70b3a188f8376d7912493d346537fe516e",
      "parents": [
        "9283d8c5af4cdcb809e655acdf4be368afec8b58"
      ],
      "author": {
        "name": "Adam Kwolek",
        "email": "adam.kwolek@intel.com",
        "time": "Fri Dec 09 14:26:11 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 09 14:26:11 2011 +1100"
      },
      "message": "md: raid5 crash during degradation\n\nNULL pointer access causes crash in raid5 module.\n\nSigned-off-by: Adam Kwolek \u003cadam.kwolek@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9283d8c5af4cdcb809e655acdf4be368afec8b58",
      "tree": "d4baa86260792a10782808e51d5468e145358980",
      "parents": [
        "8bd2f0a05b361e07d48bb34398593f5f523946b3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 08 16:27:57 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 08 16:27:57 2011 +1100"
      },
      "message": "md/raid5: never wait for bad-block acks on failed device.\n\nOnce a device is failed we really want to completely ignore it.\nIt should go away soon anyway.\n\nIn particular the presence of bad blocks on it should not cause us to\nblock as we won\u0027t be trying to write there anyway.\n\nSo as soon as we can check if a device is Faulty, do so and pretend\nthat it is already gone if it is Faulty.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8bd2f0a05b361e07d48bb34398593f5f523946b3",
      "tree": "a87860b4b8821b40eb9e6bb5333f71dfa8c3fb39",
      "parents": [
        "52c64152a935e63d9ff73ce823730c9a23dedbff"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 08 16:26:08 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 08 16:26:08 2011 +1100"
      },
      "message": "md: ensure new badblocks are handled promptly.\n\nWhen we mark blocks as bad we need them to be acknowledged by the\nmetadata handler promptly.\n\nFor an in-kernel metadata handler that was already being done.  But\nfor an external metadata handler we need to alert it of the change by\nsending a notification through the sysfs file.  This adds that\nnotification.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "52c64152a935e63d9ff73ce823730c9a23dedbff",
      "tree": "03de10a1899d74b42d00740437140a032686d011",
      "parents": [
        "af8a24347f966ab9fae6b0f127d1fbc9d6932d3a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 08 16:22:48 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 08 16:22:48 2011 +1100"
      },
      "message": "md: bad blocks shouldn\u0027t cause a Blocked status on a Faulty device.\n\nOnce a device is marked Faulty the badblocks - whether acknowledged or\nnot - become irrelevant.  So they shouldn\u0027t cause the device to be\nmarked as Blocked.\n\nWithout this patch, a process might write \"-blocked\" to clear the\nBlocked status, but while that will correctly fail the device, it\nwon\u0027t remove the apparent \u0027blocked\u0027 status.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "af8a24347f966ab9fae6b0f127d1fbc9d6932d3a",
      "tree": "903afdae95dc11444707410d784ad857dfb887c9",
      "parents": [
        "1d23f178d56ae1349b4fc5108ac8f4f8cdc92afc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 08 15:49:46 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 08 15:49:46 2011 +1100"
      },
      "message": "md: take a reference to mddev during sysfs access.\n\n\nWhen we are accessing an mddev via sysfs we know that the\nmddev cannot disappear because it has an embedded kobj which\nis refcounted by sysfs.\nAnd we also take the mddev_lock.\nHowever this is not enough.\n\nThe final mddev_put could have been called and the\nmddev_delayed_delete is waiting for sysfs to let go so it can destroy\nthe kobj and mddev.\nIn this state there are a lot of changes that should not be attempted.\n\nTo to guard against this we:\n - initialise mddev-\u003eall_mddevs in on last put so the state can be\n   easily detected.\n - in md_attr_show and md_attr_store, check -\u003eall_mddevs under\n   all_mddevs_lock and mddev_get the mddev if it still appears to\n   be active.\n\nThis means that if we get to sysfs as the mddev is being deleted we\nwill get -EBUSY.\n\nrdev_attr_store and rdev_attr_show are similar but already have\nsufficient protection.  They check that rdev-\u003emddev still points to\nmddev after taking mddev_lock.  As this is cleared  before delayed\nremoval which can only be requested under the mddev_lock, this\nensure the rdev and mddev are still alive.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1d23f178d56ae1349b4fc5108ac8f4f8cdc92afc",
      "tree": "3be282873c611cab1e855e0991ee3620d4cb906b",
      "parents": [
        "7c8f4247986bb5c5fb1d5b1fad35461989fe8310"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 08 15:49:12 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 08 15:49:12 2011 +1100"
      },
      "message": "md: refine interpretation of \"hold_active \u003d\u003d UNTIL_IOCTL\".\n\nWe like md devices to disappear when they really are not needed.\nHowever it is not possible to tell from the current state whether it\nis needed or not.  We can only tell from recent history of changes.\n\nIn particular immediately after we create an md device it looks very\nsimilar to immediately after we have finished with it.\n\nSo we always preserve a newly created md device until something\nsignificant happens.  This state is stored in \u0027hold_active\u0027.\n\nThe normal case is to keep it until an ioctl happens, as that will\nnormally either activate it, or explicitly de-activate it.  If it\ndoesn\u0027t then it was probably created by mistake and it is now time to\nget rid of it.\n\nWe can also modify an array via sysfs (instead of via ioctl) and we\ncurrently treat any change via sysfs like an ioctl as a sign that if\nit now isn\u0027t more active, it should be destroyed.\nHowever this is not appropriate as changes made via sysfs are more\ngradual so we should look for a more definitive change.\n\nSo this patch only clears \u0027hold_active\u0027 from UNTIL_IOCTL to clear when\nthe array_state is changed via sysfs.  Other changes via sysfs\nare ignored.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7c8f4247986bb5c5fb1d5b1fad35461989fe8310",
      "tree": "2c76f387184ac0cc587e66519536fc83e0f79553",
      "parents": [
        "257a4b42af7586fab4eaec7f04e6896b86551843"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Nov 23 10:18:52 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Nov 23 10:18:52 2011 +1100"
      },
      "message": "md/lock: ensure updates to page_attrs are properly locked.\n\nPage attributes are set using __set_bit rather than set_bit as\nit normally called under a spinlock so the extra atomicity is not\nneeded.\n\nHowever there are two places where we might set or clear page\nattributes without holding the spinlock.\nSo add the spinlock in those cases.\n\nThis might be the cause of occasional reports that bits a aren\u0027t\ngetting clear properly - theory is that BITMAP_PAGE_PENDING gets lost\nwhen BITMAP_PAGE_NEEDWRITE is set or cleared.  This is an\ninconvenience, not a threat to data safety.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "257a4b42af7586fab4eaec7f04e6896b86551843",
      "tree": "ec65357b2320ba4e4341a2853245048889666f5c",
      "parents": [
        "9a3f530f39f4490eaa18b02719fb74ce5f4d2d86"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Nov 08 16:22:06 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 08 16:22:06 2011 +1100"
      },
      "message": "md/raid5: STRIPE_ACTIVE has lock semantics, add barriers\n\nAll updates that occur under STRIPE_ACTIVE should be globally visible\nwhen STRIPE_ACTIVE clears.  test_and_set_bit() implies a barrier, but\nclear_bit() does not.\n\nThis is suitable for 3.1-stable.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "9a3f530f39f4490eaa18b02719fb74ce5f4d2d86",
      "tree": "4bcff31bacd9b242360f48dad706d8b5231ffafe",
      "parents": [
        "1ea6b8f48918282bdca0b32a34095504ee65bab5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 08 16:22:01 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 08 16:22:01 2011 +1100"
      },
      "message": "md/raid5: abort any pending parity operations when array fails.\n\nWhen the number of failed devices exceeds the allowed number\nwe must abort any active parity operations (checks or updates) as they\nare no longer meaningful, and can lead to a BUG_ON in\nhandle_parity_checks6.\n\nThis bug was introduce by commit 6c0069c0ae9659e3a91b68eaed06a5c6c37f45c8\nin 2.6.29.\n\nReported-by: Manish Katiyar \u003cmkatiyar@gmail.com\u003e\nTested-by: Manish Katiyar \u003cmkatiyar@gmail.com\u003e\nAcked-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "a84450604d0fe08b6a2335efbedede18d3d7cc75",
      "tree": "013be8cd17b787a3051d1d614f794f30573467f8",
      "parents": [
        "6f66263f8ebe1fb1f138de41ca9aa0a4860b30d0"
      ],
      "author": {
        "name": "Stephen Rothwell",
        "email": "sfr@canb.auug.org.au",
        "time": "Tue Nov 01 20:27:43 2011 +1100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 07 10:29:10 2011 -0800"
      },
      "message": "device-mapper: using EXPORT_SYBOL in dm-space-map-checker.c needs export.h\n\nReported-by: Witold Baryluk \u003cbaryluk@smp.if.uj.edu.pl\u003e\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6f66263f8ebe1fb1f138de41ca9aa0a4860b30d0",
      "tree": "bf8057b31cafcd43e6c4a60551bf24ece185ff07",
      "parents": [
        "1944ce60fe1e92506d3347f4d8e10a82b17096e4"
      ],
      "author": {
        "name": "Stephen Rothwell",
        "email": "sfr@canb.auug.org.au",
        "time": "Tue Nov 01 18:30:49 2011 +1100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 07 10:29:10 2011 -0800"
      },
      "message": "device-mapper: dm-bufio.c needs to include module.h\n\nsince it uses the module facilities.\n\nReported-by: Witold Baryluk \u003cbaryluk@smp.if.uj.edu.pl\u003e\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1944ce60fe1e92506d3347f4d8e10a82b17096e4",
      "tree": "1da72242c0a525e6a46c3ddc9693d88816362a03",
      "parents": [
        "0c073e35550879fd133bc3fe509df5b88da51278"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Wed Sep 28 18:29:32 2011 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 07 10:29:09 2011 -0800"
      },
      "message": "drivers/md: change module.h -\u003e export.h in persistent-data/dm-*\n\nFor the files which are not themselves modular, we can change\nthem to include only the smaller export.h since all they are\ndoing is looking for EXPORT_SYMBOL.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "32aaeffbd4a7457bf2f7448b33b5946ff2a960eb",
      "tree": "faf7ad871d87176423ff9ed1d1ba4d9c688fc23f",
      "parents": [
        "208bca0860406d16398145ddd950036a737c3c9d",
        "67b84999b1a8b1af5625b1eabe92146c5eb42932"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "message": "Merge branch \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux\n\n* \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux: (230 commits)\n  Revert \"tracing: Include module.h in define_trace.h\"\n  irq: don\u0027t put module.h into irq.h for tracking irqgen modules.\n  bluetooth: macroize two small inlines to avoid module.h\n  ip_vs.h: fix implicit use of module_get/module_put from module.h\n  nf_conntrack.h: fix up fallout from implicit moduleparam.h presence\n  include: replace linux/module.h with \"struct module\" wherever possible\n  include: convert various register fcns to macros to avoid include chaining\n  crypto.h: remove unused crypto_tfm_alg_modname() inline\n  uwb.h: fix implicit use of asm/page.h for PAGE_SIZE\n  pm_runtime.h: explicitly requires notifier.h\n  linux/dmaengine.h: fix implicit use of bitmap.h and asm/page.h\n  miscdevice.h: fix up implicit use of lists and types\n  stop_machine.h: fix implicit use of smp.h for smp_processor_id\n  of: fix implicit use of errno.h in include/linux/of.h\n  of_platform.h: delete needless include \u003clinux/module.h\u003e\n  acpi: remove module.h include from platform/aclinux.h\n  miscdevice.h: delete unnecessary inclusion of module.h\n  device_cgroup.h: delete needless include \u003clinux/module.h\u003e\n  net: sch_generic remove redundant use of \u003clinux/module.h\u003e\n  net: inet_timewait_sock doesnt need \u003clinux/module.h\u003e\n  ...\n\nFix up trivial conflicts (other header files, and  removal of the ab3550 mfd driver) in\n - drivers/media/dvb/frontends/dibx000_common.c\n - drivers/media/video/{mt9m111.c,ov6650.c}\n - drivers/mfd/ab3550-core.c\n - include/linux/dmaengine.h\n"
    },
    {
      "commit": "b4fdcb02f1e39c27058a885905bd0277370ba441",
      "tree": "fd4cfd1994f21f44afe5e7904681fb5ac09f81b8",
      "parents": [
        "044595d4e448305fbaec472eb7d22636d24e7d8c",
        "6dd9ad7df2019b1e33a372a501907db293ebcd0d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 04 17:06:58 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 04 17:06:58 2011 -0700"
      },
      "message": "Merge branch \u0027for-3.2/core\u0027 of git://git.kernel.dk/linux-block\n\n* \u0027for-3.2/core\u0027 of git://git.kernel.dk/linux-block: (29 commits)\n  block: don\u0027t call blk_drain_queue() if elevator is not up\n  blk-throttle: use queue_is_locked() instead of lockdep_is_held()\n  blk-throttle: Take blkcg-\u003elock while traversing blkcg-\u003epolicy_list\n  blk-throttle: Free up policy node associated with deleted rule\n  block: warn if tag is greater than real_max_depth.\n  block: make gendisk hold a reference to its queue\n  blk-flush: move the queue kick into\n  blk-flush: fix invalid BUG_ON in blk_insert_flush\n  block: Remove the control of complete cpu from bio.\n  block: fix a typo in the blk-cgroup.h file\n  block: initialize the bounce pool if high memory may be added later\n  block: fix request_queue lifetime handling by making blk_queue_cleanup() properly shutdown\n  block: drop @tsk from attempt_plug_merge() and explain sync rules\n  block: make get_request[_wait]() fail if queue is dead\n  block: reorganize throtl_get_tg() and blk_throtl_bio()\n  block: reorganize queue draining\n  block: drop unnecessary blk_get/put_queue() in scsi_cmd_ioctl() and blk_get_tg()\n  block: pass around REQ_* flags instead of broken down booleans during request alloc/free\n  block: move blk_throtl prototypes to block/blk.h\n  block: fix genhd refcounting in blkio_policy_parse_and_set()\n  ...\n\nFix up trivial conflicts due to \"mddev_t\" -\u003e \"struct mddev\" conversion\nand making the request functions be of type \"void\" instead of \"int\" in\n - drivers/md/{faulty.c,linear.c,md.c,md.h,multipath.c,raid0.c,raid1.c,raid10.c,raid5.c}\n - drivers/staging/zram/zram_drv.c\n"
    },
    {
      "commit": "43672a0784707d795556b1f93925da8b8e797d03",
      "tree": "5c92aabd211281300f89fc2e69e9ee7e58bcc449",
      "parents": [
        "2380078cdb7e6d520e33dcf834e0be979d542e48",
        "2e727c3ca1beff05f27b6207a795790f222bf8d8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 02 17:02:37 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 02 17:02:37 2011 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/linux-dm\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/steve/linux-dm:\n  dm: raid fix device status indicator when array initializing\n  dm log userspace: add log device dependency\n  dm log userspace: fix comment hyphens\n  dm: add thin provisioning target\n  dm: add persistent data library\n  dm: add bufio\n  dm: export dm get md\n  dm table: add immutable feature\n  dm table: add always writeable feature\n  dm table: add singleton feature\n  dm kcopyd: add dm_kcopyd_zero to zero an area\n  dm: remove superfluous smp_mb\n  dm: use local printk ratelimit\n  dm table: propagate non rotational flag\n"
    },
    {
      "commit": "daaa5f7cbee37dfc8464d350f1eacd6e94b278cc",
      "tree": "dec72cbeee1d5fbb169c21305510918818a0d45d",
      "parents": [
        "056075c76417b112b4924e7b6386fdc6dfc9ac03"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Fri May 27 15:50:58 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 19:31:19 2011 -0400"
      },
      "message": "md: Add in export.h for files using EXPORT_SYMBOL\n\nThese files were getting the defines for EXPORT_SYMBOL because\ndevice.h was including module.h.  But we are going to put an\nend to that.  So add the proper export.h include now.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "056075c76417b112b4924e7b6386fdc6dfc9ac03",
      "tree": "7326cbdb0f54f975b140e548bd4f4d6f4b3486cc",
      "parents": [
        "ec37d321b96621906337c4279c490e1b5893ecae"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Sun Jul 03 13:58:33 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 19:31:18 2011 -0400"
      },
      "message": "md: Add module.h to all files using it implicitly\n\nA pending cleanup will mean that module.h won\u0027t be implicitly\neverywhere anymore.  Make sure the modular drivers in md dir\nare actually calling out for \u003cmodule.h\u003e explicitly in advance.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "571109f5369efbd3f7d09b4e331c1aa4de3e411a",
      "tree": "747abcc3cae63c3e8fa279bf9b2e4b1929342769",
      "parents": [
        "839d8810747bbf39e0a5a7f223b67bffa7945f8d",
        "7fcc7c8acf0fba44d19a713207af7e58267c1179"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 15:21:29 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 15:21:29 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md:\n  md/raid10:  Fix bug when activating a hot-spare.\n"
    },
    {
      "commit": "2e727c3ca1beff05f27b6207a795790f222bf8d8",
      "tree": "d00c9aeea0173051fe3bbd4398697acab9ab61ca",
      "parents": [
        "5a25f0eb707bbb4a5aaaf19c933605a6dbaf77a5"
      ],
      "author": {
        "name": "Jonathan E Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Mon Oct 31 20:21:26 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:21:26 2011 +0000"
      },
      "message": "dm: raid fix device status indicator when array initializing\n\nWhen devices in a RAID array are not in-sync, they are supposed to be\nreported as such in the status output as an \u0027a\u0027 character, which means\n\"alive, but not in-sync\".  But when the entire array is rebuilt \u0027A\u0027 is\nbeing used, which is incorrect.  This patch corrects this to \u0027a\u0027.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5a25f0eb707bbb4a5aaaf19c933605a6dbaf77a5",
      "tree": "62f9af5013d252b0fdff5449b3adcaeadfff31aa",
      "parents": [
        "b89544575d0096735edc9b0ad187e635487905ad"
      ],
      "author": {
        "name": "Jonathan E Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Mon Oct 31 20:21:24 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:21:24 2011 +0000"
      },
      "message": "dm log userspace: add log device dependency\n\nAllow userspace dm log implementations to register their log device so it\nis no longer missing from the list of device dependencies.\n\nWhen device mapper targets use a device they normally call dm_get_device\nwhich includes it in the device list returned to userspace applications\nsuch as LVM through the DM_TABLE_DEPS ioctl.  Userspace log devices\ndon\u0027t use dm_get_device as userspace opens them so they are missing from\nthe list of dependencies.\n\nThis patch extends the DM_ULOG_CTR operation to allow userspace to\nrespond with the name of the log device (if appropriate) to be\nregistered via \u0027dm_get_device\u0027.  DM_ULOG_REQUEST_VERSION is incremented.\n\nThis is backwards compatible.  If the kernel and userspace log server\nhave both been updated, the new information will be passed down to the\nkernel and the device will be registered.  If the kernel is new, but\nthe log server is old, the log server will not pass down any device\ninformation and the kernel will simply bypass the device registration\nas before.  If the kernel is old but the log server is new, the log\nserver will see the old version number and not pass the device info.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b89544575d0096735edc9b0ad187e635487905ad",
      "tree": "8f5aa4a2d4e5e9d1b89935dbaa8d9192a87e6550",
      "parents": [
        "991d9fa02da0dd1f843dc011376965e0c8c6c9b5"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Mon Oct 31 20:21:22 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:21:22 2011 +0000"
      },
      "message": "dm log userspace: fix comment hyphens\n\nFix comments: clustered-disk needs a hyphen not an underscore.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "991d9fa02da0dd1f843dc011376965e0c8c6c9b5",
      "tree": "a64c94710246b77bb74cd77634581cea3d32cfe1",
      "parents": [
        "3241b1d3e0aaafbfcd320f4d71ade629728cc4f4"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "thornber@redhat.com",
        "time": "Mon Oct 31 20:21:18 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:21:18 2011 +0000"
      },
      "message": "dm: add thin provisioning target\n\nInitial EXPERIMENTAL implementation of device-mapper thin provisioning\nwith snapshot support.  The \u0027thin\u0027 target is used to create instances of\nthe virtual devices that are hosted in the \u0027thin-pool\u0027 target.  The\nthin-pool target provides data sharing among devices.  This sharing is\nmade possible using the persistent-data library in the previous patch.\n\nThe main highlight of this implementation, compared to the previous\nimplementation of snapshots, is that it allows many virtual devices to\nbe stored on the same data volume, simplifying administration and\nallowing sharing of data between volumes (thus reducing disk usage).\n\nAnother big feature is support for arbitrary depth of recursive\nsnapshots (snapshots of snapshots of snapshots ...).  The previous\nimplementation of snapshots did this by chaining together lookup tables,\nand so performance was O(depth).  This new implementation uses a single\ndata structure so we don\u0027t get this degradation with depth.\n\nFor further information and examples of how to use this, please read\nDocumentation/device-mapper/thin-provisioning.txt\n\nSigned-off-by: Joe Thornber \u003cthornber@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "3241b1d3e0aaafbfcd320f4d71ade629728cc4f4",
      "tree": "499461f724d4db3d7118641f4a20f5be23549edd",
      "parents": [
        "95d402f057f2e208e4631893f6cd4a59c7c05e41"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "thornber@redhat.com",
        "time": "Mon Oct 31 20:19:11 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:19:11 2011 +0000"
      },
      "message": "dm: add persistent data library\n\nThe persistent-data library offers a re-usable framework for the storage\nand management of on-disk metadata in device-mapper targets.\n\nIt\u0027s used by the thin-provisioning target in the next patch and in an\nupcoming hierarchical storage target.\n\nFor further information, please read\nDocumentation/device-mapper/persistent-data.txt\n\nSigned-off-by: Joe Thornber \u003cthornber@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "95d402f057f2e208e4631893f6cd4a59c7c05e41",
      "tree": "4edb6c01f62689617ee3098104c135ef2c43f0e2",
      "parents": [
        "3cf2e4ba74ca1bf5d8ad26cd18592f02b32964f5"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Oct 31 20:19:09 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:19:09 2011 +0000"
      },
      "message": "dm: add bufio\n\nThe dm-bufio interface allows you to do cached I/O on devices,\nholding recently-read blocks in memory and performing delayed writes.\n\nWe don\u0027t use buffer cache or page cache already present in the kernel, because:\n* we need to handle block sizes larger than a page\n* we can\u0027t allocate memory to perform reads or we\u0027d have deadlocks\n\nCurrently, when a cache is required, we limit its size to a fraction of\navailable memory.  Usage can be viewed and changed in\n/sys/module/dm_bufio/parameters/ .\n\nThe first user is thin provisioning, but more dm users are planned.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "3cf2e4ba74ca1bf5d8ad26cd18592f02b32964f5",
      "tree": "5520a8bcdbabc01956ce774724388e013b6f55f4",
      "parents": [
        "36a0456fbf2d9680bf9af81b39daf4a8e22cb1b8"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:19:06 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:19:06 2011 +0000"
      },
      "message": "dm: export dm get md\n\nExport dm_get_md() for the new thin provisioning target to use.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "36a0456fbf2d9680bf9af81b39daf4a8e22cb1b8",
      "tree": "a19af18640d538e8357c195e6b4c77d0f6c92391",
      "parents": [
        "cc6cbe141a20f6d876b161b60af38d93935bfa85"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:19:04 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:19:04 2011 +0000"
      },
      "message": "dm table: add immutable feature\n\nIntroduce DM_TARGET_IMMUTABLE to indicate that the target type cannot be mixed\nwith any other target type, and once loaded into a device, it cannot be\nreplaced with a table containing a different type.\n\nThe thin provisioning pool device will use this.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "cc6cbe141a20f6d876b161b60af38d93935bfa85",
      "tree": "82fbbc48815503683b434c74b7eb18c15960f4f9",
      "parents": [
        "3791e2fc0e4b40d4188e79b0a99bfa6bce714a10"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:19:02 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:19:02 2011 +0000"
      },
      "message": "dm table: add always writeable feature\n\nAdd a target feature flag DM_TARGET_ALWAYS_WRITEABLE to indicate that a target\ndoes not support read-only mode.\n\nThe initial implementation of the thin provisioning target uses this.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "3791e2fc0e4b40d4188e79b0a99bfa6bce714a10",
      "tree": "2dc67f0593e1cb1f3dc07ff9883a03fe9edb4b2a",
      "parents": [
        "7f06965390e4a10fb6906c886324bfd0a96961be"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:19:00 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:19:00 2011 +0000"
      },
      "message": "dm table: add singleton feature\n\nIntroduce the concept of a singleton table which contains exactly one target.\n\nIf a target type sets the DM_TARGET_SINGLETON feature bit device-mapper\nwill ensure that any table that includes that target contains no others.\n\nThe thin provisioning pool target uses this.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "7f06965390e4a10fb6906c886324bfd0a96961be",
      "tree": "5a6fd96cd56fb9d80bf1a40110ebfcdb5a8a7aa3",
      "parents": [
        "fbdc86f3bd597e108fa03d998132d04fcfe1d669"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Oct 31 20:18:58 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:18:58 2011 +0000"
      },
      "message": "dm kcopyd: add dm_kcopyd_zero to zero an area\n\nThis patch introduces dm_kcopyd_zero() to make it easy to use\nkcopyd to write zeros into the requested areas instead\ninstead of copying.  It is implemented by passing a NULL\ncopying source to dm_kcopyd_copy().\n\nThe forthcoming thin provisioning target uses this.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fbdc86f3bd597e108fa03d998132d04fcfe1d669",
      "tree": "3d0ad8ea43576c0b57523a71d345a209f6ffd6fa",
      "parents": [
        "71a16736a15e3fd11d283c42aa86bf704f6d25ff"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Mon Oct 31 20:18:56 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:18:56 2011 +0000"
      },
      "message": "dm: remove superfluous smp_mb\n\nSince set_current_state() contains a memory barrier in it,\nan additional barrier isn\u0027t needed.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "71a16736a15e3fd11d283c42aa86bf704f6d25ff",
      "tree": "1c6c54e8229b422756ec775cc04ad0066d1ad0c8",
      "parents": [
        "4693c9668fdcec229825b3763876b4744f9e6d5e"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Mon Oct 31 20:18:54 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:18:54 2011 +0000"
      },
      "message": "dm: use local printk ratelimit\n\nprintk_ratelimit() shares global ratelimiting state with all\nother subsystems, so its usage is discouraged. Instead,\ndefine and use dm\u0027s local state.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4693c9668fdcec229825b3763876b4744f9e6d5e",
      "tree": "683d07005d06c3e25bbec25b910567275f0bb9d1",
      "parents": [
        "c3b92c8787367a8bb53d57d9789b558f1295cc96"
      ],
      "author": {
        "name": "Mandeep Singh Baines",
        "email": "msb@chromium.org",
        "time": "Mon Oct 31 20:18:50 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:18:50 2011 +0000"
      },
      "message": "dm table: propagate non rotational flag\n\nAllow QUEUE_FLAG_NONROT to propagate up the device stack if all\nunderlying devices are non-rotational.  Tools like ureadahead will\nschedule IOs differently based on the rotational flag.\n\nWith this patch, I see boot time go from 7.75 s to 7.46 s on my device.\n\nSuggested-by: J. Richard Barnette \u003cjrbarnette@chromium.org\u003e\nSigned-off-by: Mandeep Singh Baines \u003cmsb@chromium.org\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Jens Axboe \u003cjaxboe@fusionio.com\u003e\nCc: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nCc: dm-devel@redhat.com\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "7fcc7c8acf0fba44d19a713207af7e58267c1179",
      "tree": "ce4b03fa3dfc07fb19b4d6c3653ba41ec1f926db",
      "parents": [
        "d890fa2b0586b6177b119643ff66932127d58afa"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 31 12:59:44 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 31 12:59:44 2011 +1100"
      },
      "message": "md/raid10:  Fix bug when activating a hot-spare.\n\nThis is a fairly serious bug in RAID10.\n\nWhen a RAID10 array is degraded and a hot-spare is activated, the\nspare does not take up the empty slot, but rather replaces the first\nworking device.\nThis is likely to make the array non-functional.   It would normally\nbe possible to recover the data, but that would need care and is not\nguaranteed.\n\nThis bug was introduced in commit\n   2bb77736ae5dca0a189829fbb7379d43364a9dac\nwhich first appeared in 3.1.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c3ae1f33569e06984f0426a7834ff63251d44d84",
      "tree": "0d7f6f6b49c331e440850cf2e8a7bc0cf220f8bc",
      "parents": [
        "c28cfd60e4ec3f494b73ef7d6c661f5f491cd84f",
        "d890fa2b0586b6177b119643ff66932127d58afa"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 26 21:39:42 2011 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 26 21:39:42 2011 +0200"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md: (34 commits)\n  md: Fix some bugs in recovery_disabled handling.\n  md/raid5: fix bug that could result in reads from a failed device.\n  lib/raid6: Fix filename emitted in generated code\n  md.c: trivial comment fix\n  MD: Allow restarting an interrupted incremental recovery.\n  md: clear In_sync bit on devices added to an active array.\n  md: add proper write-congestion reporting to RAID1 and RAID10.\n  md: rename \"mdk_personality\" to \"md_personality\"\n  md/bitmap remove fault injection options.\n  md/raid5: typedef removal: raid5_conf_t -\u003e struct r5conf\n  md/raid1: typedef removal: conf_t -\u003e struct r1conf\n  md/raid10: typedef removal: conf_t -\u003e struct r10conf\n  md/raid0: typedef removal: raid0_conf_t -\u003e struct r0conf\n  md/multipath: typedef removal: multipath_conf_t -\u003e struct mpconf\n  md/linear: typedef removal: linear_conf_t -\u003e struct linear_conf\n  md/faulty: remove typedef: conf_t -\u003e struct faulty_conf\n  md/linear: remove typedefs: dev_info_t -\u003e struct dev_info\n  md: remove typedefs: mirror_info_t -\u003e struct mirror_info\n  md: remove typedefs: r10bio_t -\u003e struct r10bio and r1bio_t -\u003e struct r1bio\n  md: remove typedefs: mdk_thread_t -\u003e struct md_thread\n  ...\n"
    },
    {
      "commit": "d890fa2b0586b6177b119643ff66932127d58afa",
      "tree": "48dfb1c192274002fc045996f49915a4d9af3bf8",
      "parents": [
        "355840e7a7e56bb2834fd3b0da64da5465f8aeaa"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 26 11:54:39 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 26 11:54:39 2011 +1100"
      },
      "message": "md: Fix some bugs in recovery_disabled handling.\n\nIn 3.0 we changed the way recovery_disabled was handle so that instead\nof testing against zero, we test an mddev-\u003e value against a conf-\u003e\nvalue.\nTwo problems:\n  1/ one place in raid1 was missed and still sets to \u00271\u0027.\n  2/ We didn\u0027t explicitly set the conf-\u003e value at array creation\n     time.\n     It defaulted to \u00270\u0027 just like the mddev value does so they\n     could appear equal and thus disable recovery.\n     This did not affect normal \u0027md\u0027 as it calls bind_rdev_to_array\n     which changes the mddev value.  However the dmraid interface\n     doesn\u0027t call this and so doesn\u0027t change -\u003erecovery_disabled; so at\n     array start all recovery is incorrectly disabled.\n\nSo initialise the \u0027conf\u0027 value to one less that the mddev value, so\nthe will only be the same when explicitly set that way.\n\nReported-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown  \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "355840e7a7e56bb2834fd3b0da64da5465f8aeaa",
      "tree": "8ba816b2db3b96872f744c476c3d3d0d3f12fd23",
      "parents": [
        "bd860c53d4f9cad520d233e1ba690aaacfb39e9b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 26 10:31:04 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 26 10:31:04 2011 +1100"
      },
      "message": "md/raid5: fix bug that could result in reads from a failed device.\n\nThis bug was introduced in 415e72d034c50520ddb7ff79e7d1792c1306f0c9\nwhich was in 2.6.36.\n\nThere is a small window of time between when a device fails and when\nit is removed from the array.  During this time we might still read\nfrom it, but we won\u0027t write to it - so it is possible that we could\nread stale data.\n\nWe didn\u0027t need the test of \u0027Faulty\u0027 before because the test on\nIn_sync is sufficient.  Since we started allowing reads from the early\npart of non-In_sync devices we need a test on Faulty too.\n\nThis is suitable for any kernel from 2.6.36 onwards, though the patch\nmight need a bit of tweaking in 3.0 and earlier.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9562ad9ab36df7ccef920d119f3b5100025db95f",
      "tree": "b5e32ca469cbefca4122c1a08db80cdb12e655fb",
      "parents": [
        "e890413af4c2dfebf5432ef30cc70cb11dad3213"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Mon Oct 24 16:11:30 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Oct 24 16:11:30 2011 +0200"
      },
      "message": "block: Remove the control of complete cpu from bio.\n\nbio originally has the functionality to set the complete cpu, but\nit is broken.\n\nChirstoph said that \"This code is unused, and from the all the\ndiscussions lately pretty obviously broken.  The only thing keeping\nit serves is creating more confusion and possibly more bugs.\"\n\nAnd Jens replied with \"We can kill bio_set_completion_cpu(). I\u0027m fine\nwith leaving cpu control to the request based drivers, they are the\nonly ones that can toggle the setting anyway\".\n\nSo this patch tries to remove all the work of controling complete cpu\nfrom a bio.\n\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "d136f2efdf3a4faba47f58603f8ace2207234d75",
      "tree": "0b2e94980503cdae7f326219d792d98b10e54a0f",
      "parents": [
        "899e3ee404961a90b828ad527573aaaac39f0ab1"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sun Oct 23 20:55:17 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sun Oct 23 20:55:17 2011 +0100"
      },
      "message": "dm kcopyd: fix job_pool leak\n\nFix memory leak introduced by commit a6e50b409d3f9e0833e69c3c9cca822e8fa4adbb\n(dm snapshot: skip reading origin when overwriting complete chunk).\n\nWhen allocating a set of jobs from kc-\u003ejob_pool, job-\u003emaster_job must be\nset (to point to itself) so that the mempool item gets freed when the\nmaster_job completes.\n\nmaster_job was introduced by commit c6ea41fbbe08f270a8edef99dc369faf809d1bd6\n(dm kcopyd: preallocate sub jobs to avoid deadlock)\n\nReported-by: Michael Leun \u003cml@newton.leun.net\u003e\nCc: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5c04b426f2e8b46cfc7969a35b2631063a3c646c",
      "tree": "2d27d9f5d2fe5d5e8fbc01a467ec58bcb50235c1",
      "parents": [
        "499337bb6511e665a236a6a947f819d98ea340c6",
        "899e3ee404961a90b828ad527573aaaac39f0ab1"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:30:42 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:30:42 2011 +0200"
      },
      "message": "Merge branch \u0027v3.1-rc10\u0027 into for-3.2/core\n\nConflicts:\n\tblock/blk-core.c\n\tinclude/linux/blkdev.h\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "751e67ca2e2790e9b9b187557d5ba6f96b6c4a7e",
      "tree": "029525eb09d78e63b97d151a0d2e1871d6766885",
      "parents": [
        "d70ed2e4fafdbef0800e73942482bb075c21578b"
      ],
      "author": {
        "name": "Chris Dunlop",
        "email": "chris@onthe.net.au",
        "time": "Wed Oct 19 16:48:26 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 19 17:15:15 2011 +1100"
      },
      "message": "md.c: trivial comment fix\n\nTrivial comment fix\n\nSigned-off-by: Chris Dunlop \u003cchris@onthe.net.au\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d70ed2e4fafdbef0800e73942482bb075c21578b",
      "tree": "a0fb7f9b6993b44e37dc2f724df251bd6fcffae3",
      "parents": [
        "d30519fc59c5cc2f7772fa67b16b1a2426d36c95"
      ],
      "author": {
        "name": "Andrei Warkentin",
        "email": "andreiw@vmware.com",
        "time": "Tue Oct 18 12:16:48 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 18 12:16:48 2011 +1100"
      },
      "message": "MD: Allow restarting an interrupted incremental recovery.\n\nIf an incremental recovery was interrupted, a subsequent\nre-add will result in a full recovery, even though an\nincremental should be possible (seen with raid1).\n\nSolve this problem by not updating the superblock on the\nrecovering device until array is not degraded any longer.\n\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrei Warkentin \u003candreiw@vmware.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d30519fc59c5cc2f7772fa67b16b1a2426d36c95",
      "tree": "3aae0a21c16816e1989ea90db23a5b123a5a6a12",
      "parents": [
        "34db0cd60f8a1f4ab73d118a8be3797c20388223"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 18 12:13:47 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 18 12:13:47 2011 +1100"
      },
      "message": "md: clear In_sync bit on devices added to an active array.\n\nWhen we add a device to an active array it can be meaningful to set\nthe \u0027insync\u0027 flag.  This indicates that the device is in-sync with the\narray except for locations recorded in the bitmap.\nA bitmap-based recovery can then bring it completely in-sync.\n\nInternally we move that flag to \u0027saved_raid_disk\u0027 but forgot to clear\nIn_sync like we do in add_new_disk.\n\nSo clear In_sync after moving its value to saved_raid_disk.\n\nReported-by: Andrei Warkentin \u003candreiw@vmware.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "34db0cd60f8a1f4ab73d118a8be3797c20388223",
      "tree": "45d1d629d6b9195d47d30980595686c9a3ee92f9",
      "parents": [
        "84fc4b56db85cb9e05326424049973a2036c9940"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:50:01 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:50:01 2011 +1100"
      },
      "message": "md: add proper write-congestion reporting to RAID1 and RAID10.\n\nRAID1 and RAID10 handle write requests by queuing them for handling by\na separate thread.  This is because when a write-intent-bitmap is\nactive we might need to update the bitmap first, so it is good to\nqueue a lot of writes, then do one big bitmap update for them all.\n\nHowever writeback request devices to appear to be congested after a\nwhile so it can make some guesstimate of throughput.  The infinite\nqueue defeats that (note that RAID5 has already has a finite queue so\nit doesn\u0027t suffer from this problem).\n\nSo impose a limit on the number of pending write requests.  By default\nit is 1024 which seems to be generally suitable.  Make it configurable\nvia module option just in case someone finds a regression.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "84fc4b56db85cb9e05326424049973a2036c9940",
      "tree": "b8f942766ad620d63da92c24df56032168879253",
      "parents": [
        "29d3247ea2274bca0d0b7f41fcf3b82e0a8bc44c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:58 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:58 2011 +1100"
      },
      "message": "md: rename \"mdk_personality\" to \"md_personality\"\n\n\"mdk\" doesn\u0027t mean anything any more.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "29d3247ea2274bca0d0b7f41fcf3b82e0a8bc44c",
      "tree": "703fae8142e179a6007390a43ff48e18321f848c",
      "parents": [
        "d1688a6d5515f1900af76a963b4bb6d9a6554cfa"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:56 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:56 2011 +1100"
      },
      "message": "md/bitmap remove fault injection options.\n\nThese are too hard to use to be much more than noise.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d1688a6d5515f1900af76a963b4bb6d9a6554cfa",
      "tree": "2ed2b1001804b6982697c3785f06580a4e84e31b",
      "parents": [
        "e8096360476689898f038feebf5b352c9ec43a2a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:52 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:52 2011 +1100"
      },
      "message": "md/raid5: typedef removal: raid5_conf_t -\u003e struct r5conf\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e8096360476689898f038feebf5b352c9ec43a2a",
      "tree": "e7570a5fc3cb0e40f29c55470a2261e03c44a8d1",
      "parents": [
        "e879a8793f915aa7933364d962d2435bd71de462"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:05 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:05 2011 +1100"
      },
      "message": "md/raid1: typedef removal: conf_t -\u003e struct r1conf\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e879a8793f915aa7933364d962d2435bd71de462",
      "tree": "bf62ccd52171bdaebd1d09b98f049950e39dd198",
      "parents": [
        "e373ab109172abc2d821bd3b5c1b400acddef5a5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:02 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:02 2011 +1100"
      },
      "message": "md/raid10: typedef removal: conf_t -\u003e struct r10conf\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e373ab109172abc2d821bd3b5c1b400acddef5a5",
      "tree": "48ca1b8ded6ec90a47015ab7316fe8cadb9f8d05",
      "parents": [
        "69724e28ca99990a8f0b5370bb946d7704936d67"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:59 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:59 2011 +1100"
      },
      "message": "md/raid0: typedef removal: raid0_conf_t -\u003e struct r0conf\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "69724e28ca99990a8f0b5370bb946d7704936d67",
      "tree": "b811de8d2d76a7976a9ef26d2bffddb7289ae495",
      "parents": [
        "e849b9381f726c0fa20c4e7b7139b936df777084"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:57 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:57 2011 +1100"
      },
      "message": "md/multipath: typedef removal: multipath_conf_t -\u003e struct mpconf\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    }
  ],
  "next": "e849b9381f726c0fa20c4e7b7139b936df777084"
}
