)]}'
{
  "log": [
    {
      "commit": "30b8aa9172dfeaac6d77897c67ee9f9fc574cdbb",
      "tree": "d950c723e17399fefd104c5eddcf514d7f3c240a",
      "parents": [
        "ed209584c38fb74b7eecc03e5b1bfe674e591bd8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 24 10:23:16 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 24 10:23:16 2012 +1000"
      },
      "message": "md: fix possible corruption of array metadata on shutdown.\n\ncommit c744a65c1e2d59acc54333ce8\n  md: don\u0027t set md arrays to readonly on shutdown.\n\nremoved the possibility of a \u0027BUG\u0027 when data is written to an array\nthat has just been switched to read-only, but also introduced the\npossibility that the array metadata could be corrupted.\n\nIf, when md_notify_reboot gets the mddev lock, the array is\nin a state where it is assembled but hasn\u0027t been started (as can\nhappen if the personality module is not available, or in other unusual\nsituations), then incorrect metadata will be written out making it\nimpossible to re-assemble the array.\n\nSo only call __md_stop_writes() if the array has actually been\nactivated.\n\nThis patch is needed for any stable kernel which has had the above\ncommit applied.\n\nCc: stable@vger.kernel.org\nReported-by: Christoph Nelles \u003cevilazrael@evilazrael.de\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ed209584c38fb74b7eecc03e5b1bfe674e591bd8",
      "tree": "a232bb4fbf3a2e143ad57dfa3acad92418c5b12c",
      "parents": [
        "a9ad8526bb1af0741a5c0e01155dac08e7bdde60"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 24 10:23:14 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 24 10:23:14 2012 +1000"
      },
      "message": "md: don\u0027t call -\u003eadd_disk unless there is good reason.\n\nCommit 7bfec5f35c68121e7b18\n\n   md/raid5: If there is a spare and a want_replacement device, start replacement.\n\ncause md_check_recovery to call -\u003eadd_disk much more often.\nInstead of only when the array is degraded, it is now called whenever\nmd_check_recovery finds anything useful to do, which includes\nupdating the metadata for clean\u003c-\u003edirty transition.\nThis causes unnecessary work, and causes info messages from -\u003eadd_disk\nto be reported much too often.\n\nSo refine md_check_recovery to only do any actual recovery checking\n(including -\u003eadd_disk) if MD_RECOVERY_NEEDED is set.\n\nThis fix is suitable for 3.3.y:\n\nCc: stable@vger.kernel.org\nReported-by: Jan Ceuleers \u003cjan.ceuleers@computer.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a9ad8526bb1af0741a5c0e01155dac08e7bdde60",
      "tree": "4e82b35b644eab0aacc6c7d16b2cb7794f106cb5",
      "parents": [
        "afbaa90b80b1ec66e5137cc3824746bfdf559b18"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Apr 24 10:23:13 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 24 10:23:13 2012 +1000"
      },
      "message": "DM RAID: Use safe version of rdev_for_each\n\nFix segfault caused by using rdev_for_each instead of rdev_for_each_safe\n\nCommit dafb20fa34320a472deb7442f25a0c086e0feb33 mistakenly replaced a safe\niterator with an unsafe one when making some macro changes.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "afbaa90b80b1ec66e5137cc3824746bfdf559b18",
      "tree": "8c0307e41849eef28146343efc4fed75f83a30f1",
      "parents": [
        "f4380a915823dbed0bf8e3cf502ebcf2b7c7f833"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Apr 12 16:05:06 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Apr 12 16:05:06 2012 +1000"
      },
      "message": "md/bitmap: prevent bitmap_daemon_work running while initialising bitmap\n\nIf a bitmap is added while the array is active, it is possible\nfor bitmap_daemon_work to run while the bitmap is being\ninitialised.\nThis is particularly a problem if bitmap_daemon_work sees\nbitmap-\u003efilemap as non-NULL before it has been filled in properly.\nSo hold bitmap_info.mutex while filling in -\u003efilemap\nto prevent problems.\n\nThis patch is suitable for any -stable kernel, though it might not\napply cleanly before about 3.1.\n\nCc: stable@vger.kernel.org\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": "9e41dd35b39c2cf40767332b8f914d7afe25cc40",
      "tree": "b694a4d27b3fd7beb1881d5ad993303fe7309c59",
      "parents": [
        "5020ad7d143ccfcf8149974096220d59e5572120"
      ],
      "author": {
        "name": "Andrei Warkentin",
        "email": "andrey.warkentin@gmail.com",
        "time": "Thu Apr 12 15:55:21 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Apr 12 15:55:21 2012 +1000"
      },
      "message": "MD: Bitmap version cleanup.\n\nbitmap_new_disk_sb() would still create V3 bitmap superblock\nwith host-endian layout.\n\nPerhaps I\u0027m confused, but shouldn\u0027t bitmap_new_disk_sb() be\ncreating a V4 bitmap superblock instead, that is portable,\nas per comment in bitmap.h?\n\nSigned-off-by: Andrei Warkentin \u003candrey.warkentin@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": "c6d2e084c7411f61f2b446d94989e5aaf9879b0f",
      "tree": "521616d7bd6ff7eb38217bed1b81c5960fa2023d",
      "parents": [
        "a42f9d83b5c05dc6e678a1f0cd9767502c2c58de"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Mon Apr 02 01:16:59 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 03 15:37:38 2012 +1000"
      },
      "message": "md/raid5: Fix a bug about judging if the operation is syncing or replacing\n\nWhen create a raid5 using assume-clean and echo check or repair to\nsync_action.Then component disks did not operated IO but the raid\ncheck/resync faster than normal.\nBecause the judgement in function analyse_stripe():\n\t\tif (do_recovery ||\n\t\t    sh-\u003esector \u003e\u003d conf-\u003emddev-\u003erecovery_cp)\n\t\t\ts-\u003esyncing \u003d 1;\n\t\telse\n\t\t\ts-\u003ereplacing \u003d 1;\nWhen check or repair,the recovery_cp \u003d\u003d MaxSectore,so syncing equal zero\nnot one.\n\nThis bug was introduced by commit 9a3e1101b827\n    md/raid5:  detect and handle replacements during recovery.\nso this patch is suitable for 3.3-stable.\n\nCc: stable@vger.kernel.org\nSigned-off-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a42f9d83b5c05dc6e678a1f0cd9767502c2c58de",
      "tree": "e1864a59287f1441a4b016938efea5ca30a57df1",
      "parents": [
        "24b961f811a3e790a9b93604d2594bfb6cce4fa4"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Mon Apr 02 01:04:19 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 03 15:37:33 2012 +1000"
      },
      "message": "md/raid1:Remove unnecessary rcu_dereference(conf-\u003emirrors[i].rdev).\n\nBecause rde-\u003enr_pending \u003e 0,so can not remove this disk.\nAnd in any case, we aren\u0027t holding rcu_read_lock()\n\nSigned-off-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "24b961f811a3e790a9b93604d2594bfb6cce4fa4",
      "tree": "8cde643f6d3d142538d8e2499e65b368f5320bcc",
      "parents": [
        "18b9837ea0dc3cf844c6c4196871ce91d047bddb"
      ],
      "author": {
        "name": "Jes Sorensen",
        "email": "Jes.Sorensen@redhat.com",
        "time": "Sun Apr 01 23:48:38 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 03 15:37:26 2012 +1000"
      },
      "message": "md: Avoid OOPS when reshaping raid1 to raid0\n\nraid1 arrays do not have the notion of chunk size. Calculate the\nlargest chunk sector size we can use to avoid a divide by zero OOPS\nwhen aligning the size of the new array to the chunk size.\n\nSigned-off-by: Jes Sorensen \u003cJes.Sorensen@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "18b9837ea0dc3cf844c6c4196871ce91d047bddb",
      "tree": "de8be80b767d144405aeeaf7238c723f575b4b40",
      "parents": [
        "5220ea1e640869e70f894837678315c878c651fd"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sun Apr 01 23:48:38 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 03 15:36:17 2012 +1000"
      },
      "message": "md/raid5: fix handling of bad blocks during recovery.\n\n1/ We can only treat a known-bad-block like a read-error if we\n   have the data that belongs in that block.  So fix that test.\n\n2/ If we cannot recovery a stripe due to insufficient data,\n   don\u0027t tell \"md_done_sync\" that the sync failed unless we really\n   did fail something.  If we successfully record bad blocks,\n   that is success.\n\nReported-by: \"majianpeng\" \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5220ea1e640869e70f894837678315c878c651fd",
      "tree": "b18af9d438b634e81bd5d87c2323ae58d52eaf73",
      "parents": [
        "0366ef847581d692e197b88825867ca9ee00e358"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Mon Apr 02 09:48:38 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 02 09:48:38 2012 +1000"
      },
      "message": "md/raid1: If md_integrity_register() failed,run() must free the mem\n\nSigned-off-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0366ef847581d692e197b88825867ca9ee00e358",
      "tree": "7faec66efc6e77b24dd349a42c7dabefbc1964be",
      "parents": [
        "98d5561bfbc3c7a53d6abc1812a2bd5344d36fa3"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Mon Apr 02 09:48:37 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 02 09:48:37 2012 +1000"
      },
      "message": "md/raid0: If md_integrity_register() fails, raid0_run() must free the mem.\n\nSigned-off-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "98d5561bfbc3c7a53d6abc1812a2bd5344d36fa3",
      "tree": "6397046f8dc7a82986ebd7e442491dc118d1a850",
      "parents": [
        "dd775ae2549217d3ae09363e3edb305d0fa19928"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Mon Apr 02 09:48:37 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 02 09:48:37 2012 +1000"
      },
      "message": "md/linear: If md_integrity_register() fails, linear_run() must free the mem.\n\n\nSigned-off-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a4ffc152198efba2ed9e6eac0eb97f17bfebce85",
      "tree": "1901c86e3f4dbfcc3bd753888951a51430f0cde2",
      "parents": [
        "a66cc28f53a7e9679dedb2bc66ddb0e0c6bdd0ee"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Wed Mar 28 18:43:38 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:43:38 2012 +0100"
      },
      "message": "dm: add verity target\n\nThis device-mapper target creates a read-only device that transparently\nvalidates the data on one underlying device against a pre-generated tree\nof cryptographic checksums stored on a second device.\n\nTwo checksum device formats are supported: version 0 which is already\nshipping in Chromium OS and version 1 which incorporates some\nimprovements.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Mandeep Singh Baines \u003cmsb@chromium.org\u003e\nSigned-off-by: Will Drewry \u003cwad@chromium.org\u003e\nSigned-off-by: Elly Jones \u003cellyjones@chromium.org\u003e\nCc: Milan Broz \u003cmbroz@redhat.com\u003e\nCc: Olof Johansson \u003colofj@chromium.org\u003e\nCc: Steffen Klassert \u003csteffen.klassert@secunet.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a66cc28f53a7e9679dedb2bc66ddb0e0c6bdd0ee",
      "tree": "0d1037562bd8a47f6e9d31d7ed56e24c7aa98c66",
      "parents": [
        "67e2e2b281812b5caf4923a38aadc6b89e34f064"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Wed Mar 28 18:41:29 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:29 2012 +0100"
      },
      "message": "dm bufio: prefetch\n\nThis patch introduces a new function dm_bufio_prefetch. It prefetches\nthe specified range of blocks into dm-bufio cache without waiting\nfor i/o completion.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "67e2e2b281812b5caf4923a38aadc6b89e34f064",
      "tree": "c04255840de5e70a0aa2880d1f1c8bfe1b2e7817",
      "parents": [
        "104655fd4dcebd50068ef30253a001da72e3a081"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:29 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:29 2012 +0100"
      },
      "message": "dm thin: add pool target flags to control discard\n\nAdd dm thin target arguments to control discard support.\n\nignore_discard: Disables discard support\n\nno_discard_passdown: Don\u0027t pass discards down to the underlying data\ndevice, but just remove the mapping within the thin provisioning target.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "104655fd4dcebd50068ef30253a001da72e3a081",
      "tree": "ce4cc70f3ecf643d1c63948f902bc135b17750c7",
      "parents": [
        "eb2aa48d4eb7aee63cba201bf47641dad3e92250"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "message": "dm thin: support discards\n\nSupport discards in the thin target.\n\nOn discard the corresponding mapping(s) are removed from the thin\ndevice.  If the associated block(s) are no longer shared the discard\nis passed to the underlying device.\n\nAll bios other than discards now have an associated deferred_entry\nthat is saved to the \u0027all_io_entry\u0027 in endio_hook.  When non-discard\nIO completes and associated mappings are quiesced any discards that\nwere deferred, via ds_add_work() in process_discard(), will be queued\nfor processing by the worker thread.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n\ndrivers/md/dm-thin.c |  173 ++++++++++++++++++++++++++++++++++++++++++++++----\n drivers/md/dm-thin.c |  172 ++++++++++++++++++++++++++++++++++++++++++++++-----\n 1 file changed, 158 insertions(+), 14 deletions(-)\n"
    },
    {
      "commit": "eb2aa48d4eb7aee63cba201bf47641dad3e92250",
      "tree": "3e160010319f6c4eb30770d07d6fb089955f5704",
      "parents": [
        "6efd6e83092cd4a7532270bc843de90bb93f6683"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "message": "dm thin: prepare to support discard\n\nThis patch contains the ground work needed for dm-thin to support discard.\n\n  - Adds endio function that replaces shared_read_endio.\n\n  - Introduce an explicit \u0027quiesced\u0027 flag into the new_mapping structure.\n    Before, this was implicitly indicated by m-\u003elist being empty.\n\n  - The map_info-\u003eptr remains constant for the duration of a bio\u0027s trip\n    through the thin target.  Make it easier to reason about it.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6efd6e83092cd4a7532270bc843de90bb93f6683",
      "tree": "129b9de5d03a11f0bf02feb3743a10e4fe8561d5",
      "parents": [
        "2dd9c257fbc243aa76ee6db0bb8371f9f74fad2d"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "message": "dm thin: use dm_target_offset\n\nUse dm_target_offset wrapper instead of referencing the awkward ti-\u003ebegin\nexplicitly.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "2dd9c257fbc243aa76ee6db0bb8371f9f74fad2d",
      "tree": "51c82de6e41b4f53f9d41dfe1211c4feba55dc6d",
      "parents": [
        "c4a69ecdb463a901b4645230613961e134e897cd"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "message": "dm thin: support read only external snapshot origins\n\nSupport the use of an external _read only_ device as an origin for a thin\ndevice.\n\nAny read to an unprovisioned area of the thin device will be passed\nthrough to the origin.  Writes trigger allocation of new blocks as\nusual.\n\nOne possible use case for this would be VM hosts that want to run\nguests on thinly-provisioned volumes but have the base image on another\ndevice (possibly shared between many VMs).\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c4a69ecdb463a901b4645230613961e134e897cd",
      "tree": "c53e0a569f3d390ea2a97f964225d5383c6401ec",
      "parents": [
        "71fd5ae25d88841c08d5bbea90c0f0a12ca05509"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "message": "dm thin: relax hard limit on the maximum size of a metadata device\n\nThe thin metadata format can only make use of a device that is \u003c\u003d\nTHIN_METADATA_MAX_SECTORS (currently 15.9375 GB).  Therefore, there is no\npractical benefit to using a larger device.\n\nHowever, it may be that other factors impose a certain granularity for\nthe space that is allocated to a device (E.g. lvm2 can impose a coarse\ngranularity through the use of large, \u003e\u003d 1 GB, physical extents).\n\nRather than reject a larger metadata device, during thin-pool device\nconstruction, switch to allowing it but issue a warning if a device\nlarger than THIN_METADATA_MAX_SECTORS_WARNING (16 GB) is\nprovided.  Any space over 15.9375 GB will not be used.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "71fd5ae25d88841c08d5bbea90c0f0a12ca05509",
      "tree": "763ec9657bd25e4d42f1f6774faa65166364eede",
      "parents": [
        "905e51b39a5558706a6ed883fe104de3d417050b"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:27 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:27 2012 +0100"
      },
      "message": "dm persistent data: remove space map ref_count entries if redundant\n\nSave space by removing entries from the space map ref_count tree if\nthey\u0027re no longer needed.\n\nRef counts are stored in two places: a bitmap if the ref_count is\nbelow 3, or a btree of uint32_t if 3 or above.\n\nWhen a ref_count that was above 3 drops below we can remove it from\nthe tree and save some metadata space.  This removal was commented out\nbefore because I was unsure why this was causing under-populated btree\nnodes.  Earlier patches have fixed this issue.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "905e51b39a5558706a6ed883fe104de3d417050b",
      "tree": "d8e1d9fcdba66942333f099618e6acc5be238538",
      "parents": [
        "31998ef19385c944600d9a981b96252f98204bee"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:27 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:27 2012 +0100"
      },
      "message": "dm thin: commit outstanding data every second\n\nCommit unwritten data every second to prevent too much building up.\n\nReleased blocks don\u0027t become available until after the next commit\n(for crash resilience).  Prior to this patch commits were only\ntriggered by a message to the target or a REQ_{FLUSH,FUA} bio.  This\nallowed far too big a position to build up.\n\nThe interval is hard-coded to 1 second.  This is a sensible setting.\nI\u0027m not making this user configurable, since there isn\u0027t much to be\ngained by tweaking this - and a lot lost by setting it far too high.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "31998ef19385c944600d9a981b96252f98204bee",
      "tree": "ab757b8d6e3d349cf42827354e594687dcf6c5c8",
      "parents": [
        "0447568fc51e0268e201f7086d2450cf986e0411"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Wed Mar 28 18:41:26 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:26 2012 +0100"
      },
      "message": "dm: reject trailing characters in sccanf input\n\nDevice mapper uses sscanf to convert arguments to numbers. The problem is that\nthe way we use it ignores additional unmatched characters in the scanned string.\n\nFor example, this `if (sscanf(string, \"%d\", \u0026number) \u003d\u003d 1)\u0027 will match a number,\nbut also it will match number with some garbage appended, like \"123abc\".\n\nAs a result, device mapper accepts garbage after some numbers. For example\nthe command `dmsetup create vg1-new --table \"0 16384 linear 254:1bla 34816bla\"\u0027\nwill pass without an error.\n\nThis patch fixes all sscanf uses in device mapper. It appends \"%c\" with\na pointer to a dummy character variable to every sscanf statement.\n\nThe construct `if (sscanf(string, \"%d%c\", \u0026number, \u0026dummy) \u003d\u003d 1)\u0027 succeeds\nonly if string is a null-terminated number (optionally preceded by some\nwhitespace characters). If there is some character appended after the number,\nsscanf matches \"%c\", writes the character to the dummy variable and returns 2.\nWe check the return value for 1 and consequently reject numbers with some\ngarbage appended.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "0447568fc51e0268e201f7086d2450cf986e0411",
      "tree": "879a6e4ae0b156f05487ac2eb058920e83a0285e",
      "parents": [
        "fef838cc1ac34e599c74888274506d76767f3098"
      ],
      "author": {
        "name": "Jonathan E Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Wed Mar 28 18:41:26 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:26 2012 +0100"
      },
      "message": "dm raid: handle failed devices during start up\n\nThe dm-raid code currently fails to create a RAID array if any of the\nsuperblocks cannot be read.  This was an oversight as there is already\ncode to handle this case if the values (\u0027- -\u0027) were provided for the\nfailed array position.\n\nWith this patch, if a superblock cannot be read, the array position\u0027s\nfields are initialized as though \u0027- -\u0027 was set in the table.  That is,\nthe device is failed and the position should not be used, but if there\nis sufficient redundancy, the array should still be activated.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fef838cc1ac34e599c74888274506d76767f3098",
      "tree": "197179f2408018f66f5ca60b1c48bc4bea458072",
      "parents": [
        "a3aefb395e4f321c8b1314c88f1123624adcf743"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:25 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:25 2012 +0100"
      },
      "message": "dm thin metadata: pass correct space map to dm_sm_root_size\n\nFix a harmless typo.\n\nThe root is a chunk of data that gets written to the superblock.  This\ndata is used to recreate the space map when opening a metadata area.\nWe have two space maps; one tracking space on the metadata device and\none of the data device.  Both of these use the same format for their\nroot, so this typo was harmless.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a3aefb395e4f321c8b1314c88f1123624adcf743",
      "tree": "cedb3dbc643009cdba3c927b499e32e3247f7e5e",
      "parents": [
        "466891f9959b500e037836737c064a72f2bbe8cf"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:25 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:25 2012 +0100"
      },
      "message": "dm persistent data: remove redundant value_size arg from value_ptr\n\nNow that the value_size is held within every node of the btrees we can\nremove this argument from value_ptr().\n\nFor the last few months a BUG_ON has been checking this argument is\nthe same as that held in the node.  No issues were reported.  So this\nis a safe change.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "466891f9959b500e037836737c064a72f2bbe8cf",
      "tree": "d50448abe03d595fb5f00671ff7aec9a35e3cdb0",
      "parents": [
        "4d7b38b7d944a79da3793b6c92d38682f3905ac9"
      ],
      "author": {
        "name": "Jun\u0027ichi Nomura",
        "email": "j-nomura@ce.jp.nec.com",
        "time": "Wed Mar 28 18:41:25 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:25 2012 +0100"
      },
      "message": "dm mpath: detect invalid map_context\n\nThe map_context pointer should always be set. However, we have reports\nthat upon requeuing it is not set correctly.  So add set and clear\nfunctions with a BUG_ON() to track the issue properly.\n\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: Mike Snitzer \u003csnitzer@redhat.com\u003e\nAcked-by: Hannes Reinecke \u003chare@suse.de\u003e\nTested-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nAcked-by: Dave Wysochanski \u003cdwysocha@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4d7b38b7d944a79da3793b6c92d38682f3905ac9",
      "tree": "88f187c760c0dfd3cb8d7957a635254b3fcabd36",
      "parents": [
        "574ce07eb0014069f1da763c219bb30ea4c266ec"
      ],
      "author": {
        "name": "Hannes Reinecke",
        "email": "hare@suse.de",
        "time": "Wed Mar 28 18:41:25 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:25 2012 +0100"
      },
      "message": "dm: clear bi_end_io on remapping failure\n\nAs a precaution, set bi_end_io to NULL when failing to remap.\n\nSigned-off-by: Hannes Reinecke \u003chare@suse.de\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "574ce07eb0014069f1da763c219bb30ea4c266ec",
      "tree": "f5f5543a30f2e2937cfd96dea28ae17f4b0c9544",
      "parents": [
        "fe878f34df89ad4af758f40bbec829807dc93a00"
      ],
      "author": {
        "name": "Hannes Reinecke",
        "email": "hare@suse.de",
        "time": "Wed Mar 28 18:41:24 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:24 2012 +0100"
      },
      "message": "dm table: simplify call to free_devices\n\nfree_devices in dm_table.c already uses list_for_each(), so we don\u0027t\nneed to check if the list is empty.\n\nSigned-off-by: Hannes Reinecke \u003chare@suse.de\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fe878f34df89ad4af758f40bbec829807dc93a00",
      "tree": "eaa377c640fd595391491725ab477f29062374b1",
      "parents": [
        "035220b33d6865d81d5433600def53373cca7127"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:24 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:24 2012 +0100"
      },
      "message": "dm thin: correct comments\n\nRemove documentation for unimplemented \u0027trim\u0027 message.\n\nI\u0027d planned a \u0027trim\u0027 target message for shrinking thin devices, but\nthis is better handled via the discard ioctl.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "035220b33d6865d81d5433600def53373cca7127",
      "tree": "9f72ff60d07e171b79f996da0c463052201ef2fe",
      "parents": [
        "e0b215da8fde99b6a9d82ee4c3600ec223cc7959"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:24 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:24 2012 +0100"
      },
      "message": "dm raid: no longer experimental\n\nThe dm raid module (using md) is becoming the preferred way of creating long-lived\nmirrors through userspace LVM so remove the EXPERIMENTAL tag.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "e0b215da8fde99b6a9d82ee4c3600ec223cc7959",
      "tree": "60a6d7fd27dddaf28a2ce42cc5ec444db0a5c6b5",
      "parents": [
        "854ecaad80223d3c3e32da3ca0ca66cd4a695085"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:24 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:24 2012 +0100"
      },
      "message": "dm uevent: no longer experimental\n\nDrop EXPERIMENTAL tag from dm-uevent.\n\nIt\u0027s not changed for a while and some userspace tools are relying upon it.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b0988900bae9ecf968a8a8d086a9eec671a9517a",
      "tree": "9dd34ec6f4563b78ac454f3691757dece46c1926",
      "parents": [
        "6f94a4c45a6f744383f9f695dde019998db3df55"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:23 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:23 2012 +0100"
      },
      "message": "dm persistent data: fix btree rebalancing after remove\n\nWhen we remove an entry from a node we sometimes rebalance with it\u0027s\ntwo neighbours.  This wasn\u0027t being done correctly; in some cases\nentries have to move all the way from the right neighbour to the left\nneighbour, or vice versa.  This patch pretty much re-writes the\nbalancing code to fix it.\n\nThis code is barely used currently; only when you delete a thin\ndevice, and then only if you have hundreds of them in the same pool.\nOnce we have discard support, which removes mappings, this will be used\nmuch more heavily.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6f94a4c45a6f744383f9f695dde019998db3df55",
      "tree": "7e4982a066935a2434780b5e34fb24fb15e533f0",
      "parents": [
        "72c6e7afc43e19f68a31dea204fc366624d6eee9"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:23 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:23 2012 +0100"
      },
      "message": "dm thin: fix stacked bi_next usage\n\nAvoid using the bi_next field for the holder of a cell when deferring\nbios because a stacked device below might change it.  Store the\nholder in a new field in struct cell instead.\n\nWhen a cell is created, the bio that triggered creation (the holder) was\nadded to the same bio list as subsequent bios.  In some cases we pass\nthis holder bio directly to devices underneath.  If those devices use\nthe bi_next field there will be trouble...\n\nThis also simplifies some code that had to work out which bio was the\nholder.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "72c6e7afc43e19f68a31dea204fc366624d6eee9",
      "tree": "888dfad9bcbcff78cf707e63b3c4389b589b8c4d",
      "parents": [
        "aeb2deae2660a1773c83d3c6e9e6575daa3855d6"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Wed Mar 28 18:41:22 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:22 2012 +0100"
      },
      "message": "dm crypt: add missing error handling\n\nAlways set io-\u003eerror to -EIO when an error is detected in dm-crypt.\n\nThere were cases where an error code would be set only if we finish\nprocessing the last sector. If there were other encryption operations in\nflight, the error would be ignored and bio would be returned with\nsuccess as if no error happened.\n\nThis bug is present in kcryptd_crypt_write_convert, kcryptd_crypt_read_convert\nand kcryptd_async_done.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nCc: stable@kernel.org\nReviewed-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "aeb2deae2660a1773c83d3c6e9e6575daa3855d6",
      "tree": "7bd2b85fa918285dbc6e857993fb3c20ec108554",
      "parents": [
        "aadbe266f2f89ccc68b52f4effc7b3a8b29521ef"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Wed Mar 28 18:41:22 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:22 2012 +0100"
      },
      "message": "dm crypt: fix mempool deadlock\n\nThis patch fixes a possible deadlock in dm-crypt\u0027s mempool use.\n\nCurrently, dm-crypt reserves a mempool of MIN_BIO_PAGES reserved pages.\nIt allocates first MIN_BIO_PAGES with non-failing allocation (the allocation\ncannot fail and waits until the mempool is refilled). Further pages are\nallocated with different gfp flags that allow failing.\n\nBecause allocations may be done in parallel, this code can deadlock. Example:\nThere are two processes, each tries to allocate MIN_BIO_PAGES and the processes\nrun simultaneously.\nIt may end up in a situation where each process allocates (MIN_BIO_PAGES / 2)\npages. The mempool is exhausted. Each process waits for more pages to be freed\nto the mempool, which never happens.\n\nTo avoid this deadlock scenario, this patch changes the code so that only\nthe first page is allocated with non-failing gfp mask. Allocation of further\npages may fail.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "aadbe266f2f89ccc68b52f4effc7b3a8b29521ef",
      "tree": "94215da325017418a1420cebc7922ebfbebcfc69",
      "parents": [
        "437538267b672f9320833907f1b5acbb2605f4be"
      ],
      "author": {
        "name": "Andrei Warkentin",
        "email": "andrey.warkentin@gmail.com",
        "time": "Wed Mar 28 18:41:22 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:22 2012 +0100"
      },
      "message": "dm exception store: fix init error path\n\nCall the correct exit function on failure in dm_exception_store_init.\n\nSigned-off-by: Andrei Warkentin \u003candrey.warkentin@gmail.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "267d7b23dd62f6ec55e0fba777e456495c308fc7",
      "tree": "5c9fe0f07d5b87029b9c07eb003596c05d161a8f",
      "parents": [
        "28f23d1f3b6a6078312b6e9585e583cc7326fe22",
        "ecb178bb2b154a40cfae9fa4c42e62ccfa81ac6b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 22 12:29:50 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 22 12:29:50 2012 -0700"
      },
      "message": "Merge tag \u0027md-3.4\u0027 of git://neil.brown.name/md\n\nPull md updates for 3.4 from Neil Brown:\n \"Mostly tidying up code in preparation for some bigger changes next\n  time.\n\n  A few bug fixes tagged for -stable.\n\n  Main functionality change is that some RAID10 arrays can now grow to\n  use extra space that may have been made available on the individual\n  devices.\"\n\nFixed up trivial conflicts with the k[un]map_atomic() cleanups in\ndrivers/md/bitmap.c.\n\n* tag \u0027md-3.4\u0027 of git://neil.brown.name/md: (22 commits)\n  md: Add judgement bb-\u003eunacked_exist in function md_ack_all_badblocks().\n  md: fix clearing of the \u0027changed\u0027 flags for the bad blocks list.\n  md/bitmap: discard CHUNK_BLOCK_SHIFT macro\n  md/bitmap: remove unnecessary indirection when allocating.\n  md/bitmap: remove some pointless locking.\n  md/bitmap: change a \u0027goto\u0027 to a normal \u0027if\u0027 construct.\n  md/bitmap: move printing of bitmap status to bitmap.c\n  md/bitmap: remove some unused noise from bitmap.h\n  md/raid10 - support resizing some RAID10 arrays.\n  md/raid1: handle merge_bvec_fn in member devices.\n  md/raid10: handle merge_bvec_fn in member devices.\n  md: add proper merge_bvec handling to RAID0 and Linear.\n  md: tidy up rdev_for_each usage.\n  md/raid1,raid10: avoid deadlock during resync/recovery.\n  md/bitmap: ensure to load bitmap when creating via sysfs.\n  md: don\u0027t set md arrays to readonly on shutdown.\n  md: allow re-add to failed arrays.\n  md/raid5: use atomic_dec_return() instead of atomic_dec() and atomic_read().\n  md: Use existed macros instead of numbers\n  md/raid5: removed unused \u0027added_devices\u0027 variable.\n  ...\n"
    },
    {
      "commit": "9f3938346a5c1fa504647670edb5fea5756cfb00",
      "tree": "7cf6d24d6b076c8db8571494984924cac03703a2",
      "parents": [
        "69a7aebcf019ab3ff5764525ad6858fbe23bb86d",
        "317b6e128247f75976b0fc2b9fd8d2c20ef13b3a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 09:40:26 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 09:40:26 2012 -0700"
      },
      "message": "Merge branch \u0027kmap_atomic\u0027 of git://github.com/congwang/linux\n\nPull kmap_atomic cleanup from Cong Wang.\n\nIt\u0027s been in -next for a long time, and it gets rid of the (no longer\nused) second argument to k[un]map_atomic().\n\nFix up a few trivial conflicts in various drivers, and do an \"evil\nmerge\" to catch some new uses that have come in since Cong\u0027s tree.\n\n* \u0027kmap_atomic\u0027 of git://github.com/congwang/linux: (59 commits)\n  feature-removal-schedule.txt: schedule the deprecated form of kmap_atomic() for removal\n  highmem: kill all __kmap_atomic() [swarren@nvidia.com: highmem: Fix ARM build break due to __kmap_atomic rename]\n  drbd: remove the second argument of k[un]map_atomic()\n  zcache: remove the second argument of k[un]map_atomic()\n  gma500: remove the second argument of k[un]map_atomic()\n  dm: remove the second argument of k[un]map_atomic()\n  tomoyo: remove the second argument of k[un]map_atomic()\n  sunrpc: remove the second argument of k[un]map_atomic()\n  rds: remove the second argument of k[un]map_atomic()\n  net: remove the second argument of k[un]map_atomic()\n  mm: remove the second argument of k[un]map_atomic()\n  lib: remove the second argument of k[un]map_atomic()\n  power: remove the second argument of k[un]map_atomic()\n  kdb: remove the second argument of k[un]map_atomic()\n  udf: remove the second argument of k[un]map_atomic()\n  ubifs: remove the second argument of k[un]map_atomic()\n  squashfs: remove the second argument of k[un]map_atomic()\n  reiserfs: remove the second argument of k[un]map_atomic()\n  ocfs2: remove the second argument of k[un]map_atomic()\n  ntfs: remove the second argument of k[un]map_atomic()\n  ...\n"
    },
    {
      "commit": "69a7aebcf019ab3ff5764525ad6858fbe23bb86d",
      "tree": "7211df5704b743a7667159748c670a9744164482",
      "parents": [
        "d464c92b5234227c1698862a1906827e2e398ae0",
        "f1f996b66cc3908a8f5ffccc2ff41840e92f3b10"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 20 21:12:50 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 20 21:12:50 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\nPull trivial tree from Jiri Kosina:\n \"It\u0027s indeed trivial -- mostly documentation updates and a bunch of\n  typo fixes from Masanari.\n\n  There are also several linux/version.h include removals from Jesper.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (101 commits)\n  kcore: fix spelling in read_kcore() comment\n  constify struct pci_dev * in obvious cases\n  Revert \"char: Fix typo in viotape.c\"\n  init: fix wording error in mm_init comment\n  usb: gadget: Kconfig: fix typo for \u0027different\u0027\n  Revert \"power, max8998: Include linux/module.h just once in drivers/power/max8998_charger.c\"\n  writeback: fix fn name in writeback_inodes_sb_nr_if_idle() comment header\n  writeback: fix typo in the writeback_control comment\n  Documentation: Fix multiple typo in Documentation\n  tpm_tis: fix tis_lock with respect to RCU\n  Revert \"media: Fix typo in mixer_drv.c and hdmi_drv.c\"\n  Doc: Update numastat.txt\n  qla4xxx: Add missing spaces to error messages\n  compiler.h: Fix typo\n  security: struct security_operations kerneldoc fix\n  Documentation: broken URL in libata.tmpl\n  Documentation: broken URL in filesystems.tmpl\n  mtd: simplify return logic in do_map_probe()\n  mm: fix comment typo of truncate_inode_pages_range\n  power: bq27x00: Fix typos in comment\n  ...\n"
    },
    {
      "commit": "c2e022cb654fa6595238dc52311a85e6444da1f7",
      "tree": "f3dba0008bb940e3b8c6fcd81b0f29004de06c1c",
      "parents": [
        "c58e0377d61e209600def7d4d9ae535ea94bc210"
      ],
      "author": {
        "name": "Cong Wang",
        "email": "amwang@redhat.com",
        "time": "Mon Nov 28 13:26:02 2011 +0800"
      },
      "committer": {
        "name": "Cong Wang",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Tue Mar 20 21:48:28 2012 +0800"
      },
      "message": "dm: remove the second argument of k[un]map_atomic()\n\nAcked-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Cong Wang \u003camwang@redhat.com\u003e\n"
    },
    {
      "commit": "b2f46e6882564897f6ea3ad904f0a65dc1c6cb3b",
      "tree": "e7c664de2956945c0c37b4895b134253196d006a",
      "parents": [
        "2a156d094d590e1cb946d1c353f1c1a89013f822"
      ],
      "author": {
        "name": "Cong Wang",
        "email": "amwang@redhat.com",
        "time": "Mon Nov 28 13:25:44 2011 +0800"
      },
      "committer": {
        "name": "Cong Wang",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Tue Mar 20 21:48:18 2012 +0800"
      },
      "message": "md: remove the second argument of k[un]map_atomic()\n\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Cong Wang \u003camwang@redhat.com\u003e\n"
    },
    {
      "commit": "ecb178bb2b154a40cfae9fa4c42e62ccfa81ac6b",
      "tree": "a3a6ff71d28069f6eef78a4f24f7f9c385a086a7",
      "parents": [
        "d0962936bff659d20522555b517582a2715fd23f"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Mon Mar 19 12:46:42 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:42 2012 +1100"
      },
      "message": "md: Add judgement bb-\u003eunacked_exist in function md_ack_all_badblocks().\n\nIf there are no unacked bad blocks, then there is no point searching\nfor them to acknowledge them.\n\n\nSigned-off-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d0962936bff659d20522555b517582a2715fd23f",
      "tree": "dc9654b2e2c7b7db2b8f2a14f829d5f807c7342e",
      "parents": [
        "61a0d80ce4ab5b4fb9ecb38f1fb19654778b71ed"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:41 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:41 2012 +1100"
      },
      "message": "md: fix clearing of the \u0027changed\u0027 flags for the bad blocks list.\n\nIn super_1_sync (the first hunk) we need to clear \u0027changed\u0027 before\nchecking read_seqretry(), otherwise we might race with other code\nadding a bad block and so won\u0027t retry later.\n\nIn md_update_sb (the second hunk), in the case where there is no\nmetadata (neither persistent nor external), we treat any bad blocks as\nan error.  However we need to clear the \u0027changed\u0027 flag before calling\nmd_ack_all_badblocks, else it won\u0027t do anything.\n\nThis patch is suitable for -stable release 3.0 and later.\n\nCc: stable@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "61a0d80ce4ab5b4fb9ecb38f1fb19654778b71ed",
      "tree": "21631162d46575db6645636d1c18b8797247d0c9",
      "parents": [
        "792a1d4bbf960000f066358f0a8c6e769c8c72bc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:41 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:41 2012 +1100"
      },
      "message": "md/bitmap: discard CHUNK_BLOCK_SHIFT macro\n\nBe redefining -\u003echunkshift as the shift from sectors to chunks rather\nthan bytes to chunks, we can just use \"bitmap-\u003echunkshift\" which is\nshorter than the macro call, and less indirect.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "792a1d4bbf960000f066358f0a8c6e769c8c72bc",
      "tree": "97e9a5c0854551c3fa80e88851ad3317af24ca13",
      "parents": [
        "5a6c824ebb7c9f8dbbc92ffd3528e6366cad1a54"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:41 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:41 2012 +1100"
      },
      "message": "md/bitmap: remove unnecessary indirection when allocating.\n\nThese funcitons don\u0027t add anything useful except possibly the trace\npoints, and I don\u0027t think they are worth the extra indirection.\nSo remove them.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5a6c824ebb7c9f8dbbc92ffd3528e6366cad1a54",
      "tree": "e78d8527ae9e7be05001ed12f1cad01f8719bde0",
      "parents": [
        "278c1ca2f254d0695d2eba79793d20ce785323ea"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:40 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:40 2012 +1100"
      },
      "message": "md/bitmap: remove some pointless locking.\n\nThere is nothing gained by holding a lock while we check if a pointer\nis NULL or not.  If there could be a race, then it could become NULL\nimmediately after the unlock - but there is no race here.\n\nSo just remove the locking.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "278c1ca2f254d0695d2eba79793d20ce785323ea",
      "tree": "42be282251b17c16e030d7083eef4bbeefe60b41",
      "parents": [
        "57148964d946614ffc6621539096ded1e7d896ab"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:40 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:40 2012 +1100"
      },
      "message": "md/bitmap: change a \u0027goto\u0027 to a normal \u0027if\u0027 construct.\n\nThe use of a goto makes the control flow more obscure here.\n\nSo make it a normal:\n  if (x) {\n     Y;\n  }\n\nNo functional change.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "57148964d946614ffc6621539096ded1e7d896ab",
      "tree": "d4bdadf58d740fcdb3c65063a5706cc3902f2b9b",
      "parents": [
        "4ba97dff719b4cbeb7a4f6beddd2feb7404102d8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:40 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:40 2012 +1100"
      },
      "message": "md/bitmap: move printing of bitmap status to bitmap.c\n\nThe part of /proc/mdstat which describes the bitmap should really\nbe generated by code in bitmap.c.  So move it there.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4ba97dff719b4cbeb7a4f6beddd2feb7404102d8",
      "tree": "3d8e2afc4d20405a88fb70e7cd494452944b3a41",
      "parents": [
        "006a09a0ae0a494473a8cd82c8d1d653e37e6663"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:40 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:40 2012 +1100"
      },
      "message": "md/bitmap: remove some unused noise from bitmap.h\n\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": "6b740b8d79252f13bcb7e5d3c1d43157e78a81e7",
      "tree": "4b99f8fb395e7a205a85766d1bd241dce39c4337",
      "parents": [
        "050b66152f87c79e8d66aed0e7996f9336462d5f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:39 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:39 2012 +1100"
      },
      "message": "md/raid1: handle merge_bvec_fn in member devices.\n\nCurrently we don\u0027t honour merge_bvec_fn in member devices so if there\nis one, we force all requests to be single-page at most.\nThis is not ideal.\n\nSo create a raid1 merge_bvec_fn to check that function in children\nas well.\n\nThis introduces a small problem.  There is no locking around calls\nthe -\u003emerge_bvec_fn and subsequent calls to -\u003emake_request.  So a\ndevice added between these could end up getting a request which\nviolates its merge_bvec_fn.\n\nCurrently the best we can do is synchronize_sched().  This will work\nproviding no preemption happens.  If there is is preemption, we just\nhave to hope that new devices are largely consistent with old devices.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "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": "ba13da47ffa202784355561f72160a41350e95cc",
      "tree": "9b60f27ab89e4036df65d0dc3bf52b7420f83a50",
      "parents": [
        "dafb20fa34320a472deb7442f25a0c086e0feb33"
      ],
      "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: add proper merge_bvec handling to RAID0 and Linear.\n\nThese personalities currently set a max request size of one page\nwhen any member device has a merge_bvec_fn because they don\u0027t\nbother to call that function.\n\nThis causes extra works in splitting and combining requests.\n\nSo make the extra effort to call the merge_bvec_fn when it exists\nso that we end up with larger requests out the bottom.\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": "4474ca42e2577563a919fd3ed782e2ec55bf11a2",
      "tree": "db451c8fad37b281ddbf1d00a779257537cc61ff",
      "parents": [
        "c744a65c1e2d59acc54333ce80a5b0702a98010b"
      ],
      "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/bitmap: ensure to load bitmap when creating via sysfs.\n\nWhen commit 69e51b449d383e (md/bitmap:  separate out loading a bitmap...)\ncreated bitmap_load, it missed calling it after bitmap_create when a\nbitmap is created through the sysfs interface.\nSo if a bitmap is added this way, we don\u0027t allocate memory properly\nand can crash.\n\nThis is suitable for any -stable release since 2.6.35.\nCc: stable@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c744a65c1e2d59acc54333ce80a5b0702a98010b",
      "tree": "c76ff42e8f799030636d07c82879cc2bef7798db",
      "parents": [
        "dc10c643e8a8d008fd16dd6706e9e0018eadf8d2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:37 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:37 2012 +1100"
      },
      "message": "md: don\u0027t set md arrays to readonly on shutdown.\n\nIt seems that with recent kernel, writeback can still be happening\nwhile shutdown is happening, and consequently data can be written\nafter the md reboot notifier switches all arrays to read-only.\nThis causes a BUG.\n\nSo don\u0027t switch them to read-only - just mark them clean and\nset \u0027safemode\u0027 to \u00272\u0027 which mean that immediately after any\nwrite the array will be switch back to \u0027clean\u0027.\n\nThis could result in the shutdown happening when array is marked\ndirty, thus forcing a resync on reboot.  However if you reboot\nwithout performing a \"sync\" first, you get to keep both halves.\n\nThis is suitable for any stable kernel (though there might be some\nconflicts with obvious fixes in earlier kernels).\n\nCc: stable@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "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": "41fe75f60bcd4d698daed3e54bb099227358ce58",
      "tree": "bbd15d0143d20c59f87c5e6d2e0afba57252929b",
      "parents": [
        "43437ecd5adc8bd712b7140c8a70e2b4a80a89dd"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Tue Mar 13 11:21:25 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 13 11:21:25 2012 +1100"
      },
      "message": "md/raid5: use atomic_dec_return() instead of atomic_dec() and atomic_read().\n\nSigned-off-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9d4c7d8799c418816342e263479fa010b182183e",
      "tree": "e1450bda6809a36d5bdb666ae0ab88ef1492b580",
      "parents": [
        "547414d19fd72376ff2ecc42aac8d7a051f03d26"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 13 11:21:21 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 13 11:21:21 2012 +1100"
      },
      "message": "md/raid5: removed unused \u0027added_devices\u0027 variable.\n\ncommit 908f4fbd265733 removed the last user of this variable,\nso we should discard it completely.\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": "1e3fa9bd5061778fb5cf4648e4e8321e8cbbb95b",
      "tree": "de51166f0369e17cc2cb20566b61b7b3c873d7fc",
      "parents": [
        "fde7d9049e55ab85a390be7f415d74c9f62dd0f9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 13 11:21:18 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 13 11:21:18 2012 +1100"
      },
      "message": "md/raid5: make sure reshape_position is cleared on error path.\n\nLeaving a valid reshape_position value in place could be confusing.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5d0edf29151bb5ba372784b7e369f42cf23a94eb",
      "tree": "847eee159ac3387fd6ad1c385341d70fc45ea13b",
      "parents": [
        "4f262acfde22b63498b5e4f165e53d3bb4e96400",
        "0ca93de9b789e0eb05e103f0c04de72df13da73a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 08 17:21:51 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 08 17:21:51 2012 -0800"
      },
      "message": "Merge tag \u0027dm-3.3-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-dm\n\nPull device-mapper fixes for 3.3 from Alasdair Kergon\n\nEight small device-mapper bug fixes.\n\n* tag \u0027dm-3.3-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-dm:\n  dm raid: fix flush support\n  dm raid: set MD_CHANGE_DEVS when rebuilding\n  dm thin metadata: decrement counter after removing mapped block\n  dm thin metadata: unlock superblock in init_pmd error path\n  dm thin metadata: remove incorrect close_device on creation error paths\n  dm flakey: fix crash on read when corrupt_bio_byte not set\n  dm io: fix discard support\n  dm ioctl: do not leak argv if target message only contains whitespace\n"
    },
    {
      "commit": "0ca93de9b789e0eb05e103f0c04de72df13da73a",
      "tree": "3a7bd34140d69a9c7bc5eb1874de773511770197",
      "parents": [
        "3aa3b2b2b1edb813dc5342d0108befc39541542d"
      ],
      "author": {
        "name": "Jonathan E Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Wed Mar 07 19:09:48 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 07 19:09:48 2012 +0000"
      },
      "message": "dm raid: fix flush support\n\nFix dm-raid flush support.\n\nBoth md and dm have support for flush, but the dm-raid target\nforgot to set the flag to indicate that flushes should be\npassed on.  (Important for data integrity e.g. with writeback cache\nenabled.)\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "3aa3b2b2b1edb813dc5342d0108befc39541542d",
      "tree": "151000a59d089231fcefbf44539c89ee56436c84",
      "parents": [
        "af63bcb817cf708f53bcae6edc2e3fb7dd7d8051"
      ],
      "author": {
        "name": "Jonathan E Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Wed Mar 07 19:09:47 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 07 19:09:47 2012 +0000"
      },
      "message": "dm raid: set MD_CHANGE_DEVS when rebuilding\n\nThe \u0027rebuild\u0027 parameter is used to rebuild individual devices in an\narray (e.g. resynchronize a RAID1 device or recalculate a parity device\nin higher RAID).  The MD_CHANGE_DEVS flag must be set when this\nparameter is given in order to write out the superblocks and make the\nchange take immediate effect.  The code that handles new devices in\nsuper_load already sets MD_CHANGE_DEVS and \u0027FirstUse\u0027.  (The \u0027FirstUse\u0027\nflag was being set as a special case for rebuilds in\nsuper_init_validation.)\n\nAdd a condition for rebuilds in super_load to take care of both flags\nwithout the special case in \u0027super_init_validation\u0027.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "af63bcb817cf708f53bcae6edc2e3fb7dd7d8051",
      "tree": "9c38899465b9bc3b8ae613b41a70ab0ff02030d1",
      "parents": [
        "4469a5f387fdde956894137751a41473618a4a52"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 07 19:09:44 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 07 19:09:44 2012 +0000"
      },
      "message": "dm thin metadata: decrement counter after removing mapped block\n\nCorrect the number of mapped sectors shown on a thin device\u0027s\nstatus line by decrementing td-\u003emapped_blocks in __remove() each time\na block is removed.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4469a5f387fdde956894137751a41473618a4a52",
      "tree": "f191a4eeabe0af42d8025b15286257f6a4bf9b1a",
      "parents": [
        "1f3db25d8be4ac50b897b39609802183ea68a514"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 07 19:09:43 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 07 19:09:43 2012 +0000"
      },
      "message": "dm thin metadata: unlock superblock in init_pmd error path\n\nIf dm_sm_disk_create() fails the superblock must be unlocked.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "1f3db25d8be4ac50b897b39609802183ea68a514",
      "tree": "b8e140111ba62062d309ae0dec90543f35e28172",
      "parents": [
        "1212268fd9816e3b8801e57b896fceaec71969ad"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Wed Mar 07 19:09:41 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 07 19:09:41 2012 +0000"
      },
      "message": "dm thin metadata: remove incorrect close_device on creation error paths\n\nThe __open_device() error paths in __create_thin() and __create_snap()\nincorrectly call __close_device() even if td was not initialized by\n__open_device().  Remove this.\n\nAlso document __open_device() return values, remove a redundant\ntd-\u003echanged \u003d 1 in __create_thin(), and insert an additional\nsafeguard against creating an already-existing device.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "1212268fd9816e3b8801e57b896fceaec71969ad",
      "tree": "d0172aa71a3454faf2feb0c34e28690a6d027758",
      "parents": [
        "0c535e0d6f463365c29623350dbd91642363c39b"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Wed Mar 07 19:09:39 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 07 19:09:39 2012 +0000"
      },
      "message": "dm flakey: fix crash on read when corrupt_bio_byte not set\n\nThe following BUG is hit on the first read that is submitted to a dm\nflakey test device while the device is \"down\" if the corrupt_bio_byte\nfeature wasn\u0027t requested when the device\u0027s table was loaded.\n\nExample DM table that will hit this BUG:\n0 2097152 flakey 8:0 2048 0 30\n\nThis bug was introduced by commit a3998799fb4df0b0af8271a7d50c4269032397aa\n(dm flakey: add corrupt_bio_byte feature) in v3.1-rc1.\n\nBUG: unable to handle kernel paging request at ffff8801cfce3fff\nIP: [\u003cffffffffa008c233\u003e] corrupt_bio_data+0x6e/0xae [dm_flakey]\nPGD 1606063 PUD 0\nOops: 0002 [#1] SMP\n...\nCall Trace:\n \u003cIRQ\u003e\n [\u003cffffffffa008c2b5\u003e] flakey_end_io+0x42/0x48 [dm_flakey]\n [\u003cffffffffa00dca98\u003e] clone_endio+0x54/0xb6 [dm_mod]\n [\u003cffffffff81130587\u003e] bio_endio+0x2d/0x2f\n [\u003cffffffff811c819a\u003e] req_bio_endio+0x96/0x9f\n [\u003cffffffff811c94b9\u003e] blk_update_request+0x1dc/0x3a9\n [\u003cffffffff812f5ee2\u003e] ? rcu_read_unlock+0x21/0x23\n [\u003cffffffff811c96a6\u003e] blk_update_bidi_request+0x20/0x6e\n [\u003cffffffff811c9713\u003e] blk_end_bidi_request+0x1f/0x5d\n [\u003cffffffff811c978d\u003e] blk_end_request+0x10/0x12\n [\u003cffffffff8128f450\u003e] scsi_io_completion+0x1e5/0x4b1\n [\u003cffffffff812882a9\u003e] scsi_finish_command+0xec/0xf5\n [\u003cffffffff8128f830\u003e] scsi_softirq_done+0xff/0x108\n [\u003cffffffff811ce284\u003e] blk_done_softirq+0x84/0x98\n [\u003cffffffff81048d19\u003e] __do_softirq+0xe3/0x1d5\n [\u003cffffffff8138f83f\u003e] ? _raw_spin_lock+0x62/0x69\n [\u003cffffffff810997cf\u003e] ? handle_irq_event+0x4c/0x61\n [\u003cffffffff8139833c\u003e] call_softirq+0x1c/0x30\n [\u003cffffffff81003b37\u003e] do_softirq+0x4b/0xa3\n [\u003cffffffff81048a39\u003e] irq_exit+0x53/0xca\n [\u003cffffffff81398acd\u003e] do_IRQ+0x9d/0xb4\n [\u003cffffffff81390333\u003e] common_interrupt+0x73/0x73\n...\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@vger.kernel.org # 3.1+\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "0c535e0d6f463365c29623350dbd91642363c39b",
      "tree": "33217f386886b01e5a033ac8c0cf5fb46f5c3464",
      "parents": [
        "902c6a96a7cb9c50d2a8aed1788efad0a5d8f04c"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Wed Mar 07 19:09:37 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 07 19:09:37 2012 +0000"
      },
      "message": "dm io: fix discard support\n\nThis patch fixes a crash by recognising discards in dm_io.\n\nCurrently dm_mirror can send REQ_DISCARD bios if running over a\ndiscard-enabled device and without support in dm_io the system\ncrashes badly.\n\nBUG: unable to handle kernel paging request at 00800000\nIP:  __bio_add_page.part.17+0xf5/0x1e0\n...\n bio_add_page+0x56/0x70\n dispatch_io+0x1cf/0x240 [dm_mod]\n ? km_get_page+0x50/0x50 [dm_mod]\n ? vm_next_page+0x20/0x20 [dm_mod]\n ? mirror_flush+0x130/0x130 [dm_mirror]\n dm_io+0xdc/0x2b0 [dm_mod]\n...\n\nIntroduced in 2.6.38-rc1 by commit 5fc2ffeabb9ee0fc0e71ff16b49f34f0ed3d05b4\n(dm raid1: support discard).\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nCc: stable@kernel.org\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "902c6a96a7cb9c50d2a8aed1788efad0a5d8f04c",
      "tree": "4f6f797bbaf2d5708d3e01269c1019bd9fb205b5",
      "parents": [
        "192cfd58774b4d17b2fe8bdc77d89c2ef4e0591d"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Wed Mar 07 19:09:34 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 07 19:09:34 2012 +0000"
      },
      "message": "dm ioctl: do not leak argv if target message only contains whitespace\n\nIf \u0027argc\u0027 is zero we jump to the \u0027out:\u0027 label, but this leaks the\n(unused) memory that \u0027dm_split_args()\u0027 allocated for \u0027argv\u0027 if the\nstring being split consisted entirely of whitespace.  Jump to the\n\u0027out_argv:\u0027 label instead to free up that memory.\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nCc: stable@kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a2e5f13ce806e79b5a234f9653a2a245424e29fa",
      "tree": "06ec6d22ccfa157195565c1777467a3677d6818b",
      "parents": [
        "3e85fb9cd4f711d70c5d26baa86e438390731eab",
        "7a90484825680e7831856105f5fef654e6c02701"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 05 16:01:25 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 05 16:01:25 2012 -0800"
      },
      "message": "Merge tag \u0027md-3.3-fixes\u0027 of git://neil.brown.name/md\n\nPull md fixes from Neil Brown:\n \"Three fixes for md in 3.3-rc: Two relate to the recently added drive\n  replacement.  One fixes the problem where a read error in RAID10 would\n  sometimes be retried indefinitely.\"\n\n* tag \u0027md-3.3-fixes\u0027 of git://neil.brown.name/md:\n  md/raid10: fix assembling of arrays with replacement devices.\n  md/raid10: fix handling of error on last working device in array.\n  md/raid1: fix buglet in md_raid1_contested.\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": "f53e29fc87b6fb76db0043202ec2c3450caa5ff3",
      "tree": "b1f8705e420775a40ebb2f26132fe27184b82fbb",
      "parents": [
        "db91ff55bdf06736b849afc1b1fce5763bbb8d5d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Feb 13 14:24:05 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Feb 13 14:24:05 2012 +1100"
      },
      "message": "md/raid1: fix buglet in md_raid1_contested.\n\nSince we added \u0027replacement\u0027 capability, RAID1 can have twice\nas many devices as -\u003eraid_disks indicates.\nSo md_raid1_congested needs to check that many possible devices,\nnot just -\u003eraid_disks many.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4d39aa1b998fffd481517c1dd03d83c38e1706f9",
      "tree": "76c4e4cf52b148ae035f71c7c30692b6634cd343",
      "parents": [
        "4a68d54c983514f123e99fc720951a4ee4d84270",
        "db91ff55bdf06736b849afc1b1fce5763bbb8d5d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 08 19:06:30 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 08 19:06:30 2012 -0800"
      },
      "message": "Merge tag \u0027md-3.3-fixes\u0027 of git://neil.brown.name/md\n\nSome simple md-related fixes.\n\n1/ two small fixes to ensure we handle an interrupted resync properly.\n2/ avoid loading the bitmap multiple times in dm-raid\n\n* tag \u0027md-3.3-fixes\u0027 of git://neil.brown.name/md:\n  md: two small fixes to handling interrupt resync.\n  Prevent DM RAID from loading bitmap twice.\n"
    },
    {
      "commit": "db91ff55bdf06736b849afc1b1fce5763bbb8d5d",
      "tree": "ade2010773b721e3d699e75a9348f200e7ad31c4",
      "parents": [
        "34f8ac6d79e5446c6242e4bcb474f152c857c5c6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 07 12:01:51 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 07 12:01:51 2012 +1100"
      },
      "message": "md: two small fixes to handling interrupt resync.\n\n1/ If a resync is aborted we should record how far we got\n (recovery_cp) the last request that we know has completed\n (-\u003ecurr_resync_completed) rather than the last request that was\n submitted (-\u003ecurr_resync).\n\n2/ When a resync aborts we still want to update the metadata with\n any changes, so set MD_CHANGE_DEVS even if we \u0027skip\u0027.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "972c5ae961d6e5103e2b33d935cfa4145fd47140",
      "tree": "350b2a76b979ba8766c09838617df67ff330eca0",
      "parents": [
        "5196d20305d5e30d871111d3a876cf067dd94255",
        "7c7ed8ec337bf5f62cc5287a6eb6b2f1b7504c2f"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Feb 03 23:12:42 2012 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Feb 03 23:13:05 2012 +0100"
      },
      "message": "Merge branch \u0027master\u0027 into for-next\n\nSync with Linus\u0027 tree to be able to apply patch to a newer\ncode (namely drivers/gpu/drm/gma500/psb_intel_lvds.c)\n"
    },
    {
      "commit": "ad075370ba0dd92fdb92989d1019bfc57ea42e1d",
      "tree": "86ec93b0379939b54e8d46c196aab83040738593",
      "parents": [
        "98793265b429a3f0b3f1750e74d67cd4d740d162"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Sun Jan 15 21:12:23 2012 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Feb 03 22:38:12 2012 +0100"
      },
      "message": "dm-bufio.c: there\u0027s no need to include linux/version.h\n\nAs \u0027make versioncheck\u0027 points out, drivers/md/dm-bufio.c has no need to include\nlinux/version.h, so this patch removes the unneeded include.\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nAcked-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "34f8ac6d79e5446c6242e4bcb474f152c857c5c6",
      "tree": "5a0be3b7910428e52603304aa53e8da4476fb4b2",
      "parents": [
        "307729c8bc5b5a41361af8af95906eee7552acb1"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Jan 27 14:53:53 2012 -0600"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jan 31 09:43:41 2012 +1100"
      },
      "message": "Prevent DM RAID from loading bitmap twice.\n\nThe life cycle of a device-mapper target is:\n1) create\n2) resume\n3) suspend\n*) possibly repeat from 2\n4) destroy\n\nThe dm-raid target is unconditionally calling MD\u0027s bitmap_load function upon\nevery resume.  If steps 2 \u0026 3 above are repeated, bitmap_load is called\nmultiple times.  It is only written to be called once; otherwise, it allocates\nnew memory for the bitmap (without freeing the old) and incrementing the number\nof pages it thinks it has without zeroing first.  This ultimately leads to\naccess beyond allocated memory and lost memory.\n\nSimply avoiding the bitmap_load call upon resume is not sufficient.  If the\ntarget was suspended while the initial recovery was only partially complete,\nit needs to be restarted when the target is resumed.  This is why\n\u0027md_wakeup_thread\u0027 is called before issuing the \u0027mddev_resume\u0027.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b3c9dd182ed3bdcdaf0e42625a35924b0497afdc",
      "tree": "ad48ad4d923fee147c736318d0fad35b3755f4f5",
      "parents": [
        "83c2f912b43c3a7babbb6cb7ae2a5276c1ed2a3e",
        "5d381efb3d1f1ef10535a31ca0dd9b22fe1e1922"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 15 12:24:45 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 15 12:24:45 2012 -0800"
      },
      "message": "Merge branch \u0027for-3.3/core\u0027 of git://git.kernel.dk/linux-block\n\n* \u0027for-3.3/core\u0027 of git://git.kernel.dk/linux-block: (37 commits)\n  Revert \"block: recursive merge requests\"\n  block: Stop using macro stubs for the bio data integrity calls\n  blockdev: convert some macros to static inlines\n  fs: remove unneeded plug in mpage_readpages()\n  block: Add BLKROTATIONAL ioctl\n  block: Introduce blk_set_stacking_limits function\n  block: remove WARN_ON_ONCE() in exit_io_context()\n  block: an exiting task should be allowed to create io_context\n  block: ioc_cgroup_changed() needs to be exported\n  block: recursive merge requests\n  block, cfq: fix empty queue crash caused by request merge\n  block, cfq: move icq creation and rq-\u003eelv.icq association to block core\n  block, cfq: restructure io_cq creation path for io_context interface cleanup\n  block, cfq: move io_cq exit/release to blk-ioc.c\n  block, cfq: move icq cache management to block core\n  block, cfq: move io_cq lookup to blk-ioc.c\n  block, cfq: move cfqd-\u003eicq_list to request_queue and add request-\u003eelv.icq\n  block, cfq: reorganize cfq_io_context into generic and cfq specific parts\n  block: remove elevator_queue-\u003eops\n  block: reorder elevator switch sequence\n  ...\n\nFix up conflicts in:\n - block/blk-cgroup.c\n\tSwitch from can_attach_task to can_attach\n - block/cfq-iosched.c\n\tconflict with now removed cic index changes (we now use q-\u003eid instead)\n"
    },
    {
      "commit": "ec8013beddd717d1740cfefb1a9b900deef85462",
      "tree": "7aa28de51cb2f375baf6fe943afd85e75ca7bcb9",
      "parents": [
        "0bfc96cb77224736dfa35c3c555d37b3646ef35e"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Thu Jan 12 16:01:29 2012 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 14 15:07:24 2012 -0800"
      },
      "message": "dm: do not forward ioctls from logical volumes to the underlying device\n\nA logical volume can map to just part of underlying physical volume.\nIn this case, it must be treated like a partition.\n\nBased on a patch from Alasdair G Kergon.\n\nCc: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: dm-devel@redhat.com\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c086ae4ed94f9a1d283318e006813268c2dbf9fc",
      "tree": "dbabbb09ddafcb818f32af038831419702574917",
      "parents": [
        "7b67e751479d50b7f84d1a3cc5216eed5e534b66",
        "307729c8bc5b5a41361af8af95906eee7552acb1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 11 18:51:55 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 11 18:51:55 2012 -0800"
      },
      "message": "Merge tag \u0027md-3.3-fixes\u0027 of git://neil.brown.name/md\n\nTwo bugfixes for md.\n\nOne is a recently introduced regression that affects an unusual\nconfiguration with a guaranteed BUG_ON.  Has been tagged for -stable.\nThe other is minor missing functionality.\n\n* tag \u0027md-3.3-fixes\u0027 of git://neil.brown.name/md:\n  md/raid1: perform bad-block tests for WriteMostly devices too.\n  md: notify the \u0027degraded\u0027 sysfs attribute on failure.\n"
    },
    {
      "commit": "b1bd055d397e09f99dcef9b138ed104ff1812fcb",
      "tree": "e8e1d3d0b6a33859392bcba516933aff256dc4b4",
      "parents": [
        "c98b2cc29af8e84e7364b53e9bb4cc7cfaf62555"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Wed Jan 11 16:27:11 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Jan 11 16:27:11 2012 +0100"
      },
      "message": "block: Introduce blk_set_stacking_limits function\n\nStacking driver queue limits are typically bounded exclusively by the\ncapabilities of the low level devices, not by the stacking driver\nitself.\n\nThis patch introduces blk_set_stacking_limits() which has more liberal\nmetrics than the default queue limits function. This allows us to\ninherit topology parameters from bottom devices without manually\ntweaking the default limits in each driver prior to calling the stacking\nfunction.\n\nSince there is now a clear distinction between stacking and low-level\ndevices, blk_set_default_limits() has been modified to carry the more\nconservative values that we used to manually set in\nblk_queue_make_request().\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "307729c8bc5b5a41361af8af95906eee7552acb1",
      "tree": "9b20fe9c898ee4de85b64a8e41c92123dae0b093",
      "parents": [
        "f2a371c5e74dd5685ab47effa4ac7b23b1fdaae5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 09 01:41:51 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jan 11 08:35:17 2012 +1100"
      },
      "message": "md/raid1: perform bad-block tests for WriteMostly devices too.\n\nWe normally try to avoid reading from write-mostly devices, but when\nwe do we really have to check for bad blocks and be sure not to\ntry reading them.\n\nWith the current code, best_good_sectors might not get set and that\ncauses zero-length read requests to be send down which is very\nconfusing.\n\nThis bug was introduced in commit d2eb35acfdccbe2 and so the patch\nis suitable for 3.1.x and 3.2.x\n\nReported-and-tested-by: Michał Mirosław \u003cmirq-linux@rere.qmqm.pl\u003e\nReported-and-tested-by: Art -kwaak- van Breemen \u003card@telegraafnet.nl\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "f2a371c5e74dd5685ab47effa4ac7b23b1fdaae5",
      "tree": "e1960be50588ef0a4461fa54609df7ebea95eac5",
      "parents": [
        "19d671695e1931ebfd75b2b888778201aefe35ca"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 09 00:46:41 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jan 11 08:35:14 2012 +1100"
      },
      "message": "md: notify the \u0027degraded\u0027 sysfs attribute on failure.\n\nWe currently only \u0027notify\u0027 changes to the \u0027degraded\u0027 attribute\nwhen it decreases, not when it increases.\n\nNotifying on failure is a little awkward as it happen in\ninterrupt context.\nSo instead, notify when we remove the failed device from the array,\nwhich is very soon afterwards.\n\nReported-and-tested-by: Mikhail Balabin \u003cmbalabin@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2943c833222ef87c111ee0c6b7b8519ad2983e99",
      "tree": "0ef8cc4f72a63b325e7ae858ec68822ec4f3c64f",
      "parents": [
        "98793265b429a3f0b3f1750e74d67cd4d740d162",
        "19d671695e1931ebfd75b2b888778201aefe35ca"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 13:28:33 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 13:28:33 2012 -0800"
      },
      "message": "Merge tag \u0027md-3.3\u0027 of git://neil.brown.name/md\n\nmd update for 3.3\n\nBig change is new hot-replacement.\nA slot in an array can hold 2 devices - one that\nwants-replacement and one that is the replacement.\nOnce the replacement is built - either from the\noriginal or (in the case of errors) from elsewhere,\nthe wants-replacement device will be removed.\n\n* tag \u0027md-3.3\u0027 of git://neil.brown.name/md: (36 commits)\n  md/raid1: Mark device want_replacement when we see a write error.\n  md/raid1: If there is a spare and a want_replacement device, start replacement.\n  md/raid1: recognise replacements when assembling arrays.\n  md/raid1: handle activation of replacement device when recovery completes.\n  md/raid1: Allow a failed replacement device to be removed.\n  md/raid1: Allocate spare to store replacement devices and their bios.\n  md/raid1:  Replace use of mddev-\u003eraid_disks with conf-\u003eraid_disks.\n  md/raid10: If there is a spare and a want_replacement device, start replacement.\n  md/raid10: recognise replacements when assembling array.\n  md/raid10: Allow replacement device to be replace old drive.\n  md/raid10: handle recovery of replacement devices.\n  md/raid10:  Handle replacement devices during resync.\n  md/raid10: writes should get directed to replacement as well as original.\n  md/raid10: allow removal of failed replacement devices.\n  md/raid10: preferentially read from replacement device if possible.\n  md/raid10:  change read_balance to return an rdev\n  md/raid10: prepare data structures for handling replacement.\n  md/raid5: Mark device want_replacement when we see a write error.\n  md/raid5: If there is a spare and a want_replacement device, start replacement.\n  md/raid5: recognise replacements when assembling array.\n  ...\n"
    },
    {
      "commit": "ff01bb4832651c6d25ac509a06a10fcbd75c461c",
      "tree": "bbfdebd317db97d346df78293566f36e883b1be9",
      "parents": [
        "94ea4158f1733e3b10cef067d535f504866e0c41"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Sep 16 02:31:11 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:07 2012 -0500"
      },
      "message": "fs: move code out of buffer.c\n\nMove invalidate_bdev, block_sync_page into fs/block_dev.c.  Export\nkill_bdev as well, so brd doesn\u0027t have to open code it.  Reduce\nbuffer_head.h requirement accordingly.\n\nRemoved a rather large comment from invalidate_bdev, as it looked a bit\nobsolete to bother moving.  The small comment replacing it says enough.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "19d671695e1931ebfd75b2b888778201aefe35ca",
      "tree": "b3c54cdb0812632f830453b6a6c9b8b966c9dcc4",
      "parents": [
        "7ef449d1ec3668acbba6af6a500d0c84636b436f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:57 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:57 2011 +1100"
      },
      "message": "md/raid1: Mark device want_replacement when we see a write error.\n\nNow that WantReplacement drives are replaced cleanly, mark a drive\nas want_replacement when we see a write error.  It might get failed soon so\nthe WantReplacement flag is irrelevant, but if the write error is recorded\nin the bad block log, we still want to activate any spare that might\nbe available.\n\nSigned-off-by:  NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7ef449d1ec3668acbba6af6a500d0c84636b436f",
      "tree": "4a9e23c9b88f404e896ba8748bdc7bb2b18ec65c",
      "parents": [
        "c19d57980b38a5bb613a898937a1cf85f422fb9b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:57 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:57 2011 +1100"
      },
      "message": "md/raid1: If there is a spare and a want_replacement device, start replacement.\n\nWhen attempting to add a spare to a RAID1 array, also consider\nadding it as a replacement for a want_replacement device.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c19d57980b38a5bb613a898937a1cf85f422fb9b",
      "tree": "ddc9f7ae53a4cd0464240ec8c49c03d35823a103",
      "parents": [
        "8c7a2c2bcfaf0ee29c74437a4814d1aa780d6a26"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:57 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:57 2011 +1100"
      },
      "message": "md/raid1: recognise replacements when assembling arrays.\n\nIf a Replacement is seen, file it as such.\n\nIf we see two replacements (or two normal devices) for the one slot,\nabort.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8c7a2c2bcfaf0ee29c74437a4814d1aa780d6a26",
      "tree": "74093a74ea43965f04502bc5d71b6976a74c7305",
      "parents": [
        "b014f14c81bc5db4e40e2a4db10998fd79c1c64c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:57 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:57 2011 +1100"
      },
      "message": "md/raid1: handle activation of replacement device when recovery completes.\n\nWhen recovery completes -\u003espare_active is called.\nThis checks if the replacement is ready and if so it fails\nthe original.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b014f14c81bc5db4e40e2a4db10998fd79c1c64c",
      "tree": "78c5499e8af9a3e850ca2f93d215c53d55c40003",
      "parents": [
        "8f19ccb2fd70deb1f278be5e75076074cfddee46"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:56 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:56 2011 +1100"
      },
      "message": "md/raid1: Allow a failed replacement device to be removed.\n\nReplacement devices are stored at a different offset, so look\nthere too.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8f19ccb2fd70deb1f278be5e75076074cfddee46",
      "tree": "59419e814d4d02dfdefaf6f5ef152c3468c890e8",
      "parents": [
        "301946364e0aa67c4cfaec82e94c389993c9f7c6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:56 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:56 2011 +1100"
      },
      "message": "md/raid1: Allocate spare to store replacement devices and their bios.\n\nIn RAID1, a replacement is much like a normal device, so we just\ndouble the size of the relevant arrays and look at all possible\ndevices for reads and writes.\n\nThis means that the array looks like it is now double the size in some\nway - we need to be careful about that.\nIn particular, we checking if the array is still degraded while\ncreating a recovery request we need to only consider the first \u0027half\u0027\n- i.e. the real (non-replacement) devices.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "301946364e0aa67c4cfaec82e94c389993c9f7c6",
      "tree": "fff6390d22ba68f6726700cd4979f0de4c205a6f",
      "parents": [
        "b7044d41b5a09ce9082699f74c8f10e0fe59f704"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:56 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:56 2011 +1100"
      },
      "message": "md/raid1:  Replace use of mddev-\u003eraid_disks with conf-\u003eraid_disks.\n\nIn general mddev-\u003eraid_disks can change unexpectedly while\nconf-\u003eraid_disks will only change in a very controlled way.  So change\nsome uses of one to the other.\n\nThe use of mddev-\u003eraid_disks will not cause actually problems but\nthis way is more consistent and safer in the long term.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "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"
    }
  ],
  "next": "4ca40c2ce099e4f1ce35445994f49836662596c8"
}
