)]}'
{
  "log": [
    {
      "commit": "ee0b0244030434cdda26777bfb98962447e080cd",
      "tree": "f2e59eeed60c0b76f6f53c63221114f2c0d3dbe2",
      "parents": [
        "f96c9f305c24a0d4a075e2c75aa6b417aa238687"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Feb 25 12:38:29 2013 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 26 11:58:50 2013 +1100"
      },
      "message": "md/raid1,raid10: fix deadlock with freeze_array()\n\nWhen raid1/raid10 needs to fix a read error, it first drains\nall pending requests by calling freeze_array().\nThis calls flush_pending_writes() if it needs to sleep,\nbut some writes may be pending in a per-process plug rather\nthan in the per-array request queue.\n\nWhen raid1{,0}_unplug() moves the request from the per-process\nplug to the per-array request queue (from which\nflush_pending_writes() can flush them), it needs to wake up\nfreeze_array(), or freeze_array() will never flush them and so\nit will block forever.\n\nSo add the requires wake_up() calls.\n\nThis bug was introduced by commit\n   f54a9d0e59c4bea3db733921ca9147612a6f292c\nfor raid1 and a similar commit for RAID10, and so has been present\nsince linux-3.6.  As the bug causes a deadlock I believe this fix is\nsuitable for -stable.\n\nCc: stable@vger.kernel.org (3.6.y 3.7.y 3.8.y)\nReported-by: Tregaron Bayly \u003ctbayly@bluehost.com\u003e\nTested-by: Tregaron Bayly \u003ctbayly@bluehost.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9a3152ab024867100f2f50d124b998d05fb1c3f6",
      "tree": "15b97c56d117340fa5db609ced6e0d51a91f2f37",
      "parents": [
        "475901aff15841fb0a81e7546517407779a9b061"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Feb 21 13:28:10 2013 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 26 11:55:33 2013 +1100"
      },
      "message": "MD RAID10: Improve redundancy for \u0027far\u0027 and \u0027offset\u0027 algorithms (part 2)\n\nMD RAID10:  Improve redundancy for \u0027far\u0027 and \u0027offset\u0027 algorithms (part 2)\n\nThis patch addresses raid arrays that have a number of devices that cannot\nbe evenly divided by \u0027far_copies\u0027.  (E.g. 5 devices, far_copies \u003d 2)  This\ncase must be handled differently because it causes that last set to be of\na different size than the rest of the sets.  We must compute a new modulo\nfor this last set so that copied chunks are properly wrapped around.\n\nExample use_far_sets\u003d1, far_copies\u003d2, near_copies\u003d1, devices\u003d5:\n                \"far\" algorithm\n        dev1 dev2 dev3 dev4 dev5\n\t\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\n\t[ A   B ] [ C    D   E ]\n        [ G   H ] [ I    J   K ]\n                    ...\n        [ B   A ] [ E    C   D ] --\u003e nominal set of 2 and last set of 3\n        [ H   G ] [ K    I   J ]     []\u0027s show far/offset sets\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "475901aff15841fb0a81e7546517407779a9b061",
      "tree": "22a641d5ff0f86db53cba49f6f701b16e9148507",
      "parents": [
        "4c0ca26bd260dddf3b9781758cb5e2df3f74d4a3"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Feb 21 13:28:10 2013 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 26 11:55:30 2013 +1100"
      },
      "message": "MD RAID10: Improve redundancy for \u0027far\u0027 and \u0027offset\u0027 algorithms (part 1)\n\nThe MD RAID10 \u0027far\u0027 and \u0027offset\u0027 algorithms make copies of entire stripe\nwidths - copying them to a different location on the same devices after\nshifting the stripe.  An example layout of each follows below:\n\n\t        \"far\" algorithm\n\tdev1 dev2 dev3 dev4 dev5 dev6\n\t\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\n\t A    B    C    D    E    F\n\t G    H    I    J    K    L\n\t            ...\n\t F    A    B    C    D    E  --\u003e Copy of stripe0, but shifted by 1\n\t L    G    H    I    J    K\n\t            ...\n\n\t\t\"offset\" algorithm\n\tdev1 dev2 dev3 dev4 dev5 dev6\n\t\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\n\t A    B    C    D    E    F\n\t F    A    B    C    D    E  --\u003e Copy of stripe0, but shifted by 1\n\t G    H    I    J    K    L\n\t L    G    H    I    J    K\n\t            ...\n\nRedundancy for these algorithms is gained by shifting the copied stripes\none device to the right.  This patch proposes that array be divided into\nsets of adjacent devices and when the stripe copies are shifted, they wrap\non set boundaries rather than the array size boundary.  That is, for the\npurposes of shifting, the copies are confined to their sets within the\narray.  The sets are \u0027near_copies * far_copies\u0027 in size.\n\nThe above \"far\" algorithm example would change to:\n\t        \"far\" algorithm\n\tdev1 dev2 dev3 dev4 dev5 dev6\n\t\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\n\t A    B    C    D    E    F\n\t G    H    I    J    K    L\n\t            ...\n\t B    A    D    C    F    E  --\u003e Copy of stripe0, shifted 1, 2-dev sets\n\t H    G    J    I    L    K      Dev sets are 1-2, 3-4, 5-6\n\t            ...\n\nThis has the affect of improving the redundancy of the array.  We can\nalways sustain at least one failure, but sometimes more than one can\nbe handled.  In the first examples, the pairs of devices that CANNOT fail\ntogether are:\n\t(1,2) (2,3) (3,4) (4,5) (5,6) (1, 6) [40% of possible pairs]\nIn the example where the copies are confined to sets, the pairs of\ndevices that cannot fail together are:\n\t(1,2) (3,4) (5,6)                    [20% of possible pairs]\n\nWe cannot simply replace the old algorithms, so the 17th bit of the \u0027layout\u0027\nvariable is used to indicate whether we use the old or new method of computing\nthe shift.  (This is similar to the way the 16th bit indicates whether the\n\"far\" algorithm or the \"offset\" algorithm is being used.)\n\nThis patch only handles the cases where the number of total raid disks is\na multiple of \u0027far_copies\u0027.  A follow-on patch addresses the condition where\nthis is not true.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4c0ca26bd260dddf3b9781758cb5e2df3f74d4a3",
      "tree": "b9d8fc9c62a075db9ef41a4df1c22b0e31f6955c",
      "parents": [
        "c8dc9c654794a765ca61baed07f84ed8aaa7ca8c"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Feb 21 13:28:09 2013 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 26 11:55:27 2013 +1100"
      },
      "message": "MD RAID10: Minor non-functional code changes\n\nChanges include assigning \u0027addr\u0027 from \u0027s\u0027 instead of \u0027sector\u0027 to be\nconsistent with the way the code does it just a few lines later and\nusing \u0027%\u003d\u0027 vs a conditional and subtraction.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c8dc9c654794a765ca61baed07f84ed8aaa7ca8c",
      "tree": "81dea728ef7bcaa01fb7e06c1e731d76dd258dff",
      "parents": [
        "bbfa57c0f2243a7c31fd248d22e9861a2802cad5"
      ],
      "author": {
        "name": "Joe Lawrence",
        "email": "Joe.Lawrence@stratus.com",
        "time": "Thu Feb 21 13:28:09 2013 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 26 11:55:21 2013 +1100"
      },
      "message": "md: raid1,10: Handle REQ_WRITE_SAME flag in write bios\n\nSet mddev queue\u0027s max_write_same_sectors to its chunk_sector value (before\ndisk_stack_limits merges the underlying disk limits.)  With that in place,\nbe sure to handle writes coming down from the block layer that have the\nREQ_WRITE_SAME flag set.  That flag needs to be copied into any newly cloned\nwrite bio.\n\nSigned-off-by: Joe Lawrence \u003cjoe.lawrence@stratus.com\u003e\nAcked-by: \"Martin K. Petersen\" \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\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": "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": "874807a83139abc094f939e93623c5623573d543",
      "tree": "c36b108b47272d31cbe906cb4267829c02e9c121",
      "parents": [
        "884162df2aadd7414bef4935e1a54976fd4e3988"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 27 12:14:40 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 27 12:14:40 2012 +1100"
      },
      "message": "md/raid1{,0}: fix deadlock in bitmap_unplug.\n\nIf the raid1 or raid10 unplug function gets called\nfrom a make_request function (which is very possible) when\nthere are bios on the current-\u003ebio_list list, then it will not\nbe able to successfully call bitmap_unplug() and it could\nneed to submit more bios and wait for them to complete.\nBut they won\u0027t complete while current-\u003ebio_list is non-empty.\n\nSo detect that case and handle the unplugging off to another thread\njust like we already do when called from within the scheduler.\n\nRAID1 version of bug was introduced in 3.6, so that part of fix is\nsuitable for 3.6.y.  RAID10 part won\u0027t apply.\n\nCc: stable@vger.kernel.org\nReported-by: Torsten Kaiser \u003cjust.for.lkml@googlemail.com\u003e\nReported-by: Peter Maloney \u003cpeter.maloney@brockmann-consult.de\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "884162df2aadd7414bef4935e1a54976fd4e3988",
      "tree": "e562edba9a947346b124e9583de9d20f41c7f8c5",
      "parents": [
        "e7c0c3fa29280d62aa5e11101a674bb3064bd791"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 22 15:12:09 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 22 15:12:42 2012 +1100"
      },
      "message": "md/raid10: decrement correct pending counter when writing to replacement.\n\nWhen a write to a replacement device completes, we carefully\nand correctly found the rdev that the write actually went to\nand the blithely called rdev_dec_pending on the primary rdev,\neven if this write was to the replacement.\n\nThis means that any writes to an array while a replacement\nwas ongoing would cause the nr_pending count for the primary\ndevice to go negative, so it could never be removed.\n\nThis bug has been present since replacement was introduced in\n3.3, so it is suitable for any -stable kernel since then.\n\nReported-by: \"George Spelvin\" \u003clinux@horizon.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e7c0c3fa29280d62aa5e11101a674bb3064bd791",
      "tree": "eb897529fb562a99e56fe29934f141f68c906af3",
      "parents": [
        "ca64cae96037de16e4af92678814f5d4bf0c1c65"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 22 14:42:49 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 22 15:12:36 2012 +1100"
      },
      "message": "md/raid10: close race that lose writes lost when replacement completes.\n\nWhen a replacement operation completes there is a small window\nwhen the original device is marked \u0027faulty\u0027 and the replacement\nstill looks like a replacement.  The faulty should be removed and\nthe replacement moved in place very quickly, bit it isn\u0027t instant.\n\nSo the code write out to the array must handle the possibility that\nthe only working device for some slot in the replacement - but it\ndoesn\u0027t.  If the primary device is faulty it just gives up.  This\ncan lead to corruption.\n\nSo make the code more robust: if either  the primary or the\nreplacement is present and working, write to them.  Only when\nneither are present do we give up.\n\nThis bug has been present since replacement was introduced in\n3.3, so it is suitable for any -stable kernel since then.\n\nReported-by: \"George Spelvin\" \u003clinux@horizon.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ed30be077e705e0dff53bfc51d23feb8aeeab78f",
      "tree": "bd57d2636bbe5d757549fc6dde8d2b93643bb4f2",
      "parents": [
        "02b898f2f04e418094f0093a3ad0b415bcdbe8eb"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Wed Oct 31 11:42:30 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 31 11:42:30 2012 +1100"
      },
      "message": "MD RAID10: Fix oops when creating RAID10 arrays via dm-raid.c\n\nCommit 2863b9eb didn\u0027t take into account the changes to add TRIM support to\nRAID10 (commit 532a2a3fb).  That is, when using dm-raid.c to create the\nRAID10 arrays, there is no mddev-\u003egendisk or mddev-\u003equeue.  The code added\nto support TRIM simply assumes that mddev-\u003equeue is available without\nchecking.  The result is an oops any time dm-raid.c attempts to create a\nRAID10 device.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\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": "91502f099dfc5a1e8812898e26ee280713e1d002",
      "tree": "7e38d225da477345f674739ecf3aefec3c44307c",
      "parents": [
        "48c26ddc9f85808632a63b3ae50b868c86a2435f"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Thu Oct 11 14:20:58 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 14:20:58 2012 +1100"
      },
      "message": "md/raid10: use correct limit variable\n\nClang complains that we are assigning a variable to itself.  This should\nbe using bad_sectors like the similar earlier check does.\n\nBug has been present since 3.1-rc1.  It is minor but could\nconceivably cause corruption or other bad behaviour.\n\nCc: stable@vger.kernel.org\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\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": "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": "57c67df48866d57b50d72eb198ffcc0cf7a6232d",
      "tree": "ef0ed816c8ff324a8b7f1635f5d2727bbac2d968",
      "parents": [
        "532a2a3fba8df076d65fdf17518eeb327b37a313"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:32:13 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:32:13 2012 +1100"
      },
      "message": "md/raid10: submit IO from originating thread instead of md thread.\n\nqueuing writes to the md thread means that all requests go through the\none processor which may not be able to keep up with very high request\nrates.\n\nSo use the plugging infrastructure to submit all requests on unplug.\nIf a \u0027schedule\u0027 is needed, we fall back on the old approach of handing\nthe requests to the thread for it to handle.\n\nThis is nearly identical to a recent patch which provided similar\nfunctionality to RAID1.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "532a2a3fba8df076d65fdf17518eeb327b37a313",
      "tree": "c23b22940ed37804baf535eb4f79f369851b1779",
      "parents": [
        "2ff8cc2c6d4e323de71a42affeb3041fa17d5b10"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shli@kernel.org",
        "time": "Thu Oct 11 13:30:52 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:30:52 2012 +1100"
      },
      "message": "md: raid 10 supports TRIM\n\n\nThis makes md raid 10 support TRIM.\n\nIf one disk supports discard and another not, or one has\ndiscard_zero_data and another not, there could be inconsistent between\ndata from such disks. But this should not matter, discarded data is\nuseless. This will add extra copy in rebuild though.\n\nSigned-off-by: Shaohua Li \u003cshli@fusionio.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "80b4812407c6b1f66a4f2430e69747a13f010839",
      "tree": "5c2e31a8cbbfabf83d4251c8299ade26934f79fb",
      "parents": [
        "cb13ff69d6d61ab06285e3ef652f45ecda73e135"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Sep 27 12:35:21 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Sep 27 12:35:21 2012 +1000"
      },
      "message": "md/raid10: fix \"enough\" function for detecting if array is failed.\n\nThe \u0027enough\u0027 function is written to work with \u0027near\u0027 arrays only\nin that is implicitly assumes that the offset from one \u0027group\u0027 of\ndevices to the next is the same as the number of copies.\nIn reality it is the number of \u0027near\u0027 copies.\n\nSo change it to make this number explicit.\n\nThis bug makes it possible to run arrays without enough drives\npresent, which is dangerous.\nIt is appropriate for an -stable kernel, but will almost certainly\nneed to be modified for some of them.\n\nCc: stable@vger.kernel.org\nReported-by: Jakub Husák \u003cjakub@gooseman.cz\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e0ee778528bbaad28a5c69d2e219269a3a096607",
      "tree": "85e2824b053d7ade3ee64a98c0c5a535a9af013f",
      "parents": [
        "667a5313ecd7308d79629c0738b0db588b0b0a4e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Aug 18 09:51:42 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Aug 18 09:51:42 2012 +1000"
      },
      "message": "md/raid10: fix problem with on-stack allocation of r10bio structure.\n\nA \u0027struct r10bio\u0027 has an array of per-copy information at the end.\nThis array is declared with size [0] and r10bio_pool_alloc allocates\nenough extra space to store the per-copy information depending on the\nnumber of copies needed.\n\nSo declaring a \u0027struct r10bio on the stack isn\u0027t going to work.  It\nwon\u0027t allocate enough space, and memory corruption will ensue.\n\nSo in the two places where this is done, declare a sufficiently large\nstructure and use that instead.\n\nThe two call-sites of this bug were introduced in 3.4 and 3.5\nso this is suitable for both those kernels.  The patch will have to\nbe modified for 3.4 as it only has one bug.\n\nCc: stable@vger.kernel.org\nReported-by: Ivan Vasilyev \u003civan.vasilyev@gmail.com\u003e\nTested-by: Ivan Vasilyev \u003civan.vasilyev@gmail.com\u003e\nSigned-off-by: NeilBrown \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": "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": "cc4d1efdd017083bbcbaf23feb4cdc717fa7dab8",
      "tree": "a6a7775a4715ab009c00ec4ef7655eafc307b694",
      "parents": [
        "473e87ce485ffcac041f7911b33f0b4cd4d6cf2b"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Jul 31 10:03:53 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 31 10:03:53 2012 +1000"
      },
      "message": "MD RAID10: Export md_raid10_congested\n\nmd/raid10: Export is_congested test.\n\nIn similar fashion to commits\n\t11d8a6e3719519fbc0e2c9d61b6fa931b84bf813\n\t1ed7242e591af7e233234d483f12d33818b189d9\nwe export the RAID10 congestion checking function so that dm-raid.c can\nmake use of it and make use of the personality.  The \u0027queue\u0027 and \u0027gendisk\u0027\nstructures will not be available to the MD code when device-mapper sets\nup the device, so we conditionalize access to these fields also.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "473e87ce485ffcac041f7911b33f0b4cd4d6cf2b",
      "tree": "01ae284e058d1805055bf153dd9175f1782181e8",
      "parents": [
        "0eaf822cb3dfcf2a64b2d27f4f6219186adb2695"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Jul 31 10:03:52 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 31 10:03:52 2012 +1000"
      },
      "message": "MD: Move macros from raid1*.h to raid1*.c\n\nMD RAID1/RAID10: Move some macros from .h file to .c file\n\nThere are three macros (IO_BLOCKED,IO_MADE_GOOD,BIO_SPECIAL) which are defined\nin both raid1.h and raid10.h.  They are only used in there respective .c files.\nHowever, if we wish to make RAID10 accessible to the device-mapper RAID\ntarget (dm-raid.c), then we need to move these macros into the .c files where\nthey are used so that they do not conflict with each other.\n\nThe macros from the two files are identical and could be moved into md.h, but\nI chose to leave the duplication and have them remain in the personality\nfiles.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "dc280d987f039ef35ac1e59c09b7154b61f385cf",
      "tree": "470cf571b46bff86454106f1f549028c8415fcd8",
      "parents": [
        "3bbae04b126fbd4c191b4167ea46ba9c4da46425"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Jul 31 10:03:52 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 31 10:03:52 2012 +1000"
      },
      "message": "MD RAID10: rename mirror_info structure\n\nMD RAID10: Rename the structure \u0027mirror_info\u0027 to \u0027raid10_info\u0027\n\nThe same structure name (\u0027mirror_info\u0027) is used by raid1.  Each of these\nstructures are defined in there respective header files.  If dm-raid is\nto support both RAID1 and RAID10, the header files will be included and\nthe structure names must not collide.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3bbae04b126fbd4c191b4167ea46ba9c4da46425",
      "tree": "fd6eb3e7a97e7fe66b9e7225b98bc0bc17e8f7b9",
      "parents": [
        "b17459c05000fdbe8d10946570a26510f86ec0f6"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Jul 31 10:03:52 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 31 10:03:52 2012 +1000"
      },
      "message": "MD RAID10: Fix compiler warning.\n\nMD RAID10:  Fix compiler warning.\n\nInitialize variable to prevent compiler warning.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "10684112c9d154172ac34e48a2ab68649e8f63ac",
      "tree": "ae3e70c27a6e9cb84220562fba52de3dd79821d1",
      "parents": [
        "b357f04a67c2aeee828b240863cd3f21d6cb3179"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 04 09:35:35 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 04 09:35:35 2012 +1000"
      },
      "message": "md/raid10: fix careless build error\n\nbuild error introduced by commit b357f04a67c2aeee8\n\nThat function doesn\u0027t get extra args until a later patch.  Bother.\n\nReported-by: Fengguang Wu \u003cwfg@linux.intel.com\u003e \nReported-by: Simon Kirby \u003csim@hostway.ca\u003e\nReported-by: Tobias Klausmann \u003ctobias.johannes.klausmann@mni.thm.de\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b357f04a67c2aeee828b240863cd3f21d6cb3179",
      "tree": "b8495f2c04fc40d5a2885fe4f7ff8d627cd55031",
      "parents": [
        "f456309106e9657645c81bce1a6bb3230393564e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 03 17:45:31 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 03 17:45:31 2012 +1000"
      },
      "message": "md: fix up plugging (again).\n\nThe value returned by \"mddev_check_plug\" is only valid until the\nnext \u0027schedule\u0027 as that will unplug things.  This could happen at any\ncall to mempool_alloc.\nSo just calling mddev_check_plug at the start doesn\u0027t really make\nsense.\n\nSo call it just before, or just after, queuing things for the thread.\nAs the action that happens at unplug is to wake the thread, this makes\nlots of sense.\nIf we cannot add a plug (which requires a small GFP_ATOMIC alloc) we\nwake thread immediately.\n\nRAID5 is a bit different.  Requests are queued for the thread and the\nthread is woken by release_stripe.  So we don\u0027t need to wake the\nthread on failure.\nHowever the thread doesn\u0027t perform certain actions when there is any\nactive plug, so it is important to install a plug before waking the\nthread.  So for RAID5 we install the plug *before* queuing the request\nand waking the thread.\n\nWithout this patch it is possible for raid1 or raid10 to queue a\nrequest without then waking the thread, resulting in the array locking\nup.\n\nAlso change raid10 to only flush_pending_write when there are not\nactive plugs, just like raid1.\n\nThis patch is suitable for 3.0 or later.  I plan to submit it to\n-stable, but I\u0027ll like to let it spend a few weeks in mainline\nfirst to be sure it is completely safe.\n\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": "055d3747dbf00ce85c6872ecca4d466638e80c22",
      "tree": "e58062bddc9b1770328c450c780d60e72459173e",
      "parents": [
        "5f066c632fcfd2a33f2eb7077c15c630e9f5ea5b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 03 15:55:33 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 03 15:55:33 2012 +1000"
      },
      "message": "md/raid10: fix failure when trying to repair a read error.\n\ncommit 58c54fcca3bac5bf9290cfed31c76e4c4bfbabaf\n     md/raid10: handle further errors during fix_read_error better.\n\nin 3.1 added \"r10_sync_page_io\" which takes an IO size in sectors.\nBut we were passing the IO size in bytes!!!\nThis resulting in bio_add_page failing, and empty request being sent\ndown, and a consequent BUG_ON in scsi_lib.\n\n[fix missing space in error message at same time]\n\nThis fix is suitable for 3.1.y and later.\n\nCc: stable@vger.kernel.org\nReported-by: Christian Balzer \u003cchibi@gol.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fc448a18ae6219af9a73257b1fbcd009efab4a81",
      "tree": "4060ac0bb5a476696be56ae1d60b7242715baf46",
      "parents": [
        "6b16351acbd415e66ba16bf7d473ece1574cf0bc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 03 10:37:30 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 03 10:37:30 2012 +1000"
      },
      "message": "md/raid10: Don\u0027t try to recovery unmatched (and unused) chunks.\n\nIf a RAID10 has an odd number of chunks - as might happen when there\nare an odd number of devices - the last chunk has no pair and so is\nnot mirrored.  We don\u0027t store data there, but when recovering the last\ndevice in an array we retry to recover that last chunk from a\nnon-existent location.  This results in an error, and the recovery\naborts.\n\nWhen we get to that last chunk we should just stop - there is nothing\nmore to do anyway.\n\nThis bug has been present since the introduction of RAID10, so the\npatch is appropriate for any -stable kernel.\n\nCc: stable@vger.kernel.org\nReported-by: Christian Balzer \u003cchibi@gol.com\u003e\nTested-by: Christian Balzer \u003cchibi@gol.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "aba336bd1d46d6b0404b06f6915ed76150739057",
      "tree": "6517e35ba3f6df77276d9c4e81d8ec726228aacd",
      "parents": [
        "2aa4ee2a8805ec0260dde971e9e6699917c868a7"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu May 31 15:39:11 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu May 31 15:56:30 2012 +1000"
      },
      "message": "md: raid1/raid10: fix problem with merge_bvec_fn\n\nThe new merge_bvec_fn which calls the corresponding function\nin subsidiary devices requires that mddev-\u003emerge_check_needed\nbe set if any child has a merge_bvec_fn.\n\nHowever were were only setting that when a device was hot-added,\nnot when a device was present from the start.\n\nThis bug was introduced in 3.4 so patch is suitable for 3.4.y\nkernels.  However that are conflicts in raid10.c so a separate\npatch will be needed for 3.4.y.\n\nCc: stable@vger.kernel.org\nReported-by: Sebastian Riemer \u003csebastian.riemer@profitbricks.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "63aced61023a054825ffd6e33ac1ab99036dadd2",
      "tree": "b41a4cde223c78ec787df3b02d839e1242d2a9e5",
      "parents": [
        "da7613b8b042ab1d3ea55459ed97301e4a2097bb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:33 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:33 2012 +1000"
      },
      "message": "md/raid10: Remove extras after reshape to smaller number of devices.\n\nWhen a reshape which reduced the number of devices finishes\nwe must remove the extra devices.\n\nSo ensure  that raid10_remove_disk won\u0027t try to keep them, and\nhave raid10_finish_reshape clear the \u0027in_sync\u0027 flag.  Then\nremove_and_add_spares will be able to remove them.\n\nReported-by: Hannes Reinecke \u003chare@suse.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bb63a7019df91933de6854a87ddc5488b49edb85",
      "tree": "d67b5399be52e0cd93a2292f0fd674109d6b6a2f",
      "parents": [
        "a4a6125a074e1b08ee8ae34f700c5bca19eb9d18"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:28 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:28 2012 +1000"
      },
      "message": "md/raid10: resize bitmap when required during reshape.\n\nIf a reshape changes the size of the array, then we can now\nupdate the bitmap to suit - so do so.\n\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": "5fdd2cf8265c6de0f190dea80cc4c50da8f31293",
      "tree": "ddb9bb1da6654d9d9de86c916fceed8280be95fe",
      "parents": [
        "da8840a747c0dbf49506ec906757a6b87b9741e9"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Tue May 22 13:55:03 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:03 2012 +1000"
      },
      "message": "md/raid10: Fix memleak in r10buf_pool_alloc\n\nIf the allocation of rep1_bio fails, we currently don\u0027t free the \u0027bio\u0027\nof the same dev.\n\nReported by kmemleak.\n\nSigned-off-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3ea7daa5d7fde47cd41f4d56c2deb949114da9d6",
      "tree": "8b88c2f7451219cd32f32753100ffc62cbda9c60",
      "parents": [
        "deb200d08590622d987718135a1e6323f83154aa"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:53:47 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:53:47 2012 +1000"
      },
      "message": "md/raid10: add reshape support\n\nA \u0027near\u0027 or \u0027offset\u0027 lay RAID10 array can be reshaped to a different\n\u0027near\u0027 or \u0027offset\u0027 layout, a different chunk size, and a different\nnumber of devices.\nHowever the number of copies cannot change.\n\nUnlike RAID5/6, we do not support having user-space backup data that\nis being relocated during a \u0027critical section\u0027.  Rather, the\ndata_offset of each device must change so that when writing any block\nto a new location, it will not over-write any data that is still\n\u0027live\u0027.\n\nThis means that RAID10 reshape is not supportable on v0.90 metadata.\n\nThe different between the old data_offset and the new_offset must be\nat least the larger of the chunksize multiplied by offset copies of\neach of the old and new layout. (for \u0027near\u0027 mode, offset_copies \u003d\u003d 1).\n\nA larger difference of around 64M seems useful for in-place reshapes\nas more data can be moved between metadata updates.\nVery large differences (e.g. 512M) seem to slow the process down due\nto lots of long seeks (on oldish consumer graded devices at least).\n\nMetadata needs to be updated whenever the place we are about to write\nto is considered - by the current metadata - to still contain data in\nthe old layout.\n\n[unbalanced locking fix from Dan Carpenter \u003cdan.carpenter@oracle.com\u003e]\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "deb200d08590622d987718135a1e6323f83154aa",
      "tree": "7baf2fc97e48d229d7a311f55bf0f96ce6e445ba",
      "parents": [
        "f8c9e74ff0832f2244d7991d2aea13851b20a622"
      ],
      "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/raid10: split out interpretation of layout to separate function.\n\nWe will soon be interpreting the layout (and chunksize etc) from\nmultiple places to support reshape.  So split it out into separate\nfunction.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f8c9e74ff0832f2244d7991d2aea13851b20a622",
      "tree": "db07ef3ecc00f83d3d9b854929a4cb13def456a7",
      "parents": [
        "c804cdecea418c067ee7359d62139b2b3c8cec39"
      ],
      "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/raid10: Introduce \u0027prev\u0027 geometry to support reshape.\n\nWhen RAID10 supports reshape it will need a \u0027previous\u0027 and a \u0027current\u0027\ngeometry, so introduce that here.\nUse the \u0027prev\u0027 geometry when before the reshape_position, and the\ncurrent \u0027geo\u0027 when beyond it.  At other times, use both as\nappropriate.\n\nFor now, both are identical (And reshape_position is never set).\n\nWhen we use the \u0027prev\u0027 geometry, we must use the old data_offset.\nWhen we use the current (And a reshape is happening) we must use\nthe new_data_offset.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5cf00fcd3c98d2eafb58ac7a649bbdb9dbc4902b",
      "tree": "0a96aa84d276e5e627603c7ad4740e1d607ebbad",
      "parents": [
        "b5254dd5fdd9abcacadb5101beb35df9ae8cc564"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:28:20 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:28:20 2012 +1000"
      },
      "message": "md/raid10: collect some geometry fields into a dedicated structure.\n\nWe will shortly be adding reshape support for RAID10 which will\nrequire it having 2 concurrent geometries (before and after).\nTo make that easier, collect most geometry fields into \u0027struct geom\u0027\nand access them from there.  Then we will more easily be able to add\na second set of fields.\n\nNote that \u0027copies\u0027 is not in this struct and so cannot be changed.\nThere is little need to change this number and doing so is a lot\nmore difficult as it requires reallocating more things.\nSo leave it out for now.\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": "b0d634d5683f0b186b242ce6a4f3b041edb8b956",
      "tree": "6443dc130dcd45c78ca2878938464c418ea89c41",
      "parents": [
        "0d9f4f135eb6dea06bdcb7065b1e4ff78274a5e9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat May 19 09:01:13 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat May 19 09:01:13 2012 +1000"
      },
      "message": "md/raid10: fix transcription error in calc_sectors conversion.\n\nThe old code was\n\t\tsector_div(stride, fc);\nthe new code was\n\t\tsector_dir(size, conf-\u003enear_copies);\n\n\u0027size\u0027 is right (the stride various wasn\u0027t really needed), but\n\u0027fc\u0027 means \u0027far_copies\u0027, and that is an important difference.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e       \n"
    },
    {
      "commit": "6508fdbf40a92fd7c19d32780ea33ce8e8362b93",
      "tree": "f51e0e36459eeb2f4e7d94f3ff15ffc5ab12de7c",
      "parents": [
        "b16b1b6cd052acbacc0a15f934bca9b354534d48"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu May 17 10:08:45 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu May 17 10:08:45 2012 +1000"
      },
      "message": "md/raid10: set dev_sectors properly when resizing devices in array.\n\nraid10 stores dev_sectors in \u0027conf\u0027 separately from the one in\n\u0027mddev\u0027 because it can have a very significant effect on block\naddressing and so need to be updated carefully.\n\nHowever raid10_resize isn\u0027t updating it at all!\n\nTo update it correctly, we need to make sure it is a proper\nmultiple of the chunksize taking various details of the layout\nin to account.\nThis calculation is currently done in setup_conf.   So split it\nout from there and call it from raid10_resize as well.\nThen set conf-\u003edev_sectors properly.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f4380a915823dbed0bf8e3cf502ebcf2b7c7f833",
      "tree": "1326179e1f715f33495066b2fe4b99acf1bbdd96",
      "parents": [
        "9e41dd35b39c2cf40767332b8f914d7afe25cc40"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Thu Apr 12 16:04:47 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Apr 12 16:04:47 2012 +1000"
      },
      "message": "md/raid1,raid10: Fix calculation of \u0027vcnt\u0027 when processing error recovery.\n\nIf r1bio-\u003esectors % 8 !\u003d 0,then the memcmp and a later\nmemcpy will omit the last bio_vec.\n\nThis is suitable for any stable kernel since 3.1 when bad-block\nmanagement was introduced.\n\nCc: stable@vger.kernel.org\nSigned-off-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5020ad7d143ccfcf8149974096220d59e5572120",
      "tree": "0124b6866ecd63b3a8913a6661e1d96699d60b71",
      "parents": [
        "c6d2e084c7411f61f2b446d94989e5aaf9879b0f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 02 01:39:05 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 03 15:39:23 2012 +1000"
      },
      "message": "md/raid1,raid10: don\u0027t compare excess byte during consistency check.\n\nWhen comparing two pages read from different legs of a mirror, only\ncompare the bytes that were read, not the whole page.\n\nIn most cases we read a whole page, but in some cases with\nbad blocks or odd sizes devices we might read fewer than that.\n\nThis bug has been present \"forever\" but at worst it might cause\na report of two many mismatches and generate a little bit\nextra resync IO, so there is no need to back-port to -stable\nkernels.\n\nReported-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "006a09a0ae0a494473a8cd82c8d1d653e37e6663",
      "tree": "169c59f77ef89e1c7cfb727249d60de88370fe79",
      "parents": [
        "6b740b8d79252f13bcb7e5d3c1d43157e78a81e7"
      ],
      "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/raid10 - support resizing some RAID10 arrays.\n\n\u0027resizing\u0027 an array in this context means making use of extra\nspace that has become available in component devices, not adding new\ndevices.\nIt also includes shrinking the array to take up less space of\ncomponent devices.\n\nThis is not supported for array with a \u0027far\u0027 layout.  However\nfor \u0027near\u0027 and \u0027offset\u0027 layout arrays, adding and removing space at\nthe end of the devices is easy to support, and this patch provides\nthat support.\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": "d6b42dcb995e6acd7cc276774e751ffc9f0ef4bf",
      "tree": "a9112351e8ddd2866afd8687b645a1c5bf574ee7",
      "parents": [
        "4474ca42e2577563a919fd3ed782e2ec55bf11a2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:38 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:38 2012 +1100"
      },
      "message": "md/raid1,raid10: avoid deadlock during resync/recovery.\n\nIf RAID1 or RAID10 is used under LVM or some other stacking\nblock device, it is possible to enter a deadlock during\nresync or recovery.\nThis can happen if the upper level block device creates\ntwo requests to the RAID1 or RAID10.  The first request gets\nprocessed, blocks recovery and queue requests for underlying\nrequests in current-\u003ebio_list.  A resync request then starts\nwhich will wait for those requests and block new IO.\n\nBut then the second request to the RAID1/10 will be attempted\nand it cannot progress until the resync request completes,\nwhich cannot progress until the underlying device requests complete,\nwhich are on a queue behind that second request.\n\nSo allow that second request to proceed even though there is\na resync request about to start.\n\nThis is suitable for any -stable kernel.\n\nCc: stable@vger.kernel.org\nReported-by: Ray Morris \u003csupport@bettercgi.com\u003e\nTested-by: Ray Morris \u003csupport@bettercgi.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "dc10c643e8a8d008fd16dd6706e9e0018eadf8d2",
      "tree": "6a0efe323cfaca9d180c0429c74697598c6d9a05",
      "parents": [
        "41fe75f60bcd4d698daed3e54bb099227358ce58"
      ],
      "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: allow re-add to failed arrays.\n\nWhen an array is failed (some data inaccessible) then there is no\npoint attempting to add a spare as it could not possibly be recovered.\n\nHowever that may be value in re-adding a recently removed device.\ne.g. if there is a write-intent-bitmap and it is clear, then access\nto the data could be restored by this action.\n\nSo don\u0027t reject a re-add to a failed array for RAID10 and RAID5 (the\nonly arrays  types that check for a failed array).\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "547414d19fd72376ff2ecc42aac8d7a051f03d26",
      "tree": "d46f4726e9bc397a182b9c36665a941e70692281",
      "parents": [
        "1e3fa9bd5061778fb5cf4648e4e8321e8cbbb95b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 13 11:21:20 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 13 11:21:20 2012 +1100"
      },
      "message": "md/raid10: remove unnecessary smp_mb() from end_sync_write\n\nRecent commit 4ca40c2ce099e4f1ce3 (md/raid10: Allow replacement device ...)\nadded an smp_mb in end_sync_write.\nThis was to close a possible race with raid10_remove_disk.\nHowever there is no such race as it is never attempted to remove a\ndisk while resync (or recovery) is happening.\nso the smp_mb is just noise.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7a90484825680e7831856105f5fef654e6c02701",
      "tree": "24eacf1558541076767b59c0cbcc6b6835e35204",
      "parents": [
        "fae8cc5ed0714953b1ad7cf86f030d2177278424"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 05 17:48:12 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 06 10:12:45 2012 +1100"
      },
      "message": "md/raid10: fix assembling of arrays with replacement devices.\n\ncommit 56a2559bb654a (md/raid10: recognise replacements ...)\nchanged \u0027run\u0027 to set -\u003ereplacement or -\u003erdev depending on the\n\u0027Replacement\u0027 status if the device, but it didn\u0027t remove the\nold unconditional setting of \u0027rdev\u0027.  So it was largely ineffective.\n\nSo remove that now.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fae8cc5ed0714953b1ad7cf86f030d2177278424",
      "tree": "f61f54aaff4122671153e63cad86914566bce389",
      "parents": [
        "f53e29fc87b6fb76db0043202ec2c3450caa5ff3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 14 11:10:10 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 14 11:10:10 2012 +1100"
      },
      "message": "md/raid10: fix handling of error on last working device in array.\n\nIf we get a read error on the last working device in a RAID10 which\ncontains the target block, then we don\u0027t fail the device (which is\ngood) but we don\u0027t abort retries, which is wrong.\nWe end up in an infinite loop retrying the read on the one device.\n\nThis patch fixes the problem in two places:\n1/ in raid10_end_read_request we don\u0027t even ask for a retry if this\n   was the last usable device.  This is efficient but a little racy\n   and will sometimes retry when it should not.\n\n2/ in handle_read_error we are careful to exclude any device from\n   retry which we tried to mark as faulty (that might have failed if\n   it was the last device).  This is race-free but less efficient.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b7044d41b5a09ce9082699f74c8f10e0fe59f704",
      "tree": "6eccbaddb40861aeba8459cb4f0efe3c340fb936",
      "parents": [
        "56a2559bb654ae2555b2ae3b29c837615d0c45c9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:56 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:56 2011 +1100"
      },
      "message": "md/raid10: If there is a spare and a want_replacement device, start replacement.\n\nWhen attempting to add a spare to a RAID10 array, also consider\nadding it as a replacement for a want_replacement device.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "56a2559bb654ae2555b2ae3b29c837615d0c45c9",
      "tree": "f90a0d605260f668ad13af654f7951bcb27dfe64",
      "parents": [
        "4ca40c2ce099e4f1ce35445994f49836662596c8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:55 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:55 2011 +1100"
      },
      "message": "md/raid10: recognise replacements when assembling array.\n\nIf a Replacement is seen, file it as such.\n\nIf we see two replacements (or two normal devices) for the one slot,\nabort.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4ca40c2ce099e4f1ce35445994f49836662596c8",
      "tree": "7d6f2187e8d6aaab0cdcf4924017aeb9725d87b0",
      "parents": [
        "24afd80d99f80a79d8824d2805114b8b067e9823"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:55 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:55 2011 +1100"
      },
      "message": "md/raid10: Allow replacement device to be replace old drive.\n\nWhen recovery finish and spare_active is called, check for a\nreplace that might have just become fully synced and mark it\nas such, marking the original as failed.\n\nThen when the original is removed, move the replacement into\nits position.\n\nThis means that \u0027replacement\u0027 and spontaneously become NULL in some\nsituations.  Make sure we check for those.\nIt also means that \u0027rdev\u0027 and \u0027replacement\u0027 could appear to be\nidentical - check for that too.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "24afd80d99f80a79d8824d2805114b8b067e9823",
      "tree": "c4ba36331ee56c64ba74a69ec5d0b56b6e860832",
      "parents": [
        "9ad1aefc8ae8d2e482b4cc4b7199e2354148bbdc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:55 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:55 2011 +1100"
      },
      "message": "md/raid10: handle recovery of replacement devices.\n\nIf there is a replacement device, then recover to it,\nreading from any drives - maybe the one being replaced, maybe not.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9ad1aefc8ae8d2e482b4cc4b7199e2354148bbdc",
      "tree": "c501f70c4726aade7eec3d743741f1568bba41df",
      "parents": [
        "475b0321a4df381f64db10ddd750a8b7bb82d88b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:55 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:55 2011 +1100"
      },
      "message": "md/raid10:  Handle replacement devices during resync.\n\nIf we need to resync an array which has replacement devices,\nwe always write any block checked to every replacement.\n\nIf the resync was bitmap-based resync we will then complete the\nreplacement normally.\nIf it was a full resync, we mark the replacements as fully recovered\nwhen the resync finishes so no further recovery is needed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "475b0321a4df381f64db10ddd750a8b7bb82d88b",
      "tree": "c8433c702892962091e617c83ada4560a208e4de",
      "parents": [
        "c8ab903ea9d7309044910c33dc087418be84f9b5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:55 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:55 2011 +1100"
      },
      "message": "md/raid10: writes should get directed to replacement as well as original.\n\nWhen writing, we need to submit two writes, one to the original,\nand one to the replacements - if there is a replacement.\n\nIf the write to the replacement results in a write error we just\nfail the device.  We only try to record write errors to the\noriginal.\n\nThis only handles writing new data.  Writing for resync/recovery\nwill come later.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c8ab903ea9d7309044910c33dc087418be84f9b5",
      "tree": "1113f320a71e50bc5ed22b7f6ca0ec1800b37b08",
      "parents": [
        "abbf098e6e1e23d5d247b9eaaf325e67f67b0328"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:54 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:54 2011 +1100"
      },
      "message": "md/raid10: allow removal of failed replacement devices.\n\nEnhance raid10_remove_disk to be able to remove -\u003ereplacement\nas well as -\u003erdev\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "abbf098e6e1e23d5d247b9eaaf325e67f67b0328",
      "tree": "e2d8dc88c99ecc14d6d87596d95b3de9b9dc87c9",
      "parents": [
        "96c3fd1f3802371610c620cff03f9d825707e80e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:54 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:54 2011 +1100"
      },
      "message": "md/raid10: preferentially read from replacement device if possible.\n\nWhen reading (for array reads, not for recovery etc) we read from the\nreplacement device if it has recovered far enough.\nThis requires storing the chosen rdev in the \u0027r10_bio\u0027 so we can make\nsure to drop the ref on the right device when the read finishes.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "96c3fd1f3802371610c620cff03f9d825707e80e",
      "tree": "822e95ed42ca9d1526964b3d06ef66ec4edd0ab9",
      "parents": [
        "69335ef3bc5b766f34db2d688be1d35313138bca"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:54 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:54 2011 +1100"
      },
      "message": "md/raid10:  change read_balance to return an rdev\n\nIt makes more sense to return an rdev than just an index as\nread_balance() gets a reference to the rdev and so returning\nthe pointer make this more idiomatic.\n\nThis will be needed in a future patch when we might return\na \u0027replacement\u0027 rdev instead of the main rdev.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "69335ef3bc5b766f34db2d688be1d35313138bca",
      "tree": "dcd87ffc4c97540d374a20de7380368e3679ac3b",
      "parents": [
        "3a6de2924af602f9c1b5a5154438c37f2d712dfa"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:54 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:54 2011 +1100"
      },
      "message": "md/raid10: prepare data structures for handling replacement.\n\nAllow each slot in the RAID10 to have 2 devices, the want_replacement\nand the replacement.\n\nAlso an r10bio to have 2 bios, and for resync/recovery allocate the\nsecond bio if there are any replacement devices.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b8321b68d1445f308324517e45fb0a5c2b48e271",
      "tree": "3fc4c9b253435753d2154d9bd697a7869163c29a",
      "parents": [
        "476a7abb9b00adfe6bf70e82800367319ab8078b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:51 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:51 2011 +1100"
      },
      "message": "md: change hot_remove_disk to take an rdev rather than a number.\n\nSoon an array will be able to have multiple devices with the\nsame raid_disk number (an original and a replacement).  So removing\na device based on the number won\u0027t work.  So pass the actual device\nhandle instead.\n\nReviewed-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "32aaeffbd4a7457bf2f7448b33b5946ff2a960eb",
      "tree": "faf7ad871d87176423ff9ed1d1ba4d9c688fc23f",
      "parents": [
        "208bca0860406d16398145ddd950036a737c3c9d",
        "67b84999b1a8b1af5625b1eabe92146c5eb42932"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "message": "Merge branch \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux\n\n* \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux: (230 commits)\n  Revert \"tracing: Include module.h in define_trace.h\"\n  irq: don\u0027t put module.h into irq.h for tracking irqgen modules.\n  bluetooth: macroize two small inlines to avoid module.h\n  ip_vs.h: fix implicit use of module_get/module_put from module.h\n  nf_conntrack.h: fix up fallout from implicit moduleparam.h presence\n  include: replace linux/module.h with \"struct module\" wherever possible\n  include: convert various register fcns to macros to avoid include chaining\n  crypto.h: remove unused crypto_tfm_alg_modname() inline\n  uwb.h: fix implicit use of asm/page.h for PAGE_SIZE\n  pm_runtime.h: explicitly requires notifier.h\n  linux/dmaengine.h: fix implicit use of bitmap.h and asm/page.h\n  miscdevice.h: fix up implicit use of lists and types\n  stop_machine.h: fix implicit use of smp.h for smp_processor_id\n  of: fix implicit use of errno.h in include/linux/of.h\n  of_platform.h: delete needless include \u003clinux/module.h\u003e\n  acpi: remove module.h include from platform/aclinux.h\n  miscdevice.h: delete unnecessary inclusion of module.h\n  device_cgroup.h: delete needless include \u003clinux/module.h\u003e\n  net: sch_generic remove redundant use of \u003clinux/module.h\u003e\n  net: inet_timewait_sock doesnt need \u003clinux/module.h\u003e\n  ...\n\nFix up trivial conflicts (other header files, and  removal of the ab3550 mfd driver) in\n - drivers/media/dvb/frontends/dibx000_common.c\n - drivers/media/video/{mt9m111.c,ov6650.c}\n - drivers/mfd/ab3550-core.c\n - include/linux/dmaengine.h\n"
    },
    {
      "commit": "b4fdcb02f1e39c27058a885905bd0277370ba441",
      "tree": "fd4cfd1994f21f44afe5e7904681fb5ac09f81b8",
      "parents": [
        "044595d4e448305fbaec472eb7d22636d24e7d8c",
        "6dd9ad7df2019b1e33a372a501907db293ebcd0d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 04 17:06:58 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 04 17:06:58 2011 -0700"
      },
      "message": "Merge branch \u0027for-3.2/core\u0027 of git://git.kernel.dk/linux-block\n\n* \u0027for-3.2/core\u0027 of git://git.kernel.dk/linux-block: (29 commits)\n  block: don\u0027t call blk_drain_queue() if elevator is not up\n  blk-throttle: use queue_is_locked() instead of lockdep_is_held()\n  blk-throttle: Take blkcg-\u003elock while traversing blkcg-\u003epolicy_list\n  blk-throttle: Free up policy node associated with deleted rule\n  block: warn if tag is greater than real_max_depth.\n  block: make gendisk hold a reference to its queue\n  blk-flush: move the queue kick into\n  blk-flush: fix invalid BUG_ON in blk_insert_flush\n  block: Remove the control of complete cpu from bio.\n  block: fix a typo in the blk-cgroup.h file\n  block: initialize the bounce pool if high memory may be added later\n  block: fix request_queue lifetime handling by making blk_queue_cleanup() properly shutdown\n  block: drop @tsk from attempt_plug_merge() and explain sync rules\n  block: make get_request[_wait]() fail if queue is dead\n  block: reorganize throtl_get_tg() and blk_throtl_bio()\n  block: reorganize queue draining\n  block: drop unnecessary blk_get/put_queue() in scsi_cmd_ioctl() and blk_get_tg()\n  block: pass around REQ_* flags instead of broken down booleans during request alloc/free\n  block: move blk_throtl prototypes to block/blk.h\n  block: fix genhd refcounting in blkio_policy_parse_and_set()\n  ...\n\nFix up trivial conflicts due to \"mddev_t\" -\u003e \"struct mddev\" conversion\nand making the request functions be of type \"void\" instead of \"int\" in\n - drivers/md/{faulty.c,linear.c,md.c,md.h,multipath.c,raid0.c,raid1.c,raid10.c,raid5.c}\n - drivers/staging/zram/zram_drv.c\n"
    },
    {
      "commit": "056075c76417b112b4924e7b6386fdc6dfc9ac03",
      "tree": "7326cbdb0f54f975b140e548bd4f4d6f4b3486cc",
      "parents": [
        "ec37d321b96621906337c4279c490e1b5893ecae"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Sun Jul 03 13:58:33 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 19:31:18 2011 -0400"
      },
      "message": "md: Add module.h to all files using it implicitly\n\nA pending cleanup will mean that module.h won\u0027t be implicitly\neverywhere anymore.  Make sure the modular drivers in md dir\nare actually calling out for \u003cmodule.h\u003e explicitly in advance.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "7fcc7c8acf0fba44d19a713207af7e58267c1179",
      "tree": "ce4b03fa3dfc07fb19b4d6c3653ba41ec1f926db",
      "parents": [
        "d890fa2b0586b6177b119643ff66932127d58afa"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 31 12:59:44 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 31 12:59:44 2011 +1100"
      },
      "message": "md/raid10:  Fix bug when activating a hot-spare.\n\nThis is a fairly serious bug in RAID10.\n\nWhen a RAID10 array is degraded and a hot-spare is activated, the\nspare does not take up the empty slot, but rather replaces the first\nworking device.\nThis is likely to make the array non-functional.   It would normally\nbe possible to recover the data, but that would need care and is not\nguaranteed.\n\nThis bug was introduced in commit\n   2bb77736ae5dca0a189829fbb7379d43364a9dac\nwhich first appeared in 3.1.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d890fa2b0586b6177b119643ff66932127d58afa",
      "tree": "48dfb1c192274002fc045996f49915a4d9af3bf8",
      "parents": [
        "355840e7a7e56bb2834fd3b0da64da5465f8aeaa"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 26 11:54:39 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 26 11:54:39 2011 +1100"
      },
      "message": "md: Fix some bugs in recovery_disabled handling.\n\nIn 3.0 we changed the way recovery_disabled was handle so that instead\nof testing against zero, we test an mddev-\u003e value against a conf-\u003e\nvalue.\nTwo problems:\n  1/ one place in raid1 was missed and still sets to \u00271\u0027.\n  2/ We didn\u0027t explicitly set the conf-\u003e value at array creation\n     time.\n     It defaulted to \u00270\u0027 just like the mddev value does so they\n     could appear equal and thus disable recovery.\n     This did not affect normal \u0027md\u0027 as it calls bind_rdev_to_array\n     which changes the mddev value.  However the dmraid interface\n     doesn\u0027t call this and so doesn\u0027t change -\u003erecovery_disabled; so at\n     array start all recovery is incorrectly disabled.\n\nSo initialise the \u0027conf\u0027 value to one less that the mddev value, so\nthe will only be the same when explicitly set that way.\n\nReported-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown  \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5c04b426f2e8b46cfc7969a35b2631063a3c646c",
      "tree": "2d27d9f5d2fe5d5e8fbc01a467ec58bcb50235c1",
      "parents": [
        "499337bb6511e665a236a6a947f819d98ea340c6",
        "899e3ee404961a90b828ad527573aaaac39f0ab1"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:30:42 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:30:42 2011 +0200"
      },
      "message": "Merge branch \u0027v3.1-rc10\u0027 into for-3.2/core\n\nConflicts:\n\tblock/blk-core.c\n\tinclude/linux/blkdev.h\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "34db0cd60f8a1f4ab73d118a8be3797c20388223",
      "tree": "45d1d629d6b9195d47d30980595686c9a3ee92f9",
      "parents": [
        "84fc4b56db85cb9e05326424049973a2036c9940"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:50:01 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:50:01 2011 +1100"
      },
      "message": "md: add proper write-congestion reporting to RAID1 and RAID10.\n\nRAID1 and RAID10 handle write requests by queuing them for handling by\na separate thread.  This is because when a write-intent-bitmap is\nactive we might need to update the bitmap first, so it is good to\nqueue a lot of writes, then do one big bitmap update for them all.\n\nHowever writeback request devices to appear to be congested after a\nwhile so it can make some guesstimate of throughput.  The infinite\nqueue defeats that (note that RAID5 has already has a finite queue so\nit doesn\u0027t suffer from this problem).\n\nSo impose a limit on the number of pending write requests.  By default\nit is 1024 which seems to be generally suitable.  Make it configurable\nvia module option just in case someone finds a regression.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "84fc4b56db85cb9e05326424049973a2036c9940",
      "tree": "b8f942766ad620d63da92c24df56032168879253",
      "parents": [
        "29d3247ea2274bca0d0b7f41fcf3b82e0a8bc44c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:58 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:58 2011 +1100"
      },
      "message": "md: rename \"mdk_personality\" to \"md_personality\"\n\n\"mdk\" doesn\u0027t mean anything any more.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e879a8793f915aa7933364d962d2435bd71de462",
      "tree": "bf62ccd52171bdaebd1d09b98f049950e39dd198",
      "parents": [
        "e373ab109172abc2d821bd3b5c1b400acddef5a5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:02 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:02 2011 +1100"
      },
      "message": "md/raid10: typedef removal: conf_t -\u003e struct r10conf\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e373ab109172abc2d821bd3b5c1b400acddef5a5",
      "tree": "48ca1b8ded6ec90a47015ab7316fe8cadb9f8d05",
      "parents": [
        "69724e28ca99990a8f0b5370bb946d7704936d67"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:59 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:59 2011 +1100"
      },
      "message": "md/raid0: typedef removal: raid0_conf_t -\u003e struct r0conf\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0f6d02d580ca77ee4be085c29c5fe5b879df24d9",
      "tree": "6ac3a0f3fba6cc6f8d66e9c413460ab5a740db8e",
      "parents": [
        "9f2c9d12bcc53fcb3b787023723754e84d1aef8b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:46 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:46 2011 +1100"
      },
      "message": "md: remove typedefs: mirror_info_t -\u003e struct mirror_info\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9f2c9d12bcc53fcb3b787023723754e84d1aef8b",
      "tree": "85fbc63c6e480bdebe06529e1af4d3d483d70452",
      "parents": [
        "2b8bf3451d1e3133ebc3998721d14013a6c27114"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:43 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:43 2011 +1100"
      },
      "message": "md: remove typedefs: r10bio_t -\u003e struct r10bio and r1bio_t -\u003e struct r1bio\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fd01b88c75a718020ff77e7f560d33835e9b58de",
      "tree": "c455d5adefd58f3263dcf265bb8ba2024523b106",
      "parents": [
        "3cb03002000f133f9f97269edefd73611eafc873"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:47:53 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:47:53 2011 +1100"
      },
      "message": "md: remove typedefs: mddev_t -\u003e struct mddev\n\nHaving mddev_t and \u0027struct mddev_s\u0027 is ugly and not preferred\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3cb03002000f133f9f97269edefd73611eafc873",
      "tree": "77fdb146666298b33aaeef0c05f082b6f82840fe",
      "parents": [
        "50de8df4abca1b27dbf7b2f81a56451bd8b5a7d8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:45:26 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:45:26 2011 +1100"
      },
      "message": "md: removing typedefs:  mdk_rdev_t -\u003e struct md_rdev\n\nThe typedefs are just annoying. \u0027mdk\u0027 probably refers to \u0027md_k.h\u0027\nwhich used to be an include file that defined this thing.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "01f96c0a9922cd9919baf9d16febdf7016177a12",
      "tree": "a877fe509c4ef0db5252b7192df56009c1d06d6f",
      "parents": [
        "27a7b260f71439c40546b43588448faac01adb93"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 21 15:30:20 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 21 15:30:20 2011 +1000"
      },
      "message": "md: Avoid waking up a thread after it has been freed.\n\nTwo related problems:\n\n1/ some error paths call \"md_unregister_thread(mddev-\u003ethread)\"\n   without subsequently clearing -\u003ethread.  A subsequent call\n   to mddev_unlock will try to wake the thread, and crash.\n\n2/ Most calls to md_wakeup_thread are protected against the thread\n   disappeared either by:\n      - holding the -\u003emutex\n      - having an active request, so something else must be keeping\n        the array active.\n   However mddev_unlock calls md_wakeup_thread after dropping the\n   mutex and without any certainty of an active request, so the\n   -\u003ethread could theoretically disappear.\n   So we need a spinlock to provide some protections.\n\nSo change md_unregister_thread to take a pointer to the thread\npointer, and ensure that it always does the required locking, and\nclears the pointer properly.\n\nReported-by: \"Moshe Melnikov\" \u003cmoshe@zadarastorage.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\ncc: stable@kernel.org\n"
    },
    {
      "commit": "5a7bbad27a410350e64a2d7f5ec18fc73836c14f",
      "tree": "3447cd62dbcbd77b4071e2eb7576f1d7632ef2d3",
      "parents": [
        "c20e8de27fef9f59869c81c288ad6cf28200e00c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Sep 12 12:12:01 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Sep 12 12:12:01 2011 +0200"
      },
      "message": "block: remove support for bio remapping from -\u003emake_request\n\nThere is very little benefit in allowing to let a -\u003emake_request\ninstance update the bios device and sector and loop around it in\n__generic_make_request when we can archive the same through calling\ngeneric_make_request from the driver and letting the loop in\ngeneric_make_request handle it.\n\nNote that various drivers got the return value from -\u003emake_request and\nreturned non-zero values for errors.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "079fa166a2874985ae58b2e21e26e1cbc91127d4",
      "tree": "39f67f9078465bd67c29216b35370a78907e4f3b",
      "parents": [
        "19d5f834d6aff7efb1c9353523865c5bce869470"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Sep 10 17:21:23 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Sep 10 17:21:23 2011 +1000"
      },
      "message": "md/raid1,10: Remove use-after-free bug in make_request.\n\nA single request to RAID1 or RAID10 might result in multiple\nrequests if there are known bad blocks that need to be avoided.\n\nTo detect if we need to submit another write request we test:\n \tif (sectors_handled \u003c (bio-\u003ebi_size \u003e\u003e 9)) {\n\nHowever this is after we call **_write_done() so the \u0027bio\u0027 no longer\nbelongs to us - the writes could have completed and the bio freed.\n\nSo move the **_write_done call until after the test against\nbio-\u003ebi_size.\n\nThis addresses https://bugzilla.kernel.org/show_bug.cgi?id\u003d41862\n\nReported-by: Bruno Wolff III \u003cbruno@wolff.to\u003e\nTested-by: Bruno Wolff III \u003cbruno@wolff.to\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "19d5f834d6aff7efb1c9353523865c5bce869470",
      "tree": "01c18b17519df9034bbcaf126eac9d9318143a1d",
      "parents": [
        "94007751bb02797ba87bac7aacee2731ac2039a3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Sep 10 17:21:17 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Sep 10 17:21:17 2011 +1000"
      },
      "message": "md/raid10: unify handling of write completion.\n\nA write can complete at two different places:\n1/ when the last member-device write completes, through\n   raid10_end_write_request\n2/ in make_request() when we remove the initial bias from -\u003eremaining.\n\nThese two should do exactly the same thing and the comment says they\ndo, but they don\u0027t.\n\nSo factor the correct code out into a function and call it in both\nplaces.  This makes the code much more similar to RAID1.\n\nThe difference is only significant if there is an error, and they\nusually take a while, so it is unlikely that there will be an error\nalready when make_request is completing, so this is unlikely to cause\nreal problems.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "58c54fcca3bac5bf9290cfed31c76e4c4bfbabaf",
      "tree": "25f663873429468c3b582bc7544f983759b7592e",
      "parents": [
        "5e5702898e93eee7d69b6efde109609a89a61001"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:25 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:25 2011 +1000"
      },
      "message": "md/raid10: handle further errors during fix_read_error better.\n\nIf we find more read/write errors we should record a bad block before\nfailing the device.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5e5702898e93eee7d69b6efde109609a89a61001",
      "tree": "87f47cc7e66da78befd16af6d479761b70f7adea",
      "parents": [
        "e684e41db3bad44f1262341300b827c0d94ae220"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:25 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:25 2011 +1000"
      },
      "message": "md/raid10: Handle read errors during recovery better.\n\nCurrently when we get a read error during recovery, we simply abort\nthe recovery.\n\nInstead, repeat the read in page-sized blocks.\nOn successful reads, write to the target.\nOn read errors, record a bad block on the destination,\nand only if that fails do we abort the recovery.\n\nAs we now retry reads we need to know where we read from.  This was in\nbi_sector but that can be changed during a read attempt.\nSo store the correct from_addr and to_addr in the r10_bio for later\naccess.\n\n\nSigned-off-by: NeilBrown\u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e684e41db3bad44f1262341300b827c0d94ae220",
      "tree": "a3ff2ec212d4f69a06a64b3a6841895b8cf85673",
      "parents": [
        "1a0b7cd82657a590f163b090bd9123a3a6b9aae4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:25 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:25 2011 +1000"
      },
      "message": "md/raid10: simplify read error handling during recovery.\n\nIf a read error is detected during recovery the code currently\nfails the read device.\nThis isn\u0027t really necessary.  recovery_request_write will signal\na write error to end_sync_write and it will record a write\nerror on the destination device which will record a bad block\nthere or kick it from the array.\n\nSo just remove this call to do md_error.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1a0b7cd82657a590f163b090bd9123a3a6b9aae4",
      "tree": "0dc3ccf6ad6ad88283e6d7924c38524865866cba",
      "parents": [
        "f84ee364dd15af11cada1e673f94128f62db189e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:25 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:25 2011 +1000"
      },
      "message": "md/raid10: record bad blocks due to write errors during resync/recovery.\n\nIf we get a write error during resync/recovery don\u0027t fail the device\nbut instead record a bad block.  If that fails we can then fail the\ndevice.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f84ee364dd15af11cada1e673f94128f62db189e",
      "tree": "e57fc87130b8bb6958413f39ae51718977540152",
      "parents": [
        "bd870a16c5946d86126f7203db3c73b71de0a1d8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:25 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:25 2011 +1000"
      },
      "message": "md/raid10:  attempt to fix read errors during resync/check\n\nWe already attempt to fix read errors found during normal IO\nand a \u0027repair\u0027 process.\nIt is best to try to repair them at any time they are found,\nso move a test so that during sync and check a read error will\nbe corrected by over-writing with good data.\n\nIf both (all) devices have known bad blocks in the sync section we\nwon\u0027t try to fix even though the bad blocks might not overlap.  That\nshould be considered later.\n\nAlso if we hit a read error during recovery we don\u0027t try to fix it.\nIt would only be possible to fix if there were at least three copies\nof data, which is not very common with RAID10.  But it should still\nbe considered later.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bd870a16c5946d86126f7203db3c73b71de0a1d8",
      "tree": "3492f61a441266c796b8a08ec30c06f7f6f27fbc",
      "parents": [
        "749c55e942d91cb27045fe2eb313aa5afe68ae0b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:24 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:24 2011 +1000"
      },
      "message": "md/raid10:  Handle write errors by updating badblock log.\n\nWhen we get a write error (in the data area, not in metadata),\nupdate the badblock log rather than failing the whole device.\n\nAs the write may well be many blocks, we trying writing each\nblock individually and only log the ones which fail.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "749c55e942d91cb27045fe2eb313aa5afe68ae0b",
      "tree": "ddf80a1eb3ef9005bc209c1c4946916b89c22a33",
      "parents": [
        "d4432c23be957ff061f7b23fd60e8506cb472a55"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:24 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:24 2011 +1000"
      },
      "message": "md/raid10: clear bad-block record when write succeeds.\n\nIf we succeed in writing to a block that was recorded as\nbeing bad, we clear the bad-block record.\n\nThis requires some delayed handling as the bad-block-list update has\nto happen in process-context.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d4432c23be957ff061f7b23fd60e8506cb472a55",
      "tree": "1e9e8cbc75721e62300bb2251658de870bf79d8a",
      "parents": [
        "e875ecea266a543e643b19e44cf472f1412708f9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:24 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:24 2011 +1000"
      },
      "message": "md/raid10: avoid writing to known bad blocks on known bad drives.\n\nWriting to known bad blocks on drives that have seen a write error\nis asking for trouble.  So try to avoid these blocks.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e875ecea266a543e643b19e44cf472f1412708f9",
      "tree": "b602d08f7aa4a743d3c27ad55e347d36991f0814",
      "parents": [
        "40c356ce5ad1a6be817825e1da1bc7494349cc6d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:24 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:24 2011 +1000"
      },
      "message": "md/raid10 record bad blocks as needed during recovery.\n\nWhen recovering one or more devices, if all the good devices have\nbad blocks we should record a bad block on the device being rebuilt.\n\nIf this fails, we need to abort the recovery.\n\nTo ensure we don\u0027t think that we aborted later than we actually did,\nwe need to move the check for MD_RECOVERY_INTR earlier in md_do_sync,\nin particular before mddev-\u003ecurr_resync is updated.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "40c356ce5ad1a6be817825e1da1bc7494349cc6d",
      "tree": "6843d537ecdfda6c03860455c187b775bc6dec97",
      "parents": [
        "8dbed5cebdf6796bf2618457b3653cf820934366"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:24 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:24 2011 +1000"
      },
      "message": "md/raid10: avoid reading known bad blocks during resync/recovery.\n\nDuring resync/recovery limit the size of the request to avoid\nreading into a bad block that does not start at-or-before the current\nread address.\n\nSimilarly if there is a bad block at this address, don\u0027t allow the\ncurrent request to extend beyond the end of that bad block.\n\nNow that we don\u0027t ever read from known bad blocks, it is safe to allow\ndevices with those blocks into the array.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8dbed5cebdf6796bf2618457b3653cf820934366",
      "tree": "b8e8421a3aae1ee8f21df97f76b116fd0a0a9b1c",
      "parents": [
        "7399c31bc92a26bb8388a73f8e14acadcc512fe5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:24 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:24 2011 +1000"
      },
      "message": "md/raid10 - avoid reading from known bad blocks - part 3\n\nWhen attempting to repair a read error, don\u0027t read from\ndevices with a known bad block.\n\nAs we are only reading PAGE_SIZE blocks, we don\u0027t try to\nnarrow down to smaller regions in the hope that only part of this\npage is bad - it isn\u0027t worth the effort.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7399c31bc92a26bb8388a73f8e14acadcc512fe5",
      "tree": "0f1d9904fde1d5258c84643a26947288251b9776",
      "parents": [
        "856e08e23762dfb92ffc68fd0a8d228f9e152160"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:23 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:23 2011 +1000"
      },
      "message": "md/raid10: avoid reading from known bad blocks - part 2\n\nWhen redirecting a read error to a different device, we must\nagain avoid bad blocks and possibly split the request.\n\nSpin_lock typo fixed thanks to Dan Carpenter \u003cerror27@gmail.com\u003e\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "856e08e23762dfb92ffc68fd0a8d228f9e152160",
      "tree": "fa9977a39da542eebb2129712703c11009a56ff2",
      "parents": [
        "560f8e5532d63a314271bfb99d3d1d53c938ed14"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:23 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:23 2011 +1000"
      },
      "message": "md/raid10: avoid reading from known bad blocks - part 1\n\nThis patch just covers the basic read path:\n 1/ read_balance needs to check for badblocks, and return not only\n    the chosen slot, but also how many good blocks are available\n    there.\n 2/ read submission must be ready to issue multiple reads to\n    different devices as different bad blocks on different devices\n    could mean that a single large read cannot be served by any one\n    device, but can still be served by the array.\n    This requires keeping count of the number of outstanding requests\n    per bio.  This count is stored in \u0027bi_phys_segments\u0027\n\nOn read error we currently just fail the request if another target\ncannot handle the whole request.  Next patch refines that a bit.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "560f8e5532d63a314271bfb99d3d1d53c938ed14",
      "tree": "c47cbeb54b1e98f626a3e4af1bf0a184a831d3b9",
      "parents": [
        "1294b9c973251a5e68b62c9b40dd914517bda675"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:23 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:23 2011 +1000"
      },
      "message": "md/raid10: Split handle_read_error out from raid10d.\n\nraid10d() is too big and is about to get bigger, so split\nhandle_read_error() out as a separate function.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1294b9c973251a5e68b62c9b40dd914517bda675",
      "tree": "45547cfff8997a3a633490341f8166dc6d00e962",
      "parents": [
        "b84db560ead5417b5594349512baf8837959df4f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:23 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:23 2011 +1000"
      },
      "message": "md/raid10: simplify/reindent some loops.\n\nWhen a loop ends with a large if, it can be neater to change the\nif to invert the condition and just \u0027continue\u0027.\nThen the body of the if can be indented to a lower level.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "de393cdea66cbd63c90725663f400c76faf1b255",
      "tree": "6a2bf37bee98bf7de42856f904bd23c81e082f8e",
      "parents": [
        "d7a9d443bc8a75a24873c0506f50051edfedc714"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:31:48 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:31:48 2011 +1000"
      },
      "message": "md: make it easier to wait for bad blocks to be acknowledged.\n\nIt is only safe to choose not to write to a bad block if that bad\nblock is safely recorded in metadata - i.e. if it has been\n\u0027acknowledged\u0027.\n\nIf it hasn\u0027t we need to wait for the acknowledgement.\n\nWe support that using rdev-\u003eblocked wait and\nmd_wait_for_blocked_rdev by introducing a new device flag\n\u0027BlockedBadBlock\u0027.\n\nThis flag is only advisory.\nIt is cleared whenever we acknowledge a bad block, so that a waiter\ncan re-check the particular bad blocks that it is interested it.\n\nIt should be set by a caller when they find they need to wait.\nThis (set after test) is inherently racy, but as\nmd_wait_for_blocked_rdev already has a timeout, losing the race will\nhave minimal impact.\n\nWhen we clear \"Blocked\" was also clear \"BlockedBadBlocks\" incase it\nwas set incorrectly (see above race).\n\nWe also modify the way we manage \u0027Blocked\u0027 to fit better with the new\nhandling of \u0027BlockedBadBlocks\u0027 and to make it consistent between\nexternally managed and internally managed metadata.   This requires\nthat each raidXd loop checks if the metadata needs to be written and\ntriggers a write (md_check_recovery) if needed.  Otherwise a queued\nwrite request might cause raidXd to wait for the metadata to write,\nand only that thread can write it.\n\nBefore writing metadata, we set FaultRecorded for all devices that\nare Faulty, then after writing the metadata we clear Blocked for any\ndevice for which the Fault was certainly Recorded.\n\nThe \u0027faulty\u0027 device flag now appears in sysfs if the device is faulty\n*or* it has unacknowledged bad blocks.  So user-space which does not\nunderstand bad blocks can continue to function correctly.\nUser space which does, should not assume a device is faulty until it\nsees the \u0027faulty\u0027 flag, and then sees the list of unacknowledged bad\nblocks is empty.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "34b343cff4354ab9864be83be88405fd53d928a0",
      "tree": "10d75ecac6091f955cbb8a60b79f443355ca4ea8",
      "parents": [
        "6e0d2d0312fb20c1edac1b2c849068c1c7944abf"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:31:47 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:31:47 2011 +1000"
      },
      "message": "md: don\u0027t allow arrays to contain devices with bad blocks.\n\nAs no personality understand bad block lists yet, we must\nreject any device that is known to contain bad blocks.\nAs the personalities get taught, these tests can be removed.\n\nThis only applies to raid1/raid5/raid10.\nFor linear/raid0/multipath/faulty the whole concept of bad blocks\ndoesn\u0027t mean anything so there is no point adding the checks.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\n"
    },
    {
      "commit": "cbea21703b2484f83faef040ed1de30114794392",
      "tree": "a6b06a5341cb8ece8807b09d3f35f928671b8578",
      "parents": [
        "ddd5115fe5594f5aae3c7f0008a5327bb1d19397"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Wed Jul 27 11:00:36 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 27 11:00:36 2011 +1000"
      },
      "message": "md/raid10: move rdev-\u003ecorrected_errors counting\n\nRead errors are considered to corrected if write-back and re-read\ncycle is finished without further problems. Thus moving the rdev-\u003e\ncorrected_errors counting after the re-reading looks more reasonable\nIMHO.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    }
  ],
  "next": "700c72138938cf428c74379806886c6b017d6295"
}
