)]}'
{
  "log": [
    {
      "commit": "6b740b8d79252f13bcb7e5d3c1d43157e78a81e7",
      "tree": "4b99f8fb395e7a205a85766d1bd241dce39c4337",
      "parents": [
        "050b66152f87c79e8d66aed0e7996f9336462d5f"
      ],
      "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/raid1: 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 create a raid1 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 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": "d6b42dcb995e6acd7cc276774e751ffc9f0ef4bf",
      "tree": "a9112351e8ddd2866afd8687b645a1c5bf574ee7",
      "parents": [
        "4474ca42e2577563a919fd3ed782e2ec55bf11a2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:38 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:38 2012 +1100"
      },
      "message": "md/raid1,raid10: avoid deadlock during resync/recovery.\n\nIf RAID1 or RAID10 is used under LVM or some other stacking\nblock device, it is possible to enter a deadlock during\nresync or recovery.\nThis can happen if the upper level block device creates\ntwo requests to the RAID1 or RAID10.  The first request gets\nprocessed, blocks recovery and queue requests for underlying\nrequests in current-\u003ebio_list.  A resync request then starts\nwhich will wait for those requests and block new IO.\n\nBut then the second request to the RAID1/10 will be attempted\nand it cannot progress until the resync request completes,\nwhich cannot progress until the underlying device requests complete,\nwhich are on a queue behind that second request.\n\nSo allow that second request to proceed even though there is\na resync request about to start.\n\nThis is suitable for any -stable kernel.\n\nCc: stable@vger.kernel.org\nReported-by: Ray Morris \u003csupport@bettercgi.com\u003e\nTested-by: Ray Morris \u003csupport@bettercgi.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f53e29fc87b6fb76db0043202ec2c3450caa5ff3",
      "tree": "b1f8705e420775a40ebb2f26132fe27184b82fbb",
      "parents": [
        "db91ff55bdf06736b849afc1b1fce5763bbb8d5d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Feb 13 14:24:05 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Feb 13 14:24:05 2012 +1100"
      },
      "message": "md/raid1: fix buglet in md_raid1_contested.\n\nSince we added \u0027replacement\u0027 capability, RAID1 can have twice\nas many devices as -\u003eraid_disks indicates.\nSo md_raid1_congested needs to check that many possible devices,\nnot just -\u003eraid_disks many.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "307729c8bc5b5a41361af8af95906eee7552acb1",
      "tree": "9b20fe9c898ee4de85b64a8e41c92123dae0b093",
      "parents": [
        "f2a371c5e74dd5685ab47effa4ac7b23b1fdaae5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 09 01:41:51 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jan 11 08:35:17 2012 +1100"
      },
      "message": "md/raid1: perform bad-block tests for WriteMostly devices too.\n\nWe normally try to avoid reading from write-mostly devices, but when\nwe do we really have to check for bad blocks and be sure not to\ntry reading them.\n\nWith the current code, best_good_sectors might not get set and that\ncauses zero-length read requests to be send down which is very\nconfusing.\n\nThis bug was introduced in commit d2eb35acfdccbe2 and so the patch\nis suitable for 3.1.x and 3.2.x\n\nReported-and-tested-by: Michał Mirosław \u003cmirq-linux@rere.qmqm.pl\u003e\nReported-and-tested-by: Art -kwaak- van Breemen \u003card@telegraafnet.nl\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "19d671695e1931ebfd75b2b888778201aefe35ca",
      "tree": "b3c54cdb0812632f830453b6a6c9b8b966c9dcc4",
      "parents": [
        "7ef449d1ec3668acbba6af6a500d0c84636b436f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:57 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:57 2011 +1100"
      },
      "message": "md/raid1: Mark device want_replacement when we see a write error.\n\nNow that WantReplacement drives are replaced cleanly, mark a drive\nas want_replacement when we see a write error.  It might get failed soon so\nthe WantReplacement flag is irrelevant, but if the write error is recorded\nin the bad block log, we still want to activate any spare that might\nbe available.\n\nSigned-off-by:  NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7ef449d1ec3668acbba6af6a500d0c84636b436f",
      "tree": "4a9e23c9b88f404e896ba8748bdc7bb2b18ec65c",
      "parents": [
        "c19d57980b38a5bb613a898937a1cf85f422fb9b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:57 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:57 2011 +1100"
      },
      "message": "md/raid1: If there is a spare and a want_replacement device, start replacement.\n\nWhen attempting to add a spare to a RAID1 array, also consider\nadding it as a replacement for a want_replacement device.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c19d57980b38a5bb613a898937a1cf85f422fb9b",
      "tree": "ddc9f7ae53a4cd0464240ec8c49c03d35823a103",
      "parents": [
        "8c7a2c2bcfaf0ee29c74437a4814d1aa780d6a26"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:57 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:57 2011 +1100"
      },
      "message": "md/raid1: recognise replacements when assembling arrays.\n\nIf a Replacement is seen, file it as such.\n\nIf we see two replacements (or two normal devices) for the one slot,\nabort.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8c7a2c2bcfaf0ee29c74437a4814d1aa780d6a26",
      "tree": "74093a74ea43965f04502bc5d71b6976a74c7305",
      "parents": [
        "b014f14c81bc5db4e40e2a4db10998fd79c1c64c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:57 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:57 2011 +1100"
      },
      "message": "md/raid1: handle activation of replacement device when recovery completes.\n\nWhen recovery completes -\u003espare_active is called.\nThis checks if the replacement is ready and if so it fails\nthe original.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b014f14c81bc5db4e40e2a4db10998fd79c1c64c",
      "tree": "78c5499e8af9a3e850ca2f93d215c53d55c40003",
      "parents": [
        "8f19ccb2fd70deb1f278be5e75076074cfddee46"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:56 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:56 2011 +1100"
      },
      "message": "md/raid1: Allow a failed replacement device to be removed.\n\nReplacement devices are stored at a different offset, so look\nthere too.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8f19ccb2fd70deb1f278be5e75076074cfddee46",
      "tree": "59419e814d4d02dfdefaf6f5ef152c3468c890e8",
      "parents": [
        "301946364e0aa67c4cfaec82e94c389993c9f7c6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:56 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:56 2011 +1100"
      },
      "message": "md/raid1: Allocate spare to store replacement devices and their bios.\n\nIn RAID1, a replacement is much like a normal device, so we just\ndouble the size of the relevant arrays and look at all possible\ndevices for reads and writes.\n\nThis means that the array looks like it is now double the size in some\nway - we need to be careful about that.\nIn particular, we checking if the array is still degraded while\ncreating a recovery request we need to only consider the first \u0027half\u0027\n- i.e. the real (non-replacement) devices.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "301946364e0aa67c4cfaec82e94c389993c9f7c6",
      "tree": "fff6390d22ba68f6726700cd4979f0de4c205a6f",
      "parents": [
        "b7044d41b5a09ce9082699f74c8f10e0fe59f704"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:56 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:56 2011 +1100"
      },
      "message": "md/raid1:  Replace use of mddev-\u003eraid_disks with conf-\u003eraid_disks.\n\nIn general mddev-\u003eraid_disks can change unexpectedly while\nconf-\u003eraid_disks will only change in a very controlled way.  So change\nsome uses of one to the other.\n\nThe use of mddev-\u003eraid_disks will not cause actually problems but\nthis way is more consistent and safer in the long term.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "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": "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": "d890fa2b0586b6177b119643ff66932127d58afa",
      "tree": "48dfb1c192274002fc045996f49915a4d9af3bf8",
      "parents": [
        "355840e7a7e56bb2834fd3b0da64da5465f8aeaa"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 26 11:54:39 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 26 11:54:39 2011 +1100"
      },
      "message": "md: Fix some bugs in recovery_disabled handling.\n\nIn 3.0 we changed the way recovery_disabled was handle so that instead\nof testing against zero, we test an mddev-\u003e value against a conf-\u003e\nvalue.\nTwo problems:\n  1/ one place in raid1 was missed and still sets to \u00271\u0027.\n  2/ We didn\u0027t explicitly set the conf-\u003e value at array creation\n     time.\n     It defaulted to \u00270\u0027 just like the mddev value does so they\n     could appear equal and thus disable recovery.\n     This did not affect normal \u0027md\u0027 as it calls bind_rdev_to_array\n     which changes the mddev value.  However the dmraid interface\n     doesn\u0027t call this and so doesn\u0027t change -\u003erecovery_disabled; so at\n     array start all recovery is incorrectly disabled.\n\nSo initialise the \u0027conf\u0027 value to one less that the mddev value, so\nthe will only be the same when explicitly set that way.\n\nReported-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown  \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9562ad9ab36df7ccef920d119f3b5100025db95f",
      "tree": "b5e32ca469cbefca4122c1a08db80cdb12e655fb",
      "parents": [
        "e890413af4c2dfebf5432ef30cc70cb11dad3213"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Mon Oct 24 16:11:30 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Oct 24 16:11:30 2011 +0200"
      },
      "message": "block: Remove the control of complete cpu from bio.\n\nbio originally has the functionality to set the complete cpu, but\nit is broken.\n\nChirstoph said that \"This code is unused, and from the all the\ndiscussions lately pretty obviously broken.  The only thing keeping\nit serves is creating more confusion and possibly more bugs.\"\n\nAnd Jens replied with \"We can kill bio_set_completion_cpu(). I\u0027m fine\nwith leaving cpu control to the request based drivers, they are the\nonly ones that can toggle the setting anyway\".\n\nSo this patch tries to remove all the work of controling complete cpu\nfrom a bio.\n\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "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": "34db0cd60f8a1f4ab73d118a8be3797c20388223",
      "tree": "45d1d629d6b9195d47d30980595686c9a3ee92f9",
      "parents": [
        "84fc4b56db85cb9e05326424049973a2036c9940"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:50:01 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:50:01 2011 +1100"
      },
      "message": "md: add proper write-congestion reporting to RAID1 and RAID10.\n\nRAID1 and RAID10 handle write requests by queuing them for handling by\na separate thread.  This is because when a write-intent-bitmap is\nactive we might need to update the bitmap first, so it is good to\nqueue a lot of writes, then do one big bitmap update for them all.\n\nHowever writeback request devices to appear to be congested after a\nwhile so it can make some guesstimate of throughput.  The infinite\nqueue defeats that (note that RAID5 has already has a finite queue so\nit doesn\u0027t suffer from this problem).\n\nSo impose a limit on the number of pending write requests.  By default\nit is 1024 which seems to be generally suitable.  Make it configurable\nvia module option just in case someone finds a regression.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "84fc4b56db85cb9e05326424049973a2036c9940",
      "tree": "b8f942766ad620d63da92c24df56032168879253",
      "parents": [
        "29d3247ea2274bca0d0b7f41fcf3b82e0a8bc44c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:58 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:58 2011 +1100"
      },
      "message": "md: rename \"mdk_personality\" to \"md_personality\"\n\n\"mdk\" doesn\u0027t mean anything any more.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e8096360476689898f038feebf5b352c9ec43a2a",
      "tree": "e7570a5fc3cb0e40f29c55470a2261e03c44a8d1",
      "parents": [
        "e879a8793f915aa7933364d962d2435bd71de462"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:05 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:05 2011 +1100"
      },
      "message": "md/raid1: typedef removal: conf_t -\u003e struct r1conf\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0f6d02d580ca77ee4be085c29c5fe5b879df24d9",
      "tree": "6ac3a0f3fba6cc6f8d66e9c413460ab5a740db8e",
      "parents": [
        "9f2c9d12bcc53fcb3b787023723754e84d1aef8b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:46 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:46 2011 +1100"
      },
      "message": "md: remove typedefs: mirror_info_t -\u003e struct mirror_info\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9f2c9d12bcc53fcb3b787023723754e84d1aef8b",
      "tree": "85fbc63c6e480bdebe06529e1af4d3d483d70452",
      "parents": [
        "2b8bf3451d1e3133ebc3998721d14013a6c27114"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:43 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:43 2011 +1100"
      },
      "message": "md: remove typedefs: r10bio_t -\u003e struct r10bio and r1bio_t -\u003e struct r1bio\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": "0fc280f606742e8a2969776b2ab11cf6a614d9e1",
      "tree": "5725762cf7bc5eddcf0007584dfa7ba6eb67d3d8",
      "parents": [
        "ba3ae3bee317f0a5db813c026c8a8c113a4e40fb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:22:55 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:22:55 2011 +1100"
      },
      "message": "md/raid1/ avoid bio search in end_sync_read()\n\nWe know which device we just read from so we don\u0027t need to\nsearch the bios to find out.  Just use -\u003eread_disk.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ba3ae3bee317f0a5db813c026c8a8c113a4e40fb",
      "tree": "30a8c9d55afc32156973a3b1efb1cec94f4411d4",
      "parents": [
        "e4f869d9de18bc8272df8d0ab764178aa24bdf33"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Fri Oct 07 14:22:53 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:22:53 2011 +1100"
      },
      "message": "md/raid1: factor out common bio handling code\n\nWhen normal-write and sync-read/write bio completes, we should\nfind out the disk number the bio belongs to. Factor those common\ncode out to a separate function.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.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": "079fa166a2874985ae58b2e21e26e1cbc91127d4",
      "tree": "39f67f9078465bd67c29216b35370a78907e4f3b",
      "parents": [
        "19d5f834d6aff7efb1c9353523865c5bce869470"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Sep 10 17:21:23 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Sep 10 17:21:23 2011 +1000"
      },
      "message": "md/raid1,10: Remove use-after-free bug in make_request.\n\nA single request to RAID1 or RAID10 might result in multiple\nrequests if there are known bad blocks that need to be avoided.\n\nTo detect if we need to submit another write request we test:\n \tif (sectors_handled \u003c (bio-\u003ebi_size \u003e\u003e 9)) {\n\nHowever this is after we call **_write_done() so the \u0027bio\u0027 no longer\nbelongs to us - the writes could have completed and the bio freed.\n\nSo move the **_write_done call until after the test against\nbio-\u003ebi_size.\n\nThis addresses https://bugzilla.kernel.org/show_bug.cgi?id\u003d41862\n\nReported-by: Bruno Wolff III \u003cbruno@wolff.to\u003e\nTested-by: Bruno Wolff III \u003cbruno@wolff.to\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "62096bce231b3760882ed91205fc84682d6b0529",
      "tree": "90b8a89be6f3c1983e88a4b0fe9d5a0e15ccda7e",
      "parents": [
        "3a9f28a5117e00a868dd8b4395f9a707ae56764b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:38:13 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:38:13 2011 +1000"
      },
      "message": "md/raid1: factor several functions out or raid1d()\n\nraid1d is too big with several deep branches.\nSo separate them out into their own functions.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "3a9f28a5117e00a868dd8b4395f9a707ae56764b",
      "tree": "36fe0fc7a7ccfc0da03dea546286b7bdef581246",
      "parents": [
        "d8f05d2995d467a91db1af01637e6ffd94660ca8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:33:42 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:33:42 2011 +1000"
      },
      "message": "md/raid1: improve handling of read failure during recovery.\n\nIf we cannot read a block from anywhere during recovery, there is\nnow a better approach than just giving up.\nWe can record a bad block on each device and keep going - being\ncareful not to clear the bad block when a write succeeds as it might -\nit will be a write of incorrect data.\n\nWe have now reached the state where - for raid1 - we only call\nmd_error if md_set_badblocks has failed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "d8f05d2995d467a91db1af01637e6ffd94660ca8",
      "tree": "e35959bc4f6c370c982df8222eb818c720b94ffd",
      "parents": [
        "cd5ff9a16f0831f68c1024d5d776075b5123b034"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:33:00 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:33:00 2011 +1000"
      },
      "message": "md/raid1: record badblocks found during resync etc.\n\nIf we find a bad block while writing as part of resync/recovery we\nneed to report that back to raid1d which must record the bad block,\nor fail the device.\n\nSimilarly when fixing a read error, a further error should just\nrecord a bad block if possible rather than failing the device.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "cd5ff9a16f0831f68c1024d5d776075b5123b034",
      "tree": "490e297bde3d0c52b55d38b38ed1cdb5b5b6f43e",
      "parents": [
        "2ca68f5ed7383733102ee53cd8fa4021ecc3b275"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:32:41 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:32:41 2011 +1000"
      },
      "message": "md/raid1:  Handle write errors by updating badblock log.\n\nWhen we get a write error (in the data area, not in metadata),\nupdate the badblock log rather than failing the whole device.\n\nAs the write may well be many blocks, we trying writing each\nblock individually and only log the ones which fail.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "2ca68f5ed7383733102ee53cd8fa4021ecc3b275",
      "tree": "29543cff802770d90380b889cf8b0cc01e7d1814",
      "parents": [
        "4367af556133723d0f443e14ca8170d9447317cb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:32:10 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:32:10 2011 +1000"
      },
      "message": "md/raid1: store behind-write pages in bi_vecs.\n\nWhen performing write-behind we allocate pages to store the data\nduring write.\nPreviously we just keep a list of pages.  Now we keep a list of\nbi_vec which includes offset and size.\nThis means that the r1bio has complete information to create a new\nbio which will be needed for retrying after write errors.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "4367af556133723d0f443e14ca8170d9447317cb",
      "tree": "d87bb40920f0f43cea586b7dd99b45f713ffd614",
      "parents": [
        "1f68f0c4b677ccd6935ff61e4e6888787505f8dc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:31:49 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:31:49 2011 +1000"
      },
      "message": "md/raid1: clear bad-block record when write succeeds.\n\nIf we succeed in writing to a block that was recorded as\nbeing bad, we clear the bad-block record.\n\nThis requires some delayed handling as the bad-block-list update has\nto happen in process-context.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "1f68f0c4b677ccd6935ff61e4e6888787505f8dc",
      "tree": "aaff73efbc3fb7b6092eb2106e142e1684c4b554",
      "parents": [
        "0b7d83865cb7a60b1768212c1e60b8fd7c280506"
      ],
      "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 writing to known-bad blocks on known-bad drives.\n\nIf we have seen any write error on a drive, then don\u0027t write to\nany known-bad blocks on that drive.\nIf necessary, we divide the write request up into pieces just\nlike we do for reads, so each piece is either all written or\nall not written to any given drive.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\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": "06f603851fa90bcd236328438278d4dc8b655495",
      "tree": "49a7f239a9c2de4bf97d998f161b229a565e33cd",
      "parents": [
        "d2eb35acfdccbe2a3622ed6cc441a5482148423b"
      ],
      "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 known bad blocks during resync\n\nWhen performing resync/etc, keep the size of the request\nsmall enough that it doesn\u0027t overlap any known bad blocks.\nDevices with badblocks at the start of the request are completely\nexcluded.\nIf there is nowhere to read from due to bad blocks, record\na bad block on each target device.\n\nNow that we never read from known-bad-blocks we can allow devices with\nknown-bad-blocks into a RAID1.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\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": "34b343cff4354ab9864be83be88405fd53d928a0",
      "tree": "10d75ecac6091f955cbb8a60b79f443355ca4ea8",
      "parents": [
        "6e0d2d0312fb20c1edac1b2c849068c1c7944abf"
      ],
      "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: don\u0027t allow arrays to contain devices with bad blocks.\n\nAs no personality understand bad block lists yet, we must\nreject any device that is known to contain bad blocks.\nAs the personalities get taught, these tests can be removed.\n\nThis only applies to raid1/raid5/raid10.\nFor linear/raid0/multipath/faulty the whole concept of bad blocks\ndoesn\u0027t mean anything so there is no point adding the checks.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "654e8b5abc0a793f0c029128db6e4804691a383e",
      "tree": "536950fcc8c418c8716ba152e439fe86d24f3365",
      "parents": [
        "8cfa7b0f67b4d899efc7f39eb7e172fd79237811"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.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: raid1 s/sysfs_notify_dirent/sysfs_notify_dirent_safe\n\nIf device-mapper creates a RAID1 array that includes devices to\nbe rebuilt, it will deref a NULL pointer when finished because\nsysfs is not used by device-mapper instantiated RAID devices.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9d3d80113df824a266c5db3fac357a036ebc0b62",
      "tree": "26607a8761b06cfc05e4259a6609a48d9dab3f26",
      "parents": [
        "65a06f06744d3deae61f3596566952a8da92199f"
      ],
      "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/raid1: move rdev-\u003ecorrected_errors counting\n\nRead errors are considered to corrected if write-back and re-read\ncycle is finished without further problems. Thus moving the rdev-\u003e\ncorrected_errors counting after the re-reading looks more reasonable\nIMHO. Also included a couple of whitespace fixes on sync_page_io().\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": "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": "8bda470e8ebde35f9349e98ecbce4dfb508a60fa",
      "tree": "105aa6781eef93c5a2f996c53dfa25fbce818dfe",
      "parents": [
        "a0a02a7ad62b5615b17294c2075e4916f8d1f0a4"
      ],
      "author": {
        "name": "Christian Dietrich",
        "email": "christian.dietrich@informatik.uni-erlangen.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/raid: use printk_ratelimited instead of printk_ratelimit\n\nAs per printk_ratelimit comment, it should not be used.\n\nSigned-off-by: Christian Dietrich \u003cchristian.dietrich@informatik.uni-erlangen.de\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1ed7242e591af7e233234d483f12d33818b189d9",
      "tree": "87d4a65cdb3510a97da7f2aefb9534839c49cfa4",
      "parents": [
        "0fd018af37dadbb7826850883ad8abfecdb1a00b"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Jun 07 17:50:35 2011 -0500"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jun 08 15:11:31 2011 +1000"
      },
      "message": "MD: raid1 changes to allow use by device mapper\n\nMD RAID1: Changes to allow RAID1 to be used by device-mapper (dm-raid.c)\n\nAdded the necessary congestion function and conditionalize calls requiring an\narray \u0027queue\u0027 or \u0027gendisk\u0027.\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": "af6d7b760c7547c1a410a333bdb24daed24e1043",
      "tree": "5789fa005f94911bc6a92a6cb8700b8025a3adc4",
      "parents": [
        "7ca78d57d11a91bc93b35342fa58647b85bedeb1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 11 14:51:19 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 11 14:51:19 2011 +1000"
      },
      "message": "md/raid1: improve handling of pages allocated for write-behind.\n\nThe current handling and freeing of these pages is a bit fragile.\nWe only keep the list of allocated pages in each bio, so we need to\nstill have a valid bio when freeing the pages, which is a bit clumsy.\n\nSo simply store the allocated page list in the r1_bio so it can easily\nbe found and freed when we are finished with the r1_bio.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7ca78d57d11a91bc93b35342fa58647b85bedeb1",
      "tree": "398f2f91e5252b45872506763ae3677e1f35c026",
      "parents": [
        "78d7f5f726deb562a51126603f2dc5d00990b223"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 11 14:50:37 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 11 14:50:37 2011 +1000"
      },
      "message": "md/raid1: try fix_sync_read_error before process_checks.\n\nIf we get a read error during resync/recovery we current repeat with\nsingle-page reads to find out just where the error is, and possibly\nread each page from a different device.\n\nWith check/repair we don\u0027t currently do that, we just fail.\nHowever it is possible that while all devices fail on the large 64K\nread, we might be able to satisfy each 4K from one device or another.\n\nSo call fix_sync_read_error before process_checks to maximise the\nchance of finding good data and writing it out to the devices with\nread errors.\n\nFor this to work, we need to set the \u0027uptodate\u0027 flags properly after\nfix_sync_read_error has succeeded.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "78d7f5f726deb562a51126603f2dc5d00990b223",
      "tree": "eb4255cb674028b8709c4542e2a490db3264754f",
      "parents": [
        "a68e58703575b9c03d610a818e0241564fc17f68"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 11 14:48:56 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 11 14:48:56 2011 +1000"
      },
      "message": "md/raid1: tidy up new functions: process_checks and fix_sync_read_error.\n\nThese changes are mostly cosmetic:\n\n1/ change mddev-\u003eraid_disks to conf-\u003eraid_disks because the later is\n   technically safer, though in current practice it doesn\u0027t matter in\n   this particular context.\n2/ Rearrange two for / if loops to have an early \u0027continue\u0027 so the\n   body of the \u0027if\u0027 doesn\u0027t need to be indented so much.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a68e58703575b9c03d610a818e0241564fc17f68",
      "tree": "f60a433b20a4e297d010a23775e78493687c160b",
      "parents": [
        "6f8d0c77cef5849433dd7beb0bd97e573cc4a6a3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 11 14:40:44 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 11 14:40:44 2011 +1000"
      },
      "message": "md/raid1: split out two sub-functions from sync_request_write\n\nsync_request_write is too big and too deep.\nSo split out two self-contains bits of functionality into separate\nfunction.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "76073054c95b12af6bd0cc9b9462a265b45ba38f",
      "tree": "78f830289dd8bb5337a7d3efa442ae44abd4dbab",
      "parents": [
        "56d9912106b0974ffb6dd264c80c7e816677e998"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 11 14:34:56 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 11 14:34:56 2011 +1000"
      },
      "message": "md/raid1: clean up read_balance.\n\nread_balance has two loops which both look for a \u0027best\u0027\ndevice based on slightly different criteria.\nThis is clumsy and makes is hard to add extra criteria.\n\nSo replace it all with a single loop that combines everything.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c3b328ac846bcf6b9a62c5563380a81ab723006d",
      "tree": "f9b78651beec3d66cf2ab7cf7a8080fa1cfe5b99",
      "parents": [
        "7c13edc87510f665da3094174e1fd633e06649f4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 18 18:25:43 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 18 18:25:43 2011 +1000"
      },
      "message": "md: fix up raid1/raid10 unplugging.\n\nWe just need to make sure that an unplug event wakes up the md\nthread, which is exactly what mddev_check_plugged does.\n\nAlso remove some plug-related code that is no longer needed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e1dfa0a29737142c32f00a3bac0f609dc85b4a82",
      "tree": "1af906cc5e959803e7d5ea0e56fb69b56754501a",
      "parents": [
        "99e22598e9a8e0a996d69c8c0f6b7027cb57720a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 18 18:25:41 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 18 18:25:41 2011 +1000"
      },
      "message": "md: use new plugging interface for RAID IO.\n\nmd/raid submits a lot of IO from the various raid threads.\nSo adding start/finish plug calls to those so that some\nplugging happens.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\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": "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": "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": "da9cf5050a2e3dbc3cf26a8d908482eb4485ed49",
      "tree": "d5e7ea4ef419d07d294e88b47a4aaf2676a605eb",
      "parents": [
        "8f5f02c460b7ca74ce55ce126ce0c1e58a3f923d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Feb 21 18:25:57 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Feb 21 18:25:57 2011 +1100"
      },
      "message": "md: avoid spinlock problem in blk_throtl_exit\n\nblk_throtl_exit assumes that -\u003equeue_lock still exists,\nso make sure that it does.\nTo do this, we stop redirecting -\u003equeue_lock to conf-\u003edevice_lock\nand leave it pointing where it is initialised - __queue_lock.\n\nAs the blk_plug functions check the -\u003equeue_lock is held, we now\ntake that spin_lock explicitly around the plug functions.  We don\u0027t\nneed the locking, just the warning removal.\n\nThis is needed for any kernel with the blk_throtl code, which is\nwhich is 2.6.37 and later.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ccebd4c4159462c96397ae9af9c667bb394d7b70",
      "tree": "04554f0e7607d906c6b09f31a995fca0dd40c5b5",
      "parents": [
        "57b2caa394393f8870ed41bdcc38a7542593018f"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "message": "md-new-param-to_sync_page_io\n\nAdd new parameter to \u0027sync_page_io\u0027.\n\nThe new parameter allows us to distinguish between metadata and data\noperations.  This becomes important later when we add the ability to\nuse separate devices for data and metadata.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\n"
    },
    {
      "commit": "067032bc628598606056412594042564fcf09e22",
      "tree": "5e64b6446c2156631cc66f34330ba7b134a451bf",
      "parents": [
        "6c9879101442b08581e8a0e3ae6b7f643a78fd63"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "message": "md: Fix single printks with multiple KERN_\u003clevel\u003es\n\nNoticed-by: Russell King \u003clinux@arm.linux.org.uk\u003e\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8f9e0ee38f75d4740daa9e42c8af628d33d19a02",
      "tree": "4e1b3fe1460cd0c71258cfb2f68bb28cf71eeca4",
      "parents": [
        "c26a44ed1e552aaa1d4ceb71842002d235fe98d7"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Nov 24 16:39:46 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Nov 24 16:39:46 2010 +1100"
      },
      "message": "md/raid1: really fix recovery looping when single good device fails.\n\nCommit 4044ba58dd15cb01797c4fd034f39ef4a75f7cc3 supposedly fixed a\nproblem where if a raid1 with just one good device gets a read-error\nduring recovery, the recovery would abort and immediately restart in\nan infinite loop.\n\nHowever it depended on raid1_remove_disk removing the spare device\nfrom the array.  But that does not happen in this case.  So add a test\nso that in the \u0027recovery_disabled\u0027 case, the device will be removed.\n\nThis suitable for any kernel since 2.6.29 which is when\nrecovery_disabled was introduced.\n\nCc: stable@kernel.org\nReported-by: Sebastian Färber \u003cfaerber@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f3ac8bf7ce1c5abd763ea762e95d1cdcf7799372",
      "tree": "bb903d4265520d5c96a9ee08557dd7f92c1f08df",
      "parents": [
        "046abeede717909feec38587d667cde1fc6c459c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Sep 06 14:10:08 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 29 16:40:33 2010 +1100"
      },
      "message": "md: tidy up device searches in read_balance.\n\nThe code for searching through the device list to read-balance in\nraid1 is rather clumsy and hard to follow.  Try to simplify it a bit.\n\nNo important functionality change here.\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "046abeede717909feec38587d667cde1fc6c459c",
      "tree": "e273b3c9aa887d2bc571b5ddff0bdff954f303e0",
      "parents": [
        "9b19553e0bd342957846037c996861d280ed694d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 26 15:46:20 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 29 16:40:33 2010 +1100"
      },
      "message": "md/raid1: fix some typos in comments.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n\n"
    },
    {
      "commit": "9b19553e0bd342957846037c996861d280ed694d",
      "tree": "8275aadb773bf89a7f4a6c84ccd18412744ab8a7",
      "parents": [
        "be2a2656eef95c32ca73e7a6a8c85671aa92e3f1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 27 15:39:14 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 29 16:40:33 2010 +1100"
      },
      "message": "md/raid1: discard unused variable.\n\nThis structure field (flushing_bio_list) is never used, so remove it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a167f663243662aa9153c01086580a11cde9ffdc",
      "tree": "886e64787421bbf17a1eab7853d67258b598f050",
      "parents": [
        "2b193363ef68667ad717a6723165e0dccf99470f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 26 18:31:13 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:36:15 2010 +1100"
      },
      "message": "md: use separate bio pool for each md device.\n\nbio_clone and bio_alloc allocate from a common bio pool.\nIf an md device is stacked with other devices that use this pool, or under\nsomething like swap which uses the pool, then the multiple calls on\nthe pool can cause deadlocks.\n\nSo allocate a local bio pool for each md array and use that rather\nthan the common pool.\n\nThis pool is used both for regular IO and metadata updates.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2b193363ef68667ad717a6723165e0dccf99470f",
      "tree": "bd45d5186f0edf2b546c4503d794b479d126ad1f",
      "parents": [
        "1c4588e9c19cae6209a28c9da2f16a18a610b935"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 27 15:16:40 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:36:11 2010 +1100"
      },
      "message": "md: change type of first arg to sync_page_io.\n\nCurrently sync_page_io takes a \u0027bdev\u0027.\nEvery caller passes \u0027rdev-\u003ebdev\u0027.\nWe will soon want another field out of the rdev in sync_page_io,\nSo just pass the rdev instead of the bdev out of it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1c4588e9c19cae6209a28c9da2f16a18a610b935",
      "tree": "74ffb14a5586c3a297b0fd372be5b72cf7e53bcd",
      "parents": [
        "6746557f0325a66f57d179126426e38a8ea66945"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 26 17:41:22 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:36:09 2010 +1100"
      },
      "message": "md/raid1: perform mem allocation before disabling writes during resync.\n\nThough this mem alloc is GFP_NOIO an so will not deadlock, it seems\nbetter to do the allocation before \u0027raise_barrier\u0027 which stops any IO\nrequests while the resync proceeds.\n\nraid10 always uses this order, so it is at least consistent to do the\nsame in raid1.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6746557f0325a66f57d179126426e38a8ea66945",
      "tree": "3b1db04c854b6ccc4752560f0d30c85e6cbbda6a",
      "parents": [
        "4e78064f42ad474ce9c31760861f7fb0cfc22532"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 26 17:33:54 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:36:06 2010 +1100"
      },
      "message": "md: use bio_kmalloc rather than bio_alloc when failure is acceptable.\n\nbio_alloc can never fail (as it uses a mempool) but an block\nindefinitely, especially if the caller is holding a reference to a\npreviously allocated bio.\n\nSo these to places which both handle failure and hold multiple bios\nshould not use bio_alloc, they should use bio_kmalloc.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4e78064f42ad474ce9c31760861f7fb0cfc22532",
      "tree": "3a1abaa98ebcbd62eacfbe95d72e44195fb3bc1f",
      "parents": [
        "e804ac780e2f01cb3b914daca2fd4780d1743db1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 19 12:54:01 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:34:07 2010 +1100"
      },
      "message": "md: Fix possible deadlock with multiple mempool allocations.\n\nIt is not safe to allocate from a mempool while holding an item\npreviously allocated from that mempool as that can deadlock when the\nmempool is close to exhaustion.\n\nSo don\u0027t use a bio list to collect the bios to write to multiple\ndevices in raid1 and raid10.\nInstead queue each bio as it becomes available so an unplug will\nactivate all previously allocated bios and so a new bio has a chance\nof being allocated.\n\nThis means we must set the \u0027remaining\u0027 count to \u00271\u0027 before submitting\nany requests, then when all are submitted, decrement \u0027remaining\u0027 and\npossible handle the write completion at that point.\n\nReported-by: Torsten Kaiser \u003cjust.for.lkml@googlemail.com\u003e\nTested-by: Torsten Kaiser \u003cjust.for.lkml@googlemail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "57dab0bdf689d42972975ec646d862b0900a4bf3",
      "tree": "d136f69b8a68850e40844397ebaffde31787c988",
      "parents": [
        "4b532c9b8c87eb8e51605c4d08dfb5139c758dc5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 19 10:03:39 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:32:26 2010 +1100"
      },
      "message": "md: use sector_t in bitmap_get_counter\n\nbitmap_get_counter returns the number of sectors covered\nby the counter in a pass-by-reference variable.\nIn some cases this can be very large, so make it a sector_t\nfor safety.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n\n"
    },
    {
      "commit": "fa251f89903d73989e2f63e13d0eaed1e07ce0da",
      "tree": "3f7fe779941e3b6d67754dd7c44a32f48ea47c74",
      "parents": [
        "dd3932eddf428571762596e17b65f5dc92ca361b",
        "cd07202cc8262e1669edff0d97715f3dd9260917"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Oct 19 09:13:04 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Oct 19 09:13:04 2010 +0200"
      },
      "message": "Merge branch \u0027v2.6.36-rc8\u0027 into for-2.6.37/barrier\n\nConflicts:\n\tblock/blk-core.c\n\tdrivers/block/loop.c\n\tmm/swapfile.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "db8d9d3591f77cc6b66248b2cdfa1c43deee5ec9",
      "tree": "2b8e727bc5f74883620934d3334323ce501c853e",
      "parents": [
        "7571ae887d3b96d8e7ce63d43828866c6a91cdc6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 07 12:00:50 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 07 12:00:50 2010 +1100"
      },
      "message": "md/raid1: minor bio initialisation improvements.\n\n\nWhen performing a resync we pre-allocate some bios and repeatedly use\nthem.  This requires us to re-initialise them each time.\nOne field (bi_comp_cpu) and some flags weren\u0027t being initiaised\nreliably.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n\n"
    },
    {
      "commit": "7571ae887d3b96d8e7ce63d43828866c6a91cdc6",
      "tree": "ecdc5d71d3d957604a172c23ef9943438ccee949",
      "parents": [
        "7c6d45e665d5322401e4439060bbf758b08422d4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 07 11:54:46 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 07 11:54:46 2010 +1100"
      },
      "message": "md/raid1:  avoid overflow in raid1 resync when bitmap is in use.\n\nbitmap_start_sync returns - via a pass-by-reference variable - the\nnumber of sectors before we need to check with the bitmap again.\nSince commit ef4256733506f245 this number can be substantially larger,\n2^27 is a common value.\n\nUnfortunately it is an \u0027int\u0027 and so when raid1.c:sync_request shifts\nit 9 places to the left it becomes 0.  This results in a zero-length\nread which the scsi layer justifiably complains about.\n\nThis patch just removes the shift so the common case becomes safe with\na trivially-correct patch.\n\nIn the next merge window we will convert this \u0027int\u0027 to a \u0027sector_t\u0027\n\nReported-by: \"George Spelvin\" \u003clinux@horizon.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e9c7469bb4f502dafc092166201bea1ad5fc0fbf",
      "tree": "04202b0bb88623d3005c909eaafcb280778902da",
      "parents": [
        "7bc9fddab074d6bb630344e1969e28d20b140621"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:18 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:38 2010 +0200"
      },
      "message": "md: implment REQ_FLUSH/FUA support\n\nThis patch converts md to support REQ_FLUSH/FUA instead of now\ndeprecated REQ_HARDBARRIER.  In the core part (md.c), the following\nchanges are notable.\n\n* Unlike REQ_HARDBARRIER, REQ_FLUSH/FUA don\u0027t interfere with\n  processing of other requests and thus there is no reason to mark the\n  queue congested while FLUSH/FUA is in progress.\n\n* REQ_FLUSH/FUA failures are final and its users don\u0027t need retry\n  logic.  Retry logic is removed.\n\n* Preflush needs to be issued to all member devices but FUA writes can\n  be handled the same way as other writes - their processing can be\n  deferred to request_queue of member devices.  md_barrier_request()\n  is renamed to md_flush_request() and simplified accordingly.\n\nFor linear, raid0 and multipath, the core changes are enough.  raid1,\n5 and 10 need the following conversions.\n\n* raid1: Handling of FLUSH/FUA bio\u0027s can simply be deferred to\n  request_queues of member devices.  Barrier related logic removed.\n\n* raid5: Queue draining logic dropped.  FUA bit is propagated through\n  biodrain and stripe resconstruction such that all the updated parts\n  of the stripe are written out with FUA writes if any of the dirtying\n  writes was FUA.  preread_active_stripes handling in make_request()\n  is updated as suggested by Neil Brown.\n\n* raid10: FUA bit needs to be propagated to write clones.\n\nlinear, raid0, 1, 5 and 10 tested.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "2c7d46ec192e4f2b350f67a0e185b9bce646cd6b",
      "tree": "2a49c1e99de3442184726be20d03e3a15d80cee0",
      "parents": [
        "6b9656205469269c050963c71fca1998b247a560"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Aug 18 16:16:05 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Aug 18 16:16:05 2010 +1000"
      },
      "message": "md raid-1/10 Fix bio_rw bit manipulations again\n\ncommit 7b6d91daee5cac6402186ff224c3af39d79f4a0e changed the behaviour\nof a few variables in raid1 and raid10 from flags to bit-sets, but\nleft them as type \u0027bool\u0027 so they did not work.\n\nChange them (back) to unsigned long.\n(historical note: see 1ef04fefe2241087d9db7e9615c3f11b516e36cf)\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReported-by: Jiri Slaby \u003cjslaby@suse.cz\u003e and many others\n"
    },
    {
      "commit": "6b9656205469269c050963c71fca1998b247a560",
      "tree": "9d090d2e363d269cdc55549213025d86af8ef70a",
      "parents": [
        "e6ffbcb6cd0ac471223df24ae77eb486c1ee68cc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Aug 18 11:56:59 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Aug 18 12:04:32 2010 +1000"
      },
      "message": "md: provide appropriate return value for spare_active functions.\n\nmd_check_recovery expects -\u003espare_active to return \u0027true\u0027 if any\nspares were activated, but none of them do, so the consequent change\nin \u0027degraded\u0027 is not notified through sysfs.\n\nSo count the number of spares activated, subtract it from \u0027degraded\u0027\njust once, and return it.\n\nReported-by: Adrian Drzewiecki \u003cadriand@vmware.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e6ffbcb6cd0ac471223df24ae77eb486c1ee68cc",
      "tree": "8739230c95a051c8ab95fdbfd90ec2e6ce0bf3c9",
      "parents": [
        "3a3a5ddb7a0f43c3dd0f98673f3d930a456725f8"
      ],
      "author": {
        "name": "Adrian Drzewiecki",
        "email": "adriand@vmware.com",
        "time": "Wed Aug 18 11:49:02 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Aug 18 11:49:02 2010 +1000"
      },
      "message": "md: Notify sysfs when RAID1/5/10 disk is In_sync.\n\nWhen RAID1 is done syncing disks, it\u0027ll update the state\nof synced rdevs to In_sync. But it neglected to notify\nsysfs that the attribute changed. So any programs that\nare waiting for an rdev\u0027s state to change will not be\nwoken.\n\n(raid5/raid10 added by neilb)\n\nSigned-off-by: Adrian Drzewiecki \u003cadriand@vmware.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n\n"
    },
    {
      "commit": "7b6d91daee5cac6402186ff224c3af39d79f4a0e",
      "tree": "b1518cf0b6c301178e0a320f80610cd5b3aa7625",
      "parents": [
        "33659ebbae262228eef4e0fe990f393d1f0ed941"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "message": "block: unify flags for struct bio and struct request\n\nRemove the current bio flags and reuse the request flags for the bio, too.\nThis allows to more easily trace the type of I/O from the filesystem\ndown to the block driver.  There were two flags in the bio that were\nmissing in the requests:  BIO_RW_UNPLUG and BIO_RW_AHEAD.  Also I\u0027ve\nrenamed two request flags that had a superflous RW in them.\n\nNote that the flags are in bio.h despite having the REQ_ name - as\nblkdev.h includes bio.h that is the only way to go for now.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "19fdb9eefb21b72edbc365b838502780c392bad6",
      "tree": "deae04c48532d6eab64ed4b0396737bb854b5506",
      "parents": [
        "be6800a73aa2f3dc14744c3b80e676d189789f04",
        "3ff195b011d7decf501a4d55aeed312731094796"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat May 22 08:31:36 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat May 22 08:31:36 2010 +1000"
      },
      "message": "Merge commit \u00273ff195b011d7decf501a4d55aeed312731094796\u0027 into for-linus\n\nConflicts:\n\tdrivers/md/md.c\n\n- Resolved conflict in md_update_sb\n- Added extra \u0027NULL\u0027 arg to new instance of sysfs_get_dirent.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "af3a2cd6b8a479345786e7fe5e199ad2f6240e56",
      "tree": "10690853d80455e69bcc0d027ad6c8b9c7951332",
      "parents": [
        "2dc40f80945ac3e5ec05c3a6c75baf09b13cee51"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat May 08 08:20:17 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:28:00 2010 +1000"
      },
      "message": "md: Fix read balancing in RAID1 and RAID10 on drives \u003e 2TB\n\nread_balance uses a \"unsigned long\" for a sector number which\nwill get truncated beyond 2TB.\nThis will cause read-balancing to be non-optimal, and can cause\ndata to be read from the \u0027wrong\u0027 branch during a resync.  This has a\nvery small chance of returning wrong data.\n\nReported-by: Jordan Russell \u003cjr-list-2010@quo.to\u003e\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9dd1e2faf72f79a2af9dcbd059473c06648726c2",
      "tree": "a3b400d49671930f6d6ff0b9d5890e598af7a94f",
      "parents": [
        "0c55e02259115c151e4835dd417cf41467bb02e2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 03 14:30:35 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:59 2010 +1000"
      },
      "message": "md/raid1: improve printk messages\n\nMake sure the array name is included in a uniform way in all printk\nmessages.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e555190d82c0f58e825e3cbd9e6ebe2e7ac713bd",
      "tree": "ea9c8e548c4d5eb5fc903bab05af3bda4192ed00",
      "parents": [
        "d754c5ae1ff76b20d3ecde8ad666d7865eada8ae"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Mar 31 11:21:44 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:57 2010 +1000"
      },
      "message": "md/raid1: delay reads that could overtake behind-writes.\n\nWhen a raid1 array is configured to support write-behind\non some devices, it normally only reads from other devices.\nIf all devices are write-behind (because the rest have failed)\nit is possible for a read request to be serviced before a\nbehind-write request, which would appear as data corruption.\n\nSo when forced to read from a WriteMostly device, wait for any\nwrite-behind to complete, and don\u0027t start any more behind-writes.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d754c5ae1ff76b20d3ecde8ad666d7865eada8ae",
      "tree": "60523d76c5e437ea39ce158295d75ea4247f70e1",
      "parents": [
        "9e35b99c7efacfddc748c89a0c53b1122b0ee72c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Apr 07 12:14:43 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:56 2010 +1000"
      },
      "message": "md/raid1: fix confusing \u0027redirect sector\u0027 message.\n\nThis message seems to suggest the named device is the one on which a\nread failed, however it is actually the device that the read will be\nredirected to.\nSo make the message a little clearer.\n\nReported-by: Tim Burgess \u003cozburgess@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n\n"
    },
    {
      "commit": "21a52c6d05c15f862797736393915bfa8cd40ee9",
      "tree": "44ffb633d209457979177a52132761a368fcb976",
      "parents": [
        "cca9cf90c504d98644ace52c474770970729f0eb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Apr 01 15:02:13 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:55 2010 +1000"
      },
      "message": "md: pass mddev to make_request functions rather than request_queue\n\nWe used to pass the personality make_request function direct\nto the block layer so the first argument had to be a queue.\nBut now we have the intermediary md_make_request so it makes\nat lot more sense to pass a struct mddev_s.\nIt makes it possible to have an mddev without its own queue too.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b821eaa572fd737faaf6928ba046e571526c36c6",
      "tree": "0db462a3c7da3dbf42d28e2483a27d78839b4589",
      "parents": [
        "49ce6cea85fb8d25ee59486c919406e9cecf1762"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 29 11:18:15 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:53 2010 +1000"
      },
      "message": "md: remove -\u003echanged and related code.\n\nWe set -\u003echanged to 1 and call check_disk_change at the end\nof md_open so that bd_invalidated would be set and thus\npartition rescan would happen appropriately.\n\nNow that we call revalidate_disk directly, which sets bd_invalidates,\nthat indirection is no longer needed and can be removed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "490773268cf64f68da2470e07b52c7944da6312d",
      "tree": "d394aafa7203c316db6b63f128b8894e18993fca",
      "parents": [
        "2b7f22284d71975e37a82db154386348eec0e52c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Mar 25 16:20:56 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:52 2010 +1000"
      },
      "message": "md: move io accounting out of personalities into md_make_request\n\nWhile I generally prefer letting personalities do as much as possible,\ngiven that we have a central md_make_request anyway we may as well use\nit to simplify code.\nAlso this centralises knowledge of -\u003egendisk which will help later.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7b92813c3c0b6990f14838e3985fb385d2655d0c",
      "tree": "c072a6684185f2c18734e704c488953250e8353a",
      "parents": [
        "696fcd535b5a8cfc0617e9cf1d9d69a13895cc1e"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Mon Mar 08 16:02:40 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:46 2010 +1000"
      },
      "message": "drivers/md: Remove unnecessary casts of void *\n\nvoid pointers do not need to be cast to other pointer types.\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "964147d5c86d63be79b442c30f3783d49860c078",
      "tree": "5c1eab8814cab3511c85037dec5220c5c24f91af",
      "parents": [
        "a64c876fd357906a1f7193723866562ad290654c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:13 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:13 2010 +1000"
      },
      "message": "md/raid1: fix counting of write targets.\n\nThere is a very small race window when writing to a\nRAID1 such that if a device is marked faulty at exactly the wrong\ntime, the write-in-progress will not be sent to the device,\nbut the bitmap (if present) will be updated to say that\nthe write was sent.\n\nThen if the device turned out to still be usable as was re-added\nto the array, the bitmap-based-resync would skip resyncing that\nblock, possibly leading to corruption.  This would only be a problem\nif no further writes were issued to that area of the device (i.e.\nthat bitmap chunk).\n\nSuitable for any pending -stable kernel.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "627a2d3c29427637f4c5d31ccc7fcbd8d312cd71",
      "tree": "f0de68842ca3b47d0152254e60d31cc561009119",
      "parents": [
        "25cf84cf377c0aae5dbcf937ea89bc7893db5176"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 08 16:44:38 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 16 17:04:24 2010 +1100"
      },
      "message": "md: deal with merge_bvec_fn in component devices better.\n\nIf a component device has a merge_bvec_fn then as we never call it\nwe must ensure we never need to.  Currently this is done by setting\nmax_sector to 1 PAGE, however this does not stop a bio being created\nwith several sub-page iovecs that would violate the merge_bvec_fn.\n\nSo instead set max_segments to 1 and set the segment boundary to the\nsame as a page boundary to ensure there is only ever one single-page\nsegment of IO requested at a time.\n\nThis can particularly be an issue when \u0027xen\u0027 is used as it is\nknown to submit multiple small buffers in a single bio.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "086fa5ff0854c676ec333760f4c0154b3b242616",
      "tree": "ee63fb3c7c7d964bd799355b7cde18ba95f91f07",
      "parents": [
        "eb28d31bc97e6374d81f404da309401ffaed467b"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Feb 26 00:20:38 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Feb 26 13:58:08 2010 +0100"
      },
      "message": "block: Rename blk_queue_max_sectors to blk_queue_max_hw_sectors\n\nThe block layer calling convention is blk_queue_\u003climit name\u003e.\nblk_queue_max_sectors predates this practice, leading to some confusion.\nRename the function to appropriately reflect that its intended use is to\nset max_hw_sectors.\n\nAlso introduce a temporary wrapper for backwards compability.  This can\nbe removed after the merge window is closed.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0efb9e6191e1d3d34c1db90b829b742bc36d532e",
      "tree": "5960d97df87a7eeea56d7dbe801259fc43398d5e",
      "parents": [
        "1e50915fe0bbf7a46db0fa7e1e604d3fc95f057d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:58 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: add MODULE_DESCRIPTION for all md related modules.\n\nSuggested by  Oren Held \u003corenhe@il.ibm.com\u003e\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "42a04b5078ce73a32f85762551d5703c5bd646a1",
      "tree": "3ef384933cd33d000516c292712da9a99e273360",
      "parents": [
        "c3d9714e88c8685cf9bc837c3241fc005f95fb82"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:53 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: move offset, daemon_sleep and chunksize out of bitmap structure\n\n... and into bitmap_info.  These are all configuration parameters\nthat need to be set before the bitmap is created.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "709ae4879ae33628ded276ce7da8cd5acfec476b",
      "tree": "db9714769f0b7d9b764eaf26ca51185519ae07bc",
      "parents": [
        "6eef4b21ffc9207b78fdd718154f5b004644b97d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:51 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md/raid1: add takeover support for raid5-\u003eraid1\n\nA 2-device raid5 array can now be converted to raid1.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6eef4b21ffc9207b78fdd718154f5b004644b97d",
      "tree": "554d8dafa2cd8ff7a9e719b12bd2f07c9745e7be",
      "parents": [
        "729a18663a30a9c8076e3adc2b3e4c866974f935"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:51 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:40 2009 +1100"
      },
      "message": "md: add honouring of suspend_{lo,hi} to raid1.\n\nThis will allow us to stop writeout to portions of the array\nwhile  they are resynced by someone else - e.g. another node in\na cluster.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d0e260782c3702a009645c3caa02e381dab8798b",
      "tree": "588f7776216df124d9372c7ced833b0bfb6d0a7f",
      "parents": [
        "a9366e61b03f55a6e009e687ad10e706714c9907"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Dec 01 17:30:59 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Dec 01 17:30:59 2009 +1100"
      },
      "message": "md: revert incorrect fix for read error handling in raid1.\n\ncommit 4706b349f was a forward port of a fix that was needed\nfor SLES10.  But in fact it is not needed in mainline because\nthe earlier commit dd00a99e7a fixes the same problem in a\nbetter way.\nFurther, this commit introduces a bug in the way it interacts with\nthe automatic read-error-correction.  If, after a read error is\nsuccessfully corrected, the same disk is chosen to re-read - the\nre-read won\u0027t be attempted but an error will be returned instead.\n\nAfter reverting that commit, there is the possibility that a\nread error on a read-only array (where read errors cannot\nbe corrected as that requires a write) will repeatedly read the same\ndevice and continue to get an error.\nSo in the \"Array is readonly\" case, fail the drive immediately on\na read error.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "ed9bfdf1a40952fd0f8094ec77f876b84ead69af",
      "tree": "2b92f23e861fa2695a55a0cd797233d032634c9d",
      "parents": [
        "f5efd45ae597c96ed017afad5662b67d55b402a0"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 15:55:44 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 15:55:44 2009 +1100"
      },
      "message": "md: raid1/raid10: handle allocation errors during array setup.\n\nBoth raid1 and raid10 create a mempool during startup.\nIf the \u0027alloc\u0027 function for this mempool fails, unplug_slaves\nis called.\nIf that happens when the pool is being initialised, unplug_slaves\nwill try to use the \u0027conf\u0027 structure that isn\u0027t filled in yet, and\nbadness will happen.\n\nSo ensure that unplug_slaves doesn\u0027t get called unless we know\nthat the conf structure if fully initialised.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    }
  ],
  "next": "1d9d52416c0445019ccc1f0fddb9a227456eb61b"
}
