)]}'
{
  "log": [
    {
      "commit": "30b8aa9172dfeaac6d77897c67ee9f9fc574cdbb",
      "tree": "d950c723e17399fefd104c5eddcf514d7f3c240a",
      "parents": [
        "ed209584c38fb74b7eecc03e5b1bfe674e591bd8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 24 10:23:16 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 24 10:23:16 2012 +1000"
      },
      "message": "md: fix possible corruption of array metadata on shutdown.\n\ncommit c744a65c1e2d59acc54333ce8\n  md: don\u0027t set md arrays to readonly on shutdown.\n\nremoved the possibility of a \u0027BUG\u0027 when data is written to an array\nthat has just been switched to read-only, but also introduced the\npossibility that the array metadata could be corrupted.\n\nIf, when md_notify_reboot gets the mddev lock, the array is\nin a state where it is assembled but hasn\u0027t been started (as can\nhappen if the personality module is not available, or in other unusual\nsituations), then incorrect metadata will be written out making it\nimpossible to re-assemble the array.\n\nSo only call __md_stop_writes() if the array has actually been\nactivated.\n\nThis patch is needed for any stable kernel which has had the above\ncommit applied.\n\nCc: stable@vger.kernel.org\nReported-by: Christoph Nelles \u003cevilazrael@evilazrael.de\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ed209584c38fb74b7eecc03e5b1bfe674e591bd8",
      "tree": "a232bb4fbf3a2e143ad57dfa3acad92418c5b12c",
      "parents": [
        "a9ad8526bb1af0741a5c0e01155dac08e7bdde60"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 24 10:23:14 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 24 10:23:14 2012 +1000"
      },
      "message": "md: don\u0027t call -\u003eadd_disk unless there is good reason.\n\nCommit 7bfec5f35c68121e7b18\n\n   md/raid5: If there is a spare and a want_replacement device, start replacement.\n\ncause md_check_recovery to call -\u003eadd_disk much more often.\nInstead of only when the array is degraded, it is now called whenever\nmd_check_recovery finds anything useful to do, which includes\nupdating the metadata for clean\u003c-\u003edirty transition.\nThis causes unnecessary work, and causes info messages from -\u003eadd_disk\nto be reported much too often.\n\nSo refine md_check_recovery to only do any actual recovery checking\n(including -\u003eadd_disk) if MD_RECOVERY_NEEDED is set.\n\nThis fix is suitable for 3.3.y:\n\nCc: stable@vger.kernel.org\nReported-by: Jan Ceuleers \u003cjan.ceuleers@computer.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ecb178bb2b154a40cfae9fa4c42e62ccfa81ac6b",
      "tree": "a3a6ff71d28069f6eef78a4f24f7f9c385a086a7",
      "parents": [
        "d0962936bff659d20522555b517582a2715fd23f"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Mon Mar 19 12:46:42 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:42 2012 +1100"
      },
      "message": "md: Add judgement bb-\u003eunacked_exist in function md_ack_all_badblocks().\n\nIf there are no unacked bad blocks, then there is no point searching\nfor them to acknowledge them.\n\n\nSigned-off-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d0962936bff659d20522555b517582a2715fd23f",
      "tree": "dc9654b2e2c7b7db2b8f2a14f829d5f807c7342e",
      "parents": [
        "61a0d80ce4ab5b4fb9ecb38f1fb19654778b71ed"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:41 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:41 2012 +1100"
      },
      "message": "md: fix clearing of the \u0027changed\u0027 flags for the bad blocks list.\n\nIn super_1_sync (the first hunk) we need to clear \u0027changed\u0027 before\nchecking read_seqretry(), otherwise we might race with other code\nadding a bad block and so won\u0027t retry later.\n\nIn md_update_sb (the second hunk), in the case where there is no\nmetadata (neither persistent nor external), we treat any bad blocks as\nan error.  However we need to clear the \u0027changed\u0027 flag before calling\nmd_ack_all_badblocks, else it won\u0027t do anything.\n\nThis patch is suitable for -stable release 3.0 and later.\n\nCc: stable@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "57148964d946614ffc6621539096ded1e7d896ab",
      "tree": "d4bdadf58d740fcdb3c65063a5706cc3902f2b9b",
      "parents": [
        "4ba97dff719b4cbeb7a4f6beddd2feb7404102d8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:40 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:40 2012 +1100"
      },
      "message": "md/bitmap: move printing of bitmap status to bitmap.c\n\nThe part of /proc/mdstat which describes the bitmap should really\nbe generated by code in bitmap.c.  So move it there.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "050b66152f87c79e8d66aed0e7996f9336462d5f",
      "tree": "44d100c2eadf2a56794e7b526abeb21d1019baa1",
      "parents": [
        "ba13da47ffa202784355561f72160a41350e95cc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:39 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:39 2012 +1100"
      },
      "message": "md/raid10: handle merge_bvec_fn in member devices.\n\nCurrently we don\u0027t honour merge_bvec_fn in member devices so if there\nis one, we force all requests to be single-page at most.\nThis is not ideal.\n\nSo enhance the raid10 merge_bvec_fn to check that function in children\nas well.\n\nThis introduces a small problem.  There is no locking around calls\nthe -\u003emerge_bvec_fn and subsequent calls to -\u003emake_request.  So a\ndevice added between these could end up getting a request which\nviolates its merge_bvec_fn.\n\nCurrently the best we can do is synchronize_sched().  This will work\nproviding no preemption happens.  If there is preemption, we just\nhave to hope that new devices are largely consistent with old devices.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "dafb20fa34320a472deb7442f25a0c086e0feb33",
      "tree": "2ff501805f8a6d08119f1f1a7248f579d52e491b",
      "parents": [
        "d6b42dcb995e6acd7cc276774e751ffc9f0ef4bf"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:39 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:39 2012 +1100"
      },
      "message": "md: tidy up rdev_for_each usage.\n\nmd.h has an \u0027rdev_for_each()\u0027 macro for iterating the rdevs in an\nmddev.  However it uses the \u0027safe\u0027 version of list_for_each_entry,\nand so requires the extra variable, but doesn\u0027t include \u0027safe\u0027 in the\nname, which is useful documentation.\n\nConsequently some places use this safe version without needing it, and\nmany use an explicity list_for_each entry.\n\nSo:\n - rename rdev_for_each to rdev_for_each_safe\n - create a new rdev_for_each which uses the plain\n   list_for_each_entry,\n - use the \u0027safe\u0027 version only where needed, and convert all other\n   list_for_each_entry calls to use rdev_for_each.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c744a65c1e2d59acc54333ce80a5b0702a98010b",
      "tree": "c76ff42e8f799030636d07c82879cc2bef7798db",
      "parents": [
        "dc10c643e8a8d008fd16dd6706e9e0018eadf8d2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:37 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:37 2012 +1100"
      },
      "message": "md: don\u0027t set md arrays to readonly on shutdown.\n\nIt seems that with recent kernel, writeback can still be happening\nwhile shutdown is happening, and consequently data can be written\nafter the md reboot notifier switches all arrays to read-only.\nThis causes a BUG.\n\nSo don\u0027t switch them to read-only - just mark them clean and\nset \u0027safemode\u0027 to \u00272\u0027 which mean that immediately after any\nwrite the array will be switch back to \u0027clean\u0027.\n\nThis could result in the shutdown happening when array is marked\ndirty, thus forcing a resync on reboot.  However if you reboot\nwithout performing a \"sync\" first, you get to keep both halves.\n\nThis is suitable for any stable kernel (though there might be some\nconflicts with obvious fixes in earlier kernels).\n\nCc: stable@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "2b8bf3451d1e3133ebc3998721d14013a6c27114",
      "tree": "6ad9afb9124d5eb865d513ec3f30259231075a8f",
      "parents": [
        "fd01b88c75a718020ff77e7f560d33835e9b58de"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:23 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:23 2011 +1100"
      },
      "message": "md: remove typedefs: mdk_thread_t -\u003e struct md_thread\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fd01b88c75a718020ff77e7f560d33835e9b58de",
      "tree": "c455d5adefd58f3263dcf265bb8ba2024523b106",
      "parents": [
        "3cb03002000f133f9f97269edefd73611eafc873"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:47:53 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:47:53 2011 +1100"
      },
      "message": "md: remove typedefs: mddev_t -\u003e struct mddev\n\nHaving mddev_t and \u0027struct mddev_s\u0027 is ugly and not preferred\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3cb03002000f133f9f97269edefd73611eafc873",
      "tree": "77fdb146666298b33aaeef0c05f082b6f82840fe",
      "parents": [
        "50de8df4abca1b27dbf7b2f81a56451bd8b5a7d8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:45:26 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:45:26 2011 +1100"
      },
      "message": "md: removing typedefs:  mdk_rdev_t -\u003e struct md_rdev\n\nThe typedefs are just annoying. \u0027mdk\u0027 probably refers to \u0027md_k.h\u0027\nwhich used to be an include file that defined this thing.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "36a4e1fe0f454146724c174bf7c1e8e76297a212",
      "tree": "57f0de83fda98e5ae1b4f66d5e993ca27386a793",
      "parents": [
        "bdc04e6b15f70a8f96d8cdfe21df159a6466b49a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:23:17 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:23:17 2011 +1100"
      },
      "message": "md: remove PRINTK and dprintk debugging and use pr_debug\n\nBeing able to dynamically enable these make them much more useful.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2dba6a911c284603d2085fec1e2d3c142f58a010",
      "tree": "8db93ad2131afd519b9d618f12841ec5d981c082",
      "parents": [
        "7e841526263b3e0042a423513147dfd06c8e998d"
      ],
      "author": {
        "name": "Daniel P. Berrange",
        "email": "berrange@redhat.com",
        "time": "Fri Sep 23 10:40:45 2011 +0100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Sep 23 19:54:04 2011 +1000"
      },
      "message": "md: don\u0027t delay reboot by 1 second if no MD devices exist\n\nThe md_notify_reboot() method includes a call to mdelay(1000),\nto deal with \"exotic SCSI devices\" which are too volatile on\nreboot. The delay is unconditional. Even if the machine does\nnot have any block devices, let alone MD devices, the kernel\nshutdown sequence is slowed down.\n\n1 second does not matter much with physical hardware, but with\ncertain virtualization use cases any wasted time in the bootup\n\u0026 shutdown sequence counts for alot.\n\n* drivers/md/md.c: md_notify_reboot() - only impose a delay if\n  there was at least one MD device to be stopped during reboot\n\nSigned-off-by: Daniel P. Berrange \u003cberrange@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "01f96c0a9922cd9919baf9d16febdf7016177a12",
      "tree": "a877fe509c4ef0db5252b7192df56009c1d06d6f",
      "parents": [
        "27a7b260f71439c40546b43588448faac01adb93"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 21 15:30:20 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 21 15:30:20 2011 +1000"
      },
      "message": "md: Avoid waking up a thread after it has been freed.\n\nTwo related problems:\n\n1/ some error paths call \"md_unregister_thread(mddev-\u003ethread)\"\n   without subsequently clearing -\u003ethread.  A subsequent call\n   to mddev_unlock will try to wake the thread, and crash.\n\n2/ Most calls to md_wakeup_thread are protected against the thread\n   disappeared either by:\n      - holding the -\u003emutex\n      - having an active request, so something else must be keeping\n        the array active.\n   However mddev_unlock calls md_wakeup_thread after dropping the\n   mutex and without any certainty of an active request, so the\n   -\u003ethread could theoretically disappear.\n   So we need a spinlock to provide some protections.\n\nSo change md_unregister_thread to take a pointer to the thread\npointer, and ensure that it always does the required locking, and\nclears the pointer properly.\n\nReported-by: \"Moshe Melnikov\" \u003cmoshe@zadarastorage.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\ncc: stable@kernel.org\n"
    },
    {
      "commit": "5a7bbad27a410350e64a2d7f5ec18fc73836c14f",
      "tree": "3447cd62dbcbd77b4071e2eb7576f1d7632ef2d3",
      "parents": [
        "c20e8de27fef9f59869c81c288ad6cf28200e00c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Sep 12 12:12:01 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Sep 12 12:12:01 2011 +0200"
      },
      "message": "block: remove support for bio remapping from -\u003emake_request\n\nThere is very little benefit in allowing to let a -\u003emake_request\ninstance update the bios device and sector and loop around it in\n__generic_make_request when we can archive the same through calling\ngeneric_make_request from the driver and letting the loop in\ngeneric_make_request handle it.\n\nNote that various drivers got the return value from -\u003emake_request and\nreturned non-zero values for errors.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "27a7b260f71439c40546b43588448faac01adb93",
      "tree": "80fdd39a446f93fa84a355cf4d0118244b4d7fd6",
      "parents": [
        "079fa166a2874985ae58b2e21e26e1cbc91127d4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Sep 10 17:21:28 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Sep 10 17:21:28 2011 +1000"
      },
      "message": "md: Fix handling for devices from 2TB to 4TB in 0.90 metadata.\n\n0.90 metadata uses an unsigned 32bit number to count the number of\nkilobytes used from each device.\nThis should allow up to 4TB per device.\nHowever we multiply this by 2 (to get sectors) before casting to a\nlarger type, so sizes above 2TB get truncated.\n\nAlso we allow rdev-\u003esectors to be larger than 4TB, so it is possible\nfor the array to be resized larger than the metadata can handle.\nSo make sure rdev-\u003esectors never exceeds 4TB when 0.90 metadata is in\nused.\n\nAlso the sanity check at the end of super_90_load should include level\n1 as it used -\u003esize too. (RAID0 and Linear don\u0027t use -\u003esize at all).\n\nReported-by: Pim Zandbergen \u003cP.Zandbergen@macroscoop.nl\u003e\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7da64a0abc3b2c6cbd3521672e9bb74dd560bb89",
      "tree": "1b17033fe40a2b29c7e4d6a2f200f54f39514a4d",
      "parents": [
        "1b6afa17581027218088a18a9ceda600e0ddba7a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 30 16:20:17 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 30 16:20:17 2011 +1000"
      },
      "message": "md: fix clearing of \u0027blocked\u0027 flag in the presence of bad blocks.\n\nWhen the \u0027blocked\u0027 flag on a device is cleared while there are\nunacknowledged bad blocks we must fail the device.  This is needed for\nbackwards compatability of the interface.\n\nThe code currently uses the wrong test for \"unacknowledged bad blocks\nexist\".  Change it to the right test.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a5bf4df0c88b88d34b6f0e3bc8a402dac7d14611",
      "tree": "40296244aa28ddff0360a1a57878a99926243620",
      "parents": [
        "aeb9b211849621f592288ed5ad694de9eeaae87a"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Thu Aug 25 14:43:34 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 25 14:43:34 2011 +1000"
      },
      "message": "md: use REQ_NOIDLE flag in md_super_write()\n\nQueue idling is used for the anticipation of immediate\nsequencial I/O\u0027s but md_super_write() is a kind of one-\nshot operation, coupled with md_super_wait(), so the\nidling in this case will be just a waste of time.\n\nSpecifying REQ_NOIDLE prevents it. Instead of adding\nthe flag to submit_bio() directly, use pre-defined\nmacro WRITE_FLUSH_FUA.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "aeb9b211849621f592288ed5ad694de9eeaae87a",
      "tree": "affa418deafe2f218dc84e4aeb6ed4bbaf85d3e5",
      "parents": [
        "5ef56c8fecedf403a346d02140e52a072d693d6b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 25 14:43:08 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 25 14:43:08 2011 +1000"
      },
      "message": "md: ensure changes to \u0027write-mostly\u0027 are reflected in metadata.\n\nThe \u0027write-mostly\u0027 flag can be changed through sysfs.\nWith 0.90 metadata, those changes are reflected in the metadata.\nFor 1.x metadata, they aren\u0027t.\n\nSo fix super_1_sync to record \u0027write-mostly\u0027 status.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5ef56c8fecedf403a346d02140e52a072d693d6b",
      "tree": "1f121fe5e4db61364c352e7ffe2293a1cc20e9a9",
      "parents": [
        "14c62e78dc1379185515be41903c4a667efc6d54"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 25 14:42:51 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 25 14:42:51 2011 +1000"
      },
      "message": "md: report failure if a \u0027set faulty\u0027 request doesn\u0027t.\n\nSometimes a device will refuse to be set faulty.  e.g. RAID1 will\nnever let the last working device become faulty.\n\nSo check if \"md_error()\" did manage to set the faulty flag and fail\nwith EBUSY if it didn\u0027t.\n\nResolves-Debian-Bug: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug\u003d601198\nReported-by: Mike Hommey \u003cmh+reportbug@glandium.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6140333d3656f62ac7e6a5af87e7fe92cfb8d655",
      "tree": "d96f7ad2196b4383f5ca4396c956e24c82b2952c",
      "parents": [
        "6f56c218666b5c7eff354364357307d18c10058b",
        "58c54fcca3bac5bf9290cfed31c76e4c4bfbabaf"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 28 05:50:27 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 28 05:50:27 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: (75 commits)\n  md/raid10: handle further errors during fix_read_error better.\n  md/raid10: Handle read errors during recovery better.\n  md/raid10: simplify read error handling during recovery.\n  md/raid10: record bad blocks due to write errors during resync/recovery.\n  md/raid10:  attempt to fix read errors during resync/check\n  md/raid10:  Handle write errors by updating badblock log.\n  md/raid10: clear bad-block record when write succeeds.\n  md/raid10: avoid writing to known bad blocks on known bad drives.\n  md/raid10 record bad blocks as needed during recovery.\n  md/raid10: avoid reading known bad blocks during resync/recovery.\n  md/raid10 - avoid reading from known bad blocks - part 3\n  md/raid10: avoid reading from known bad blocks - part 2\n  md/raid10: avoid reading from known bad blocks - part 1\n  md/raid10: Split handle_read_error out from raid10d.\n  md/raid10: simplify/reindent some loops.\n  md/raid5: Clear bad blocks on successful write.\n  md/raid5.  Don\u0027t write to known bad block on doubtful devices.\n  md/raid5: write errors should be recorded as bad blocks if possible.\n  md/raid5: use bad-block log to improve handling of uncorrectable read errors.\n  md/raid5: avoid reading from known bad blocks.\n  ...\n"
    },
    {
      "commit": "e875ecea266a543e643b19e44cf472f1412708f9",
      "tree": "b602d08f7aa4a743d3c27ad55e347d36991f0814",
      "parents": [
        "40c356ce5ad1a6be817825e1da1bc7494349cc6d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:24 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:24 2011 +1000"
      },
      "message": "md/raid10 record bad blocks as needed during recovery.\n\nWhen recovering one or more devices, if all the good devices have\nbad blocks we should record a bad block on the device being rebuilt.\n\nIf this fails, we need to abort the recovery.\n\nTo ensure we don\u0027t think that we aborted later than we actually did,\nwe need to move the check for MD_RECOVERY_INTR earlier in md_do_sync,\nin particular before mddev-\u003ecurr_resync is updated.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "de393cdea66cbd63c90725663f400c76faf1b255",
      "tree": "6a2bf37bee98bf7de42856f904bd23c81e082f8e",
      "parents": [
        "d7a9d443bc8a75a24873c0506f50051edfedc714"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:31:48 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:31:48 2011 +1000"
      },
      "message": "md: make it easier to wait for bad blocks to be acknowledged.\n\nIt is only safe to choose not to write to a bad block if that bad\nblock is safely recorded in metadata - i.e. if it has been\n\u0027acknowledged\u0027.\n\nIf it hasn\u0027t we need to wait for the acknowledgement.\n\nWe support that using rdev-\u003eblocked wait and\nmd_wait_for_blocked_rdev by introducing a new device flag\n\u0027BlockedBadBlock\u0027.\n\nThis flag is only advisory.\nIt is cleared whenever we acknowledge a bad block, so that a waiter\ncan re-check the particular bad blocks that it is interested it.\n\nIt should be set by a caller when they find they need to wait.\nThis (set after test) is inherently racy, but as\nmd_wait_for_blocked_rdev already has a timeout, losing the race will\nhave minimal impact.\n\nWhen we clear \"Blocked\" was also clear \"BlockedBadBlocks\" incase it\nwas set incorrectly (see above race).\n\nWe also modify the way we manage \u0027Blocked\u0027 to fit better with the new\nhandling of \u0027BlockedBadBlocks\u0027 and to make it consistent between\nexternally managed and internally managed metadata.   This requires\nthat each raidXd loop checks if the metadata needs to be written and\ntriggers a write (md_check_recovery) if needed.  Otherwise a queued\nwrite request might cause raidXd to wait for the metadata to write,\nand only that thread can write it.\n\nBefore writing metadata, we set FaultRecorded for all devices that\nare Faulty, then after writing the metadata we clear Blocked for any\ndevice for which the Fault was certainly Recorded.\n\nThe \u0027faulty\u0027 device flag now appears in sysfs if the device is faulty\n*or* it has unacknowledged bad blocks.  So user-space which does not\nunderstand bad blocks can continue to function correctly.\nUser space which does, should not assume a device is faulty until it\nsees the \u0027faulty\u0027 flag, and then sees the list of unacknowledged bad\nblocks is empty.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d7a9d443bc8a75a24873c0506f50051edfedc714",
      "tree": "6255771f6cca87698dcc8eb11d62e7fc217b8d0b",
      "parents": [
        "06f603851fa90bcd236328438278d4dc8b655495"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:31:48 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:31:48 2011 +1000"
      },
      "message": "md: add \u0027write_error\u0027 flag to component devices.\n\nIf a device has ever seen a write error, we will want to handle\nknown-bad-blocks differently.\nSo create an appropriate state flag and export it via sysfs.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "d2eb35acfdccbe2a3622ed6cc441a5482148423b",
      "tree": "77600cab29fc9e1fd39d612773086a456fc32d88",
      "parents": [
        "9f2f3830789a4c9c1af2d1437d407c43e05136e6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:31:48 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:31:48 2011 +1000"
      },
      "message": "md/raid1: avoid reading from known bad blocks.\n\nNow that we have a bad block list, we should not read from those\nblocks.\nThere are several main parts to this:\n  1/ read_balance needs to check for bad blocks, and return not only\n     the chosen device, but also how many good blocks are available\n     there.\n  2/ fix_read_error needs to avoid trying to read from bad blocks.\n  3/ read submission must be ready to issue multiple reads to\n     different devices as different bad blocks on different devices\n     could mean that a single large read cannot be served by any one\n     device, but can still be served by the array.\n     This requires keeping count of the number of outstanding requests\n     per bio.  This count is stored in \u0027bi_phys_segments\u0027\n  4/ retrying a read needs to also be ready to submit a smaller read\n     and queue another request for the rest.\n\nThis does not yet handle bad blocks when reading to perform resync,\nrecovery, or check.\n\n\u0027md_trim_bio\u0027 will also be used for RAID10, so put it in md.c and\nexport it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9f2f3830789a4c9c1af2d1437d407c43e05136e6",
      "tree": "8e20afbfca82acd7346fb93d35170f44ee01a807",
      "parents": [
        "2699b67223aca6b1450fc2f72e40fada952afc85"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:31:47 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:31:47 2011 +1000"
      },
      "message": "md: Disable bad blocks and v0.90 metadata.\n\nv0.90 metadata cannot record bad blocks, so when loading metadata\nfor such a device, set shift to -1.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2699b67223aca6b1450fc2f72e40fada952afc85",
      "tree": "c84d0cbb763ad03cd770a218a37f0f1ec31118af",
      "parents": [
        "34b343cff4354ab9864be83be88405fd53d928a0"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:31:47 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:31:47 2011 +1000"
      },
      "message": "md: load/store badblock list from v1.x metadata\n\nSpace must have been allocated when array was created.\nA feature flag is set when the badblock list is non-empty, to\nensure old kernels don\u0027t load and trust the whole device.\n\nWe only update the on-disk badblocklist when it has changed.\nIf the badblocklist (or other metadata) is stored on a bad block, we\ndon\u0027t cope very well.\n\nIf metadata has no room for bad block, flag bad-blocks as disabled,\nand do the same for 0.90 metadata.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "16c791a5af3e50d0c11760485fd68e5829f3be4d",
      "tree": "24182e37b278a55a9b05b19154ff52597d220714",
      "parents": [
        "2230dfe4ccc3add340dc6d437965b2de1d269fde"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:31:47 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:31:47 2011 +1000"
      },
      "message": "md/bad-block-log: add sysfs interface for accessing bad-block-log.\n\nThis can show the log (providing it fits in one page) and\nallows bad blocks to be \u0027acknowledged\u0027 meaning that they\nhave safely been recorded in metadata.\n\nClearing bad blocks is not allowed via sysfs (except for\ncode testing).  A bad block can only be cleared when\na write to the block succeeds.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "2230dfe4ccc3add340dc6d437965b2de1d269fde",
      "tree": "fc45b727ad2e1a148e7d20f327b45a3afc474e9d",
      "parents": [
        "a519b26dbe6533416d21b552053b0bf687f878d7"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:31:46 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:31:46 2011 +1000"
      },
      "message": "md: beginnings of bad block management.\n\nThis the first step in allowing md to track bad-blocks per-device so\nthat we can fail individual blocks rather than the whole device.\n\nThis patch just adds a data structure for recording bad blocks, with\nroutines to add, remove, search the list.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "a519b26dbe6533416d21b552053b0bf687f878d7",
      "tree": "bef24eab8604ef2275eb8f1b591ea52bd4b89194",
      "parents": [
        "768e587e18c1c4ce0403b9532115752189422408"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 07:56:24 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 07:56:24 2011 +1000"
      },
      "message": "md: remove suspicious size_of()\n\nWhen calling bioset_create we pass the size of the front_pad as\n   sizeof(mddev)\nwhich looks suspicious as mddev is a pointer and so it looks like a\ncommon mistake where\n   sizeof(*mddev)\nwas intended.\nThe size is actually correct as we want to store a pointer in the\nfront padding of the bios created by the bioset, so make the intent\nmore explicit by using\n   sizeof(mddev_t *)\n\nReported-by: Zdenek Kabelac \u003czdenek.kabelac@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "768e587e18c1c4ce0403b9532115752189422408",
      "tree": "1b0d65fc839aa562c409a46984e1e15b1ae629d6",
      "parents": [
        "3520fa4db7fc4ae1b0373dcecdaf720f620dab2d"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Wed Jul 27 11:00:37 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 27 11:00:37 2011 +1000"
      },
      "message": "MD: generate an event when array sync is complete\n\nThis patch causes MD to generate an event (for device-mapper) when the\nsynchronization thread is reaped.  This is expected behavior for device-mapper.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "65a06f06744d3deae61f3596566952a8da92199f",
      "tree": "5befc4ef2e1965c55a112d436bd980ff6c0bef55",
      "parents": [
        "700c72138938cf428c74379806886c6b017d6295"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Wed Jul 27 11:00:36 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 27 11:00:36 2011 +1000"
      },
      "message": "md: get rid of unnecessary casts on page_address()\n\npage_address() returns void pointer, so the casts can be removed.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5389042ffa36976caa45a79af16081d759001fa7",
      "tree": "eb303de141a50f41ccac438e734b65dbfe25825e",
      "parents": [
        "a478a069b6adf186373a6648c54fc5f1d3c2f8eb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 27 11:00:36 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 27 11:00:36 2011 +1000"
      },
      "message": "md: change managed of recovery_disabled.\n\nIf we hit a read error while recovering a mirror, we want to abort the\nrecovery without necessarily failing the disk - as having a disk this\na read error is better than not having an array at all.\n\nCurrently this is managed with a per-array flag \"recovery_disabled\"\nand is only implemented for RAID1.  For RAID10 we will need finer\ngrained control as we might want to disable recovery for individual\ndevices separately.\n\nSo push more of the decision making into the personality.\n\u0027recovery_disabled\u0027 is now a \u0027cookie\u0027 which is copied when the\npersonality want to disable recovery and is changed when a device is\nadded to the array as this is used as a trigger to \u0027try recovery\nagain\u0027.\n\nThis will allow RAID10 to get the control that it needs.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a478a069b6adf186373a6648c54fc5f1d3c2f8eb",
      "tree": "ac10604e2b0e3525c25c6fb23128ab1fc858a550",
      "parents": [
        "36fad858a7404a9656122a9e560a224ae2a00979"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Wed Jul 27 11:00:36 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 27 11:00:36 2011 +1000"
      },
      "message": "md: remove ro check in md_check_recovery()\n\nCommit c89a8eee6154 (\"Allow faulty devices to be removed from a\nreadonly array.\") added some work on ro array in the function,\nbut it couldn\u0027t be done since we didn\u0027t allow the ro array to be\nhandled from the beginning. Fix it.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "36fad858a7404a9656122a9e560a224ae2a00979",
      "tree": "95f8a7a6b8dad6bb8d7c7735f7845888b5e702db",
      "parents": [
        "8bda470e8ebde35f9349e98ecbce4dfb508a60fa"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Wed Jul 27 11:00:36 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 27 11:00:36 2011 +1000"
      },
      "message": "md: introduce link/unlink_rdev() helpers\n\nThere are places where sysfs links to rdev are handled\nin a same way. Add the helper functions to consolidate\nthem.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f15146380d28b746df3c8b81b392812eb982382a",
      "tree": "bf43b38b60c21bd01b007c9636062783d406eb29",
      "parents": [
        "72c5052ddc3956d847f21c2b8d55c93664a51b2c"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Tue Jul 12 20:48:39 2011 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:50 2011 -0400"
      },
      "message": "fs: seq_file - add event counter to simplify poll() support\n\nMoving the event counter into the dynamically allocated \u0027struc seq_file\u0027\nallows poll() support without the need to allocate its own tracking\nstructure.\n\nAll current users are switched over to use the new counter.\n\nRequested-by: Andrew Morton akpm@linux-foundation.org\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nTested-by: Lucas De Marchi lucas.demarchi@profusion.mobi\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4274215d24633df7302069e51426659d4759c5ed",
      "tree": "c21fff5f11201eaaea0e44cf81a38df21dd63ffd",
      "parents": [
        "2992c4bd5742b31a0ee00a76eee9c1c284507418"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 28 16:59:42 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 28 16:59:42 2011 +1000"
      },
      "message": "md: avoid endless recovery loop when waiting for fail device to complete.\n\nIf a device fails in a way that causes pending request to take a while\nto complete, md will not be able to immediately remove it from the\narray in remove_and_add_spares.\nIt will then incorrectly look like a spare device and md will try to\nrecover it even though it is failed.\nThis leads to a recovery process starting and instantly aborting over\nand over again.\n\nWe should check if the device is faulty before considering it to be a\nspare.  This will avoid trying to start a recovery that cannot\nproceed.\n\nThis bug was introduced in 2.6.26 so that patch is suitable for any\nkernel since then.\n\nCc: stable@kernel.org\nReported-by: Jim Paradis \u003cjames.paradis@stratus.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "01393f3d5836b7d62e925e6f4658a7eb22b83a11",
      "tree": "38c6b3856adc22ef5bcada7855a6601d6e2e9654",
      "parents": [
        "9864c0053d3da4c5731ac8a6c4835179310bd40a"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Thu Jun 09 11:42:54 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 09 11:42:54 2011 +1000"
      },
      "message": "md: check -\u003ehot_remove_disk when removing disk\n\nCheck pers-\u003ehot_remove_disk instead of pers-\u003ehot_add_disk in slot_store()\nduring disk removal. The linear personality only has -\u003ehot_add_disk and\nno -\u003ehot_remove_disk, so that removing disk in the array resulted to\nfollowing kernel bug:\n\n$ sudo mdadm --create /dev/md0 --level\u003dlinear --raid-devices\u003d4 /dev/loop[0-3]\n$ echo none | sudo tee /sys/block/md0/md/dev-loop2/slot\n BUG: unable to handle kernel NULL pointer dereference at           (null)\n IP: [\u003c          (null)\u003e]           (null)\n PGD c9f5d067 PUD 8575a067 PMD 0\n Oops: 0010 [#1] SMP\n CPU 2\n Modules linked in: linear loop bridge stp llc kvm_intel kvm asus_atk0110 sr_mod cdrom sg\n\n Pid: 10450, comm: tee Not tainted 3.0.0-rc1-leonard+ #173 System manufacturer System Product Name/P5G41TD-M PRO\n RIP: 0010:[\u003c0000000000000000\u003e]  [\u003c          (null)\u003e]           (null)\n RSP: 0018:ffff880085757df0  EFLAGS: 00010282\n RAX: ffffffffa00168e0 RBX: ffff8800d1431800 RCX: 000000000000006e\n RDX: 0000000000000001 RSI: 0000000000000002 RDI: ffff88008543c000\n RBP: ffff880085757e48 R08: 0000000000000002 R09: 000000000000000a\n R10: 0000000000000000 R11: ffff88008543c2e0 R12: 00000000ffffffff\n R13: ffff8800b4641000 R14: 0000000000000005 R15: 0000000000000000\n FS:  00007fe8c9e05700(0000) GS:ffff88011fa00000(0000) knlGS:0000000000000000\n CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b\n CR2: 0000000000000000 CR3: 00000000b4502000 CR4: 00000000000406e0\n DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\n DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\n Process tee (pid: 10450, threadinfo ffff880085756000, task ffff8800c9f08000)\n Stack:\n  ffffffff8138496a ffff8800b4641000 ffff88008543c268 0000000000000000\n  ffff8800b4641000 ffff88008543c000 ffff8800d1431868 ffffffff81a78a90\n  ffff8800b4641000 ffff88008543c000 ffff8800d1431800 ffff880085757e98\n Call Trace:\n  [\u003cffffffff8138496a\u003e] ? slot_store+0xaa/0x265\n  [\u003cffffffff81384bae\u003e] rdev_attr_store+0x89/0xa8\n  [\u003cffffffff8115a96a\u003e] sysfs_write_file+0x108/0x144\n  [\u003cffffffff81106b87\u003e] vfs_write+0xb1/0x10d\n  [\u003cffffffff8106e6c0\u003e] ? trace_hardirqs_on_caller+0x111/0x135\n  [\u003cffffffff81106cac\u003e] sys_write+0x4d/0x77\n  [\u003cffffffff814fe702\u003e] system_call_fastpath+0x16/0x1b\n Code:  Bad RIP value.\n RIP  [\u003c          (null)\u003e]           (null)\n  RSP \u003cffff880085757df0\u003e\n CR2: 0000000000000000\n ---[ end trace ba5fc64319a826fb ]---\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9864c0053d3da4c5731ac8a6c4835179310bd40a",
      "tree": "4aea4c5a457f9e2c4058abfb2d6b69b843c721c5",
      "parents": [
        "d744540cd39e93976c4c8401e140232444ef3b0b"
      ],
      "author": {
        "name": "马建朋",
        "email": "majianpeng@gmail.com",
        "time": "Thu Jun 09 11:42:48 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 09 11:42:48 2011 +1000"
      },
      "message": "md: Using poll  /proc/mdstat can monitor the events of adding a spare disks\n\nSigned-off-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "076f968b37f0232d883749da8f5031df5dea7ade",
      "tree": "aa1c58756c3754abe657be36b4720a16d5c41858",
      "parents": [
        "1ed7242e591af7e233234d483f12d33818b189d9"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Jun 07 17:51:30 2011 -0500"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jun 08 15:11:31 2011 +1000"
      },
      "message": "MD: add sync_super to mddev_t struct\n\nAdd the \u0027sync_super\u0027 function pointer to MD array structure (struct mddev_s)\n\nIf device-mapper (dm-raid.c) is to define its own on-disk superblock and be\nable to load it, there must still be a way for MD to initiate superblock\nupdates.  The simplest way to make this happen is to provide a pointer in\nthe MD array structure that can be set by device-mapper (or other module)\nwith a function to do this.  If the function has been set, it will be used;\notherwise, the method with be looked up via \u0027super_types\u0027 as usual.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0fd018af37dadbb7826850883ad8abfecdb1a00b",
      "tree": "f95ebb9ec9111dc87ad8037ff7e07da802d924e3",
      "parents": [
        "ac42450c7c814769bee963ae4b897c149bb0ab53"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Jun 07 17:49:36 2011 -0500"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jun 08 15:11:31 2011 +1000"
      },
      "message": "MD: move thread wakeups into resume\n\nMove personality and sync/recovery thread starting outside md_run.\n\nMoving the wakeup\u0027s of the personality and sync/recovery threads out of\nmd_run and into do_md_run and mddev_resume solves two issues:\n1) It allows bitmap_load to be called before the sync_thread is run and\n2) when MD personalities are used by device-mapper (dm-raid.c), the start-up\nof the array is better alligned with device-mapper primatives\n(CTR/resume/suspend/DTR).  I/O - in this case, recovery operations - should\nnot happen until after a resume has taken place.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ac42450c7c814769bee963ae4b897c149bb0ab53",
      "tree": "582225e700c0a9eb0f99959f4f797a418a47ddc3",
      "parents": [
        "68866e425be2ef2664aa5c691bb3ab789736acf5"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Jun 07 17:48:35 2011 -0500"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jun 08 15:11:31 2011 +1000"
      },
      "message": "MD: possible typo\n\nMake message a bit clearer by s/blocks/k/\n\nI chose \u0027k\u0027 vs \u0027kiB\u0027 or \u0027kB\u0027 because it is what is used earlier in the\nmessage.  \u0027k\u0027 may be a bit ambigous, but I think it\u0027s better than \"blocks\"\nwhich normally means 512, but means 1024 in MD.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "68866e425be2ef2664aa5c691bb3ab789736acf5",
      "tree": "03cc5c452dcf70228a467031ae3f1989755cd1c1",
      "parents": [
        "629acb6abac0ef217ee579e14084af2ce7381dbc"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@f14.redhat.com",
        "time": "Wed Jun 08 15:10:08 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jun 08 15:10:08 2011 +1000"
      },
      "message": "MD: no sync IO while suspended\n\nDisallow resync I/O while the RAID array is suspended.\n\nRecovery, resync, and metadata I/O should not be allowed while a device is\nsuspended.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "629acb6abac0ef217ee579e14084af2ce7381dbc",
      "tree": "75963147cec3ff2e16aa775d103cb41706e503b0",
      "parents": [
        "59c5f46fbe01a00eedf54a23789634438bb80603"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@f14.redhat.com",
        "time": "Wed Jun 08 15:10:08 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jun 08 15:10:08 2011 +1000"
      },
      "message": "MD: no integrity register if no gendisk\n\nDon\u0027t attempt md_integrity_register if there is no gendisk struct available.\n\nWhen MD arrays are built via device-mapper, the gendisk structure is not\navailable via mddev.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b098636cf04c89db4036fedc778da0acc666ad1a",
      "tree": "11a970bdc482b4e5cb2211eefb9a71ae34355bd3",
      "parents": [
        "ab9d47e990c12c11cc95ed1247a3782234a7e33a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 11 15:52:21 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 11 15:52:21 2011 +1000"
      },
      "message": "md: allow resync_start to be set while an array is active.\n\nThe sysfs attribute \u0027resync_start\u0027 (known internally as recovery_cp),\nrecords where a resync is up to.  A value of 0 means the array is\nnot known to be in-sync at all.  A value of MaxSector means the array\nis believed to be fully in-sync.\n\nWhen the size of member devices of an array (RAID1,RAID4/5/6) is\nincreased, the array can be increased to match.  This process sets\nresync_start to the old end-of-device offset so that the new part of\nthe array gets resynced.\n\nHowever with RAID1 (and RAID6) a resync is not technically necessary\nand may be undesirable.  So it would be good if the implied resync\nafter the array is resized could be avoided.\n\nSo: change \u0027resync_start\u0027 so the value can be changed while the array\nis active, and as a precaution only allow it to be changed while\nresync/recovery is \u0027frozen\u0027.  Changing it once resync has started is\nnot going to be useful anyway.\n\nThis allows the array to be resized without a resync by:\n  write \u0027frozen\u0027 to \u0027sync_action\u0027\n  write new size to \u0027component_size\u0027 (this will set resync_start)\n  write \u0027none\u0027 to \u0027resync_start\u0027\n  write \u0027idle\u0027 to \u0027sync_action\u0027.\n\nAlso slightly improve some tests on recovery_cp when resizing\nraid1/raid5.  Now that an arbitrary value could be set we should be\nmore careful in our tests.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bedd86b7773fd97f0d708cc0c371c8963ba7ba9a",
      "tree": "acc508209cdc418fcfe9a1493915dfa88c22bc29",
      "parents": [
        "b0140891a8cea36469f58d23859e599b1122bd37"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 11 14:26:20 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 11 14:26:20 2011 +1000"
      },
      "message": "md: reject a re-add request that cannot be honoured.\n\nThe \u0027add_new_disk\u0027 ioctl can be used to add a device either as a\nspare, or as an active disk that just needs to be resynced based on\nwrite-intent-bitmap information (re-add)\n\nCurrently if a re-add is requested but fails we add as a spare\ninstead.  This makes it impossible for user-space to check for\nfailure.\n\nSo change to require that a re-add attempt will either succeed or\ncompletely fail.  User-space can then decide what to do next.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b0140891a8cea36469f58d23859e599b1122bd37",
      "tree": "01f378d9964c1d24683a3c42bfd06b1da7d985b6",
      "parents": [
        "693d92a1bbc9e42681c42ed190bd42b636ca876f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 10 17:49:01 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 11 14:26:17 2011 +1000"
      },
      "message": "md: Fix race when creating a new md device.\n\nThere is a race when creating an md device by opening /dev/mdXX.\n\nIf two processes do this at much the same time they will follow the\ncall path\n  __blkdev_get -\u003e get_gendisk -\u003e kobj_lookup\n\nThe first will call\n  -\u003e md_probe -\u003e md_alloc -\u003e add_disk -\u003e blk_register_region\n\nand the race happens when the second gets to kobj_lookup after\nadd_disk has called blk_register_region but before it returns to\nmd_alloc.\n\nIn the case the second will not call md_probe (as the probe is already\ndone) but will get a handle on the gendisk, return to __blkdev_get\nwhich will then call md_open (via the -\u003eopen) pointer.\n\nAs mddev-\u003egendisk hasn\u0027t been set yet, md_open will think something is\nwrong an return with ERESTARTSYS.\n\nThis can loop endlessly while the first thread makes no progress\nthrough add_disk.  Nothing is blocking it, but due to scheduler\nbehaviour it doesn\u0027t get a turn.\nSo this is essentially a live-lock.\n\nWe fix this by simply moving the assignment to mddev-\u003egendisk before\nthe call the add_disk() so md_open doesn\u0027t get confused.\nAlso move blk_queue_flush earlier because add_disk should be as late\nas possible.\n\nTo make sure that md_open doesn\u0027t complete until md_alloc has done all\nthat is needed, we take mddev-\u003eopen_mutex during the last part of\nmd_alloc.  md_open will wait for this.\n\nThis can cause a lock-up on boot so Cc:ing for stable.\nFor 2.6.36 and earlier a different patch will be needed as the\n\u0027blk_queue_flush\u0027 call isn\u0027t there.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReported-by: Thomas Jarosch \u003cthomas.jarosch@intra2net.com\u003e\nTested-by: Thomas Jarosch \u003cthomas.jarosch@intra2net.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "fee68723cf6ae00082f70f3eff17fceab2a4f7d7",
      "tree": "2ff52c9cce0115bc745b60bd9c0faffed8dd46f0",
      "parents": [
        "3b71bd9337b404baab5c894e066be6b6bf51b1c3"
      ],
      "author": {
        "name": "Krzysztof Wojcik",
        "email": "krzysztof.wojcik@intel.com",
        "time": "Wed Apr 20 15:39:53 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Apr 20 15:39:53 2011 +1000"
      },
      "message": "md: Cleanup after raid45-\u003eraid0 takeover\n\nProblem:\nAfter raid4-\u003eraid0 takeover operation, another takeover operation\n(e.g raid0-\u003eraid10) results \"kernel oops\".\nRoot cause:\nVariables \u0027degraded\u0027 in mddev structure is not cleared\non raid45-\u003eraid0 takeover.\n\nThis patch reset this variable.\n\nSigned-off-by: Krzysztof Wojcik \u003ckrzysztof.wojcik@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "97658cdd3af7d01461874c93b89afa4a2465e7c6",
      "tree": "d4e2f930850eb3981307a3eec8c86399dcebf68a",
      "parents": [
        "482c083492ddaa32ef5864bae3d143dc8bcdf7d1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 18 18:25:42 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 18 18:25:42 2011 +1000"
      },
      "message": "md: provide generic support for handling unplug callbacks.\n\nWhen an md device adds a request to a queue, it can call\nmddev_check_plugged.\nIf this succeeds then we know that the md thread will be woken up\nshortly, and -\u003eplug_cnt will be non-zero until then, so some\nprocessing can be delayed.\n\nIf it fails, then no unplug callback is expected and the make_request\nfunction needs to do whatever is required to make the request happen.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "482c083492ddaa32ef5864bae3d143dc8bcdf7d1",
      "tree": "75017fd1a51fe945c65b3600442ddaa20b636b1a",
      "parents": [
        "af1db72d8b340f97ad12b60175afdef43e6f0e60"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 18 18:25:42 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 18 18:25:42 2011 +1000"
      },
      "message": "md - remove old plugging code.\n\nmd has some plugging infrastructure for RAID5 to use because the\nnormal plugging infrastructure required a \u0027request_queue\u0027, and when\ncalled from dm, RAID5 doesn\u0027t have one of those available.\n\nThis relied on the -\u003eunplug_fn callback which doesn\u0027t exist any more.\n\nSo remove all of that code, both in md and raid5.  Subsequent patches\nwith restore the plugging functionality.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "89078d572eb9ce8d4c04264b8b0ba86de0d74c8f",
      "tree": "d01104f97740c19daf01f49ae170df821a43252c",
      "parents": [
        "7de8e5737df31a6826015a65135ed8f0a32bb2c4"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Mon Mar 28 20:09:12 2011 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 17:53:29 2011 -0700"
      },
      "message": "md: Fix integrity registration error when no devices are capable\n\nWe incorrectly returned -EINVAL when none of the devices in the array\nhad an integrity profile.  This in turn prevented mdadm from starting\nthe metadevice.  Fix this so we only return errors on mismatched\nprofiles and memory allocation failures.\n\nReported-by: Giacomo Catenazzi \u003ccate@cateee.net\u003e\nReported-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6c5103890057b1bb781b26b7aae38d33e4c517d8",
      "tree": "e6e57961dcddcb5841acb34956e70b9dc696a880",
      "parents": [
        "3dab04e6978e358ad2307bca563fabd6c5d2c58b",
        "9d2e157d970a73b3f270b631828e03eb452d525e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:16:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:16:26 2011 -0700"
      },
      "message": "Merge branch \u0027for-2.6.39/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.39/core\u0027 of git://git.kernel.dk/linux-2.6-block: (65 commits)\n  Documentation/iostats.txt: bit-size reference etc.\n  cfq-iosched: removing unnecessary think time checking\n  cfq-iosched: Don\u0027t clear queue stats when preempt.\n  blk-throttle: Reset group slice when limits are changed\n  blk-cgroup: Only give unaccounted_time under debug\n  cfq-iosched: Don\u0027t set active queue in preempt\n  block: fix non-atomic access to genhd inflight structures\n  block: attempt to merge with existing requests on plug flush\n  block: NULL dereference on error path in __blkdev_get()\n  cfq-iosched: Don\u0027t update group weights when on service tree\n  fs: assign sb-\u003es_bdi to default_backing_dev_info if the bdi is going away\n  block: Require subsystems to explicitly allocate bio_set integrity mempool\n  jbd2: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging\n  jbd: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging\n  fs: make fsync_buffers_list() plug\n  mm: make generic_writepages() use plugging\n  blk-cgroup: Add unaccounted time to timeslice_used.\n  block: fixup plugging stubs for !CONFIG_BLOCK\n  block: remove obsolete comments for blkdev_issue_zeroout.\n  blktrace: Use rq-\u003ecmd_flags directly in blk_add_trace_rq.\n  ...\n\nFix up conflicts in fs/{aio.c,super.c}\n"
    },
    {
      "commit": "a91a2785b200864aef2270ed6a3babac7a253a20",
      "tree": "3d21d7ef82ddabbdbfb74499d68a73f15adc819f",
      "parents": [
        "82f04ab47e1d94d78503591a7460b2cad9601ede"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Thu Mar 17 11:11:05 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 17 11:11:05 2011 +0100"
      },
      "message": "block: Require subsystems to explicitly allocate bio_set integrity mempool\n\nMD and DM create a new bio_set for every metadevice. Each bio_set has an\nintegrity mempool attached regardless of whether the metadevice is\ncapable of passing integrity metadata. This is a waste of memory.\n\nInstead we defer the allocation decision to MD and DM since we know at\nmetadevice creation time whether integrity passthrough is needed or not.\n\nAutomatic integrity mempool allocation can then be removed from\nbioset_create() and we make an explicit integrity allocation for the\nfs_bio_set.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nReported-by: Zdenek Kabelac \u003czkabelac@redhat.com\u003e\nAcked-by: Mike Snitzer \u003csnizer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "bd2895eeade5f11f3e5906283c630bbdb4b57454",
      "tree": "4d98f4fcd80c7d062afce28823d08aee53e66f82",
      "parents": [
        "016aa2ed1cc9cf704cf76d8df07751b6daa9750f",
        "24d51add7438f9696a7205927bf9de3c5c787a58"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 08:20:19 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 08:20:19 2011 -0700"
      },
      "message": "Merge branch \u0027for-2.6.39\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq\n\n* \u0027for-2.6.39\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:\n  workqueue: fix build failure introduced by s/freezeable/freezable/\n  workqueue: add system_freezeable_wq\n  rds/ib: use system_wq instead of rds_ib_fmr_wq\n  net/9p: replace p9_poll_task with a work\n  net/9p: use system_wq instead of p9_mux_wq\n  xfs: convert to alloc_workqueue()\n  reiserfs: make commit_wq use the default concurrency level\n  ocfs2: use system_wq instead of ocfs2_quota_wq\n  ext4: convert to alloc_workqueue()\n  scsi/scsi_tgt_lib: scsi_tgtd isn\u0027t used in memory reclaim path\n  scsi/be2iscsi,qla2xxx: convert to alloc_workqueue()\n  misc/iwmc3200top: use system_wq instead of dedicated workqueues\n  i2o: use alloc_workqueue() instead of create_workqueue()\n  acpi: kacpi*_wq don\u0027t need WQ_MEM_RECLAIM\n  fs/aio: aio_wq isn\u0027t used in memory reclaim path\n  input/tps6507x-ts: use system_wq instead of dedicated workqueue\n  cpufreq: use system_wq instead of dedicated workqueues\n  wireless/ipw2x00: use system_wq instead of dedicated workqueues\n  arm/omap: use system_wq in mailbox\n  workqueue: use WQ_MEM_RECLAIM instead of WQ_RESCUER\n"
    },
    {
      "commit": "4c63f5646e405b5010cc9499419060bf2e838f5b",
      "tree": "df91ba315032c8ec4aafeb3ab96fdfa7c6c656e1",
      "parents": [
        "cafb0bfca1a73efd6d8a4a6a6a716e6134b96c24",
        "69d60eb96ae8a73cf9b79cf28051caf973006011"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:58:35 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:58:35 2011 +0100"
      },
      "message": "Merge branch \u0027for-2.6.39/stack-plug\u0027 into for-2.6.39/core\n\nConflicts:\n\tblock/blk-core.c\n\tblock/blk-flush.c\n\tdrivers/md/raid1.c\n\tdrivers/md/raid10.c\n\tdrivers/md/raid5.c\n\tfs/nilfs2/btnode.c\n\tfs/nilfs2/mdt.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "721a9602e6607417c6bc15b18e97a2f35266c690",
      "tree": "4987991e43f35b8b3b685fea0040c5265b578996",
      "parents": [
        "cf15900e1209d5b46ec2d24643adbf561830935f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Mar 09 11:56:30 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:27 2011 +0100"
      },
      "message": "block: kill off REQ_UNPLUG\n\nWith the plugging now being explicitly controlled by the\nsubmitter, callers need not pass down unplugging hints\nto the block layer. If they want to unplug, it\u0027s because they\nmanually plugged on their own - in which case, they should just\nunplug at will.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7eaceaccab5f40bbfda044629a6298616aeaed50",
      "tree": "33954d12f63e25a47eb6d86ef3d3d0a5e62bf752",
      "parents": [
        "73c101011926c5832e6e141682180c4debe2cf45"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "message": "block: remove per-queue plugging\n\nCode has been converted over to the new explicit on-stack plugging,\nand delay users have been converted to use the new API for that.\nSo lets kill off the old plugging along with aops-\u003esync_page().\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "f0b4f7e2f29af678bd9af43422c537dcb6008603",
      "tree": "dfc2aa18bbf8411a499ef8117a5e15490eb44728",
      "parents": [
        "93b270f76e7ef3b81001576860c2701931cdc78b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 24 17:26:41 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 24 17:26:41 2011 +1100"
      },
      "message": "md: Fix - again - partition detection when array becomes active\n\nRevert\n    b821eaa572fd737faaf6928ba046e571526c36c6\nand\n    f3b99be19ded511a1bf05a148276239d9f13eefa\n\nWhen I wrote the first of these I had a wrong idea about the\nlifetime of \u0027struct block_device\u0027.  It can disappear at any time that\nthe block device is not open if it falls out of the inode cache.\n\nSo relying on the \u0027size\u0027 recorded with it to detect when the\ndevice size has changed and so we need to revalidate, is wrong.\n\nRather, we really do need the \u0027changed\u0027 attribute stored directly in\nthe mddev and set/tested as appropriate.\n\nWithout this patch, a sequence of:\n   mknod / open / close / unlink\n\n(which can cause a block_device to be created and then destroyed)\nwill result in a rescan of the partition table and consequence removal\nand addition of partitions.\nSeveral of these in a row can get udev racing to create and unlink and\nother code can get confused.\n\nWith the patch, the rescan is only performed when needed and so there\nare no races.\n\nThis is suitable for any stable kernel from 2.6.35.\n\nReported-by: \"Wojcik, Krzysztof\" \u003ckrzysztof.wojcik@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "43d133c18b44e7d82d82ef0dcc2bddd55d5dfe81",
      "tree": "8de75c837b55874cc8a81a29bdedbc62668d4481",
      "parents": [
        "4149efb22da66e326fc48baf80d628834509f7f0",
        "6f576d57f1fa0d6026b495d8746d56d949989161"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Feb 21 09:43:56 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Feb 21 09:43:56 2011 +0100"
      },
      "message": "Merge branch \u0027master\u0027 into for-2.6.39\n"
    },
    {
      "commit": "8f5f02c460b7ca74ce55ce126ce0c1e58a3f923d",
      "tree": "de4f933fe250bd2ba71727f535432a82ef68883b",
      "parents": [
        "cbe6ef1d2622e08e272600b3cb6040bed60f0450"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 16 13:58:51 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 16 13:58:51 2011 +1100"
      },
      "message": "md: correctly handle probe of an \u0027mdp\u0027 device.\n\n\u0027mdp\u0027 devices are md devices with preallocated device numbers\nfor partitions. As such it is possible to mknod and open a partition\nbefore opening the whole device.\n\nthis causes  md_probe() to be called with a device number of a\npartition, which in-turn calls mddev_find with such a number.\n\nHowever mddev_find expects the number of a \u0027whole device\u0027 and\ndoes the wrong thing with partition numbers.\n\nSo add code to mddev_find to remove the \u0027partition\u0027 part of\na device number and just work with the \u0027whole device\u0027.\n\nThis patch addresses https://bugzilla.kernel.org/show_bug.cgi?id\u003d28652\n\nReported-by: hkmaly@bigfoot.com\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: \u003cstable@kernel.org\u003e\n"
    },
    {
      "commit": "cbe6ef1d2622e08e272600b3cb6040bed60f0450",
      "tree": "03d1ae0fe73404a3bd7850d89c415f3412977693",
      "parents": [
        "f7bee80945155ad0326916486dabc38428c6cdef"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 16 13:58:38 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 16 13:58:38 2011 +1100"
      },
      "message": "md: don\u0027t set_capacity before array is active.\n\nIf the desired size of an array is set (via sysfs) before the array is\nactive (which is the normal sequence), we currrently call set_capacity\nimmediately.\nThis means that a subsequent \u0027open\u0027 (as can be caused by some\nudev-triggers program) will notice the new size and try to probe for\npartitions.  However as the array isn\u0027t quite ready yet the read will\nfail.  Then when the array is read, as the size doesn\u0027t change again\nwe don\u0027t try to re-probe.\n\nSo when setting array size via sysfs, only call set_capacity if the\narray is already active.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e91ece5590b3c728624ab57043fc7a05069c604a",
      "tree": "4c5fd4ad374caf5bd9c5f575b0a228b5cdf2f191",
      "parents": [
        "c6751b2bde477f56ceef67aa1d298ce44e8e2e23"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Feb 07 19:21:48 2011 -0500"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 08 09:53:28 2011 +1100"
      },
      "message": "md_make_request: don\u0027t touch the bio after calling make_request\n\nmd_make_request was calling bio_sectors() for part_stat_add\nafter it was calling the make_request function.  This is\nbad because the make_request function can free the bio and\nbecause the bi_size field can change around.\n\nThe fix here was suggested by Jens Axboe.  It saves the\nsector count before the make_request call.  I hit this\nwith CONFIG_DEBUG_PAGEALLOC turned on while trying to break\nhis pretty fusionio card.\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c6751b2bde477f56ceef67aa1d298ce44e8e2e23",
      "tree": "59916ec74802396ec4b3f871d27232550848bc8c",
      "parents": [
        "7281f8129c362436237b82c8c026494dd36479dc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 02 11:57:13 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 02 11:57:13 2011 +1100"
      },
      "message": "md: Don\u0027t allow slot_store while resync/recovery is happening.\n\nActivating a spare in an array while resync/recovery is already\nhappening can lead the that spare being marked in-sync when it isn\u0027t\nreally.\nSo don\u0027t allow the \u0027slot\u0027 to be set (this activating the device)\nwhile resync/recovery is happening.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7281f8129c362436237b82c8c026494dd36479dc",
      "tree": "c12196b42c807d4ee80d5f6e1657f31fa3ea4d7b",
      "parents": [
        "a8c42c7f476b5bb39bb3a5b32d5473b9a46cadb9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 14:30:27 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 14:30:27 2011 +1100"
      },
      "message": "md: don\u0027t clear curr_resync_completed at end of resync.\n\nThere is no need to set this to zero at this point.  It will be\nset to zero by remove_and_add_spares or at the start of\nmd_do_sync at the latest.\nAnd setting it to zero before MD_RECOVERY_RUNNING is cleared can\nmake a \u0027zero\u0027 appear briefly in the \u0027sync_completed\u0027 sysfs attribute\njust as resync is finishing.\n\nSo simply remove this setting to zero.\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a8c42c7f476b5bb39bb3a5b32d5473b9a46cadb9",
      "tree": "59b82042476e6b92ee293570d30a2580dba56d09",
      "parents": [
        "fc3a08b85b7a4f6c1069e5f71f6ad40d925ff55b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 13:47:13 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 13:47:13 2011 +1100"
      },
      "message": "md: Don\u0027t use remove_and_add_spares to remove failed devices from a read-only array\n\nremove_and_add_spares is called in two places where the needs really\nare very different.\nremove_and_add_spares should not be called on an array which is about\nto be reshaped as some extra devices might have been manually added\nand that would remove them.  However if the array is \u0027read-auto\u0027,\nthat will currently happen, which is bad.\n\nSo in the \u0027ro !\u003d 0\u0027 case don\u0027t call remove_and_add_spares but simply\nremove the failed devices as the comment suggests is needed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f21e9ff7f77d41ceca4e1e5ee5a4efa5ad7a5e40",
      "tree": "c6bf9c0457ae891505983c1493bf15856e815c5b",
      "parents": [
        "50da08409654e036c4c964a473567a61a654cb83"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 12:10:09 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 12:10:09 2011 +1100"
      },
      "message": "md: Remove the AllReserved flag for component devices.\n\nThis flag is not needed and is used badly.\n\nDevices that are included in a native-metadata array are reserved\nexclusively for that array - and currently have AllReserved set.\nThey all are bd_claimed for the rdev and so cannot be shared.\n\nDevices that are included in external-metadata arrays can be shared\namong multiple arrays - providing there is no overlap.\nThese are bd_claimed for md in general - not for a particular rdev.\n\nWhen changing the amount of a device that is used in an array we need\nto check for overlap.  This currently includes a check on AllReserved\nSo even without overlap, sharing with an AllReserved device is not\nallowed.\nHowever the bd_claim usage already precludes sharing with these\ndevices, so the test on AllReserved is not needed.  And in fact it is\nwrong.\n\nAs this is the only use of AllReserved, simply remove all usage and\ndefinition of AllReserved.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "de171cb9a52598cc023adceafc6c166112401386",
      "tree": "56fc899c45b538dedba0fc139e3213a0f47f9a59",
      "parents": [
        "1f0324caefd39985e9fe052fac97da31694db31e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 11:57:42 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 11:57:42 2011 +1100"
      },
      "message": "md: revert change to raid_disks on failure.\n\nIf we try to update_raid_disks and it fails, we should put\n\u0027delta_disks\u0027 back to zero.  This is important because some code,\nsuch as slot_store, assumes that delta_disks has been validated.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ada609ee2ac2e03bd8abb07f9b3e92cd2e650f19",
      "tree": "ccc1051a961b12448420428b5a400a6333d3e821",
      "parents": [
        "c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jan 25 14:35:54 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jan 25 14:35:54 2011 +0100"
      },
      "message": "workqueue: use WQ_MEM_RECLAIM instead of WQ_RESCUER\n\nWQ_RESCUER is now an internal flag and should only be used in the\nworkqueue implementation proper.  Use WQ_MEM_RECLAIM instead.\n\nThis doesn\u0027t introduce any functional difference.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: dm-devel@redhat.com\nCc: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "49731baa41df404c2c3f44555869ab387363af43",
      "tree": "5d3476368fa546aebb1c223e9cf1bab5ad80f698",
      "parents": [
        "c553f8e335c00a7cff3ab3f13e793b13d3f2207f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jan 14 18:43:57 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jan 14 18:44:22 2011 +0100"
      },
      "message": "block: restore multiple bd_link_disk_holder() support\n\nCommit e09b457b (block: simplify holder symlink handling) incorrectly\nassumed that there is only one link at maximum.  dm may use multiple\nlinks and expects block layer to track reference count for each link,\nwhich is different from and unrelated to the exclusive device holder\nidentified by @holder when the device is opened.\n\nRemove the single holder assumption and automatic removal of the link\nand revive the per-link reference count tracking.  The code\nessentially behaves the same as before commit e09b457b sans the\nunnecessary kobject reference count dancing.\n\nWhile at it, note that this facility should not be used by anyone else\nthan the current ones.  Sysfs symlinks shouldn\u0027t be abused like this\nand the whole thing doesn\u0027t belong in the block layer at all.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Milan Broz \u003cmbroz@redhat.com\u003e\nCc: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: linux-raid@vger.kernel.org\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "509e4aef44eb10e4aef1f81c3c3ff1214671503b",
      "tree": "b90daecbc3d05787b0dd141e524b67d8579a6dfd",
      "parents": [
        "375b6f5a40a3d8373561a3dbeed440a845e6d379",
        "bf2cb0dab8c97f00a71875d9b13dbac17a2f47ca"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:30:20 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:30:20 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md:\n  md: Fix removal of extra drives when converting RAID6 to RAID5\n  md: range check slot number when manually adding a spare.\n  md/raid5: handle manually-added spares in start_reshape.\n  md: fix sync_completed reporting for very large drives (\u003e2TB)\n  md: allow suspend_lo and suspend_hi to decrease as well as increase.\n  md: Don\u0027t let implementation detail of curr_resync leak out through sysfs.\n  md: separate meta and data devs\n  md-new-param-to_sync_page_io\n  md-new-param-to-calc_dev_sboffset\n  md: Be more careful about clearing flags bit in -\u003erecovery\n  md: md_stop_writes requires mddev_lock.\n  md/raid5: use sysfs_notify_dirent_safe to avoid NULL pointer\n  md: Ensure no IO request to get md device before it is properly initialised.\n  md: Fix single printks with multiple KERN_\u003clevel\u003es\n  md: fix regression resulting in delays in clearing bits in a bitmap\n  md: fix regression with re-adding devices to arrays with no metadata\n"
    },
    {
      "commit": "bf2cb0dab8c97f00a71875d9b13dbac17a2f47ca",
      "tree": "68587eaff5c7cb85628c1f68aecb19f2a18c8f6e",
      "parents": [
        "ba1b41b6b4e30cb66ae2775faadea05cae3ce61c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md: Fix removal of extra drives when converting RAID6 to RAID5\n\nWhen a RAID6 is converted to a RAID5, the extra drive should\nbe discarded.  However it isn\u0027t due to a typo in a comparison.\n\nThis bug was introduced in commit e93f68a1fc6 in 2.6.35-rc4\nand is suitable for any -stable since than.\n\nAs the extra drive is not removed, the \u0027degraded\u0027 counter is wrong and\nso the RAID5 will not respond correctly to a subsequent failure.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ba1b41b6b4e30cb66ae2775faadea05cae3ce61c",
      "tree": "02da80f72095418dd1a08661f59c24607029a8e7",
      "parents": [
        "1a940fcee31ec6c18c2f24dbdad31d54e4c35048"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md: range check slot number when manually adding a spare.\n\nWhen adding a spare to an active array, we should check the slot\nnumber, but allow it to be larger than raid_disks if a reshape\nis being prepared.\n\nApply the same test when adding a device to an\narray-under-construction.  It already had most of the test in place,\nbut not quite all.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "13ae864bc86ff65547ffe7e966b6433a0d0edb8a",
      "tree": "6e5ca3a6736b75fa0db8415c1e3a2506af6ab9cc",
      "parents": [
        "23ddff3792f61193695114c68d6ebd57e974c4f8"
      ],
      "author": {
        "name": "Rémi Rérolle",
        "email": "rrerolle@lacie.com",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md: fix sync_completed reporting for very large drives (\u003e2TB)\n\nThe values exported in the sync_completed file are unsigned long, which\noverflows with very large drives, resulting in wrong values reported.\n\nSince sync_completed uses sectors as unit, we\u0027ll start getting wrong\nvalues with components larger than 2TB.\n\nThis patch simply replaces the use of unsigned long by unsigned long long.\n\nSigned-off-by: Rémi Rérolle \u003crrerolle@lacie.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    }
  ],
  "next": "23ddff3792f61193695114c68d6ebd57e974c4f8"
}
