)]}'
{
  "log": [
    {
      "commit": "f3378b48705154b9089affb2d2e939622aea68f1",
      "tree": "c86f47335ba1bd4fea0dfeb56b0484cebec8dc9b",
      "parents": [
        "51acbcec6c42b24482bac18e42befc822524535d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 28 11:59:03 2013 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 28 11:59:03 2013 +1100"
      },
      "message": "md: expedite metadata update when switching  read-auto -\u003e active\n\nIf something has failed while the array was read-auto,\nthen when we switch to \u0027active\u0027 we need to update the metadata.\nThis will happen anyway but it is good to expedite it, and\nalso to ensure any failed device has been released by the\nunderlying device before we try to action the ioctl which\ncaused us to switch to \u0027active\u0027 mode.\n\nReported-by: Joe Lawrence \u003cJoe.Lawrence@stratus.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a64685399181780998281fe07309a94b25dd24c3",
      "tree": "a1f72391b57c69b0e255844bfe063282d43a9839",
      "parents": [
        "fe5d2f4a15967bbe907e7b3e31e49dae7af7cc6b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 21 14:33:17 2013 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 26 11:55:40 2013 +1100"
      },
      "message": "md: fix two bugs when attempting to resize RAID0 array.\n\nYou cannot resize a RAID0 array (in terms of making the devices\nbigger), but the code doesn\u0027t entirely stop you.\nSo:\n\n disable setting of the available size on each device for\n RAID0 and Linear devices.  This must not change as doing so\n can change the effective layout of data.\n\n Make sure that the size that raid0_size() reports is accurate,\n but rounding devices sizes to chunk sizes.  As the device sizes\n cannot change now, this isn\u0027t so important, but it is best to be\n safe.\n\nWithout this change:\n  mdadm --grow /dev/md0 -z max\n  mdadm --grow /dev/md0 -Z max\n  then read to the end of the array\n\ncan cause a BUG in a RAID0 array.\n\nThese bugs have been present ever since it became possible\nto resize any device, which is a long time.  So the fix is\nsuitable for any -stable kerenl.\n\nCc: stable@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bbfa57c0f2243a7c31fd248d22e9861a2802cad5",
      "tree": "a762bd442fe3799f3987881eb60526b4d9ea4952",
      "parents": [
        "19f949f52599ba7c3f67a5897ac6be14bfcb1200"
      ],
      "author": {
        "name": "Sebastian Riemer",
        "email": "sebastian.riemer@profitbricks.com",
        "time": "Thu Feb 21 13:28:09 2013 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 21 13:28:09 2013 +1100"
      },
      "message": "md: protect against crash upon fsync on ro array\n\nIf an fsync occurs on a read-only array, we need to send a\ncompletion for the IO and may not increment the active IO count.\nOtherwise, we hit a bug trace and can\u0027t stop the MD array anymore.\n\nBy advice of Christoph Hellwig we return success upon a flush\nrequest but we return -EROFS for other writes.\nWe detect flush requests by checking if the bio has zero sectors.\n\nThis patch is suitable to any -stable kernel to which it applies.\n\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Ben Hutchings \u003cben@decadent.org.uk\u003e\nCc: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Sebastian Riemer \u003csebastian.riemer@profitbricks.com\u003e\nReported-by: Ben Hutchings \u003cben@decadent.org.uk\u003e\nAcked-by: Paul Menzel \u003cpaulepanter@users.sourceforge.net\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ea88eeac0cb8328014b53d80ca631e8dc0dc18dc",
      "tree": "de605c1d0e7ab1e342eedad47c56061b65a6b790",
      "parents": [
        "848b81415c42ff3dc9a4204749087b015c37ef66",
        "a9add5d92b64ea57fb4c3b557c3891cdeb15fa0c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 09:32:44 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 09:32:44 2012 -0800"
      },
      "message": "Merge tag \u0027md-3.8\u0027 of git://neil.brown.name/md\n\nPull md update from Neil Brown:\n \"Mostly just little fixes.  Probably biggest part is AVX accelerated\n  RAID6 calculations.\"\n\n* tag \u0027md-3.8\u0027 of git://neil.brown.name/md:\n  md/raid5: add blktrace calls\n  md/raid5: use async_tx_quiesce() instead of open-coding it.\n  md: Use -\u003ecurr_resync as last completed request when cleanly aborting resync.\n  lib/raid6: build proper files on corresponding arch\n  lib/raid6: Add AVX2 optimized gen_syndrome functions\n  lib/raid6: Add AVX2 optimized recovery functions\n  md: Update checkpoint of resync/recovery based on time.\n  md:Add place to update -\u003erecovery_cp.\n  md.c: re-indent various \u0027switch\u0027 statements.\n  md: close race between removing and adding a device.\n  md: removed unused variable in calc_sb_1_csm.\n"
    },
    {
      "commit": "9228ff90387e276ad67b10c0eb525c9d6a57d5e9",
      "tree": "e7c87b68daba7cf7ca4c342c6b52165bd78fbe16",
      "parents": [
        "9360b53661a2c7754517b2925580055bacc8ec38",
        "d2ec180c23a5a1bfe34d8638b0342a47c00cf70f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 13:39:11 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 13:39:11 2012 -0800"
      },
      "message": "Merge branch \u0027for-3.8/drivers\u0027 of git://git.kernel.dk/linux-block\n\nPull block driver update from Jens Axboe:\n \"Now that the core bits are in, here are the driver bits for 3.8.  The\n  branch contains:\n\n   - A huge pile of drbd bits that were dumped from the 3.7 merge\n     window.  Following that, it was both made perfectly clear that\n     there is going to be no more over-the-wall pulls and how the\n     situation on individual pulls can be improved.\n\n   - A few cleanups from Akinobu Mita for drbd and cciss.\n\n   - Queue improvement for loop from Lukas.  This grew into adding a\n     generic interface for waiting/checking an even with a specific\n     lock, allowing this to be pulled out of md and now loop and drbd is\n     also using it.\n\n   - A few fixes for xen back/front block driver from Roger Pau Monne.\n\n   - Partition improvements from Stephen Warren, allowing partiion UUID\n     to be used as an identifier.\"\n\n* \u0027for-3.8/drivers\u0027 of git://git.kernel.dk/linux-block: (609 commits)\n  drbd: update Kconfig to match current dependencies\n  drbd: Fix drbdsetup wait-connect, wait-sync etc... commands\n  drbd: close race between drbd_set_role and drbd_connect\n  drbd: respect no-md-barriers setting also when changed online via disk-options\n  drbd: Remove obsolete check\n  drbd: fixup after wait_even_lock_irq() addition to generic code\n  loop: Limit the number of requests in the bio list\n  wait: add wait_event_lock_irq() interface\n  xen-blkfront: free allocated page\n  xen-blkback: move free persistent grants code\n  block: partition: msdos: provide UUIDs for partitions\n  init: reduce PARTUUID min length to 1 from 36\n  block: store partition_meta_info.uuid as a string\n  cciss: use check_signature()\n  cciss: cleanup bitops usage\n  drbd: use copy_highpage\n  drbd: if the replication link breaks during handshake, keep retrying\n  drbd: check return of kmalloc in receive_uuids\n  drbd: Broadcast sync progress no more often than once per second\n  drbd: don\u0027t try to clear bits once the disk has failed\n  ...\n"
    },
    {
      "commit": "a2013a13e68354e0c8f3696b69701803e13fb737",
      "tree": "a7e1da6bfad1aa2afd83f401874d606269ce90b4",
      "parents": [
        "dadfab4873256d2145640c0ce468fcbfb48977fe",
        "106f9d9337f65bd428c0c79f650e3489e458d771"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 13 12:00:02 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 13 12:00:02 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\nPull trivial branch from Jiri Kosina:\n \"Usual stuff -- comment/printk typo fixes, documentation updates, dead\n  code elimination.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (39 commits)\n  HOWTO: fix double words typo\n  x86 mtrr: fix comment typo in mtrr_bp_init\n  propagate name change to comments in kernel source\n  doc: Update the name of profiling based on sysfs\n  treewide: Fix typos in various drivers\n  treewide: Fix typos in various Kconfig\n  wireless: mwifiex: Fix typo in wireless/mwifiex driver\n  messages: i2o: Fix typo in messages/i2o\n  scripts/kernel-doc: check that non-void fcts describe their return value\n  Kernel-doc: Convention: Use a \"Return\" section to describe return values\n  radeon: Fix typo and copy/paste error in comments\n  doc: Remove unnecessary declarations from Documentation/accounting/getdelays.c\n  various: Fix spelling of \"asynchronous\" in comments.\n  Fix misspellings of \"whether\" in comments.\n  eisa: Fix spelling of \"asynchronous\".\n  various: Fix spelling of \"registered\" in comments.\n  doc: fix quite a few typos within Documentation\n  target: iscsi: fix comment typos in target/iscsi drivers\n  treewide: fix typo of \"suport\" in various comments and Kconfig\n  treewide: fix typo of \"suppport\" in various comments\n  ...\n"
    },
    {
      "commit": "0a19caabf01ac138bf3668786939e50ea4d9c8ac",
      "tree": "dc672faa83d44dbbb8097b367a35ce1cfba9c90f",
      "parents": [
        "4f8c55c5ad491dbc7b52ce08bb702ca39ce944cf"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Mon Nov 19 19:57:34 2012 +0800"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 13 19:52:11 2012 +1100"
      },
      "message": "md: Use -\u003ecurr_resync as last completed request when cleanly aborting resync.\n\nIf a resync is aborted cleanly, -\u003ecurr_resync is a reliable\nrecord of where we got up to.\nIf there was an error it is less reliable but we always know that\n-\u003ecurr_resync_completed is safe.\n\nSo add a flag MD_RECOVERY_ERROR to differentiate between these cases\nand set recovery_cp accordingly.\n\nSigned-off-by: Jianpeng Ma \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "54f89341e8b8da0cdac8a7b873491739de19f098",
      "tree": "360f937ada4613db9772ef1a28f9503cb4457169",
      "parents": [
        "35d78c66969fbbb51046e9f251849cf54e9ed88c"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Wed Oct 31 11:59:10 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 13 16:41:40 2012 +1100"
      },
      "message": "md: Update checkpoint of resync/recovery based on time.\n\nmd will current only only checkpoint recovery or resync ever 1/16th\nof the device size.  As devices get larger this can become a long time\nan so a lot of work that might need to be duplicated after a shutdown.\n\nSo add a time-based checkpoint.  Every 5 minutes limits the amount of\nduplicated effort to at most 5 minutes, and has almost zero impact on\nperformance.\n\n[changelog entry re-written by NeilBrown]\n\nSigned-off-by: Jianpeng Ma \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "35d78c66969fbbb51046e9f251849cf54e9ed88c",
      "tree": "283ad99a530bc52d81487f1b188837d011124c87",
      "parents": [
        "c02c0aeb6c728e5ad705dba86784bd553cb6f059"
      ],
      "author": {
        "name": "kernelmail",
        "email": "kedacomkernel@gmail.com",
        "time": "Wed Oct 31 11:59:10 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 13 16:41:01 2012 +1100"
      },
      "message": "md:Add place to update -\u003erecovery_cp.\n\nIn resyncing, recovery_cp only updated when resync aborted or completed.\nBut in md drives,many place used it to judge.So add a place to update.\n\nSigned-off-by: Jianpeng Ma \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c02c0aeb6c728e5ad705dba86784bd553cb6f059",
      "tree": "35984ce2a006118d687448de64e17624d5ef29b0",
      "parents": [
        "a7a3f08dc24690ae00c75cfe4b4701a970dd0155"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Dec 11 13:39:21 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Dec 11 13:39:21 2012 +1100"
      },
      "message": "md.c: re-indent various \u0027switch\u0027 statements.\n\nIntent was unnecessarily deep.\n\nAlso change one \u0027switch\u0027 which has a single case element, into an\n\u0027if\u0027.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a7a3f08dc24690ae00c75cfe4b4701a970dd0155",
      "tree": "bc9174cc50feba550a33148e661dc57ac37950dd",
      "parents": [
        "1f3c9907b8037de7b9635b0b471572ea8758bcd1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Dec 11 13:35:54 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Dec 11 13:35:54 2012 +1100"
      },
      "message": "md: close race between removing and adding a device.\n\nWhen we remove a device from an md array, the final removal of\nthe \"dev-XX\" sys entry is run asynchronously.\nIf we then re-add that device immediately before the worker thread\ngets to run, we can end up trying to add the \"dev-XX\" sysfs entry back\nbefore it has been removed.\n\nSo in both places where we add a device, call\n  flush_workqueue(md_misc_wq);\nbefore taking the md lock (as holding the md lock can prevent removal\nto complete).\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1f3c9907b8037de7b9635b0b471572ea8758bcd1",
      "tree": "a316efed038ec0f22aa8ad7bfc35d11dec4acde0",
      "parents": [
        "874807a83139abc094f939e93623c5623573d543"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Dec 11 13:09:00 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Dec 11 13:09:00 2012 +1100"
      },
      "message": "md: removed unused variable in calc_sb_1_csm.\n\n\u0027i\u0027 is unused.\n\nNeilBrown \u003cneilb@suse.de\u003e\n\n"
    },
    {
      "commit": "eed8c02e680c04cd737e0a9cef74e68d8eb0cefa",
      "tree": "8bd2bd10b0c02bb8a579ca3fd4f1482e5335c747",
      "parents": [
        "d33b98fc82b0908e91fb05ae081acaed7323f9d2"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Fri Nov 30 11:42:40 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Nov 30 11:47:57 2012 +0100"
      },
      "message": "wait: add wait_event_lock_irq() interface\n\nNew wait_event{_interruptible}_lock_irq{_cmd} macros added. This commit\nmoves the private wait_event_lock_irq() macro from MD to regular wait\nincludes, introduces new macro wait_event_lock_irq_cmd() instead of using\nthe old method with omitting cmd parameter which is ugly and makes a use\nof new macros in the MD. It also introduces the _interruptible_ variant.\n\nThe use of new interface is when one have a special lock to protect data\nstructures used in the condition, or one also needs to invoke \"cmd\"\nbefore putting it to sleep.\n\nAll new macros are expected to be called with the lock taken. The lock\nis released before sleep and is reacquired afterwards. We will leave the\nmacro with the lock held.\n\nNote to DM: IMO this should also fix theoretical race on waitqueue while\nusing simultaneously wait_event_lock_irq() and wait_event() because of\nlack of locking around current state setting and wait queue removal.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "5eff3c439d3478ba9e8ba5f8c0aaf6e6fadb6e58",
      "tree": "4e60271793978e8ee07f73360a2044a33a8d91de",
      "parents": [
        "35f9ac2dcec8f79d7059ce174fd7b7ee3290d620"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Nov 19 10:47:48 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 20 10:27:37 2012 +1100"
      },
      "message": "md: make sure everything is freed when dm-raid stops an array.\n\nmd_stop() would stop an array, but not free various attached\ndata structures.\nFor internal arrays, these are freed later in do_md_stop() or\nmddev_put(), but they don\u0027t apply for dm-raid arrays.\nSo get md_stop() to free them, and only all it from dm-raid.\nFor internal arrays we now call __md_stop.\n\nReported-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "35f9ac2dcec8f79d7059ce174fd7b7ee3290d620",
      "tree": "0192c0d2874221bf8672e278c86fd0239cb32b08",
      "parents": [
        "ab05613a0646dcc11049692d54bae76ca9ffa910"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Thu Nov 08 08:56:27 2012 +0800"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 20 10:27:17 2012 +1100"
      },
      "message": "md: Avoid write invalid address if read_seqretry returned true.\n\nIf read_seqretry returned true and bbp was changed, it will write\ninvalid address which can cause some serious problem.\n\nThis bug was introduced by commit v3.0-rc7-130-g2699b67.\nSo fix is suitable for 3.0.y thru 3.6.y.\n\nReported-by: zhuwenfeng@kedacom.com\nTested-by: zhuwenfeng@kedacom.com\nCc: stable@vger.kernel.org\nSigned-off-by: Jianpeng Ma \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ab05613a0646dcc11049692d54bae76ca9ffa910",
      "tree": "1d1cfb2cef6d0092c0ef88558b694f58298c31f5",
      "parents": [
        "ed30be077e705e0dff53bfc51d23feb8aeeab78f"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Tue Nov 06 17:13:44 2012 +0800"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 20 10:27:05 2012 +1100"
      },
      "message": "md: Reassigned the parameters if read_seqretry returned true in func md_is_badblock.\n\nThis bug was introduced by commit(v3.0-rc7-126-g2230dfe).\nSo fix is suitable for 3.0.y thru 3.6.y.\n\nCc: stable@vger.kernel.org\nSigned-off-by: Jianpeng Ma \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "83f0d77a7f336130a0ae1290d6bcfa606abaad66",
      "tree": "96a9f3396eb7737a195ce0a14025c96f394b71af",
      "parents": [
        "54d00f6069d921bfe83344cb94e2dd7cb54531ef"
      ],
      "author": {
        "name": "Masanari Iida",
        "email": "standby24x7@gmail.com",
        "time": "Tue Oct 30 00:18:08 2012 +0900"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Oct 29 22:57:50 2012 +0100"
      },
      "message": "md: Fix typo in drivers/md\n\nCorrect spelling typo in drivers/md.\n\nSigned-off-by: Masanari Iida \u003cstandby24x7@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "9db908806b85c1430150fbafe269a7b21b07d15d",
      "tree": "3911759c93e0be26b6771e1a92b75612b206ffa5",
      "parents": [
        "4d7127dace8cf4b05eb7c8c8531fc204fbb195f4",
        "72f36d5972a166197036c1281963f6863c429bf2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 13 13:22:01 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 13 13:22:01 2012 -0700"
      },
      "message": "Merge tag \u0027md-3.7\u0027 of git://neil.brown.name/md\n\nPull md updates from NeilBrown:\n - \"discard\" support, some dm-raid improvements and other assorted bits\n   and pieces.\n\n* tag \u0027md-3.7\u0027 of git://neil.brown.name/md: (29 commits)\n  md: refine reporting of resync/reshape delays.\n  md/raid5: be careful not to resize_stripes too big.\n  md: make sure manual changes to recovery checkpoint are saved.\n  md/raid10: use correct limit variable\n  md: writing to sync_action should clear the read-auto state.\n  Subject: [PATCH] md:change resync_mismatches to atomic64_t to avoid races\n  md/raid5: make sure to_read and to_write never go negative.\n  md: When RAID5 is dirty, force reconstruct-write instead of read-modify-write.\n  md/raid5: protect debug message against NULL derefernce.\n  md/raid5: add some missing locking in handle_failed_stripe.\n  MD: raid5 avoid unnecessary zero page for trim\n  MD: raid5 trim support\n  md/bitmap:Don\u0027t use IS_ERR to judge alloc_page().\n  md/raid1: Don\u0027t release reference to device while handling read error.\n  raid: replace list_for_each_continue_rcu with new interface\n  add further __init annotations to crypto/xor.c\n  DM RAID: Fix for \"sync\" directive ineffectiveness\n  DM RAID: Fix comparison of index and quantity for \"rebuild\" parameter\n  DM RAID: Add rebuild capability for RAID10\n  DM RAID: Move \u0027rebuild\u0027 checking code to its own function\n  ...\n"
    },
    {
      "commit": "72f36d5972a166197036c1281963f6863c429bf2",
      "tree": "9bf42eb456ea85126489dad2283ed0343d91172d",
      "parents": [
        "e56108d65f8705170d238858616728359542aebb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 14:25:57 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 14:25:57 2012 +1100"
      },
      "message": "md: refine reporting of resync/reshape delays.\n\nIf \u0027resync_max\u0027 is set to 0 (as is often done when starting a\nreshape, so the mdadm can remain in control during a sensitive\nperiod), and if the reshape request is initially delayed because\nanother array using the same array is resyncing or reshaping etc,\nwhen user-space cannot easily tell when the delay changes from being\ndue to a conflicting reshape, to being due to resync_max \u003d 0.\n\nSo introduce a new state: (curr_resync \u003d\u003d 3) to reflect this, make\nsure it is visible both via /proc/mdstat and via the \"sync_completed\"\nsysfs attribute, and ensure that the event transition from one delay\nstate to the other is properly notified.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "db07d85ef6395d4768c6cdceeb2ea4878bd2a3f4",
      "tree": "a0e049bfc08c2d6fd39ddae5065f9bd49d87f880",
      "parents": [
        "91502f099dfc5a1e8812898e26ee280713e1d002"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 14:22:17 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 14:22:17 2012 +1100"
      },
      "message": "md: make sure manual changes to recovery checkpoint are saved.\n\nIf you make an array bigger but suppress resync of the new region with\n  mdadm --grow /dev/mdX --size\u003dmax --assume-clean\n\nthen stop the array before anything is written to it, the effect of\nthe \"--assume-clean\" is lost and the array will resync the new space\nwhen restarted.\nSo ensure that we update the metadata in the case.\n\nReported-by: Sebastian Riemer \u003csebastian.riemer@profitbricks.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "48c26ddc9f85808632a63b3ae50b868c86a2435f",
      "tree": "2d4f5d9f299f4be2c7b137655a0daae01e659a9a",
      "parents": [
        "7f7583d420231b9d09897afd57a957011b606a5b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 14:19:39 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 14:19:39 2012 +1100"
      },
      "message": "md: writing to sync_action should clear the read-auto state.\n\nIn some cases array are started in \u0027read-auto\u0027 state where in\nnothing gets written to any device until the array is written\nto.  The purpose of this is to make accidental auto-assembly\nof the wrong arrays less of a risk, and to allow arrays to be\nstarted to read suspend-to-disk images without actually changing\nanything (as might happen if the array were dirty and a\nresync seemed necessary).\n\nExplicitly writing the \u0027sync_action\u0027 for a read-auto array currently\ndoesn\u0027t clear the read-auto state, so the sync action doesn\u0027t\nhappen, which can be confusing.\n\nSo allow any successful write to sync_action to clear any read-auto\nstate.\n\nReported-by: Alexander Kühn \u003calexander.kuehn@nagilum.de\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7f7583d420231b9d09897afd57a957011b606a5b",
      "tree": "aa45d88b926bfc8e22f841b9ea83d338afa4c3ae",
      "parents": [
        "1ed850f356a0a422013846b5291acff08815008b"
      ],
      "author": {
        "name": "Jianpeng Ma",
        "email": "majianpeng@gmail.com",
        "time": "Thu Oct 11 14:17:59 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 14:17:59 2012 +1100"
      },
      "message": "Subject: [PATCH] md:change resync_mismatches to atomic64_t to avoid races\n\nNow that multiple threads can handle stripes, it is safer to\nuse an atomic64_t for resync_mismatches, to avoid update races.\n\nSigned-off-by: Jianpeng Ma \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2863b9eb44787adecba4f977d71d7fd876805b1c",
      "tree": "e8d5417df70e9ade3b8e021426db6f22b4067b95",
      "parents": [
        "1ca69c4bc4b1ef889861db39f325901eadbf9497"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Oct 11 13:38:58 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:38:58 2012 +1100"
      },
      "message": "MD RAID10: Prep for DM RAID10 device replacement capability\n\nMD RAID10:  Fix a couple potential kernel panics if RAID10 is used by dm-raid\n\nWhen device-mapper uses the RAID10 personality through dm-raid.c, there is no\n\u0027gendisk\u0027 structure in mddev and some sysfs information is also not populated.\n\nThis patch avoids touching those non-existent structures.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@rehdat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1ca69c4bc4b1ef889861db39f325901eadbf9497",
      "tree": "a4c83843fc630c42853e1a5ecc51dff5ab3ef54f",
      "parents": [
        "4ed8731d8e6bd2a88a30697fbf4f7e6e979a6c46"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:37:33 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:37:33 2012 +1100"
      },
      "message": "md: avoid taking the mutex on some ioctls.\n\nSome ioctls don\u0027t need to take the mutex and doing so can cause\na delay as it is held during super-block update.\nSo move those ioctls out of the mutex and rely on rcu locking\nto ensure we don\u0027t access stale data.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4ed8731d8e6bd2a88a30697fbf4f7e6e979a6c46",
      "tree": "3bb77592fa5a89b8e7f0ef84b8d7f53122bbd071",
      "parents": [
        "57c67df48866d57b50d72eb198ffcc0cf7a6232d"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shli@kernel.org",
        "time": "Thu Oct 11 13:34:00 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:34:00 2012 +1100"
      },
      "message": "MD: change the parameter of md thread\n\nChange the thread parameter, so the thread can carry extra info. Next patch\nwill use it.\n\nSigned-off-by: Shaohua Li \u003cshli@fusionio.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ce40be7a820bb393ac4ac69865f018d2f4038cf0",
      "tree": "b1fe5a93346eb06f22b1c303d63ec5456d7212ab",
      "parents": [
        "ba0a5a36f60e4c1152af3a2ae2813251974405bf",
        "02f3939e1a9357b7c370a4a69717cf9c02452737"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 11 09:04:23 2012 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 11 09:04:23 2012 +0900"
      },
      "message": "Merge branch \u0027for-3.7/core\u0027 of git://git.kernel.dk/linux-block\n\nPull block IO update from Jens Axboe:\n \"Core block IO bits for 3.7.  Not a huge round this time, it contains:\n\n   - First series from Kent cleaning up and generalizing bio allocation\n     and freeing.\n\n   - WRITE_SAME support from Martin.\n\n   - Mikulas patches to prevent O_DIRECT crashes when someone changes\n     the block size of a device.\n\n   - Make bio_split() work on data-less bio\u0027s (like trim/discards).\n\n   - A few other minor fixups.\"\n\nFixed up silent semantic mis-merge as per Mikulas Patocka and Andrew\nMorton.  It is due to the VM no longer using a prio-tree (see commit\n6b2dbba8b6ac: \"mm: replace vma prio_tree with an interval tree\").\n\nSo make set_blocksize() use mapping_mapped() instead of open-coding the\ninternal VM knowledge that has changed.\n\n* \u0027for-3.7/core\u0027 of git://git.kernel.dk/linux-block: (26 commits)\n  block: makes bio_split support bio without data\n  scatterlist: refactor the sg_nents\n  scatterlist: add sg_nents\n  fs: fix include/percpu-rwsem.h export error\n  percpu-rw-semaphore: fix documentation typos\n  fs/block_dev.c:1644:5: sparse: symbol \u0027blkdev_mmap\u0027 was not declared\n  blockdev: turn a rw semaphore into a percpu rw semaphore\n  Fix a crash when block device is read and block size is changed at the same time\n  block: fix request_queue-\u003eflags initialization\n  block: lift the initial queue bypass mode on blk_register_queue() instead of blk_init_allocated_queue()\n  block: ioctl to zero block ranges\n  block: Make blkdev_issue_zeroout use WRITE SAME\n  block: Implement support for WRITE SAME\n  block: Consolidate command flag and queue limit checks for merges\n  block: Clean up special command handling logic\n  block/blk-tag.c: Remove useless kfree\n  block: remove the duplicated setting for congestion_threshold\n  block: reject invalid queue attribute values\n  block: Add bio_clone_bioset(), bio_clone_kmalloc()\n  block: Consolidate bio_alloc_bioset(), bio_kmalloc()\n  ...\n"
    },
    {
      "commit": "6dafab6b1383e912cd252fa809570b484eb6e0dc",
      "tree": "030e00e43fe4613fd6f44b384aae51301b1813ba",
      "parents": [
        "e5c86471f933608db5d43679f84cb4346c32033e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 19 12:54:22 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 19 12:54:22 2012 +1000"
      },
      "message": "md: make sure metadata is updated when spares are activated or removed.\n\nIt isn\u0027t always necessary to update the metadata when spares are\nremoved as the presence-or-not of a spare isn\u0027t really important to\nthe integrity of an array.\nAlso activating a spare doesn\u0027t always require updating the metadata\nas the update on \u0027recovery-completed\u0027 is usually sufficient.\n\nHowever the introduction of \u0027replacement\u0027 devices have made these\ntransitions sometimes more important.  For example the \u0027Replacement\u0027\nflag isn\u0027t cleared until the original device is removed, so we need\nto ensure a metadata update after that \u0027spare\u0027 is removed.\n\nSo set MD_CHANGE_DEVS whenever a spare is activated or removed, to\ncomplement the current situation where it is set when a spare is added\nor a device is failed (or a number of other less common situations).\n\nThis is suitable for -stable as out-of-data metadata could lead\nto data corruption.\nThis is only relevant for 3.3 and later 9when \u0027replacement\u0027 as\nintroduced.\n\nCc: stable@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bf800ef1816b4283a885e55ad38068aec9711e4d",
      "tree": "c99cbe70b68ede65b478b3006a7ed7e34b453f3d",
      "parents": [
        "3f86a82aeb03e6100f7ab39f4702e033a5e38166"
      ],
      "author": {
        "name": "Kent Overstreet",
        "email": "koverstreet@google.com",
        "time": "Thu Sep 06 15:35:02 2012 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Sep 09 10:35:39 2012 +0200"
      },
      "message": "block: Add bio_clone_bioset(), bio_clone_kmalloc()\n\nPreviously, there was bio_clone() but it only allocated from the fs bio\nset; as a result various users were open coding it and using\n__bio_clone().\n\nThis changes bio_clone() to become bio_clone_bioset(), and then we add\nbio_clone() and bio_clone_kmalloc() as wrappers around it, making use of\nthe functionality the last patch adedd.\n\nThis will also help in a later patch changing how bio cloning works.\n\nSigned-off-by: Kent Overstreet \u003ckoverstreet@google.com\u003e\nCC: Jens Axboe \u003caxboe@kernel.dk\u003e\nCC: NeilBrown \u003cneilb@suse.de\u003e\nCC: Alasdair Kergon \u003cagk@redhat.com\u003e\nCC: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nCC: Jeff Garzik \u003cjeff@garzik.org\u003e\nAcked-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "1e2a410ff71504a64d1af2e354287ac51aeac1b0",
      "tree": "e4ae4669d958fc932e5ae67cafd8de860f1f91c9",
      "parents": [
        "395c72a707d966b36d5a42fe12c3a237ded3a0d9"
      ],
      "author": {
        "name": "Kent Overstreet",
        "email": "koverstreet@google.com",
        "time": "Thu Sep 06 15:34:56 2012 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Sep 09 10:35:38 2012 +0200"
      },
      "message": "block: Ues bi_pool for bio_integrity_alloc()\n\nNow that bios keep track of where they were allocated from,\nbio_integrity_alloc_bioset() becomes redundant.\n\nRemove bio_integrity_alloc_bioset() and drop bio_set argument from the\nrelated functions and make them use bio-\u003ebi_pool.\n\nSigned-off-by: Kent Overstreet \u003ckoverstreet@google.com\u003e\nCC: Jens Axboe \u003caxboe@kernel.dk\u003e\nCC: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "395c72a707d966b36d5a42fe12c3a237ded3a0d9",
      "tree": "79e4450a4f31409815d80ee8e1a7e1490a140f22",
      "parents": [
        "eeea3ac912207dcf759b95b2b4c36f96bce583bf"
      ],
      "author": {
        "name": "Kent Overstreet",
        "email": "koverstreet@google.com",
        "time": "Thu Sep 06 15:34:55 2012 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Sep 09 10:35:38 2012 +0200"
      },
      "message": "block: Generalized bio pool freeing\n\nWith the old code, when you allocate a bio from a bio pool you have to\nimplement your own destructor that knows how to find the bio pool the\nbio was originally allocated from.\n\nThis adds a new field to struct bio (bi_pool) and changes\nbio_alloc_bioset() to use it. This makes various bio destructors\nunnecessary, so they\u0027re then deleted.\n\nv6: Explain the temporary if statement in bio_put\n\nSigned-off-by: Kent Overstreet \u003ckoverstreet@google.com\u003e\nCC: Jens Axboe \u003caxboe@kernel.dk\u003e\nCC: NeilBrown \u003cneilb@suse.de\u003e\nCC: Alasdair Kergon \u003cagk@redhat.com\u003e\nCC: Nicholas Bellinger \u003cnab@linux-iscsi.org\u003e\nCC: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Nicholas Bellinger \u003cnab@linux-iscsi.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "667a5313ecd7308d79629c0738b0db588b0b0a4e",
      "tree": "415fa369a5568710c35b6bec225777631fbdef71",
      "parents": [
        "0d7614f09c1ebdbaa1599a5aba7593f147bf96ee"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 16 16:46:12 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 16 16:46:12 2012 +1000"
      },
      "message": "md: Don\u0027t truncate size at 4TB for RAID0 and Linear\n\ncommit 27a7b260f71439c40546b43588448faac01adb93\n   md: Fix handling for devices from 2TB to 4TB in 0.90 metadata.\n\nchanged 0.90 metadata handling to truncated size to 4TB as that is\nall that 0.90 can record.\nHowever for RAID0 and Linear, 0.90 doesn\u0027t need to record the size, so\nthis truncation is not needed and causes working arrays to become too small.\n\nSo avoid the truncation for RAID0 and Linear\n\nThis bug was introduced in 3.1 and is suitable for any stable kernels\nfrom then onwards.\nAs the offending commit was tagged for \u0027stable\u0027, any stable kernel\nthat it was applied to should also get this patch.  That includes\nat least 2.6.32, 2.6.33 and 3.0. (Thanks to Ben Hutchings for\nproviding that list).\n\nCc: stable@vger.kernel.org\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "eff0d13f3823f35d70228cd151d2a2c89288ff32",
      "tree": "55bff4dbcc43c4b0f38509ac4de585c0c457980c",
      "parents": [
        "8cf1a3fce0b95050b63d451c9d561da0da2aa4d6",
        "10af8138eb6d09d6a768e43ef1aa9b2f16b8c7be"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 01 09:06:47 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 01 09:06:47 2012 -0700"
      },
      "message": "Merge branch \u0027for-3.6/drivers\u0027 of git://git.kernel.dk/linux-block\n\nPull block driver changes from Jens Axboe:\n\n - Making the plugging support for drivers a bit more sane from Neil.\n   This supersedes the plugging change from Shaohua as well.\n\n - The usual round of drbd updates.\n\n - Using a tail add instead of a head add in the request completion for\n   ndb, making us find the most completed request more quickly.\n\n - A few floppy changes, getting rid of a duplicated flag and also\n   running the floppy init async (since it takes forever in boot terms)\n   from Andi.\n\n* \u0027for-3.6/drivers\u0027 of git://git.kernel.dk/linux-block:\n  floppy: remove duplicated flag FD_RAW_NEED_DISK\n  blk: pass from_schedule to non-request unplug functions.\n  block: stack unplug\n  blk: centralize non-request unplug handling.\n  md: remove plug_cnt feature of plugging.\n  block/nbd: micro-optimization in nbd request completion\n  drbd: announce FLUSH/FUA capability to upper layers\n  drbd: fix max_bio_size to be unsigned\n  drbd: flush drbd work queue before invalidate/invalidate remote\n  drbd: fix potential access after free\n  drbd: call local-io-error handler early\n  drbd: do not reset rs_pending_cnt too early\n  drbd: reset congestion information before reporting it in /proc/drbd\n  drbd: report congestion if we are waiting for some userland callback\n  drbd: differentiate between normal and forced detach\n  drbd: cleanup, remove two unused global flags\n  floppy: Run floppy initialization asynchronous\n"
    },
    {
      "commit": "74018dc3063a2c729fc73041c0a9f03aac995920",
      "tree": "03f01bca3a2d9f7cf31785fbe74e9ab76bb0d4cd",
      "parents": [
        "2a7d5559b346574057dce4672d1ed9aaa9d1e685"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 31 09:08:15 2012 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Jul 31 09:08:15 2012 +0200"
      },
      "message": "blk: pass from_schedule to non-request unplug functions.\n\nThis will allow md/raid to know why the unplug was called,\nand will be able to act according - if !from_schedule it\nis safe to perform tasks which could themselves schedule.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "9cbb17508808f8a6bdd83354b61e126ac4fa6fed",
      "tree": "bc797d1b5cd829751a333115e6e6d52799fb6df2",
      "parents": [
        "0021b7bc045e4b0b85d8c53614342aaf84ca96a5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 31 09:08:14 2012 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Jul 31 09:08:14 2012 +0200"
      },
      "message": "blk: centralize non-request unplug handling.\n\nBoth md and umem has similar code for getting notified on an\nblk_finish_plug event.\nCentralize this code in block/ and allow each driver to\nprovide its distinctive difference.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "0021b7bc045e4b0b85d8c53614342aaf84ca96a5",
      "tree": "1432761eec4c49bbacea55df083e73599e18ea1c",
      "parents": [
        "01ff5dbc0925d11c8ad76eed3bdd02d0c7e1e0f5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 31 09:08:14 2012 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Jul 31 09:08:14 2012 +0200"
      },
      "message": "md: remove plug_cnt feature of plugging.\n\nThis seemed like a good idea at the time, but after further thought I\ncannot see it making a difference other than very occasionally and\ntesting to try to exercise the case it is most likely to help did not\nshow any performance difference by removing it.\n\nSo remove the counting of active plugs and allow \u0027pending writes\u0027 to\nbe activated at any time, not just when no plugs are active.\n\nThis is only relevant when there is a write-intent bitmap, and the\nupdating of the bitmap will likely introduce enough delay that\nthe single-threading of bitmap updates will be enough to collect large\nnumbers of updates together.\n\nRemoving this will make it easier to centralise the unplug code, and\nwill clear the other for other unplug enhancements which have a\nmeasurable effect.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "90cf195d9bcb4bf70e8b6df5073b05164b279ba0",
      "tree": "815e0ad7c0b7f4af7eb04d07eb2093e60540bb55",
      "parents": [
        "3f9e7c140e4c4e75bdeeb8df46dd40e49386c978"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 31 10:04:55 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 31 10:04:55 2012 +1000"
      },
      "message": "md: remove duplicated test on -\u003eopeners when calling do_md_stop()\n\ndo_md_stop tests mddev-\u003eopeners while holding -\u003eopen_mutex,\nand fails if this count is too high.\nSo callers do not need to check mddev-\u003eopeners and doing so isn\u0027t\nvery meaningful as they don\u0027t hold -\u003eopen_mutex so the number could\nchange.\n\nSo remove the unnecessary tests on mddev-\u003eopeners.\nThese are not called often enough for there to be any gain in\nan early test on -\u003eopen_mutex to avoid the need for a slightly more\ncostly mutex_lock call.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a05b7ea03d72f36edb0cec05e8893803335c61a0",
      "tree": "2b35d0dd6d5edebf22f8ab2ff3eca5f28af6e7c8",
      "parents": [
        "25f7fd470bc97bb93d3a674e8c56c4a29063ec97"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 19 15:59:18 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 19 15:59:18 2012 +1000"
      },
      "message": "md: avoid crash when stopping md array races with closing other open fds.\n\nmd will refuse to stop an array if any other fd (or mounted fs) is\nusing it.\nWhen any fs is unmounted of when the last open fd is closed all\npending IO will be flushed (e.g. sync_blockdev call in __blkdev_put)\nso there will be no pending IO to worry about when the array is\nstopped.\n\nHowever in order to send the STOP_ARRAY ioctl to stop the array one\nmust first get and open fd on the block device.\nIf some fd is being used to write to the block device and it is closed\nafter mdadm open the block device, but before mdadm issues the\nSTOP_ARRAY ioctl, then there will be no last-close on the md device so\n__blkdev_put will not call sync_blockdev.\n\nIf this happens, then IO can still be in-flight while md tears down\nthe array and bad things can happen (use-after-free and subsequent\nhavoc).\n\nSo in the case where do_md_stop is being called from an open file\ndescriptor, call sync_block after taking the mutex to ensure there\nwill be no new openers.\n\nThis is needed when setting a read-write device to read-only too.\n\nCc: stable@vger.kernel.org\nReported-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "25f7fd470bc97bb93d3a674e8c56c4a29063ec97",
      "tree": "010d5b5cd9ef0d78da903d0baaff15858c40b20d",
      "parents": [
        "84a1caf1453c3d44050bd22db958af4a7f99315c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 19 15:59:18 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 19 15:59:18 2012 +1000"
      },
      "message": "md: fix bug in handling of new_data_offset\n\ncommit c6563a8c38fde3c1c7fc925a10bde3ca20799301\n    md: add possibility to change data-offset for devices.\n\nintroduced a \u0027new_data_offset\u0027 attribute which should normally\nbe the same as \u0027data_offset\u0027, but can be explicitly set to a different\nvalue to allow a reshape operation to move the data.\n\nUnfortunately when the \u0027data_offset\u0027 is explicitly set through\nsysfs, the new_data_offset is not also set, so the two would become\nout-of-sync incorrectly.\n\nOne result of this is that trying to set the \u0027size\u0027 after the\n\u0027data_offset\u0027 would fail because it is not permitted to set the size\nwhen the \u0027data_offset\u0027 and \u0027new_data_offset\u0027 are different - as that\ncan be confusing.\nConsequently when mdadm tried to do this while assembling an IMSM\narray it would fail.\n\nThis bug was introduced in 3.5-rc1.\n\nReported-by: Brian Downing \u003cbdowning@lavos.net\u003e\nBisected-by: Brian Downing \u003cbdowning@lavos.net\u003e\nTested-by: Brian Downing \u003cbdowning@lavos.net\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f456309106e9657645c81bce1a6bb3230393564e",
      "tree": "0c24dc48b58913930702db35a0bef7d303dd1849",
      "parents": [
        "32644afd8975d19174bcb9ba34687c32dd810a09"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 03 15:59:06 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 03 15:59:06 2012 +1000"
      },
      "message": "md: support re-add of recovering devices.\n\nWe currently only allow a device to be re-added if it appear to be\nin-sync.  This is overly restrictive as it may be desirable to re-add\na device that is in the middle of recovery.\n\nSo remove the test for \"InSync\" - the test on rdev-\u003eraid_disk is\nsufficient to ensure that the re-add will succeed.\n\nReported-by: Alexander Lyakas \u003calex.bolshoy@gmail.com\u003e\nTested-by: Alexander Lyakas \u003calex.bolshoy@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0232605d987d8230b254aa139805bbb56a7ca30c",
      "tree": "18537d016ecc0f12b41b4589818b4c047cd58bcf",
      "parents": [
        "055d3747dbf00ce85c6872ecca4d466638e80c22"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 03 15:56:52 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 03 15:56:52 2012 +1000"
      },
      "message": "md: make \u0027name\u0027 arg to md_register_thread non-optional.\n\nHaving the \u0027name\u0027 arg optional and defaulting to the current\npersonality name is no necessary and leads to errors, as when\nchanging the level of an array we can end up using the\nname of the old level instead of the new one.\n\nSo make it non-optional and always explicitly pass the name\nof the level that the array will be.\n\nReported-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7c2c57c9a98bf5961e438a376486f95346f6b0c5",
      "tree": "6aeb5360e1a00bea6f97699c79a52314626eb9ec",
      "parents": [
        "1850753d2e6d9ca7856581ca5d3cf09521e6a5d7"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Tue Jul 03 12:12:26 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 03 12:12:26 2012 +1000"
      },
      "message": "md:Add blk_plug in sync_thread.\n\nAdd blk_plug in sync_thread will increase the performance of sync.\nBecause sync_thread did not blk_plug,so when raid sync, the bio merge\nnot well.\n\nTesting environment:\nSATA controller: Intel Corporation 82801JI (ICH10 Family) SATA AHCI\nController.\nOS:Linux xxx 3.5.0-rc2+ #340 SMP Tue Jun 12 09:00:25 CST 2012\nx86_64 x86_64 x86_64 GNU/Linux.\nRAID5: four ST31000524NS disk.\n\nWithout blk_plug:recovery speed about 63M/Sec;\nAdd blk_plug:recovery speed about 120M/Sec.\n\nUsing blktrace:\nblktrace -d /dev/sdb -w 60  -o -|blkparse -i -\n\nwithout blk_plug:\nTotal (8,16):\n Reads Queued:      309811,     1239MiB\t Writes Queued:           0,        0KiB\n Read Dispatches:   283583,     1189MiB\t Write Dispatches:        0,        0KiB\n Reads Requeued:         0\t\t Writes Requeued:         0\n Reads Completed:   273351,     1149MiB\t Writes Completed:        0,        0KiB\n Read Merges:        23533,    94132KiB\t Write Merges:            0,        0KiB\n IO unplugs:             0        \t Timer unplugs:           0\n\nadd blk_plug:\nTotal (8,16):\n Reads Queued:      428697,     1714MiB\t Writes Queued:           0,        0KiB\n Read Dispatches:     3954,     1714MiB\t Write Dispatches:        0,        0KiB\n Reads Requeued:         0\t\t Writes Requeued:         0\n Reads Completed:     3956,     1715MiB\t Writes Completed:        0,        0KiB\n Read Merges:       424743,     1698MiB\t Write Merges:            0,        0KiB\n IO unplugs:             0        \t Timer unplugs:        3384\n\nThe ratio of merge will be markedly increased.\n\nSigned-off-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0c098220e2320c1f0c9339d0ff05c5e04672133a",
      "tree": "5dfe163da6707f93b5bbc77ccb0ec4ee98227591",
      "parents": [
        "4f0a5e012cf41321d611e7cad63e1017d143d138"
      ],
      "author": {
        "name": "Yuanhan Liu",
        "email": "yuanhan.liu@linux.intel.com",
        "time": "Tue May 22 13:55:32 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:32 2012 +1000"
      },
      "message": "md: check the return of mddev_find()\n\nCheck the return of mddev_find(), since it may fail due to out of\nmemeory or out of usable minor number.\n\nThe reason I chose -ENODEV instead of -ENOMEM or something else is\nmd_alloc() function chose that ;)\n\nSigned-off-by: Yuanhan Liu \u003cyuanhan.liu@linux.intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "47525e59e40ffb8cbc944c0055e9c4902cd3ee99",
      "tree": "1ca2a32689ee756c4aa542f3b8fe0afee796e2a9",
      "parents": [
        "30b67645faadcdc32072f999796b99bd0a20f2d5"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue May 22 13:55:29 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:29 2012 +1000"
      },
      "message": "DM RAID: Set recovery flags on resume\n\nProperly initialize MD recovery flags when resuming device-mapper devices.\n\nWhen a device-mapper device is suspended, all I/O must stop.  This is done by\ncalling \u0027md_stop_writes\u0027 and \u0027mddev_suspend\u0027.  These calls in-turn manipulate\nthe recovery flags - including setting \u0027MD_RECOVERY_FROZEN\u0027.  The DM device\nmay have been suspended while recovery was not yet complete, so the process\nneeds to pick-up where it left off.  Since \u0027mddev_resume\u0027 does not unset\n\u0027MD_RECOVERY_FROZEN\u0027 and set \u0027MD_RECOVERY_NEEDED\u0027, we must do it ourselves.\n\u0027MD_RECOVERY_NEEDED\u0027 can safely be set in \u0027mddev_resume\u0027, but \u0027MD_RECOVERY_FROZEN\u0027\nmust be set outside of \u0027mddev_resume\u0027 due to how MD handles RAID reshaping.\n(e.g.  It is possible for a user to delay reshaping a RAID5-\u003eRAID6 by purposefully\nsetting \u0027MD_RECOVERY_FROZEN\u0027.  Clearing it in \u0027mddev_resume\u0027 would override the\ndesired behavior.)\n\nBecause \u0027mddev_resume\u0027 already unconditionally calls \u0027md_wakeup_thread(mddev-\u003ethread)\u0027\nthere is no need to make this call from \u0027raid_resume\u0027 since it calls \u0027mddev_resume\u0027.\n\nAlso clean up where  level_store calls mddev_resume() - it current\nduplicates some of the funcitons of that call. - NB\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a4a6125a074e1b08ee8ae34f700c5bca19eb9d18",
      "tree": "761a719a7d4f1a53d44349f7bef095368a9ae75a",
      "parents": [
        "b81a040481233e5171cb3fbc62f44636d5ea18b2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:27 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:27 2012 +1000"
      },
      "message": "md: allow array to be resized while bitmap is present.\n\nNow that bitmaps can be resized, we can allow an array to be resized\nwhile the bitmap is present.\n\nThis only covers resizing that involves changing the effective size\nof member devices, not resizing that changes the number of devices.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1ec885cdd01a9ad867dbb9fd32a1bfcc0875c486",
      "tree": "232eaa1e1b7820ca8e97782666f7742f78bef175",
      "parents": [
        "d189122d4bca2647441fdc170dc6d4cc5c8bb2fa"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:10 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:10 2012 +1000"
      },
      "message": "md/bitmap: move some fields of \u0027struct bitmap\u0027 into a \u0027storage\u0027 substruct.\n\nThis new \u0027struct bitmap_storage\u0027 reflects the external storage of the\nbitmap.\nHaving this clearly defined will make it easier to change the storage\nused while the array is active.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ef99bf480de9bde9d3b2afdf05324670fab4e571",
      "tree": "49afa5fd6e7e8060f3601c04bb25b96e14d14a39",
      "parents": [
        "6409bb05a9831f6af36a20b97cda13059c2ef1b6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:08 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:08 2012 +1000"
      },
      "message": "md/bitmap: allow a bitmap with no backing storage.\n\nAn md bitmap comprises two parts\n - internal counting of active writes per \u0027chunk\u0027.\n - external storage of whether there are any active writes on\n   each chunk\n\nThe second requires the first, but the first doesn\u0027t require the\nsecond.\n\nNot having backing storage means that the bitmap cannot expedite\nresync after a crash, but it still allows us to expedite the recovery\nof a recently-removed device.\n\nSo: allow a bitmap to exist even if there is no backing device.\nIn that case we default to 128M chunks.\n\nA particular value of this is that we can remove and re-add a bitmap\n(possibly of a different granularity) on a degraded array, and not\nlose the information needed to fast-recover the missing device.\n\nWe don\u0027t actually activate these bitmaps yet - that will come\nin a later patch.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6409bb05a9831f6af36a20b97cda13059c2ef1b6",
      "tree": "c997526bd60d3fb5cafea604e5b240c2479e20d9",
      "parents": [
        "bf07bb7d5be813630d3530be274b3324f85e310c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:07 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:07 2012 +1000"
      },
      "message": "md/bitmap: add new \u0027space\u0027 attribute for bitmaps.\n\nIf we are to allow bitmaps to be resized when the array is resized,\nwe need to know how much space there is.\n\nSo create an attribute to store this information and set appropriate\ndefaults.\n\nIt can be set more precisely via sysfs, or future metadata extensions\nmay allow it to be recorded.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4fa2f327681808f653711e14203a42cf4644bda0",
      "tree": "0fdbe3ffa37dac453401b2d9afed4929194d6176",
      "parents": [
        "545c87957f4d53867b62921625f36df8c4b1bc08"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:01 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:01 2012 +1000"
      },
      "message": "md: move freeing of badblocks.page into md_rdev_clear\n\nThis ensures that it is always freed - there were case where\nwe failed to free the page.\n\nReported-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "545c87957f4d53867b62921625f36df8c4b1bc08",
      "tree": "52dc839ac828f7742efbad83cfbe5f35f11a04d6",
      "parents": [
        "96e67703e71f4b3cc32b747dbb6158ec74d01e19"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:54:30 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:54:30 2012 +1000"
      },
      "message": "md: dm-raid should call helper function to clear rdev.\n\ndm-raid currently open-codes the freeing of some members of\nand rdev.  It is more maintainable to have it call common code\nfrom md.c which does this for all call-sites.\n\nSo remove free_disk_sb to md_rdev_clear, export it, and use it in\ndm-raid.c\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c804cdecea418c067ee7359d62139b2b3c8cec39",
      "tree": "8542c9757416deee1637528b6616cbcc92cf8cdc",
      "parents": [
        "1fdd6fc92f330b81604c9a4f892f713775a9751a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:28:33 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:28:33 2012 +1000"
      },
      "message": "md: use resync_max_sectors for reshape as well as resync.\n\nSome resync type operations need to act on the address space of the\ndevice, others on the address space of the array.\n\nThis only affects RAID10, so it sets resync_max_sectors to the array\nsize (it defaults to the device size), and that is currently used for\nresync only.  However reshape of a RAID10 must be done against the\narray size, not device size, so change code to use resync_max_sectors\nfor both the resync and the reshape cases.\nThis does not affect RAID5 or RAID1, just RAID10.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1fdd6fc92f330b81604c9a4f892f713775a9751a",
      "tree": "fb0249d6891e04cfe7c82e850d86361879fec377",
      "parents": [
        "5cf00fcd3c98d2eafb58ac7a649bbdb9dbc4902b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:28:32 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:28:32 2012 +1000"
      },
      "message": "md: teach sync_page_io about new_data_offset.\n\nSome code in raid1 and raid10 use sync_page_io to\nread/write pages when responding to read errors.\nAs we will shortly support changing data_offset for\nraid10, this function must understand new_data_offset.\n\nSo add that understanding.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c6563a8c38fde3c1c7fc925a10bde3ca20799301",
      "tree": "3916ae8247149a9dcf39ee1ca262f97be39071eb",
      "parents": [
        "2c810cddc44d6f95cef75df3f07fc0850ff92417"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:27:00 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:27:00 2012 +1000"
      },
      "message": "md: add possibility to change data-offset for devices.\n\nWhen reshaping we can avoid costly intermediate backup by\nchanging the \u0027start\u0027 address of the array on the device\n(if there is enough room).\n\nSo as a first step, allow such a change to be requested\nthrough sysfs, and recorded in v1.x metadata.\n\n(As we didn\u0027t previous check that all \u0027pad\u0027 fields were zero,\n we need a new FEATURE flag for this.\n A (belatedly) check that all remaining \u0027pad\u0027 fields are\n zero to avoid a repeat of this)\n\nThe new data offset must be requested separately for each device.\nThis allows each to have a different change in the data offset.\nThis is not likely to be used often but as data_offset can be\nset per-device, new_data_offset should be too.\n\nThis patch also removes the \u0027acknowledged\u0027 arg to rdev_set_badblocks as\nit is never used and never will be.  At the same time we add a new\narg (\u0027in_new\u0027) which is currently always zero but will be used more\nsoon.\n\nWhen a reshape finishes we will need to update the data_offset\nand rdev-\u003esectors.  So provide an exported function to do that.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2c810cddc44d6f95cef75df3f07fc0850ff92417",
      "tree": "185b35ce06656a53327dd66343f0926aa5a910d7",
      "parents": [
        "b5e1b8cee7ad58a15d2fa79bcd7946acb592602d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:27:00 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:27:00 2012 +1000"
      },
      "message": "md: allow a reshape operation to be reversed.\n\nCurrently a reshape operation always progresses from the start\nof the array to the end unless the number of devices is being\nreduced, in which case it progressed in the opposite direction.\n\nTo reverse a partial reshape which changes the number of devices\nyou can stop the array and re-assemble with the raid-disks numbers\nreversed and it will undo.\n\nHowever for a reshape that does not change the number of devices\nit is not possible to reverse the reshape in the middle - you have to\nwait until it completes.\n\nSo add a \u0027reshape_direction\u0027 attribute with is either \u0027forwards\u0027 or\n\u0027backwards\u0027 and can be explicitly set when delta_disks is zero.\n\nThis will become more important when we allow the data_offset to\nchange in a reshape.  Then the explicit statement of what direction is\nbeing used will be more useful.\n\nThis can be enabled in raid5 trivially as it already supports\nreverse reshape and just needs to use a different trigger to request it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b5e1b8cee7ad58a15d2fa79bcd7946acb592602d",
      "tree": "a9f009012ccdca7c9daefb089e9dbca7224843c7",
      "parents": [
        "b0d634d5683f0b186b242ce6a4f3b041edb8b956"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shli@kernel.org",
        "time": "Mon May 21 09:26:59 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:26:59 2012 +1000"
      },
      "message": "md: using GFP_NOIO to allocate bio for flush request\n\nA flush request is usually issued in transaction commit code path, so\nusing GFP_KERNEL to allocate memory for flush request bio falls into\nthe classic deadlock issue.\n\nThis is suitable for any -stable kernel to which it applies as it\navoids a possible deadlock.\n\nCc: stable@vger.kernel.org\nSigned-off-by: Shaohua Li \u003cshli@fusionio.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0d9f4f135eb6dea06bdcb7065b1e4ff78274a5e9",
      "tree": "3d0b8c398c1eda38bac6d3dd6ac1b22b518d26b4",
      "parents": [
        "6508fdbf40a92fd7c19d32780ea33ce8e8362b93"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Wed May 16 04:06:14 2012 -0500"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu May 17 10:38:24 2012 +1000"
      },
      "message": "MD: Add del_timer_sync to mddev_suspend (fix nasty panic)\n\nUse del_timer_sync to remove timer before mddev_suspend finishes.\n\nWe don\u0027t want a timer going off after an mddev_suspend is called.  This is\nespecially true with device-mapper, since it can call the destructor function\nimmediately following a suspend.  This results in the removal (kfree) of the\nstructures upon which the timer depends - resulting in a very ugly panic.\nTherefore, we add a del_timer_sync to mddev_suspend to prevent this.\n\nCc: stable@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "30b8aa9172dfeaac6d77897c67ee9f9fc574cdbb",
      "tree": "d950c723e17399fefd104c5eddcf514d7f3c240a",
      "parents": [
        "ed209584c38fb74b7eecc03e5b1bfe674e591bd8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 24 10:23:16 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 24 10:23:16 2012 +1000"
      },
      "message": "md: fix possible corruption of array metadata on shutdown.\n\ncommit c744a65c1e2d59acc54333ce8\n  md: don\u0027t set md arrays to readonly on shutdown.\n\nremoved the possibility of a \u0027BUG\u0027 when data is written to an array\nthat has just been switched to read-only, but also introduced the\npossibility that the array metadata could be corrupted.\n\nIf, when md_notify_reboot gets the mddev lock, the array is\nin a state where it is assembled but hasn\u0027t been started (as can\nhappen if the personality module is not available, or in other unusual\nsituations), then incorrect metadata will be written out making it\nimpossible to re-assemble the array.\n\nSo only call __md_stop_writes() if the array has actually been\nactivated.\n\nThis patch is needed for any stable kernel which has had the above\ncommit applied.\n\nCc: stable@vger.kernel.org\nReported-by: Christoph Nelles \u003cevilazrael@evilazrael.de\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ed209584c38fb74b7eecc03e5b1bfe674e591bd8",
      "tree": "a232bb4fbf3a2e143ad57dfa3acad92418c5b12c",
      "parents": [
        "a9ad8526bb1af0741a5c0e01155dac08e7bdde60"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 24 10:23:14 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 24 10:23:14 2012 +1000"
      },
      "message": "md: don\u0027t call -\u003eadd_disk unless there is good reason.\n\nCommit 7bfec5f35c68121e7b18\n\n   md/raid5: If there is a spare and a want_replacement device, start replacement.\n\ncause md_check_recovery to call -\u003eadd_disk much more often.\nInstead of only when the array is degraded, it is now called whenever\nmd_check_recovery finds anything useful to do, which includes\nupdating the metadata for clean\u003c-\u003edirty transition.\nThis causes unnecessary work, and causes info messages from -\u003eadd_disk\nto be reported much too often.\n\nSo refine md_check_recovery to only do any actual recovery checking\n(including -\u003eadd_disk) if MD_RECOVERY_NEEDED is set.\n\nThis fix is suitable for 3.3.y:\n\nCc: stable@vger.kernel.org\nReported-by: Jan Ceuleers \u003cjan.ceuleers@computer.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ecb178bb2b154a40cfae9fa4c42e62ccfa81ac6b",
      "tree": "a3a6ff71d28069f6eef78a4f24f7f9c385a086a7",
      "parents": [
        "d0962936bff659d20522555b517582a2715fd23f"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Mon Mar 19 12:46:42 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:42 2012 +1100"
      },
      "message": "md: Add judgement bb-\u003eunacked_exist in function md_ack_all_badblocks().\n\nIf there are no unacked bad blocks, then there is no point searching\nfor them to acknowledge them.\n\n\nSigned-off-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d0962936bff659d20522555b517582a2715fd23f",
      "tree": "dc9654b2e2c7b7db2b8f2a14f829d5f807c7342e",
      "parents": [
        "61a0d80ce4ab5b4fb9ecb38f1fb19654778b71ed"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:41 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:41 2012 +1100"
      },
      "message": "md: fix clearing of the \u0027changed\u0027 flags for the bad blocks list.\n\nIn super_1_sync (the first hunk) we need to clear \u0027changed\u0027 before\nchecking read_seqretry(), otherwise we might race with other code\nadding a bad block and so won\u0027t retry later.\n\nIn md_update_sb (the second hunk), in the case where there is no\nmetadata (neither persistent nor external), we treat any bad blocks as\nan error.  However we need to clear the \u0027changed\u0027 flag before calling\nmd_ack_all_badblocks, else it won\u0027t do anything.\n\nThis patch is suitable for -stable release 3.0 and later.\n\nCc: stable@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "57148964d946614ffc6621539096ded1e7d896ab",
      "tree": "d4bdadf58d740fcdb3c65063a5706cc3902f2b9b",
      "parents": [
        "4ba97dff719b4cbeb7a4f6beddd2feb7404102d8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:40 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:40 2012 +1100"
      },
      "message": "md/bitmap: move printing of bitmap status to bitmap.c\n\nThe part of /proc/mdstat which describes the bitmap should really\nbe generated by code in bitmap.c.  So move it there.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "050b66152f87c79e8d66aed0e7996f9336462d5f",
      "tree": "44d100c2eadf2a56794e7b526abeb21d1019baa1",
      "parents": [
        "ba13da47ffa202784355561f72160a41350e95cc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:39 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:39 2012 +1100"
      },
      "message": "md/raid10: handle merge_bvec_fn in member devices.\n\nCurrently we don\u0027t honour merge_bvec_fn in member devices so if there\nis one, we force all requests to be single-page at most.\nThis is not ideal.\n\nSo enhance the raid10 merge_bvec_fn to check that function in children\nas well.\n\nThis introduces a small problem.  There is no locking around calls\nthe -\u003emerge_bvec_fn and subsequent calls to -\u003emake_request.  So a\ndevice added between these could end up getting a request which\nviolates its merge_bvec_fn.\n\nCurrently the best we can do is synchronize_sched().  This will work\nproviding no preemption happens.  If there is preemption, we just\nhave to hope that new devices are largely consistent with old devices.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "dafb20fa34320a472deb7442f25a0c086e0feb33",
      "tree": "2ff501805f8a6d08119f1f1a7248f579d52e491b",
      "parents": [
        "d6b42dcb995e6acd7cc276774e751ffc9f0ef4bf"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:39 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:39 2012 +1100"
      },
      "message": "md: tidy up rdev_for_each usage.\n\nmd.h has an \u0027rdev_for_each()\u0027 macro for iterating the rdevs in an\nmddev.  However it uses the \u0027safe\u0027 version of list_for_each_entry,\nand so requires the extra variable, but doesn\u0027t include \u0027safe\u0027 in the\nname, which is useful documentation.\n\nConsequently some places use this safe version without needing it, and\nmany use an explicity list_for_each entry.\n\nSo:\n - rename rdev_for_each to rdev_for_each_safe\n - create a new rdev_for_each which uses the plain\n   list_for_each_entry,\n - use the \u0027safe\u0027 version only where needed, and convert all other\n   list_for_each_entry calls to use rdev_for_each.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c744a65c1e2d59acc54333ce80a5b0702a98010b",
      "tree": "c76ff42e8f799030636d07c82879cc2bef7798db",
      "parents": [
        "dc10c643e8a8d008fd16dd6706e9e0018eadf8d2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:37 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:37 2012 +1100"
      },
      "message": "md: don\u0027t set md arrays to readonly on shutdown.\n\nIt seems that with recent kernel, writeback can still be happening\nwhile shutdown is happening, and consequently data can be written\nafter the md reboot notifier switches all arrays to read-only.\nThis causes a BUG.\n\nSo don\u0027t switch them to read-only - just mark them clean and\nset \u0027safemode\u0027 to \u00272\u0027 which mean that immediately after any\nwrite the array will be switch back to \u0027clean\u0027.\n\nThis could result in the shutdown happening when array is marked\ndirty, thus forcing a resync on reboot.  However if you reboot\nwithout performing a \"sync\" first, you get to keep both halves.\n\nThis is suitable for any stable kernel (though there might be some\nconflicts with obvious fixes in earlier kernels).\n\nCc: stable@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4d39aa1b998fffd481517c1dd03d83c38e1706f9",
      "tree": "76c4e4cf52b148ae035f71c7c30692b6634cd343",
      "parents": [
        "4a68d54c983514f123e99fc720951a4ee4d84270",
        "db91ff55bdf06736b849afc1b1fce5763bbb8d5d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 08 19:06:30 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 08 19:06:30 2012 -0800"
      },
      "message": "Merge tag \u0027md-3.3-fixes\u0027 of git://neil.brown.name/md\n\nSome simple md-related fixes.\n\n1/ two small fixes to ensure we handle an interrupted resync properly.\n2/ avoid loading the bitmap multiple times in dm-raid\n\n* tag \u0027md-3.3-fixes\u0027 of git://neil.brown.name/md:\n  md: two small fixes to handling interrupt resync.\n  Prevent DM RAID from loading bitmap twice.\n"
    },
    {
      "commit": "db91ff55bdf06736b849afc1b1fce5763bbb8d5d",
      "tree": "ade2010773b721e3d699e75a9348f200e7ad31c4",
      "parents": [
        "34f8ac6d79e5446c6242e4bcb474f152c857c5c6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 07 12:01:51 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 07 12:01:51 2012 +1100"
      },
      "message": "md: two small fixes to handling interrupt resync.\n\n1/ If a resync is aborted we should record how far we got\n (recovery_cp) the last request that we know has completed\n (-\u003ecurr_resync_completed) rather than the last request that was\n submitted (-\u003ecurr_resync).\n\n2/ When a resync aborts we still want to update the metadata with\n any changes, so set MD_CHANGE_DEVS even if we \u0027skip\u0027.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b3c9dd182ed3bdcdaf0e42625a35924b0497afdc",
      "tree": "ad48ad4d923fee147c736318d0fad35b3755f4f5",
      "parents": [
        "83c2f912b43c3a7babbb6cb7ae2a5276c1ed2a3e",
        "5d381efb3d1f1ef10535a31ca0dd9b22fe1e1922"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 15 12:24:45 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 15 12:24:45 2012 -0800"
      },
      "message": "Merge branch \u0027for-3.3/core\u0027 of git://git.kernel.dk/linux-block\n\n* \u0027for-3.3/core\u0027 of git://git.kernel.dk/linux-block: (37 commits)\n  Revert \"block: recursive merge requests\"\n  block: Stop using macro stubs for the bio data integrity calls\n  blockdev: convert some macros to static inlines\n  fs: remove unneeded plug in mpage_readpages()\n  block: Add BLKROTATIONAL ioctl\n  block: Introduce blk_set_stacking_limits function\n  block: remove WARN_ON_ONCE() in exit_io_context()\n  block: an exiting task should be allowed to create io_context\n  block: ioc_cgroup_changed() needs to be exported\n  block: recursive merge requests\n  block, cfq: fix empty queue crash caused by request merge\n  block, cfq: move icq creation and rq-\u003eelv.icq association to block core\n  block, cfq: restructure io_cq creation path for io_context interface cleanup\n  block, cfq: move io_cq exit/release to blk-ioc.c\n  block, cfq: move icq cache management to block core\n  block, cfq: move io_cq lookup to blk-ioc.c\n  block, cfq: move cfqd-\u003eicq_list to request_queue and add request-\u003eelv.icq\n  block, cfq: reorganize cfq_io_context into generic and cfq specific parts\n  block: remove elevator_queue-\u003eops\n  block: reorder elevator switch sequence\n  ...\n\nFix up conflicts in:\n - block/blk-cgroup.c\n\tSwitch from can_attach_task to can_attach\n - block/cfq-iosched.c\n\tconflict with now removed cic index changes (we now use q-\u003eid instead)\n"
    },
    {
      "commit": "c086ae4ed94f9a1d283318e006813268c2dbf9fc",
      "tree": "dbabbb09ddafcb818f32af038831419702574917",
      "parents": [
        "7b67e751479d50b7f84d1a3cc5216eed5e534b66",
        "307729c8bc5b5a41361af8af95906eee7552acb1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 11 18:51:55 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 11 18:51:55 2012 -0800"
      },
      "message": "Merge tag \u0027md-3.3-fixes\u0027 of git://neil.brown.name/md\n\nTwo bugfixes for md.\n\nOne is a recently introduced regression that affects an unusual\nconfiguration with a guaranteed BUG_ON.  Has been tagged for -stable.\nThe other is minor missing functionality.\n\n* tag \u0027md-3.3-fixes\u0027 of git://neil.brown.name/md:\n  md/raid1: perform bad-block tests for WriteMostly devices too.\n  md: notify the \u0027degraded\u0027 sysfs attribute on failure.\n"
    },
    {
      "commit": "b1bd055d397e09f99dcef9b138ed104ff1812fcb",
      "tree": "e8e1d3d0b6a33859392bcba516933aff256dc4b4",
      "parents": [
        "c98b2cc29af8e84e7364b53e9bb4cc7cfaf62555"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Wed Jan 11 16:27:11 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Jan 11 16:27:11 2012 +0100"
      },
      "message": "block: Introduce blk_set_stacking_limits function\n\nStacking driver queue limits are typically bounded exclusively by the\ncapabilities of the low level devices, not by the stacking driver\nitself.\n\nThis patch introduces blk_set_stacking_limits() which has more liberal\nmetrics than the default queue limits function. This allows us to\ninherit topology parameters from bottom devices without manually\ntweaking the default limits in each driver prior to calling the stacking\nfunction.\n\nSince there is now a clear distinction between stacking and low-level\ndevices, blk_set_default_limits() has been modified to carry the more\nconservative values that we used to manually set in\nblk_queue_make_request().\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "f2a371c5e74dd5685ab47effa4ac7b23b1fdaae5",
      "tree": "e1960be50588ef0a4461fa54609df7ebea95eac5",
      "parents": [
        "19d671695e1931ebfd75b2b888778201aefe35ca"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 09 00:46:41 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jan 11 08:35:14 2012 +1100"
      },
      "message": "md: notify the \u0027degraded\u0027 sysfs attribute on failure.\n\nWe currently only \u0027notify\u0027 changes to the \u0027degraded\u0027 attribute\nwhen it decreases, not when it increases.\n\nNotifying on failure is a little awkward as it happen in\ninterrupt context.\nSo instead, notify when we remove the failed device from the array,\nwhich is very soon afterwards.\n\nReported-and-tested-by: Mikhail Balabin \u003cmbalabin@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2943c833222ef87c111ee0c6b7b8519ad2983e99",
      "tree": "0ef8cc4f72a63b325e7ae858ec68822ec4f3c64f",
      "parents": [
        "98793265b429a3f0b3f1750e74d67cd4d740d162",
        "19d671695e1931ebfd75b2b888778201aefe35ca"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 13:28:33 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 13:28:33 2012 -0800"
      },
      "message": "Merge tag \u0027md-3.3\u0027 of git://neil.brown.name/md\n\nmd update for 3.3\n\nBig change is new hot-replacement.\nA slot in an array can hold 2 devices - one that\nwants-replacement and one that is the replacement.\nOnce the replacement is built - either from the\noriginal or (in the case of errors) from elsewhere,\nthe wants-replacement device will be removed.\n\n* tag \u0027md-3.3\u0027 of git://neil.brown.name/md: (36 commits)\n  md/raid1: Mark device want_replacement when we see a write error.\n  md/raid1: If there is a spare and a want_replacement device, start replacement.\n  md/raid1: recognise replacements when assembling arrays.\n  md/raid1: handle activation of replacement device when recovery completes.\n  md/raid1: Allow a failed replacement device to be removed.\n  md/raid1: Allocate spare to store replacement devices and their bios.\n  md/raid1:  Replace use of mddev-\u003eraid_disks with conf-\u003eraid_disks.\n  md/raid10: If there is a spare and a want_replacement device, start replacement.\n  md/raid10: recognise replacements when assembling array.\n  md/raid10: Allow replacement device to be replace old drive.\n  md/raid10: handle recovery of replacement devices.\n  md/raid10:  Handle replacement devices during resync.\n  md/raid10: writes should get directed to replacement as well as original.\n  md/raid10: allow removal of failed replacement devices.\n  md/raid10: preferentially read from replacement device if possible.\n  md/raid10:  change read_balance to return an rdev\n  md/raid10: prepare data structures for handling replacement.\n  md/raid5: Mark device want_replacement when we see a write error.\n  md/raid5: If there is a spare and a want_replacement device, start replacement.\n  md/raid5: recognise replacements when assembling array.\n  ...\n"
    },
    {
      "commit": "ff01bb4832651c6d25ac509a06a10fcbd75c461c",
      "tree": "bbfdebd317db97d346df78293566f36e883b1be9",
      "parents": [
        "94ea4158f1733e3b10cef067d535f504866e0c41"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Sep 16 02:31:11 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:07 2012 -0500"
      },
      "message": "fs: move code out of buffer.c\n\nMove invalidate_bdev, block_sync_page into fs/block_dev.c.  Export\nkill_bdev as well, so brd doesn\u0027t have to open code it.  Reduce\nbuffer_head.h requirement accordingly.\n\nRemoved a rather large comment from invalidate_bdev, as it looked a bit\nobsolete to bother moving.  The small comment replacing it says enough.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7bfec5f35c68121e7b1849f3f4166dd96c8da5b3",
      "tree": "14bab6480ccc14a6cdf9e5ee34662897e5e2e94a",
      "parents": [
        "17045f52ac76d9cd1a120e52af5d83b570af4ba8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:53 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:53 2011 +1100"
      },
      "message": "md/raid5: If there is a spare and a want_replacement device, start replacement.\n\nWhen attempting to add a spare to a RAID[456] array, also consider\nadding it as a replacement for a want_replacement device.\n\nThis requires that common md code attempt hot_add even when the array\nis not formally degraded.\n\nReviewed-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2d78f8c451785f030ac1676a18691896b59c69d8",
      "tree": "4dfe69115b2ca2fb8be2a671e7c8399c3925fcb9",
      "parents": [
        "b8321b68d1445f308324517e45fb0a5c2b48e271"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:51 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:51 2011 +1100"
      },
      "message": "md: create externally visible flags for supporting hot-replace.\n\nhot-replace is a feature being added to md which will allow a\ndevice to be replaced without removing it from the array first.\n\nWith hot-replace a spare can be activated and recovery can start while\nthe original device is still in place, thus allowing a transition from\nan unreliable device to a reliable device without leaving the array\ndegraded during the transition.  It can also be use when the original\ndevice is still reliable but it not wanted for some reason.\n\nThis will eventually be supported in RAID4/5/6 and RAID10.\n\nThis patch adds a super-block flag to distinguish the replacement\ndevice.  If an old kernel sees this flag it will reject the device.\n\nIt also adds two per-device flags which are viewable and settable via\nsysfs.\n   \"want_replacement\" can be set to request that a device be replaced.\n   \"replacement\" is set to show that this device is replacing another\n   device.\n\nThe \"rd%d\" links in /sys/block/mdXx/md only apply to the original\ndevice, not the replacement.  We currently don\u0027t make links for the\nreplacement - there doesn\u0027t seem to be a need.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b8321b68d1445f308324517e45fb0a5c2b48e271",
      "tree": "3fc4c9b253435753d2154d9bd697a7869163c29a",
      "parents": [
        "476a7abb9b00adfe6bf70e82800367319ab8078b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:51 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:51 2011 +1100"
      },
      "message": "md: change hot_remove_disk to take an rdev rather than a number.\n\nSoon an array will be able to have multiple devices with the\nsame raid_disk number (an original and a replacement).  So removing\na device based on the number won\u0027t work.  So pass the actual device\nhandle instead.\n\nReviewed-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "476a7abb9b00adfe6bf70e82800367319ab8078b",
      "tree": "92387465b8ded45abad9dbb7382136476a31e120",
      "parents": [
        "915c420ddfa3eb22a0dbdb7a8e0ecf020c31961f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:51 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:51 2011 +1100"
      },
      "message": "md: remove test for duplicate device when setting slot number.\n\nWhen setting the slot number on a device in an active array we\ncurrently check that the number is not already in use.\nWe then call into the personality\u0027s hot_add_disk function\nwhich performs the same test and returns the same error.\n\nThus the common test is not needed.\n\nAs we will shortly be changing some personalities to allow duplicates\nin some cases (to support hot-replace), the common test will become\ninconvenient.\n\nSo remove the common test.\n\nReviewed-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "506c9e44a85f6a79fc0643f2d2498ab6cda3d3f8",
      "tree": "94dd7741a688b2c57494819ca3a22d228462ff98",
      "parents": [
        "961902c0f8240175729274cd14198872f42072b7"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:26 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:26 2011 +1100"
      },
      "message": "md: allow non-privileged uses to GET_*_INFO about raid arrays.\n\nThe info is already available in /proc/mdstat and /sys/block in\nan accessible form so there is no point in putting a road-block in\nthe ioctl for information gathering.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "60fc13702a1b35118c1548e9c257fa038cecb658",
      "tree": "163094eb4ae229f9263bfd05b788f29cc14e94f5",
      "parents": [
        "30d7a4836847bdb10b32c78a4879d4aebe0f193b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 09:57:19 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 09:57:19 2011 +1100"
      },
      "message": "md: don\u0027t give up looking for spares on first failure-to-add\n\nBefore performing a recovery we try to remove any spares that\nmight not be working, then add any that might have become relevant.\n\nCurrently we abort on the first spare that cannot be added.\nThis is a false optimisation.\nIt is conceivable that - depending on rules in the personality - a\nsubsequent spare might be accepted.\nAlso the loop does other things like count the available spares and\nreset the \u0027recovery_offset\u0027 value.\n\nIf we abort early these might not happen properly.\n\nSo remove the early abort.\n\nIn particular if you have an array what is undergoing recovery and\nwhich has extra spares, then the recovery may not restart after as\nreboot as the could of \u0027spares\u0027 might end up as zero.\n\nReported-by: Anssi Hannula \u003canssi.hannula@iki.fi\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8bd2f0a05b361e07d48bb34398593f5f523946b3",
      "tree": "a87860b4b8821b40eb9e6bb5333f71dfa8c3fb39",
      "parents": [
        "52c64152a935e63d9ff73ce823730c9a23dedbff"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 08 16:26:08 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 08 16:26:08 2011 +1100"
      },
      "message": "md: ensure new badblocks are handled promptly.\n\nWhen we mark blocks as bad we need them to be acknowledged by the\nmetadata handler promptly.\n\nFor an in-kernel metadata handler that was already being done.  But\nfor an external metadata handler we need to alert it of the change by\nsending a notification through the sysfs file.  This adds that\nnotification.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "52c64152a935e63d9ff73ce823730c9a23dedbff",
      "tree": "03de10a1899d74b42d00740437140a032686d011",
      "parents": [
        "af8a24347f966ab9fae6b0f127d1fbc9d6932d3a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 08 16:22:48 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 08 16:22:48 2011 +1100"
      },
      "message": "md: bad blocks shouldn\u0027t cause a Blocked status on a Faulty device.\n\nOnce a device is marked Faulty the badblocks - whether acknowledged or\nnot - become irrelevant.  So they shouldn\u0027t cause the device to be\nmarked as Blocked.\n\nWithout this patch, a process might write \"-blocked\" to clear the\nBlocked status, but while that will correctly fail the device, it\nwon\u0027t remove the apparent \u0027blocked\u0027 status.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "af8a24347f966ab9fae6b0f127d1fbc9d6932d3a",
      "tree": "903afdae95dc11444707410d784ad857dfb887c9",
      "parents": [
        "1d23f178d56ae1349b4fc5108ac8f4f8cdc92afc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 08 15:49:46 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 08 15:49:46 2011 +1100"
      },
      "message": "md: take a reference to mddev during sysfs access.\n\n\nWhen we are accessing an mddev via sysfs we know that the\nmddev cannot disappear because it has an embedded kobj which\nis refcounted by sysfs.\nAnd we also take the mddev_lock.\nHowever this is not enough.\n\nThe final mddev_put could have been called and the\nmddev_delayed_delete is waiting for sysfs to let go so it can destroy\nthe kobj and mddev.\nIn this state there are a lot of changes that should not be attempted.\n\nTo to guard against this we:\n - initialise mddev-\u003eall_mddevs in on last put so the state can be\n   easily detected.\n - in md_attr_show and md_attr_store, check -\u003eall_mddevs under\n   all_mddevs_lock and mddev_get the mddev if it still appears to\n   be active.\n\nThis means that if we get to sysfs as the mddev is being deleted we\nwill get -EBUSY.\n\nrdev_attr_store and rdev_attr_show are similar but already have\nsufficient protection.  They check that rdev-\u003emddev still points to\nmddev after taking mddev_lock.  As this is cleared  before delayed\nremoval which can only be requested under the mddev_lock, this\nensure the rdev and mddev are still alive.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1d23f178d56ae1349b4fc5108ac8f4f8cdc92afc",
      "tree": "3be282873c611cab1e855e0991ee3620d4cb906b",
      "parents": [
        "7c8f4247986bb5c5fb1d5b1fad35461989fe8310"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 08 15:49:12 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 08 15:49:12 2011 +1100"
      },
      "message": "md: refine interpretation of \"hold_active \u003d\u003d UNTIL_IOCTL\".\n\nWe like md devices to disappear when they really are not needed.\nHowever it is not possible to tell from the current state whether it\nis needed or not.  We can only tell from recent history of changes.\n\nIn particular immediately after we create an md device it looks very\nsimilar to immediately after we have finished with it.\n\nSo we always preserve a newly created md device until something\nsignificant happens.  This state is stored in \u0027hold_active\u0027.\n\nThe normal case is to keep it until an ioctl happens, as that will\nnormally either activate it, or explicitly de-activate it.  If it\ndoesn\u0027t then it was probably created by mistake and it is now time to\nget rid of it.\n\nWe can also modify an array via sysfs (instead of via ioctl) and we\ncurrently treat any change via sysfs like an ioctl as a sign that if\nit now isn\u0027t more active, it should be destroyed.\nHowever this is not appropriate as changes made via sysfs are more\ngradual so we should look for a more definitive change.\n\nSo this patch only clears \u0027hold_active\u0027 from UNTIL_IOCTL to clear when\nthe array_state is changed via sysfs.  Other changes via sysfs\nare ignored.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "32aaeffbd4a7457bf2f7448b33b5946ff2a960eb",
      "tree": "faf7ad871d87176423ff9ed1d1ba4d9c688fc23f",
      "parents": [
        "208bca0860406d16398145ddd950036a737c3c9d",
        "67b84999b1a8b1af5625b1eabe92146c5eb42932"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "message": "Merge branch \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux\n\n* \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux: (230 commits)\n  Revert \"tracing: Include module.h in define_trace.h\"\n  irq: don\u0027t put module.h into irq.h for tracking irqgen modules.\n  bluetooth: macroize two small inlines to avoid module.h\n  ip_vs.h: fix implicit use of module_get/module_put from module.h\n  nf_conntrack.h: fix up fallout from implicit moduleparam.h presence\n  include: replace linux/module.h with \"struct module\" wherever possible\n  include: convert various register fcns to macros to avoid include chaining\n  crypto.h: remove unused crypto_tfm_alg_modname() inline\n  uwb.h: fix implicit use of asm/page.h for PAGE_SIZE\n  pm_runtime.h: explicitly requires notifier.h\n  linux/dmaengine.h: fix implicit use of bitmap.h and asm/page.h\n  miscdevice.h: fix up implicit use of lists and types\n  stop_machine.h: fix implicit use of smp.h for smp_processor_id\n  of: fix implicit use of errno.h in include/linux/of.h\n  of_platform.h: delete needless include \u003clinux/module.h\u003e\n  acpi: remove module.h include from platform/aclinux.h\n  miscdevice.h: delete unnecessary inclusion of module.h\n  device_cgroup.h: delete needless include \u003clinux/module.h\u003e\n  net: sch_generic remove redundant use of \u003clinux/module.h\u003e\n  net: inet_timewait_sock doesnt need \u003clinux/module.h\u003e\n  ...\n\nFix up trivial conflicts (other header files, and  removal of the ab3550 mfd driver) in\n - drivers/media/dvb/frontends/dibx000_common.c\n - drivers/media/video/{mt9m111.c,ov6650.c}\n - drivers/mfd/ab3550-core.c\n - include/linux/dmaengine.h\n"
    },
    {
      "commit": "b4fdcb02f1e39c27058a885905bd0277370ba441",
      "tree": "fd4cfd1994f21f44afe5e7904681fb5ac09f81b8",
      "parents": [
        "044595d4e448305fbaec472eb7d22636d24e7d8c",
        "6dd9ad7df2019b1e33a372a501907db293ebcd0d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 04 17:06:58 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 04 17:06:58 2011 -0700"
      },
      "message": "Merge branch \u0027for-3.2/core\u0027 of git://git.kernel.dk/linux-block\n\n* \u0027for-3.2/core\u0027 of git://git.kernel.dk/linux-block: (29 commits)\n  block: don\u0027t call blk_drain_queue() if elevator is not up\n  blk-throttle: use queue_is_locked() instead of lockdep_is_held()\n  blk-throttle: Take blkcg-\u003elock while traversing blkcg-\u003epolicy_list\n  blk-throttle: Free up policy node associated with deleted rule\n  block: warn if tag is greater than real_max_depth.\n  block: make gendisk hold a reference to its queue\n  blk-flush: move the queue kick into\n  blk-flush: fix invalid BUG_ON in blk_insert_flush\n  block: Remove the control of complete cpu from bio.\n  block: fix a typo in the blk-cgroup.h file\n  block: initialize the bounce pool if high memory may be added later\n  block: fix request_queue lifetime handling by making blk_queue_cleanup() properly shutdown\n  block: drop @tsk from attempt_plug_merge() and explain sync rules\n  block: make get_request[_wait]() fail if queue is dead\n  block: reorganize throtl_get_tg() and blk_throtl_bio()\n  block: reorganize queue draining\n  block: drop unnecessary blk_get/put_queue() in scsi_cmd_ioctl() and blk_get_tg()\n  block: pass around REQ_* flags instead of broken down booleans during request alloc/free\n  block: move blk_throtl prototypes to block/blk.h\n  block: fix genhd refcounting in blkio_policy_parse_and_set()\n  ...\n\nFix up trivial conflicts due to \"mddev_t\" -\u003e \"struct mddev\" conversion\nand making the request functions be of type \"void\" instead of \"int\" in\n - drivers/md/{faulty.c,linear.c,md.c,md.h,multipath.c,raid0.c,raid1.c,raid10.c,raid5.c}\n - drivers/staging/zram/zram_drv.c\n"
    },
    {
      "commit": "056075c76417b112b4924e7b6386fdc6dfc9ac03",
      "tree": "7326cbdb0f54f975b140e548bd4f4d6f4b3486cc",
      "parents": [
        "ec37d321b96621906337c4279c490e1b5893ecae"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Sun Jul 03 13:58:33 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 19:31:18 2011 -0400"
      },
      "message": "md: Add module.h to all files using it implicitly\n\nA pending cleanup will mean that module.h won\u0027t be implicitly\neverywhere anymore.  Make sure the modular drivers in md dir\nare actually calling out for \u003cmodule.h\u003e explicitly in advance.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "5c04b426f2e8b46cfc7969a35b2631063a3c646c",
      "tree": "2d27d9f5d2fe5d5e8fbc01a467ec58bcb50235c1",
      "parents": [
        "499337bb6511e665a236a6a947f819d98ea340c6",
        "899e3ee404961a90b828ad527573aaaac39f0ab1"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:30:42 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:30:42 2011 +0200"
      },
      "message": "Merge branch \u0027v3.1-rc10\u0027 into for-3.2/core\n\nConflicts:\n\tblock/blk-core.c\n\tinclude/linux/blkdev.h\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "751e67ca2e2790e9b9b187557d5ba6f96b6c4a7e",
      "tree": "029525eb09d78e63b97d151a0d2e1871d6766885",
      "parents": [
        "d70ed2e4fafdbef0800e73942482bb075c21578b"
      ],
      "author": {
        "name": "Chris Dunlop",
        "email": "chris@onthe.net.au",
        "time": "Wed Oct 19 16:48:26 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 19 17:15:15 2011 +1100"
      },
      "message": "md.c: trivial comment fix\n\nTrivial comment fix\n\nSigned-off-by: Chris Dunlop \u003cchris@onthe.net.au\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d70ed2e4fafdbef0800e73942482bb075c21578b",
      "tree": "a0fb7f9b6993b44e37dc2f724df251bd6fcffae3",
      "parents": [
        "d30519fc59c5cc2f7772fa67b16b1a2426d36c95"
      ],
      "author": {
        "name": "Andrei Warkentin",
        "email": "andreiw@vmware.com",
        "time": "Tue Oct 18 12:16:48 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 18 12:16:48 2011 +1100"
      },
      "message": "MD: Allow restarting an interrupted incremental recovery.\n\nIf an incremental recovery was interrupted, a subsequent\nre-add will result in a full recovery, even though an\nincremental should be possible (seen with raid1).\n\nSolve this problem by not updating the superblock on the\nrecovering device until array is not degraded any longer.\n\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrei Warkentin \u003candreiw@vmware.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d30519fc59c5cc2f7772fa67b16b1a2426d36c95",
      "tree": "3aae0a21c16816e1989ea90db23a5b123a5a6a12",
      "parents": [
        "34db0cd60f8a1f4ab73d118a8be3797c20388223"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 18 12:13:47 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 18 12:13:47 2011 +1100"
      },
      "message": "md: clear In_sync bit on devices added to an active array.\n\nWhen we add a device to an active array it can be meaningful to set\nthe \u0027insync\u0027 flag.  This indicates that the device is in-sync with the\narray except for locations recorded in the bitmap.\nA bitmap-based recovery can then bring it completely in-sync.\n\nInternally we move that flag to \u0027saved_raid_disk\u0027 but forgot to clear\nIn_sync like we do in add_new_disk.\n\nSo clear In_sync after moving its value to saved_raid_disk.\n\nReported-by: Andrei Warkentin \u003candreiw@vmware.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "84fc4b56db85cb9e05326424049973a2036c9940",
      "tree": "b8f942766ad620d63da92c24df56032168879253",
      "parents": [
        "29d3247ea2274bca0d0b7f41fcf3b82e0a8bc44c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:58 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:58 2011 +1100"
      },
      "message": "md: rename \"mdk_personality\" to \"md_personality\"\n\n\"mdk\" doesn\u0027t mean anything any more.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2b8bf3451d1e3133ebc3998721d14013a6c27114",
      "tree": "6ad9afb9124d5eb865d513ec3f30259231075a8f",
      "parents": [
        "fd01b88c75a718020ff77e7f560d33835e9b58de"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:23 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:23 2011 +1100"
      },
      "message": "md: remove typedefs: mdk_thread_t -\u003e struct md_thread\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fd01b88c75a718020ff77e7f560d33835e9b58de",
      "tree": "c455d5adefd58f3263dcf265bb8ba2024523b106",
      "parents": [
        "3cb03002000f133f9f97269edefd73611eafc873"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:47:53 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:47:53 2011 +1100"
      },
      "message": "md: remove typedefs: mddev_t -\u003e struct mddev\n\nHaving mddev_t and \u0027struct mddev_s\u0027 is ugly and not preferred\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3cb03002000f133f9f97269edefd73611eafc873",
      "tree": "77fdb146666298b33aaeef0c05f082b6f82840fe",
      "parents": [
        "50de8df4abca1b27dbf7b2f81a56451bd8b5a7d8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:45:26 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:45:26 2011 +1100"
      },
      "message": "md: removing typedefs:  mdk_rdev_t -\u003e struct md_rdev\n\nThe typedefs are just annoying. \u0027mdk\u0027 probably refers to \u0027md_k.h\u0027\nwhich used to be an include file that defined this thing.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "36a4e1fe0f454146724c174bf7c1e8e76297a212",
      "tree": "57f0de83fda98e5ae1b4f66d5e993ca27386a793",
      "parents": [
        "bdc04e6b15f70a8f96d8cdfe21df159a6466b49a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:23:17 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:23:17 2011 +1100"
      },
      "message": "md: remove PRINTK and dprintk debugging and use pr_debug\n\nBeing able to dynamically enable these make them much more useful.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2dba6a911c284603d2085fec1e2d3c142f58a010",
      "tree": "8db93ad2131afd519b9d618f12841ec5d981c082",
      "parents": [
        "7e841526263b3e0042a423513147dfd06c8e998d"
      ],
      "author": {
        "name": "Daniel P. Berrange",
        "email": "berrange@redhat.com",
        "time": "Fri Sep 23 10:40:45 2011 +0100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Sep 23 19:54:04 2011 +1000"
      },
      "message": "md: don\u0027t delay reboot by 1 second if no MD devices exist\n\nThe md_notify_reboot() method includes a call to mdelay(1000),\nto deal with \"exotic SCSI devices\" which are too volatile on\nreboot. The delay is unconditional. Even if the machine does\nnot have any block devices, let alone MD devices, the kernel\nshutdown sequence is slowed down.\n\n1 second does not matter much with physical hardware, but with\ncertain virtualization use cases any wasted time in the bootup\n\u0026 shutdown sequence counts for alot.\n\n* drivers/md/md.c: md_notify_reboot() - only impose a delay if\n  there was at least one MD device to be stopped during reboot\n\nSigned-off-by: Daniel P. Berrange \u003cberrange@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "01f96c0a9922cd9919baf9d16febdf7016177a12",
      "tree": "a877fe509c4ef0db5252b7192df56009c1d06d6f",
      "parents": [
        "27a7b260f71439c40546b43588448faac01adb93"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 21 15:30:20 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 21 15:30:20 2011 +1000"
      },
      "message": "md: Avoid waking up a thread after it has been freed.\n\nTwo related problems:\n\n1/ some error paths call \"md_unregister_thread(mddev-\u003ethread)\"\n   without subsequently clearing -\u003ethread.  A subsequent call\n   to mddev_unlock will try to wake the thread, and crash.\n\n2/ Most calls to md_wakeup_thread are protected against the thread\n   disappeared either by:\n      - holding the -\u003emutex\n      - having an active request, so something else must be keeping\n        the array active.\n   However mddev_unlock calls md_wakeup_thread after dropping the\n   mutex and without any certainty of an active request, so the\n   -\u003ethread could theoretically disappear.\n   So we need a spinlock to provide some protections.\n\nSo change md_unregister_thread to take a pointer to the thread\npointer, and ensure that it always does the required locking, and\nclears the pointer properly.\n\nReported-by: \"Moshe Melnikov\" \u003cmoshe@zadarastorage.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\ncc: stable@kernel.org\n"
    },
    {
      "commit": "5a7bbad27a410350e64a2d7f5ec18fc73836c14f",
      "tree": "3447cd62dbcbd77b4071e2eb7576f1d7632ef2d3",
      "parents": [
        "c20e8de27fef9f59869c81c288ad6cf28200e00c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Sep 12 12:12:01 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Sep 12 12:12:01 2011 +0200"
      },
      "message": "block: remove support for bio remapping from -\u003emake_request\n\nThere is very little benefit in allowing to let a -\u003emake_request\ninstance update the bios device and sector and loop around it in\n__generic_make_request when we can archive the same through calling\ngeneric_make_request from the driver and letting the loop in\ngeneric_make_request handle it.\n\nNote that various drivers got the return value from -\u003emake_request and\nreturned non-zero values for errors.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "27a7b260f71439c40546b43588448faac01adb93",
      "tree": "80fdd39a446f93fa84a355cf4d0118244b4d7fd6",
      "parents": [
        "079fa166a2874985ae58b2e21e26e1cbc91127d4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Sep 10 17:21:28 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Sep 10 17:21:28 2011 +1000"
      },
      "message": "md: Fix handling for devices from 2TB to 4TB in 0.90 metadata.\n\n0.90 metadata uses an unsigned 32bit number to count the number of\nkilobytes used from each device.\nThis should allow up to 4TB per device.\nHowever we multiply this by 2 (to get sectors) before casting to a\nlarger type, so sizes above 2TB get truncated.\n\nAlso we allow rdev-\u003esectors to be larger than 4TB, so it is possible\nfor the array to be resized larger than the metadata can handle.\nSo make sure rdev-\u003esectors never exceeds 4TB when 0.90 metadata is in\nused.\n\nAlso the sanity check at the end of super_90_load should include level\n1 as it used -\u003esize too. (RAID0 and Linear don\u0027t use -\u003esize at all).\n\nReported-by: Pim Zandbergen \u003cP.Zandbergen@macroscoop.nl\u003e\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7da64a0abc3b2c6cbd3521672e9bb74dd560bb89",
      "tree": "1b17033fe40a2b29c7e4d6a2f200f54f39514a4d",
      "parents": [
        "1b6afa17581027218088a18a9ceda600e0ddba7a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 30 16:20:17 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 30 16:20:17 2011 +1000"
      },
      "message": "md: fix clearing of \u0027blocked\u0027 flag in the presence of bad blocks.\n\nWhen the \u0027blocked\u0027 flag on a device is cleared while there are\nunacknowledged bad blocks we must fail the device.  This is needed for\nbackwards compatability of the interface.\n\nThe code currently uses the wrong test for \"unacknowledged bad blocks\nexist\".  Change it to the right test.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a5bf4df0c88b88d34b6f0e3bc8a402dac7d14611",
      "tree": "40296244aa28ddff0360a1a57878a99926243620",
      "parents": [
        "aeb9b211849621f592288ed5ad694de9eeaae87a"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Thu Aug 25 14:43:34 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 25 14:43:34 2011 +1000"
      },
      "message": "md: use REQ_NOIDLE flag in md_super_write()\n\nQueue idling is used for the anticipation of immediate\nsequencial I/O\u0027s but md_super_write() is a kind of one-\nshot operation, coupled with md_super_wait(), so the\nidling in this case will be just a waste of time.\n\nSpecifying REQ_NOIDLE prevents it. Instead of adding\nthe flag to submit_bio() directly, use pre-defined\nmacro WRITE_FLUSH_FUA.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "aeb9b211849621f592288ed5ad694de9eeaae87a",
      "tree": "affa418deafe2f218dc84e4aeb6ed4bbaf85d3e5",
      "parents": [
        "5ef56c8fecedf403a346d02140e52a072d693d6b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 25 14:43:08 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 25 14:43:08 2011 +1000"
      },
      "message": "md: ensure changes to \u0027write-mostly\u0027 are reflected in metadata.\n\nThe \u0027write-mostly\u0027 flag can be changed through sysfs.\nWith 0.90 metadata, those changes are reflected in the metadata.\nFor 1.x metadata, they aren\u0027t.\n\nSo fix super_1_sync to record \u0027write-mostly\u0027 status.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    }
  ],
  "next": "5ef56c8fecedf403a346d02140e52a072d693d6b"
}
