)]}'
{
  "log": [
    {
      "commit": "257a4b42af7586fab4eaec7f04e6896b86551843",
      "tree": "ec65357b2320ba4e4341a2853245048889666f5c",
      "parents": [
        "9a3f530f39f4490eaa18b02719fb74ce5f4d2d86"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Nov 08 16:22:06 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 08 16:22:06 2011 +1100"
      },
      "message": "md/raid5: STRIPE_ACTIVE has lock semantics, add barriers\n\nAll updates that occur under STRIPE_ACTIVE should be globally visible\nwhen STRIPE_ACTIVE clears.  test_and_set_bit() implies a barrier, but\nclear_bit() does not.\n\nThis is suitable for 3.1-stable.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "9a3f530f39f4490eaa18b02719fb74ce5f4d2d86",
      "tree": "4bcff31bacd9b242360f48dad706d8b5231ffafe",
      "parents": [
        "1ea6b8f48918282bdca0b32a34095504ee65bab5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 08 16:22:01 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 08 16:22:01 2011 +1100"
      },
      "message": "md/raid5: abort any pending parity operations when array fails.\n\nWhen the number of failed devices exceeds the allowed number\nwe must abort any active parity operations (checks or updates) as they\nare no longer meaningful, and can lead to a BUG_ON in\nhandle_parity_checks6.\n\nThis bug was introduce by commit 6c0069c0ae9659e3a91b68eaed06a5c6c37f45c8\nin 2.6.29.\n\nReported-by: Manish Katiyar \u003cmkatiyar@gmail.com\u003e\nTested-by: Manish Katiyar \u003cmkatiyar@gmail.com\u003e\nAcked-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "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": "355840e7a7e56bb2834fd3b0da64da5465f8aeaa",
      "tree": "8ba816b2db3b96872f744c476c3d3d0d3f12fd23",
      "parents": [
        "bd860c53d4f9cad520d233e1ba690aaacfb39e9b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 26 10:31:04 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 26 10:31:04 2011 +1100"
      },
      "message": "md/raid5: fix bug that could result in reads from a failed device.\n\nThis bug was introduced in 415e72d034c50520ddb7ff79e7d1792c1306f0c9\nwhich was in 2.6.36.\n\nThere is a small window of time between when a device fails and when\nit is removed from the array.  During this time we might still read\nfrom it, but we won\u0027t write to it - so it is possible that we could\nread stale data.\n\nWe didn\u0027t need the test of \u0027Faulty\u0027 before because the test on\nIn_sync is sufficient.  Since we started allowing reads from the early\npart of non-In_sync devices we need a test on Faulty too.\n\nThis is suitable for any kernel from 2.6.36 onwards, though the patch\nmight need a bit of tweaking in 3.0 and earlier.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "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": "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": "d1688a6d5515f1900af76a963b4bb6d9a6554cfa",
      "tree": "2ed2b1001804b6982697c3785f06580a4e84e31b",
      "parents": [
        "e8096360476689898f038feebf5b352c9ec43a2a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:52 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:52 2011 +1100"
      },
      "message": "md/raid5: typedef removal: raid5_conf_t -\u003e struct r5conf\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e373ab109172abc2d821bd3b5c1b400acddef5a5",
      "tree": "48ca1b8ded6ec90a47015ab7316fe8cadb9f8d05",
      "parents": [
        "69724e28ca99990a8f0b5370bb946d7704936d67"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:59 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:59 2011 +1100"
      },
      "message": "md/raid0: typedef removal: raid0_conf_t -\u003e struct r0conf\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "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": "bdc04e6b15f70a8f96d8cdfe21df159a6466b49a",
      "tree": "23b762d044dafe35ac2fb20214fc1eff77a41bdd",
      "parents": [
        "db298e1946c074c83d97f1c959fbc0def2af2c86"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:23:04 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:23:04 2011 +1100"
      },
      "message": "md: remove some old DEBUGging code.\n\nThis code is not really helpful and is hard to maintain, so just\ndiscard it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "db298e1946c074c83d97f1c959fbc0def2af2c86",
      "tree": "1fb0ff7c0d6b85216d391e82b84af07b032fb987",
      "parents": [
        "0fc280f606742e8a2969776b2ab11cf6a614d9e1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:23:00 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:23:00 2011 +1100"
      },
      "message": "md/raid5: convert to macros into inline functions.\n\nMore type-safety.  Easier to read.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e4f869d9de18bc8272df8d0ab764178aa24bdf33",
      "tree": "9782f85edbecdb83dab65f2fab4390264b0d7139",
      "parents": [
        "ce550c2059a67ee7834fc6f64cf895391d36a58e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:22:49 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:22:49 2011 +1100"
      },
      "message": "md/raid5: remove pointless NULL test.\n\nIn the \u0027abort\u0027 branch of run(), \u0027conf\u0027 cannot possibly be NULL,\nso remove the test.\n\nReported-by: Zdenek Kabelac \u003czdenek.kabelac@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": "43220aa0f22cd3ce5b30246d50ccd696d119edea",
      "tree": "2738ff3d5acfbe899f30c4991175f945211e941d",
      "parents": [
        "7da64a0abc3b2c6cbd3521672e9bb74dd560bb89"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Aug 31 12:49:14 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Aug 31 12:49:14 2011 +1000"
      },
      "message": "md/raid5: fix a hang on device failure.\n\nWaiting for a \u0027blocked\u0027 rdev to become unblocked in the raid5d thread\ncannot work with internal metadata as it is the raid5d thread which\nwill clear the blocked flag.\nThis wasn\u0027t a problem in 3.0 and earlier as we only set the blocked\nflag when external metadata was used then.\nHowever we now set it always, so we need to be more careful.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b84db560ead5417b5594349512baf8837959df4f",
      "tree": "77f8cfe305a32ace5f4ead4eb820e3f9fa14ce67",
      "parents": [
        "73e92e51b7969ef5477dd28fe2ae4d77675896f4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:23 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:23 2011 +1000"
      },
      "message": "md/raid5: Clear bad blocks on successful write.\n\nOn a successful write to a known bad block, flag the sh\nso that raid5d can remove the known bad block from the list.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "73e92e51b7969ef5477dd28fe2ae4d77675896f4",
      "tree": "05f3d45d6c686abed79c0e5fac1d0b61ae9f93bd",
      "parents": [
        "bc2607f393bd4fb844c1886a02af929ca0372056"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:22 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:22 2011 +1000"
      },
      "message": "md/raid5.  Don\u0027t write to known bad block on doubtful devices.\n\nIf a device has seen write errors, don\u0027t write to any known\nbad blocks on that device.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bc2607f393bd4fb844c1886a02af929ca0372056",
      "tree": "45c7f9c538b5e196e389454286771f3beb8628ba",
      "parents": [
        "7f0da59bdc2f65795a57009d78f7753d3aea1de3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:22 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:22 2011 +1000"
      },
      "message": "md/raid5: write errors should be recorded as bad blocks if possible.\n\nWhen a write error is detected, don\u0027t mark the device as failed\nimmediately but rather record the fact for handle_stripe to deal with.\n\nHandle_stripe then attempts to record a bad block.  Only if that fails\ndoes the device get marked as faulty.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7f0da59bdc2f65795a57009d78f7753d3aea1de3",
      "tree": "4ab3ae7188122657c12dfab61626d96360fb6240",
      "parents": [
        "31c176ecdf3563140e6395249eda51a18130d9f6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:22 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:22 2011 +1000"
      },
      "message": "md/raid5: use bad-block log to improve handling of uncorrectable read errors.\n\nIf we get an uncorrectable read error - record a bad block rather than\nfailing the device.\nAnd if these errors (which may be due to known bad blocks) cause\nrecovery to be impossible, record a bad block on the recovering\ndevices, or abort the recovery.\n\nAs we might abort a recovery without failing a device we need to teach\nRAID5 about recovery_disabled handling.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "31c176ecdf3563140e6395249eda51a18130d9f6",
      "tree": "5ad7dba363214e9d36fa921c221316d2597078ef",
      "parents": [
        "62096bce231b3760882ed91205fc84682d6b0529"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:22 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:22 2011 +1000"
      },
      "message": "md/raid5: avoid reading from known bad blocks.\n\nThere are two times that we might read in raid5:\n1/ when a read request fits within a chunk on a single\n   working device.\n   In this case, if there is any bad block in the range of\n   the read, we simply fail the cache-bypass read and\n   perform the read though the stripe cache.\n\n2/ when reading into the stripe cache.  In this case we\n   mark as failed any device which has a bad block in that\n   strip (1 page wide).\n   Note that we will both avoid reading and avoid writing.\n   This is correct (as we will never read from the block, there\n   is no point writing), but not optimal (as writing could \u0027fix\u0027\n   the error) - that will be addressed later.\n\nIf we have not seen any write errors on the device yet, we treat a bad\nblock like a recent read error.  This will encourage an attempt to fix\nthe read error which will either generate a write error, or will\nensure good data is stored there.  We don\u0027t yet forget the bad block\nin that case.  That comes later.\n\nNow that we honour bad blocks when reading we can allow devices with\nbad blocks into the array.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "de393cdea66cbd63c90725663f400c76faf1b255",
      "tree": "6a2bf37bee98bf7de42856f904bd23c81e082f8e",
      "parents": [
        "d7a9d443bc8a75a24873c0506f50051edfedc714"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:31:48 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:31:48 2011 +1000"
      },
      "message": "md: make it easier to wait for bad blocks to be acknowledged.\n\nIt is only safe to choose not to write to a bad block if that bad\nblock is safely recorded in metadata - i.e. if it has been\n\u0027acknowledged\u0027.\n\nIf it hasn\u0027t we need to wait for the acknowledgement.\n\nWe support that using rdev-\u003eblocked wait and\nmd_wait_for_blocked_rdev by introducing a new device flag\n\u0027BlockedBadBlock\u0027.\n\nThis flag is only advisory.\nIt is cleared whenever we acknowledge a bad block, so that a waiter\ncan re-check the particular bad blocks that it is interested it.\n\nIt should be set by a caller when they find they need to wait.\nThis (set after test) is inherently racy, but as\nmd_wait_for_blocked_rdev already has a timeout, losing the race will\nhave minimal impact.\n\nWhen we clear \"Blocked\" was also clear \"BlockedBadBlocks\" incase it\nwas set incorrectly (see above race).\n\nWe also modify the way we manage \u0027Blocked\u0027 to fit better with the new\nhandling of \u0027BlockedBadBlocks\u0027 and to make it consistent between\nexternally managed and internally managed metadata.   This requires\nthat each raidXd loop checks if the metadata needs to be written and\ntriggers a write (md_check_recovery) if needed.  Otherwise a queued\nwrite request might cause raidXd to wait for the metadata to write,\nand only that thread can write it.\n\nBefore writing metadata, we set FaultRecorded for all devices that\nare Faulty, then after writing the metadata we clear Blocked for any\ndevice for which the Fault was certainly Recorded.\n\nThe \u0027faulty\u0027 device flag now appears in sysfs if the device is faulty\n*or* it has unacknowledged bad blocks.  So user-space which does not\nunderstand bad blocks can continue to function correctly.\nUser space which does, should not assume a device is faulty until it\nsees the \u0027faulty\u0027 flag, and then sees the list of unacknowledged bad\nblocks is empty.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "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": "8cfa7b0f67b4d899efc7f39eb7e172fd79237811",
      "tree": "df1002e5eccbf4b241dc9e948bb894de2106d6e2",
      "parents": [
        "cbea21703b2484f83faef040ed1de30114794392"
      ],
      "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/raid5: Avoid BUG caused by multiple failures.\n\nWhile preparing to write a stripe we keep the parity block or blocks\nlocked (R5_LOCKED) - towards the end of schedule_reconstruction.\n\nIf the array is discovered to have failed before this write completes\nwe can leave those blocks LOCKED, and init_stripe will notice that a\nfree stripe still has a locked block and will complain.\n\nSo clear the R5_LOCKED flag in handle_failed_stripe, and demote the\n\u0027BUG\u0027 to a \u0027WARN_ON\u0027.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ddd5115fe5594f5aae3c7f0008a5327bb1d19397",
      "tree": "a3bfeaea386bbecb4bc4cd56ff3139c5d9975981",
      "parents": [
        "9d3d80113df824a266c5db3fac357a036ebc0b62"
      ],
      "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/raid5: 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.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "36fad858a7404a9656122a9e560a224ae2a00979",
      "tree": "95f8a7a6b8dad6bb8d7c7735f7845888b5e702db",
      "parents": [
        "8bda470e8ebde35f9349e98ecbce4dfb508a60fa"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Wed Jul 27 11:00:36 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 27 11:00:36 2011 +1000"
      },
      "message": "md: introduce link/unlink_rdev() helpers\n\nThere are places where sysfs links to rdev are handled\nin a same way. Add the helper functions to consolidate\nthem.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "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": "acfe726bdd0000a9be1b308b29fad1e9ae62178c",
      "tree": "468713f2be848747723b89fe5afbf39cdfc375ef",
      "parents": [
        "474af965fe0005b334cabdb2904a7d712c21489b"
      ],
      "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/raid5: finalise new merged handle_stripe.\n\nhandle_stripe5() and handle_stripe6() are now virtually identical.\nSo discard one and rename the other to \u0027analyse_stripe()\u0027.\n\nIt always returns 0, so change it to \u0027void\u0027 and remove the \u0027done\u0027\nvariable in handle_stripe().\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "474af965fe0005b334cabdb2904a7d712c21489b",
      "tree": "1d63b4bbe47e2976dd10e7fa4674299b58efc45a",
      "parents": [
        "84789554e96c0263ad8aa9be91397ece1f88c768"
      ],
      "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/raid5: move some more common code into handle_stripe\n\nThe RAID6 version of this code is usable for RAID5 providing:\n  - we test \"conf-\u003emax_degraded\" rather than \"2\" as appropriate\n  - we make sure s-\u003efailed_num[1] is meaningful (and not \u0027-1\u0027)\n    when s-\u003efailed \u003e 1\n\nThe \u0027return 1\u0027 must become \u0027goto finish\u0027 in the new location.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "84789554e96c0263ad8aa9be91397ece1f88c768",
      "tree": "678ee7d5ba7a1473d4fd532a80e878b228c2066b",
      "parents": [
        "c8ac1803ff0af5aa614587ac0c66d46b7a3bdfcc"
      ],
      "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/raid5: move more common code into handle_stripe\n\nApart from \u0027prexor\u0027 which can only be set for RAID5, and\n\u0027qd_idx\u0027 which can only be meaningful for RAID6, these two\nchunks of code are nearly the same.\n\nSo combine them into one adding a test to call either\nhandle_parity_checks5 or handle_parity_checks6 as appropriate.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "c8ac1803ff0af5aa614587ac0c66d46b7a3bdfcc",
      "tree": "e1ac80fb2151802d8a2654b5c91e06c77c0f3686",
      "parents": [
        "93b3dbce6456a79c545b45e86ccc2244e923cc99"
      ],
      "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/raid5: unite handle_stripe_dirtying5 and handle_stripe_dirtying6\n\nRAID6 is only allowed to choose \u0027reconstruct-write\u0027 while RAID5 is\nalso allow \u0027read-modify-write\u0027\nApart from this difference, handle_stripe_dirtying[56] are nearly\nidentical.  So resolve these differences and create just one function.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "93b3dbce6456a79c545b45e86ccc2244e923cc99",
      "tree": "6f129f4bc8d309ed681e21bcb98009834becc898",
      "parents": [
        "5d35e09cae47bbae2739f432658860680de21866"
      ],
      "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/raid5: unite fetch_block5 and fetch_block6\n\nProvided that -\u003efailed_num[1] is not a valid device number (which is\neasily achieved) fetch_block6 provides all the functionality of\nfetch_block5.\n\nSo remove the latter and rename the former to simply \"fetch_block\".\n\nThen handle_stripe_fill5 and handle_stripe_fill6 become the same and\ncan similarly be united.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "5d35e09cae47bbae2739f432658860680de21866",
      "tree": "619a548f43403883f394062f3397de2ca6eb6c4a",
      "parents": [
        "c5a3100062cf277d3edd4e6f4a1f1e403524b464"
      ],
      "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/raid5: rearrange a test in fetch_block6.\n\nNext patch will unite fetch_block5 and fetch_block6.\nFirst I want to make the differences a little more clear.\n\nFor RAID6 if we are writing at all and there is a failed device, then\nwe need to load or compute every block so we can do a\nreconstruct-write.\nThis case isn\u0027t needed for RAID5 - we will do a read-modify-write in\nthat case.\nSo make that test a separate test in fetch_block6 rather than merged\nwith two other tests.\n\nMake a similar change in fetch_block5 so the one bit that is not\nneeded for RAID6 is clearly separate.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "c5a3100062cf277d3edd4e6f4a1f1e403524b464",
      "tree": "ccc8f2ae6491497cd8ad172a3bbc0165f86edcdf",
      "parents": [
        "3687c061886dd0bfec07e131ad12f916ef0abc62"
      ],
      "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/raid5: move more code into common handle_stripe\n\nThe difference between the RAID5 and RAID6 code here is easily\nresolved using conf-\u003emax_degraded.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "3687c061886dd0bfec07e131ad12f916ef0abc62",
      "tree": "c8f65f4895db3f9c1554f766a430829d40fe7c19",
      "parents": [
        "86c374ba9f6726a79a032ede741dc66d219b166e"
      ],
      "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/raid5: Move code for finishing a reconstruction into handle_stripe.\n\nPrior to commit ab69ae12ceef7 the code in handle_stripe5 and\nhandle_stripe6 to \"Finish reconstruct operations initiated by the\nexpansion process\" was identical.\nThat commit added an identical stanza of code to each function, but in\ndifferent places.  That was careless.\n\nThe raid5 code was correct, so move that out into handle_stripe and\nremove raid6 version.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "86c374ba9f6726a79a032ede741dc66d219b166e",
      "tree": "58bf8de967c300828e3176459455a86d68e27971",
      "parents": [
        "cc94015a9eac5d511fe9b716624d8fdf9c6e64b2"
      ],
      "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/raid5: Remove stripe_head_state arg from handle_stripe_expansion.\n\nThis arg is only used to differentiate between RAID5 and RAID6 but\nthat is not needed.  For RAID5, raid5_compute_sector will set qd_idx\nto \"~0\" so j with certainly not equals qd_idx, so there is no need\nfor a guard on that condition.\n\nSo remove the guard and remove the arg from the declaration and\ncallers of handle_stripe_expansion.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "cc94015a9eac5d511fe9b716624d8fdf9c6e64b2",
      "tree": "f8bc6cb3e5733f7101ea66223c27e30dc09b9bb1",
      "parents": [
        "c5709ef6a094c72b56355590bfa55cc107e98376"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 26 11:35:35 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 26 11:35:35 2011 +1000"
      },
      "message": "md/raid5: move stripe_head_state and more code into handle_stripe.\n\nBy defining the \u0027stripe_head_state\u0027 in \u0027handle_stripe\u0027, we can move\nsome common code out of handle_stripe[56]() and into handle_stripe.\n\nThe means that all accesses for stripe_head_state in handle_stripe[56]\nneed to be \u0027s-\u003e\u0027 instead of \u0027s.\u0027, but the compiler should inline\nthose functions and just use a direct stack reference, and future\npatches while hoist most of this code up into handle_stripe()\nso we will revert to \"s.\".\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "c5709ef6a094c72b56355590bfa55cc107e98376",
      "tree": "60e6208feff1ca8da4ce9a90cae3ef9d028d72fc",
      "parents": [
        "f2b3b44deee1524ca4f006048e0569f47eefdb74"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 26 11:35:20 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 26 11:35:20 2011 +1000"
      },
      "message": "md/raid5:  add some more fields to stripe_head_state\n\nAdding these three fields will allow more common code to be moved\nto handle_stripe()\n\nstruct field rearrangement by Namhyung Kim.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "f2b3b44deee1524ca4f006048e0569f47eefdb74",
      "tree": "49f758f1f46ceb9bbab9bdaa40117030f031a0b8",
      "parents": [
        "82e5a1718b9d0401b826341b9023766d04cb82f2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 26 11:35:19 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 26 11:35:19 2011 +1000"
      },
      "message": "md/raid5: unify stripe_head_state and r6_state\n\n\u0027struct stripe_head_state\u0027 stores state about the \u0027current\u0027 stripe\nthat is passed around while handling the stripe.\nFor RAID6 there is an extension structure: r6_state, which is also\npassed around.\nThere is no value in keeping these separate, so move the fields from\nthe latter into the former.\n\nThis means that all code now needs to treat s-\u003efailed_num as an small\narray, but this is a small cost.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "82e5a1718b9d0401b826341b9023766d04cb82f2",
      "tree": "4c1f26a7c547be3eb3d710834e35876073b86739",
      "parents": [
        "c4c1663be46b2ab94e59d3e0c583a8f6b188ff0c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 26 11:35:15 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 26 11:35:15 2011 +1000"
      },
      "message": "md/raid5: move common code into handle_stripe\n\nThere is common code at the start of handle_stripe5 and\nhandle_stripe6.  Move it into handle_stripe.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "c4c1663be46b2ab94e59d3e0c583a8f6b188ff0c",
      "tree": "2e0b6b51c0a55c5f9edad2c832a66c9949ef496d",
      "parents": [
        "cbe47ec559c33a68b5ee002051b848d1531a8adb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 26 11:34:20 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 26 11:34:20 2011 +1000"
      },
      "message": "md/raid5: replace sh-\u003elock with an \u0027active\u0027 flag.\n\nsh-\u003elock is now mainly used to ensure that two threads aren\u0027t running\nin the locked part of handle_stripe[56] at the same time.\n\nThat can more neatly be achieved with an \u0027active\u0027 flag which we set\nwhile running handle_stripe.  If we find the flag is set, we simply\nrequeue the stripe for later by setting STRIPE_HANDLE.\n\nFor safety we take -\u003edevice_lock while examining the state of the\nstripe and creating a summary in \u0027stripe_head_state / r6_state\u0027.\nThis possibly isn\u0027t needed but as shared fields like -\u003etoread,\n-\u003etowrite are checked it is safer for now at least.\n\nWe leave the label after the old \u0027unlock\u0027 called \"unlock\" because it\nwill disappear in a few patches, so renaming seems pointless.\n\nThis leaves the stripe \u0027locked\u0027 for longer as we clear STRIPE_ACTIVE\nlater, but that is not a problem.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "cbe47ec559c33a68b5ee002051b848d1531a8adb",
      "tree": "922184b1b599ce0e97f01d7fc6a84fc4c8493a0c",
      "parents": [
        "83206d66b65118d995c38746f21edc2bb8564b49"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 26 11:20:35 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 26 11:20:35 2011 +1000"
      },
      "message": "md/raid5: Protect some more code with -\u003edevice_lock.\n\nOther places that change or follow dev-\u003etowrite and dev-\u003ewritten take\nthe device_lock as well as the sh-\u003elock.\nSo it should really be held in these places too.\nAlso, doing so will allow sh-\u003elock to be discarded.\n\nwith merged fixes by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "83206d66b65118d995c38746f21edc2bb8564b49",
      "tree": "69e1c082cb33d19a508c764da613e0c6b5ced27b",
      "parents": [
        "ffd96e35c16a99fdb490cc5723b8e32135ae5883"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 26 11:19:49 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 26 11:19:49 2011 +1000"
      },
      "message": "md/raid5: Remove use of sh-\u003elock in sync_request\n\nThis is the start of a series of patches to remove sh-\u003elock.\n\nsync_request takes sh-\u003elock before setting STRIPE_SYNCING to ensure\nthere is no race with testing it in handle_stripe[56].\n\nInstead, use a new flag STRIPE_SYNC_REQUESTED and test it early\nin handle_stripe[56] (after getting the same lock) and perform the\nsame set/clear operations if it was set.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "ffd96e35c16a99fdb490cc5723b8e32135ae5883",
      "tree": "0ae71ae96af464f9e2edb60cdcfdc32e5cd92388",
      "parents": [
        "6ce328462c1145a217ba1f27b882743be1407759"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Mon Jul 18 17:38:51 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 18 17:38:51 2011 +1000"
      },
      "message": "md/raid5: get rid of duplicated call to bio_data_dir()\n\nIn raid5::make_request(), once bio_data_dir(@bi) is detected\nit never (and couldn\u0027t) be changed. Use the result always.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6ce328462c1145a217ba1f27b882743be1407759",
      "tree": "53eb00f1fbbb002f4f3d74a0e1ed09131377a70d",
      "parents": [
        "c65060ad4274f70048d62e0a86332cd3fd23f28d"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Mon Jul 18 17:38:50 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 18 17:38:50 2011 +1000"
      },
      "message": "md/raid5: use kmem_cache_zalloc()\n\nReplace kmem_cache_alloc + memset(,0,) to kmem_cache_zalloc.\nI think it\u0027s not harmful since @conf-\u003eslab_cache already knows\nactual size of struct stripe_head.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fcde90759a985d8bfa4391346a821cc12fc16207",
      "tree": "6bf70b409c98cd019d7814c19b52a54690dcc8de",
      "parents": [
        "b062962edb086011e94ec4d9eb3f6a6d814f2a8f"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Jun 14 14:23:57 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 14 14:23:57 2011 +1000"
      },
      "message": "md/raid5: remove unusual use of bio_iovec_idx()\n\nIn the bio_for_each_segment loop, bvl always points current\nbio_vec, so the same as bio_iovec_idx(, i). Let\u0027s get rid of\nit.\n\nCc: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b062962edb086011e94ec4d9eb3f6a6d814f2a8f",
      "tree": "4b832dab3687db5b719266d758a916bbc118e1f0",
      "parents": [
        "9b2dc8b665932a8e681a7ab3237f60475e75e161"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Jun 14 14:20:19 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 14 14:20:19 2011 +1000"
      },
      "message": "md/raid5: fix FUA request handling in ops_run_io()\n\nCommit e9c7469bb4f5 (\"md: implment REQ_FLUSH/FUA support\")\nintroduced R5_WantFUA flag and set rw to WRITE_FUA in that case.\nHowever remaining code still checks whether rw is exactly same\nas WRITE or not, so FUAed-write ends up with being treated as\nREAD. Fix it.\n\nThis bug has been present since 2.6.37 and the fix is suitable for any\n-stable kernel since then.  It is not clear why this has not caused\nmore problems.\n\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: stable@kernel.org\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9b2dc8b665932a8e681a7ab3237f60475e75e161",
      "tree": "2f9b4b6a1439de5eb15afe0ca8c71f3e2347befc",
      "parents": [
        "f699bf2328521cc3e20c412fcdb9ffe1255c360f"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Mon Jun 13 14:48:22 2011 +0900"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 14 14:09:41 2011 +1000"
      },
      "message": "md/raid5: fix raid5_set_bi_hw_segments\n\nThe @bio-\u003ebi_phys_segments consists of active stripes count in the\nlower 16 bits and processed stripes count in the upper 16 bits. So\nlogical-OR operator should be bitwise one.\n\nThis bug has been present since 2.6.27 and the fix is suitable for any\n-stable kernel since then.  Fortunately the bad code is only used on\nerror paths and is relatively unlikely to be hit.\n\nCc: stable@kernel.org\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d6b212f4b19da5301e6b6eca562e5c7a2a6e8c8d",
      "tree": "0cf0ae9320ea9ebbb6bd1403659591cf399c16a1",
      "parents": [
        "9c81075f436f867f580c2edf2350c0898cffc9d0"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Wed Jun 08 18:00:28 2011 -0500"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 09 11:42:29 2011 +1000"
      },
      "message": "MD: raid5 do not set fullsync\n\nAdd check to determine if a device needs full resync or if partial resync will do\n\nRAID 5 was assuming that if a device was not In_sync, it must undergo a full\nresync.  We add a check to see if \u0027saved_raid_disk\u0027 is the same as \u0027raid_disk\u0027.\nIf it is, we can safely skip the full resync and rely on the bitmap for\npartial recovery instead.  This is the legitimate purpose of \u0027saved_raid_disk\u0027,\nfrom md.h:\nint saved_raid_disk;            /* role that device used to have in the\n                                 * array and could again if we did a partial\n                                 * resync from the bitmap\n                                 */\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "57d19e80f459dd845fb3cfeba8e6df8471bac142",
      "tree": "8254766715720228db3d50f1ef3c7fe003c06d65",
      "parents": [
        "ee9ec4f82049c678373a611ce20ac67fe9ad836e",
        "e64851f5a0ad6ec991f74ebb3108c35aa0323d5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 23 09:12:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 23 09:12:26 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (39 commits)\n  b43: fix comment typo reqest -\u003e request\n  Haavard Skinnemoen has left Atmel\n  cris: typo in mach-fs Makefile\n  Kconfig: fix copy/paste-ism for dell-wmi-aio driver\n  doc: timers-howto: fix a typo (\"unsgined\")\n  perf: Only include annotate.h once in tools/perf/util/ui/browsers/annotate.c\n  md, raid5: Fix spelling error in comment (\u0027Ofcourse\u0027 --\u003e \u0027Of course\u0027).\n  treewide: fix a few typos in comments\n  regulator: change debug statement be consistent with the style of the rest\n  Revert \"arm: mach-u300/gpio: Fix mem_region resource size miscalculations\"\n  audit: acquire creds selectively to reduce atomic op overhead\n  rtlwifi: don\u0027t touch with treewide double semicolon removal\n  treewide: cleanup continuations and remove logging message whitespace\n  ath9k_hw: don\u0027t touch with treewide double semicolon removal\n  include/linux/leds-regulator.h: fix syntax in example code\n  tty: fix typo in descripton of tty_termios_encode_baud_rate\n  xtensa: remove obsolete BKL kernel option from defconfig\n  m68k: fix comment typo \u0027occcured\u0027\n  arch:Kconfig.locks Remove unused config option.\n  treewide: remove extra semicolons\n  ...\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": "6f8d0c77cef5849433dd7beb0bd97e573cc4a6a3",
      "tree": "42d3a4438d035dfd792758c40cbd39317166b1c8",
      "parents": [
        "92f861a72a273ed038c1e22ff9775456353e3009"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 11 14:38:44 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 11 14:38:44 2011 +1000"
      },
      "message": "md: make error_handler functions more uniform and correct.\n\n- there is no need to test_bit Faulty, as that was already done in\n  md_error which is the only caller of these functions.\n- MD_CHANGE_DEVS should be set *after* faulty is set to ensure\n  metadata is updated correctly.\n- spinlock should be held while updating -\u003edegraded.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n\n  \n"
    },
    {
      "commit": "aeb878b0967550bb56606ae21172bdcbd6afe052",
      "tree": "10758d84093fbb7c1a379fb4317b573966fc20af",
      "parents": [
        "70f23fd66bc821a0e99647f70a809e277cc93c4c"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Sun Apr 10 18:06:17 2011 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Tue May 10 10:18:36 2011 +0200"
      },
      "message": "md, raid5: Fix spelling error in comment (\u0027Ofcourse\u0027 --\u003e \u0027Of course\u0027).\n\nThere\u0027s a small typo in a comment in drivers/md/raid5.c - \u0027Of course\u0027 is\nmisspelled as \u0027Ofcourse\u0027. This patch fixes the spelling error.\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "d76c8420c3cf8e468901b0bd58306637335c98ea",
      "tree": "1dd7c5f1f19fb827968343e08e2cc5ed87358f05",
      "parents": [
        "83425eee85c6235392e3fe865faf533a48b60ab3"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Thu Apr 21 09:07:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 21 10:00:00 2011 -0700"
      },
      "message": "raid5: fix build error, sector_t usage\n\nChange \u003csectors\u003e from unsigned long long to sector_t.\nThis matches its source field.\n\n  ERROR: \"__udivdi3\" [drivers/md/raid456.ko] undefined!\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3b71bd9337b404baab5c894e066be6b6bf51b1c3",
      "tree": "23d29cf358319194092c41ed4748908e1b301180",
      "parents": [
        "2b7da309ffe602d222558cee4d7e407b96e34b3a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Apr 20 15:38:18 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Apr 20 15:38:18 2011 +1000"
      },
      "message": "md: Fix dev_sectors on takeover from raid0 to raid4/5\n\nA raid0 array doesn\u0027t set \u0027dev_sectors\u0027 as each device might\ncontribute a different number of sectors.\nSo when converting to a RAID4 or RAID5 we need to set dev_sectors\nas they need the number.\nWe have already verified that in fact all devices do contribute\nthe same number of sectors, so use that number.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2b7da309ffe602d222558cee4d7e407b96e34b3a",
      "tree": "34e3dc62926676983855aa0a4aa100aaabc98169",
      "parents": [
        "f0e615c3cb72b42191b558c130409335812621d8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Apr 20 15:38:07 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Apr 20 15:38:07 2011 +1000"
      },
      "message": "md/raid5: remove setting of -\u003equeue_lock\n\nWe previously needed to set -\u003equeue_lock to match the raid5\ndevice_lock so we could safely use queue_flag_* operations (e.g. for\nplugging). which test the -\u003equeue_lock is in fact locked.\n\nHowever that need has completely gone away and is unlikely to come\nback to remove this now-pointless setting.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7c13edc87510f665da3094174e1fd633e06649f4",
      "tree": "c0c50ab6ac43e9c762199bfd94c787f43a8e0896",
      "parents": [
        "97658cdd3af7d01461874c93b89afa4a2465e7c6"
      ],
      "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: incorporate new plugging into raid5.\n\nIn raid5 plugging is used for 2 things:\n 1/ collecting writes that require a bitmap update\n 2/ collecting writes in the hope that we can create full\n    stripes - or at least more-full.\n\nWe now release these different sets of stripes when plug_cnt\nis zero.\n\nAlso in make_request, we call mddev_check_plug to hopefully increase\nplug_cnt, and wake up the thread at the end if plugging wasn\u0027t\nachieved for some reason.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "482c083492ddaa32ef5864bae3d143dc8bcdf7d1",
      "tree": "75017fd1a51fe945c65b3600442ddaa20b636b1a",
      "parents": [
        "af1db72d8b340f97ad12b60175afdef43e6f0e60"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 18 18:25:42 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 18 18:25:42 2011 +1000"
      },
      "message": "md - remove old plugging code.\n\nmd has some plugging infrastructure for RAID5 to use because the\nnormal plugging infrastructure required a \u0027request_queue\u0027, and when\ncalled from dm, RAID5 doesn\u0027t have one of those available.\n\nThis relied on the -\u003eunplug_fn callback which doesn\u0027t exist any more.\n\nSo remove all of that code, both in md and raid5.  Subsequent patches\nwith restore the plugging functionality.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "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": "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": "50da08409654e036c4c964a473567a61a654cb83",
      "tree": "18a4c5edf23ec5aaf8872d9639970a99c7f16d8e",
      "parents": [
        "469518a3455c79619e9231aeffeffa2e2989f738"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 11:57:43 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 11:57:43 2011 +1100"
      },
      "message": "md: don\u0027t abort checking spares as soon as one cannot be added.\n\nAs spares can be added manually before a reshape starts, we need to\nfind them all to mark some of them as in_sync.\n\nPreviously we would abort looking for spares when we found an\nunallocated spare what could not be added to the array (implying there\nwas no room for new spares).  However already-added spares could be\nlater in the list, so we need to keep searching.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "469518a3455c79619e9231aeffeffa2e2989f738",
      "tree": "ae92280e8be9df25fd20fea87efcbe72bd855ae9",
      "parents": [
        "87a8dec91e15954f0cf86be6c21741d991d83621"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 11:57:43 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 11:57:43 2011 +1100"
      },
      "message": "md: fix the test for finding spares in raid5_start_reshape.\n\nAs spares can be added to the array before the reshape is started,\nwe need to find and count them when checking there are enough.\nThe array could have been degraded, so we need to check all devices,\nno just those out side of the range of devices in the array before\nthe reshape.\n\nSo instead of checking the index, check the In_sync flag as that\nreliably tells if the device is a spare or this purpose.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "87a8dec91e15954f0cf86be6c21741d991d83621",
      "tree": "6719ef774c0e1a719b0365eae457c8ba4f130c70",
      "parents": [
        "de171cb9a52598cc023adceafc6c166112401386"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 11:57:43 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 11:57:43 2011 +1100"
      },
      "message": "md: simplify some \u0027if\u0027 conditionals in raid5_start_reshape.\n\nThere are two consecutive \u0027if\u0027 statements.\n\n if (mddev-\u003edelta_disks \u003e\u003d 0)\n      ....\n if (mddev-\u003edelta_disks \u003e 0)\n\nThe code in the second is equally valid if delta_disks \u003d\u003d 0, and these\ntwo statements are the only place that \u0027added_devices\u0027 is used.\n\nSo make them a single if statement, make added_devices a local\nvariable, and re-indent it all.\n\nNo functional change.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1a940fcee31ec6c18c2f24dbdad31d54e4c35048",
      "tree": "73de19d505bb0483462eb1445a86a848e5506478",
      "parents": [
        "13ae864bc86ff65547ffe7e966b6433a0d0edb8a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md/raid5: handle manually-added spares in start_reshape.\n\nIt is possible to manually add spares to specific slots before\nstarting a reshape.\nraid5_start_reshape should recognised this possibility and include\nit in the accounting.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "75d3da43cb74d2e5fb87816dbfecb839cd97c7f4",
      "tree": "27074aceb801ada315329591f32c938b36150ed9",
      "parents": [
        "a6ff7e089c7fca813c956ccbed824087e89a3a49"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md: Don\u0027t let implementation detail of curr_resync leak out through sysfs.\n\nmddev-\u003ecurr_resync has artificial values of \u00271\u0027 and \u00272\u0027 which are used\nby the code which ensures only one resync is happening at a time on\nany given device.\n\nThese values are internal and should never be exposed to user-space\n(except when translated appropriately as in the \u0027pending\u0027 status in\n/proc/mdstat).\n\nUnfortunately they are as -\u003ecurr_resync is assigned to\n-\u003ecurr_resync_completed and that value is directly visible through\nsysfs.\n\nSo change the assignments to -\u003ecurr_resync_completed to get the same\nvalued from elsewhere in a form that doesn\u0027t have the magic \u00271\u0027 or \u00272\u0027\nvalues.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "43c73ca43b3e03bb228ff9350b6b44d0e560f262",
      "tree": "2a6fcff1e62c53ba0a95295cf02ae785b1efb501",
      "parents": [
        "0ca69886a8273ac1350143d562280bfcbe4760dc"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "message": "md/raid5: use sysfs_notify_dirent_safe to avoid NULL pointer\n\nWith the module parameter \u0027start_dirty_degraded\u0027 set,\nraid5_spare_active() previously called sysfs_notify_dirent() with a NULL\nargument (rdev-\u003esysfs_state) when a rebuild finished.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\n"
    },
    {
      "commit": "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": "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": "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": "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": "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": "3d30701b58970425e1d45994d6cb82f828924fdd",
      "tree": "8b14cf462628bebf8548c1b8c205a674564052d1",
      "parents": [
        "8cbd84f2dd4e52a8771b191030c374ba3e56d291",
        "fd8aa2c1811bf60ccb2d5de0579c6f62aec1772d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 15:38:19 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 15:38:19 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md: (24 commits)\n  md: clean up do_md_stop\n  md: fix another deadlock with removing sysfs attributes.\n  md: move revalidate_disk() back outside open_mutex\n  md/raid10: fix deadlock with unaligned read during resync\n  md/bitmap:  separate out loading a bitmap from initialising the structures.\n  md/bitmap: prepare for storing write-intent-bitmap via dm-dirty-log.\n  md/bitmap: optimise scanning of empty bitmaps.\n  md/bitmap: clean up plugging calls.\n  md/bitmap: reduce dependence on sysfs.\n  md/bitmap: white space clean up and similar.\n  md/raid5: export raid5 unplugging interface.\n  md/plug: optionally use plugger to unplug an array during resync/recovery.\n  md/raid5: add simple plugging infrastructure.\n  md/raid5: export is_congested test\n  raid5: Don\u0027t set read-ahead when there is no queue\n  md: add support for raising dm events.\n  md: export various start/stop interfaces\n  md: split out md_rdev_init\n  md: be more careful setting MD_CHANGE_CLEAN\n  md/raid5: ensure we create a unique name for kmem_cache when mddev has no gendisk\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": "9f7c2220017771253d7d10b3cc017cb79eeac0fb",
      "tree": "91e387cc225d59ac975b53590c4a75e20770b5ce",
      "parents": [
        "252ac5221a71be72b7e7c7b7482af91e9c962e8c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:04:13 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:53:10 2010 +1000"
      },
      "message": "md/raid5: export raid5 unplugging interface.\n\nAlso remove remaining accesses to -\u003equeue and -\u003egendisk when -\u003equeue\nis NULL (As it is in a DM target).\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "252ac5221a71be72b7e7c7b7482af91e9c962e8c",
      "tree": "cb9542b1391dabc136ce0052eb28948e77a6e2e5",
      "parents": [
        "2ac8740151b082f045e58010eb92560c3a23a0e9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:29 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:53:08 2010 +1000"
      },
      "message": "md/plug: optionally use plugger to unplug an array during resync/recovery.\n\nIf an array doesn\u0027t have a \u0027queue\u0027 then md_do_sync cannot\nunplug it.\nIn that case it will have a \u0027plugger\u0027, so make that available\nto the mddev, and use it to unplug the array if needed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2ac8740151b082f045e58010eb92560c3a23a0e9",
      "tree": "39bff686e28f033339c6d1cf47042b6dc1586c2f",
      "parents": [
        "11d8a6e3719519fbc0e2c9d61b6fa931b84bf813"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:29 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:53:08 2010 +1000"
      },
      "message": "md/raid5: add simple plugging infrastructure.\n\nmd/raid5 uses the plugging infrastructure provided by the block layer\nand \u0027struct request_queue\u0027.  However when we plug raid5 under dm there\nis no request queue so we cannot use that.\n\nSo create a similar infrastructure that is much lighter weight and use\nit for raid5.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "11d8a6e3719519fbc0e2c9d61b6fa931b84bf813",
      "tree": "13a075d1423b2caa3d3264db0cf8cd378c545623",
      "parents": [
        "4a5add49951e698073011855d1a8a7306bc9308d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 11:57:07 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:52:29 2010 +1000"
      },
      "message": "md/raid5: export is_congested test\n\nthe dm module will need this for dm-raid45.\n\nAlso only access -\u003equeue-\u003ebacking_dev_info-\u003econgested_fn\nif -\u003equeue actually exists.  It won\u0027t in a dm target.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4a5add49951e698073011855d1a8a7306bc9308d",
      "tree": "91c098468b96b959f88e1e2a386c6e8911db7c09",
      "parents": [
        "768a418db102bb6aa6064e6090892b5c21ff1f9e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:28 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:52:27 2010 +1000"
      },
      "message": "raid5: Don\u0027t set read-ahead when there is no queue\n\ndm-raid456 does not provide a \u0027queue\u0027 for raid5 to use,\nso we must make raid5 stop depending on the queue.\n\nFirst: read_ahead\ndm handles read-ahead adjustment fully in userspace, so\nsimply don\u0027t do any readahead adjustments if there is\nno queue.\n\nAlso re-arrange code slightly so all the accesses to -\u003equeue are\ntogether.\n\nFinally, move the blk_queue_merge_bvec function into the \u0027if\u0027 as\nthe -\u003esplit_io setting in dm-raid456 has the same effect.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f4be6b43f1ac60dff00ef0923ee43b0e08872947",
      "tree": "b4fbfed60c0614d97a91638483058a133ddfcbf4",
      "parents": [
        "c41d4ac40df0d01bf9c383ff28f194d1df2d4fd9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:25 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:52:26 2010 +1000"
      },
      "message": "md/raid5: ensure we create a unique name for kmem_cache when mddev has no gendisk\n\nWe will shortly allow md devices with no gendisk (they are attached to\na dm-target instead).  That will cause mdname() to return \u0027mdX\u0027.\nThere is one place where mdname really needs to be unique: when\ncreating the name for a slab cache.\nSo in that case, if there is no gendisk, you the address of the mddev\nformatted in HEX to provide a unique name.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c41d4ac40df0d01bf9c383ff28f194d1df2d4fd9",
      "tree": "0e22b3cc5e211a3f7dd4b6dea69d2afc1a173543",
      "parents": [
        "00bcb4ac7ee7e557a491b614219142cea0ef16f4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:24 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 21 13:28:15 2010 +1000"
      },
      "message": "md/raid5: factor out code for changing size of stripe cache.\n\nSeparate the actual \u0027change\u0027 code from the sysfs interface\nso that it can eventually be called internally.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "00bcb4ac7ee7e557a491b614219142cea0ef16f4",
      "tree": "992cfa1d0e653aa3de8f0865c5e1a5a0fee4f935",
      "parents": [
        "d0c6f6258478e1dba532bf7c28e2cd6e1047d3a4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:23 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 21 13:27:53 2010 +1000"
      },
      "message": "md: reduce dependence on sysfs.\n\nWe will want md devices to live as dm targets where sysfs is not\nvisible.  So allow md to not connect to sysfs.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3424bf6a772cff606fc4bc24a3639c937afb547f",
      "tree": "be299de834e0f939d19665efec4cacadd74c4914",
      "parents": [
        "2f115882499f3e5eca33d1df07b8876cc752a1ff"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 17 17:48:26 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:36:04 2010 +1000"
      },
      "message": "md/raid5: don\u0027t include \u0027spare\u0027 drives when reshaping to fewer devices.\n\nThere are few situations where it would make any sense to add a spare\nwhen reducing the number of devices in an array, but it is\nconceivable:  A 6 drive RAID6 with two missing devices could be\nreshaped to a 5 drive RAID6, and a spare could become available\njust in time for the reshape, but not early enough to have been\nrecovered first.  \u0027freezing\u0027 recovery can make this easy to\ndo without any races.\n\nHowever doing such a thing is a bad idea.  md will not record the\npartially-recovered state of the \u0027spare\u0027 and when the reshape\nfinished it will think that the spare is still spare.\nEasiest way to avoid this confusion is to simply disallow it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2f115882499f3e5eca33d1df07b8876cc752a1ff",
      "tree": "8f9f1e723be1b4dd0e5fa7592a69245a704d8440",
      "parents": [
        "415e72d034c50520ddb7ff79e7d1792c1306f0c9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 17 17:41:03 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:35:49 2010 +1000"
      },
      "message": "md/raid5: add a missing \u0027continue\u0027 in a loop.\n\nAs the comment says, the tail of this loop only applies to devices\nthat are not fully in sync, so if In_sync was set, we should avoid\nthe rest of the loop.\n\nThis bug will hardly ever cause an actual problem.  The worst it\ncan do is allow an array to be assembled that is dirty and degraded,\nwhich is not generally a good idea (without warning the sysadmin\nfirst).\n\nThis will only happen if the array is RAID4 or a RAID5/6 in an\nintermediate state during a reshape and so has one drive that is\nall \u0027parity\u0027 - no data - while some other device has failed.\n\nThis is certainly possible, but not at all common.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "415e72d034c50520ddb7ff79e7d1792c1306f0c9",
      "tree": "4558df940a15693e477af206b54423d98d9a04b1",
      "parents": [
        "674806d62fb02a22eea948c9f1b5e58e0947b728"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 17 17:25:21 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:35:39 2010 +1000"
      },
      "message": "md/raid5: Allow recovered part of partially recovered devices to be in-sync\n\nDuring a recovery of reshape the early part of some devices might be\nin-sync while the later parts are not.\nWe we know we are looking at an early part it is good to treat that\npart as in-sync for stripe calculations.\n\nThis is particularly important for a reshape which suffers device\nfailure.  Treating the data as in-sync can mean the difference between\ndata-safety and data-loss.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "674806d62fb02a22eea948c9f1b5e58e0947b728",
      "tree": "3367850a95d62713aa96acd2aecc493b66779398",
      "parents": [
        "70fffd0bfab1558a8c64c5e903dea1fb84cd9f6b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jun 16 17:17:53 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:35:27 2010 +1000"
      },
      "message": "md/raid5: More careful check for \"has array failed\".\n\nWhen we are reshaping an array, the device failure combinations\nthat cause us to decide that the array as failed are more subtle.\n\nIn particular, any \u0027spare\u0027 will be fully in-sync in the section\nof the array that has already been reshaped, thus failures that\naffect only that section are less critical.\n\nSo encode this subtlety in a new function and call it as appropriate.\n\nThe case that showed this problem was a 4 drive RAID5 to 8 drive RAID6\nconversion where the last two devices failed.\nThis resulted in:\n\n  good good good good incomplete good good failed failed\n\nwhile converting a 5-drive RAID6 to 8 drive RAID5\nThe incomplete device causes the whole array to look bad,\nbad as it was actually good for the section that had been\nconverted to 8-drives, all the data was actually safe.\n\nReported-by: Terry Morris \u003ctbmorris@tbmorris.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "70fffd0bfab1558a8c64c5e903dea1fb84cd9f6b",
      "tree": "126f2ae8faa2cff8f9dde91cc7a07569ff9851cb",
      "parents": [
        "e4e11e385d1e5516ac76c956d6c25e6c2fa1b8d0"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jun 16 17:01:25 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:35:18 2010 +1000"
      },
      "message": "md: Don\u0027t update -\u003erecovery_offset when reshaping an array to fewer devices.\n\nWhen an array is reshaped to have fewer devices, the reshape proceeds\nfrom the end of the devices to the beginning.\n\nIf a device happens to be non-In_sync (which is possible but rare)\nwe would normally update the -\u003erecovery_offset as the reshape\nprogresses. However that would be wrong as the recover_offset records\nthat the early part of the device is in_sync, while in fact it would\nonly be the later part that is in_sync, and in any case the offset\nnumber would be measured from the wrong end of the device.\n\nRelatedly, if after a reshape a spare is discovered to not be\nrecoverred all the way to the end, not allow spare_active\nto incorporate it in the array.\n\nThis becomes relevant in the following sample scenario:\n\nA 4 drive RAID5 is converted to a 6 drive RAID6 in a combined\noperation.\nThe RAID5-\u003eRAID6 conversion will cause a 5 drive to be included as a\nspare, then the 5drive -\u003e 6drive reshape will effectively rebuild that\nspare as it progresses.  The 6th drive is treated as in_sync the whole\ntime as there is never any case that we might consider reading from\nit, but must not because there is no valid data.\n\nIf we interrupt this reshape part-way through and reverse it to return\nto a 5-drive RAID6 (or event a 4-drive RAID5), we don\u0027t want to update\nthe recovery_offset - as that would be wrong - and we don\u0027t want to\ninclude that spare as active in the 5-drive RAID6 when the reversed\nreshape completed and it will be mostly out-of-sync still.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e4e11e385d1e5516ac76c956d6c25e6c2fa1b8d0",
      "tree": "978807084ae3136b20a12efab3720ecec861d0ff",
      "parents": [
        "049d6c1ef983c9ac43aa423dfd752071a5b0002d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jun 16 16:45:16 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:35:02 2010 +1000"
      },
      "message": "md/raid5: avoid oops when number of devices is reduced then increased.\n\nThe entries in the stripe_cache maintained by raid5 are enlarged\nwhen we increased the number of devices in the array, but not\nshrunk when we reduce the number of devices.\nSo if entries are added after reducing the number of devices, we\nmuch ensure to initialise the whole entry, not just the part that\nis currently relevant.  Otherwise if we enlarge the array again,\nwe will reference uninitialised values.\n\nAs grow_buffers/shrink_buffer now want to use a count that is stored\nexplicity in the raid_conf, they should get it from there rather than\nbeing passed it as a parameter.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "55af6bb509d3ef2696faddd4a734bf024794b337",
      "tree": "4a5f3493957c5c7504b91bf90bedd828a26106c0",
      "parents": [
        "d882ba699dbdd2156891290c31c22dc13d6530e4"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Wed May 26 14:43:35 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:48 2010 -0700"
      },
      "message": "md: convert cpu notifier to return encapsulate errno value\n\nBy the previous modification, the cpu notifier can return encapsulate\nerrno value.  This converts the cpu notifiers for raid5.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "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": "7b0bb5368a7195606eca475d9f4e291ab7227052",
      "tree": "2c5b9e5269fb585d0386cf931a0d154bee5d875f",
      "parents": [
        "75a73a29e520a6ce982b0da6dd8b7560ae3faa90"
      ],
      "author": {
        "name": "Gabriele A. Trombetti",
        "email": "g.trombetti.lkrnl1213@logicschema.com",
        "time": "Wed Apr 28 11:51:17 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:28:00 2010 +1000"
      },
      "message": "md/raid6: Fix raid-6 read-error correction in degraded state\n\nFix: Raid-6 was not trying to correct a read-error when in\nsingly-degraded state and was instead dropping one more device, going to\ndoubly-degraded state. This patch fixes this behaviour.\n\nTested-by: Janos Haar \u003cjanos.haar@netcenter.hu\u003e\nSigned-off-by: Gabriele A. Trombetti \u003cg.trombetti.lkrnl1213@logicschema.com\u003e\nReported-by: Janos Haar \u003cjanos.haar@netcenter.hu\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "0c55e02259115c151e4835dd417cf41467bb02e2",
      "tree": "bcc12cd6c9b2d40b8bc31a4d85cae13103168493",
      "parents": [
        "08fb730ca346ff16598ef31911c88fbca6133bf5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 03 14:09:02 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:58 2010 +1000"
      },
      "message": "md/raid5: improve consistency of error messages.\n\nMany \u0027printk\u0027 messages from the raid456 module mention \u0027raid5\u0027 even\nthough it may be a \u0027raid6\u0027 or even \u0027raid4\u0027 array.  This can cause\nconfusion.\nAlso the actual array name is not always reported and when it is\nit is not reported consistently.\n\nSo change all the messages to start:\n    md/raid:%s:\nwhere \u0027%s\u0027 becomes e.g. md3 to identify the particular array.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f1b29bcae116409db5e543622aadab43041c9ae9",
      "tree": "05dff62e747d8f0c91d6bd38ce900c0083dcbc98",
      "parents": [
        "e555190d82c0f58e825e3cbd9e6ebe2e7ac713bd"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat May 01 18:09:05 2010 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:57 2010 +1000"
      },
      "message": "md/raid4: permit raid0 takeover\n\nFor consistency allow raid4 to takeover raid0 in addition to raid5 (with a\nraid4 layout).\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\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": "2b7f22284d71975e37a82db154386348eec0e52c",
      "tree": "761ac50d75348c43e38745f10b824efa5c3388cd",
      "parents": [
        "a78d38a1a16c8e009aa512caa71d483757fefc1c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Mar 25 16:06:03 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:50 2010 +1000"
      },
      "message": "md/raid5: small tidyup in raid5_align_endio\n\nDiving through -\u003equeue to find mddev is unnecessarily complex - there\nis an easier path to finding mddev, so use that.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    }
  ],
  "next": "a78d38a1a16c8e009aa512caa71d483757fefc1c"
}
