)]}'
{
  "log": [
    {
      "commit": "a5e0d73163a848060ac0c2c054274e84a654986e",
      "tree": "708ab200af3653090d3cad95228fae21aa6c52cd",
      "parents": [
        "6dbe51c251a327e012439c4772097a13df43c5b8",
        "f3378b48705154b9089affb2d2e939622aea68f1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 05 17:22:08 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 05 17:22:08 2013 -0800"
      },
      "message": "Merge tag \u0027md-3.9\u0027 of git://neil.brown.name/md\n\nPull md updates from NeilBrown:\n \"Mostly little bugfixes.\n\n  Only \"feature\" is a new RAID10 layout which slightly improves the\n  number of sets of devices that can concurrently fail, without data\n  loss.\"\n\n* tag \u0027md-3.9\u0027 of git://neil.brown.name/md:\n  md: expedite metadata update when switching  read-auto -\u003e active\n  md: remove CONFIG_MULTICORE_RAID456\n  md/raid1,raid10: fix deadlock with freeze_array()\n  md/raid0: improve error message when converting RAID4-with-spares to RAID0\n  md: raid0: fix error return from create_stripe_zones.\n  md: fix two bugs when attempting to resize RAID0 array.\n  DM RAID: Add support for MD\u0027s RAID10 \"far\" and \"offset\" algorithms\n  MD RAID10: Improve redundancy for \u0027far\u0027 and \u0027offset\u0027 algorithms (part 2)\n  MD RAID10: Improve redundancy for \u0027far\u0027 and \u0027offset\u0027 algorithms (part 1)\n  MD RAID10: Minor non-functional code changes\n  md: raid1,10: Handle REQ_WRITE_SAME flag in write bios\n  md: protect against crash upon fsync on ro array\n"
    },
    {
      "commit": "55a62eef8d1b50ceff3b7bf46851103bdcc7e5b0",
      "tree": "7fb8ce46abe5e6f4a0a2dbcf2d3c848fdbfe4a56",
      "parents": [
        "bd2a49b86d9aae0c505dcc99c0a073f9da2cc889"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:47 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:47 2013 +0000"
      },
      "message": "dm: rename request variables to bios\n\nUse \u0027bio\u0027 in the name of variables and functions that deal with\nbios rather than \u0027request\u0027 to avoid confusion with the normal\nblock layer use of \u0027request\u0027.\n\nNo functional changes.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fd7c092e711ebab55b2688d3859d95dfd0301f73",
      "tree": "3cc99f96f4a2de8e22347feb86b0ecd5dd7200d0",
      "parents": [
        "16245bdc9d3e22d1460341a655c8b5288953bc14"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Mar 01 22:45:44 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:44 2013 +0000"
      },
      "message": "dm: fix truncated status strings\n\nAvoid returning a truncated table or status string instead of setting\nthe DM_BUFFER_FULL_FLAG when the last target of a table fills the\nbuffer.\n\nWhen processing a table or status request, the function retrieve_status\ncalls ti-\u003etype-\u003estatus. If ti-\u003etype-\u003estatus returns non-zero,\nretrieve_status assumes that the buffer overflowed and sets\nDM_BUFFER_FULL_FLAG.\n\nHowever, targets don\u0027t return non-zero values from their status method\non overflow. Most targets returns always zero.\n\nIf a buffer overflow happens in a target that is not the last in the\ntable, it gets noticed during the next iteration of the loop in\nretrieve_status; but if a buffer overflow happens in the last target, it\ngoes unnoticed and erroneously truncated data is returned.\n\nIn the current code, the targets behave in the following way:\n* dm-crypt returns -ENOMEM if there is not enough space to store the\n  key, but it returns 0 on all other overflows.\n* dm-thin returns errors from the status method if a disk error happened.\n  This is incorrect because retrieve_status doesn\u0027t check the error\n  code, it assumes that all non-zero values mean buffer overflow.\n* all the other targets always return 0.\n\nThis patch changes the ti-\u003etype-\u003estatus function to return void (because\nmost targets don\u0027t use the return code). Overflow is detected in\nretrieve_status: if the status method fills up the remaining space\ncompletely, it is assumed that buffer overflow happened.\n\nCc: stable@vger.kernel.org\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fe5d2f4a15967bbe907e7b3e31e49dae7af7cc6b",
      "tree": "480fe9fd2e9cd0884b375351c4db98a9dfb21aac",
      "parents": [
        "9a3152ab024867100f2f50d124b998d05fb1c3f6"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Feb 21 13:28:10 2013 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 26 11:55:36 2013 +1100"
      },
      "message": "DM RAID: Add support for MD\u0027s RAID10 \"far\" and \"offset\" algorithms\n\nDM RAID:  Add support for MD\u0027s RAID10 \"far\" and \"offset\" algorithms\n\nUntil now, dm-raid.c only supported the \"near\" algorthm of MD\u0027s RAID10\nimplementation.  This patch adds support for the \"far\" and \"offset\"\nalgorithms, but only with the improved redundancy that is brought with\nthe introduction of the \u0027use_far_sets\u0027 bit, which shifts copied stripes\naccording to smaller sets vs the entire array.  That is, the 17th bit\nof the \u0027layout\u0027 variable that defines the RAID10 implementation will\nalways be set.   (More information on how the \u0027layout\u0027 variable selects\nthe RAID10 algorithm can be found in the opening comments of\ndrivers/md/raid10.c.)\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "55ebbb59c1c6eb1b040f62b8c4ae0b724de6e55a",
      "tree": "93c97e2afe99e3cc329ec5dcd941f968a4729abb",
      "parents": [
        "5f243b9b46a22e5790dbbc36f574c2417af49a41"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Jan 22 21:42:18 2013 -0600"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jan 24 12:02:36 2013 +1100"
      },
      "message": "DM-RAID: Fix RAID10\u0027s check for sufficient redundancy\n\nBefore attempting to activate a RAID array, it is checked for sufficient\nredundancy.  That is, we make sure that there are not too many failed\ndevices - or devices specified for rebuild - to undermine our ability to\nactivate the array.  The current code performs this check twice - once to\nensure there were not too many devices specified for rebuild by the user\n(\u0027validate_rebuild_devices\u0027) and again after possibly experiencing a failure\nto read the superblock (\u0027analyse_superblocks\u0027).  Neither of these checks are\nsufficient.  The first check is done properly but with insufficient\ninformation about the possible failure state of the devices to make a good\ndetermination if the array can be activated.  The second check is simply\ndone wrong in the case of RAID10 because it doesn\u0027t account for the\nindependence of the stripes (i.e. mirror sets).  The solution is to use the\nproperly written check (\u0027validate_rebuild_devices\u0027), but perform the check\nafter the superblocks have been read and we know which devices have failed.\nThis gives us one check instead of two and performs it in a location where\nit can be done right.\n\nOnly RAID10 was affected and it was affected in the following ways:\n- the code did not properly catch the condition where a user specified\n  a device for rebuild that already had a failed device in the same mirror\n  set.  (This condition would, however, be caught at a deeper level in MD.)\n- the code triggers a false positive and denies activation when devices in\n  independent mirror sets have failed - counting the failures as though they\n  were all in the same set.\n\nThe most likely place this error was introduced (or this patch should have\nbeen included) is in commit 4ec1e369 - first introduced in v3.7-rc1.\nConsequently this fix should also go in v3.7.y, however there is a\nsmall conflict on the .version in raid_target, so I\u0027ll submit a\nseparate patch to -stable.\n\nCc: stable@vger.kernel.org\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7de3ee57da4b717050e79c9313a9bf66ccc72519",
      "tree": "dd9bf250c6d9139528e563167cabdb811c8fd6cb",
      "parents": [
        "ee18026ac69efba804144541171299efd41747d2"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Dec 21 20:23:41 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:41 2012 +0000"
      },
      "message": "dm: remove map_info\n\nThis patch removes map_info from bio-based device mapper targets.\nmap_info is still used for request-based targets.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "3a0f9aaee02857609d79b20c809c02a8b7c39d06",
      "tree": "274ae68dfc2d955bb8f9a771388947e947b359b4",
      "parents": [
        "2aab38502d0e1bf6cf98183769e35a9ff999dcb1"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Dec 21 20:23:33 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:33 2012 +0000"
      },
      "message": "dm raid: round region_size to power of two\n\nIf the user does not supply a bitmap region_size to the dm raid target,\na reasonable size is computed automatically.  If this is not a power of 2,\nthe md code will report an error later.\n\nThis patch catches the problem early and rounds the region_size to the\nnext power of two.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "761becff016b82a6a7a1b2ef224248da5f46bae9",
      "tree": "bf9e1b479b85c659c9f54cb479bed9804484c011",
      "parents": [
        "7386199c471f70526bbcc629f072a5a8effe218f"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Oct 11 13:42:19 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:42:19 2012 +1100"
      },
      "message": "DM RAID: Fix for \"sync\" directive ineffectiveness\n\nThere are two table arguments that can be given to a DM RAID target\nthat control whether the array is forced to (re)synchronize or skip\ninitialization: \"sync\" and \"nosync\".  When \"sync\" is given, we set\nmddev-\u003erecovery_cp to 0 in order to cause the device to resynchronize.\nThis is insufficient if there is a bitmap in use, because the array\nwill simply look at the bitmap and see that there is no recovery\nnecessary.\n\nThe fix is to skip over the loading of the superblocks when \"sync\" is\ngiven, causing new superblocks to be written that will force the array\nto go through initialization (i.e. synchronization).\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7386199c471f70526bbcc629f072a5a8effe218f",
      "tree": "f9a9db7769a86450ccdda52fa64c2ee7f74b709e",
      "parents": [
        "4ec1e369af83f7ecdfbd48a905e44fc9910115ba"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Oct 11 13:40:36 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:40:36 2012 +1100"
      },
      "message": "DM RAID: Fix comparison of index and quantity for \"rebuild\" parameter\n\nDM RAID: Fix comparison of index and quantity for \"rebuild\" parameter\n\nThe \"rebuild\" parameter takes an index argument that starts counting from\nzero.  The conditional used to validate the index was using \u0027\u003e\u0027 rather than\n\u0027\u003e\u003d\u0027, leaving the door open for an index value that would be 1 too large.\n\nReported-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4ec1e369af83f7ecdfbd48a905e44fc9910115ba",
      "tree": "5e7287f870140e041190604ede472ae4d7fa2baf",
      "parents": [
        "eb6491236f283eb6ebc5421fcdb14b86701a7e36"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Oct 11 13:40:24 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:40:24 2012 +1100"
      },
      "message": "DM RAID: Add rebuild capability for RAID10\n\nDM RAID:  Add code to validate replacement slots for RAID10 arrays\n\nRAID10 can handle \u0027copies - 1\u0027 failures for each mirror group.  This code\nensures the user has provided a valid array - one whose devices specified for\nrebuild do not exceed the amount of redundancy available.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "eb6491236f283eb6ebc5421fcdb14b86701a7e36",
      "tree": "eb79232eac585fcf2a2ad15eff108ef873f72d67",
      "parents": [
        "2863b9eb44787adecba4f977d71d7fd876805b1c"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Oct 11 13:40:09 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:40:09 2012 +1100"
      },
      "message": "DM RAID: Move \u0027rebuild\u0027 checking code to its own function\n\nDM RAID:  Move chunk of code to it\u0027s own function\n\nThe code that checks whether device replacements/rebuilds are possible given\na specific RAID type is moved to it\u0027s own function.  It will further expand\nwhen the code to check RAID10 is added.  A separate function makes it easier\nto read.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fcff06c438b60f415af5983efe92811d6aa02ad1",
      "tree": "704f6598b2de60a86774bc5cf152d4f051bd2dc4",
      "parents": [
        "068535f1fef4c90aee23eb7b9b9a71c5b72d7cd0",
        "63f33b8dda88923487004b20fba825486d009e7b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 01 09:02:01 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 01 09:02:01 2012 -0700"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://neil.brown.name/md\n\nPull md updates from NeilBrown.\n\n* \u0027for-next\u0027 of git://neil.brown.name/md:\n  DM RAID: Add support for MD RAID10\n  md/RAID1: Add missing case for attempting to repair known bad blocks.\n  md/raid5: For odirect-write performance, do not set STRIPE_PREREAD_ACTIVE.\n  md/raid1: don\u0027t abort a resync on the first badblock.\n  md: remove duplicated test on -\u003eopeners when calling do_md_stop()\n  raid5: Add R5_ReadNoMerge flag which prevent bio from merging at block layer\n  md/raid1: prevent merging too large request\n  md/raid1: read balance chooses idlest disk for SSD\n  md/raid1: make sequential read detection per disk based\n  MD RAID10: Export md_raid10_congested\n  MD: Move macros from raid1*.h to raid1*.c\n  MD RAID1: rename mirror_info structure\n  MD RAID10: rename mirror_info structure\n  MD RAID10: Fix compiler warning.\n  raid5: add a per-stripe lock\n  raid5: remove unnecessary bitmap write optimization\n  raid5: lockless access raid5 overrided bi_phys_segments\n  raid5: reduce chance release_stripe() taking device_lock\n"
    },
    {
      "commit": "63f33b8dda88923487004b20fba825486d009e7b",
      "tree": "b7873a3155236bdbf4fbe3b0302fb3aac4c8633e",
      "parents": [
        "bb181e2e48f8c85db08c9cb015cbba9618dbf05c"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Jul 31 21:44:26 2012 -0500"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Aug 01 20:41:20 2012 +1000"
      },
      "message": "DM RAID: Add support for MD RAID10\n\nSupport the MD RAID10 personality through dm-raid.c\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1f4e0ff07980820977f45d6a5dbc81d3bb9ce4d3",
      "tree": "5b5a159add010d09ea58ca12fd079b16f05333b8",
      "parents": [
        "e49e582965b3694f07a106adc83ddb44aa4f0890"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:16 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:16 2012 +0100"
      },
      "message": "dm thin: commit before gathering status\n\nCommit outstanding metadata before returning the status for a dm thin\npool so that the numbers reported are as up-to-date as possible.\n\nThe commit is not performed if the device is suspended or if\nthe DM_NOFLUSH_FLAG is supplied by userspace and passed to the target\nthrough a new \u0027status_flags\u0027 parameter in the target\u0027s dm_status_fn.\n\nThe userspace dmsetup tool will support the --noflush flag with the\n\u0027dmsetup status\u0027 and \u0027dmsetup wait\u0027 commands from version 1.02.76\nonwards.\n\nTested-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c039c332f23e794deb6d6f37b9f07ff3b27fb2cf",
      "tree": "2b6bce014f9359e6152c957594aa86f9549f7dab",
      "parents": [
        "f999e8fe70bd0b8faa27ccdac14b5942999c6e78"
      ],
      "author": {
        "name": "Jonathan E Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Jul 27 15:08:04 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:04 2012 +0100"
      },
      "message": "dm raid: move sectors_per_dev calculation\n\nIn preparation for RAID10 inclusion in dm-raid, we move the sectors_per_dev\ncalculation later in the device creation process.  This is because we won\u0027t\nknow up-front how many stripes vs how many mirrors there are which will\nchange the calculation.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f999e8fe70bd0b8faa27ccdac14b5942999c6e78",
      "tree": "13963a8a5187719e11d5bd6271b6259e4d4b4d0a",
      "parents": [
        "a58a935d5a1b2ad267017a68c3a1bca26226cc76"
      ],
      "author": {
        "name": "Jonathan E Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Jul 27 15:08:04 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:04 2012 +0100"
      },
      "message": "dm raid: restructure parse_raid_params\n\nIn preparation for RAID10 addition to dm-raid, we change an \u0027if\u0027 conditional\nto a \u0027switch\u0027 conditional to make it easier to see what is being checked for\neach RAID type.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "542f90381422676544382d4071ba44a2de90a0c1",
      "tree": "0eae6798ab2fdef68a0eb1ea5ac14f3cc3ffb740",
      "parents": [
        "1df05483d758ea43abc375869fbe06be506ba827"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Jul 27 15:08:00 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:00 2012 +0100"
      },
      "message": "dm: support non power of two target max_io_len\n\nRemove the restriction that limits a target\u0027s specified maximum incoming\nI/O size to be a power of 2.\n\nRename this setting from \u0027split_io\u0027 to the less-ambiguous \u0027max_io_len\u0027.\nChange it from sector_t to uint32_t, which is plenty big enough, and\nintroduce a wrapper function dm_set_target_max_io_len() to set it.\nUse sector_div() to process it now that it is not necessarily a power of 2.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c32fb9e7ecee25a5b6a45bf968dfef76f323e185",
      "tree": "5de381a4d0c926c480d0e7244975a81450f8ecce",
      "parents": [
        "81f382f9e0b25ef56b1c0283c900b86b91a5e4c7"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue May 22 13:55:31 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:31 2012 +1000"
      },
      "message": "DM RAID: Use md_error() in place of simply setting Faulty bit\n\nWhen encountering an error while reading the superblock, call md_error.\n\nWe are currently setting the \u0027Faulty\u0027 bit on one of the array devices when an\nerror is encountered while reading the superblock of a dm-raid array.  We should\nbe calling md_error(), as it handles the error more completely.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "81f382f9e0b25ef56b1c0283c900b86b91a5e4c7",
      "tree": "992f754485b3f78503b7e4f68835da4438786c09",
      "parents": [
        "47525e59e40ffb8cbc944c0055e9c4902cd3ee99"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue May 22 13:55:30 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:30 2012 +1000"
      },
      "message": "DM RAID: Record and handle missing devices\n\nMissing dm-raid devices should be recorded in the superblock\n\nWhen specifying the devices that compose a DM RAID array, it is possible to denote\nfailed or missing devices with \u0027-\u0027s.  When this occurs, we must record this in the\nsuperblock.  We do this by checking if the array position\u0027s data device is missing\nand then forcing MD to record the superblock by setting \u0027MD_CHANGE_DEVS\u0027 in\n\u0027raid_resume\u0027.  If we do not cause the superblock to be rewritten by the resume\nfunction, it is possible for a stale superblock to be written by an out-going\nin-active table (during \u0027raid_dtr\u0027).\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "47525e59e40ffb8cbc944c0055e9c4902cd3ee99",
      "tree": "1ca2a32689ee756c4aa542f3b8fe0afee796e2a9",
      "parents": [
        "30b67645faadcdc32072f999796b99bd0a20f2d5"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue May 22 13:55:29 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:29 2012 +1000"
      },
      "message": "DM RAID: Set recovery flags on resume\n\nProperly initialize MD recovery flags when resuming device-mapper devices.\n\nWhen a device-mapper device is suspended, all I/O must stop.  This is done by\ncalling \u0027md_stop_writes\u0027 and \u0027mddev_suspend\u0027.  These calls in-turn manipulate\nthe recovery flags - including setting \u0027MD_RECOVERY_FROZEN\u0027.  The DM device\nmay have been suspended while recovery was not yet complete, so the process\nneeds to pick-up where it left off.  Since \u0027mddev_resume\u0027 does not unset\n\u0027MD_RECOVERY_FROZEN\u0027 and set \u0027MD_RECOVERY_NEEDED\u0027, we must do it ourselves.\n\u0027MD_RECOVERY_NEEDED\u0027 can safely be set in \u0027mddev_resume\u0027, but \u0027MD_RECOVERY_FROZEN\u0027\nmust be set outside of \u0027mddev_resume\u0027 due to how MD handles RAID reshaping.\n(e.g.  It is possible for a user to delay reshaping a RAID5-\u003eRAID6 by purposefully\nsetting \u0027MD_RECOVERY_FROZEN\u0027.  Clearing it in \u0027mddev_resume\u0027 would override the\ndesired behavior.)\n\nBecause \u0027mddev_resume\u0027 already unconditionally calls \u0027md_wakeup_thread(mddev-\u003ethread)\u0027\nthere is no need to make this call from \u0027raid_resume\u0027 since it calls \u0027mddev_resume\u0027.\n\nAlso clean up where  level_store calls mddev_resume() - it current\nduplicates some of the funcitons of that call. - NB\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "545c87957f4d53867b62921625f36df8c4b1bc08",
      "tree": "52dc839ac828f7742efbad83cfbe5f35f11a04d6",
      "parents": [
        "96e67703e71f4b3cc32b747dbb6158ec74d01e19"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:54:30 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:54:30 2012 +1000"
      },
      "message": "md: dm-raid should call helper function to clear rdev.\n\ndm-raid currently open-codes the freeing of some members of\nand rdev.  It is more maintainable to have it call common code\nfrom md.c which does this for all call-sites.\n\nSo remove free_disk_sb to md_rdev_clear, export it, and use it in\ndm-raid.c\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "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": "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": "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": "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": "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": "32aaeffbd4a7457bf2f7448b33b5946ff2a960eb",
      "tree": "faf7ad871d87176423ff9ed1d1ba4d9c688fc23f",
      "parents": [
        "208bca0860406d16398145ddd950036a737c3c9d",
        "67b84999b1a8b1af5625b1eabe92146c5eb42932"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "message": "Merge branch \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux\n\n* \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux: (230 commits)\n  Revert \"tracing: Include module.h in define_trace.h\"\n  irq: don\u0027t put module.h into irq.h for tracking irqgen modules.\n  bluetooth: macroize two small inlines to avoid module.h\n  ip_vs.h: fix implicit use of module_get/module_put from module.h\n  nf_conntrack.h: fix up fallout from implicit moduleparam.h presence\n  include: replace linux/module.h with \"struct module\" wherever possible\n  include: convert various register fcns to macros to avoid include chaining\n  crypto.h: remove unused crypto_tfm_alg_modname() inline\n  uwb.h: fix implicit use of asm/page.h for PAGE_SIZE\n  pm_runtime.h: explicitly requires notifier.h\n  linux/dmaengine.h: fix implicit use of bitmap.h and asm/page.h\n  miscdevice.h: fix up implicit use of lists and types\n  stop_machine.h: fix implicit use of smp.h for smp_processor_id\n  of: fix implicit use of errno.h in include/linux/of.h\n  of_platform.h: delete needless include \u003clinux/module.h\u003e\n  acpi: remove module.h include from platform/aclinux.h\n  miscdevice.h: delete unnecessary inclusion of module.h\n  device_cgroup.h: delete needless include \u003clinux/module.h\u003e\n  net: sch_generic remove redundant use of \u003clinux/module.h\u003e\n  net: inet_timewait_sock doesnt need \u003clinux/module.h\u003e\n  ...\n\nFix up trivial conflicts (other header files, and  removal of the ab3550 mfd driver) in\n - drivers/media/dvb/frontends/dibx000_common.c\n - drivers/media/video/{mt9m111.c,ov6650.c}\n - drivers/mfd/ab3550-core.c\n - include/linux/dmaengine.h\n"
    },
    {
      "commit": "43672a0784707d795556b1f93925da8b8e797d03",
      "tree": "5c92aabd211281300f89fc2e69e9ee7e58bcc449",
      "parents": [
        "2380078cdb7e6d520e33dcf834e0be979d542e48",
        "2e727c3ca1beff05f27b6207a795790f222bf8d8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 02 17:02:37 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 02 17:02:37 2011 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/linux-dm\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/steve/linux-dm:\n  dm: raid fix device status indicator when array initializing\n  dm log userspace: add log device dependency\n  dm log userspace: fix comment hyphens\n  dm: add thin provisioning target\n  dm: add persistent data library\n  dm: add bufio\n  dm: export dm get md\n  dm table: add immutable feature\n  dm table: add always writeable feature\n  dm table: add singleton feature\n  dm kcopyd: add dm_kcopyd_zero to zero an area\n  dm: remove superfluous smp_mb\n  dm: use local printk ratelimit\n  dm table: propagate non rotational flag\n"
    },
    {
      "commit": "056075c76417b112b4924e7b6386fdc6dfc9ac03",
      "tree": "7326cbdb0f54f975b140e548bd4f4d6f4b3486cc",
      "parents": [
        "ec37d321b96621906337c4279c490e1b5893ecae"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Sun Jul 03 13:58:33 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 19:31:18 2011 -0400"
      },
      "message": "md: Add module.h to all files using it implicitly\n\nA pending cleanup will mean that module.h won\u0027t be implicitly\neverywhere anymore.  Make sure the modular drivers in md dir\nare actually calling out for \u003cmodule.h\u003e explicitly in advance.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "2e727c3ca1beff05f27b6207a795790f222bf8d8",
      "tree": "d00c9aeea0173051fe3bbd4398697acab9ab61ca",
      "parents": [
        "5a25f0eb707bbb4a5aaaf19c933605a6dbaf77a5"
      ],
      "author": {
        "name": "Jonathan E Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Mon Oct 31 20:21:26 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:21:26 2011 +0000"
      },
      "message": "dm: raid fix device status indicator when array initializing\n\nWhen devices in a RAID array are not in-sync, they are supposed to be\nreported as such in the status output as an \u0027a\u0027 character, which means\n\"alive, but not in-sync\".  But when the entire array is rebuilt \u0027A\u0027 is\nbeing used, which is incorrect.  This patch corrects this to \u0027a\u0027.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c3ae1f33569e06984f0426a7834ff63251d44d84",
      "tree": "0d7f6f6b49c331e440850cf2e8a7bc0cf220f8bc",
      "parents": [
        "c28cfd60e4ec3f494b73ef7d6c661f5f491cd84f",
        "d890fa2b0586b6177b119643ff66932127d58afa"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 26 21:39:42 2011 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 26 21:39:42 2011 +0200"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md: (34 commits)\n  md: Fix some bugs in recovery_disabled handling.\n  md/raid5: fix bug that could result in reads from a failed device.\n  lib/raid6: Fix filename emitted in generated code\n  md.c: trivial comment fix\n  MD: Allow restarting an interrupted incremental recovery.\n  md: clear In_sync bit on devices added to an active array.\n  md: add proper write-congestion reporting to RAID1 and RAID10.\n  md: rename \"mdk_personality\" to \"md_personality\"\n  md/bitmap remove fault injection options.\n  md/raid5: typedef removal: raid5_conf_t -\u003e struct r5conf\n  md/raid1: typedef removal: conf_t -\u003e struct r1conf\n  md/raid10: typedef removal: conf_t -\u003e struct r10conf\n  md/raid0: typedef removal: raid0_conf_t -\u003e struct r0conf\n  md/multipath: typedef removal: multipath_conf_t -\u003e struct mpconf\n  md/linear: typedef removal: linear_conf_t -\u003e struct linear_conf\n  md/faulty: remove typedef: conf_t -\u003e struct faulty_conf\n  md/linear: remove typedefs: dev_info_t -\u003e struct dev_info\n  md: remove typedefs: mirror_info_t -\u003e struct mirror_info\n  md: remove typedefs: r10bio_t -\u003e struct r10bio and r1bio_t -\u003e struct r1bio\n  md: remove typedefs: mdk_thread_t -\u003e struct md_thread\n  ...\n"
    },
    {
      "commit": "d1688a6d5515f1900af76a963b4bb6d9a6554cfa",
      "tree": "2ed2b1001804b6982697c3785f06580a4e84e31b",
      "parents": [
        "e8096360476689898f038feebf5b352c9ec43a2a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:52 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:52 2011 +1100"
      },
      "message": "md/raid5: typedef removal: raid5_conf_t -\u003e struct r5conf\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fd01b88c75a718020ff77e7f560d33835e9b58de",
      "tree": "c455d5adefd58f3263dcf265bb8ba2024523b106",
      "parents": [
        "3cb03002000f133f9f97269edefd73611eafc873"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:47:53 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:47:53 2011 +1100"
      },
      "message": "md: remove typedefs: mddev_t -\u003e struct mddev\n\nHaving mddev_t and \u0027struct mddev_s\u0027 is ugly and not preferred\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3cb03002000f133f9f97269edefd73611eafc873",
      "tree": "77fdb146666298b33aaeef0c05f082b6f82840fe",
      "parents": [
        "50de8df4abca1b27dbf7b2f81a56451bd8b5a7d8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:45:26 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:45:26 2011 +1100"
      },
      "message": "md: removing typedefs:  mdk_rdev_t -\u003e struct md_rdev\n\nThe typedefs are just annoying. \u0027mdk\u0027 probably refers to \u0027md_k.h\u0027\nwhich used to be an include file that defined this thing.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8232480944d173378082ebb2cac8a3207c08cf31",
      "tree": "d77436773e5c8a2274e1b0db507e5c251f225ecf",
      "parents": [
        "876fbba1db4a377f050a2bb49b474c7527b2995d"
      ],
      "author": {
        "name": "Jonthan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Sun Sep 25 23:26:19 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sun Sep 25 23:26:19 2011 +0100"
      },
      "message": "dm: raid fix write_mostly arg validation\n\nFix off-by-one error in validation of write_mostly.\n\nThe user-supplied value given for the \u0027write_mostly\u0027 argument must be an\nindex starting at 0.  The validation of the supplied argument failed to\ncheck for \u0027N\u0027 (\u0027\u003e\u0027 vs \u0027\u003e\u003d\u0027), which would have caused an access beyond the\nend of the array.\n\nReported-by: Doug Ledford \u003cdledford@redhat.com\u003e\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "327372797c88b24953f454cd51a3734c02697bdd",
      "tree": "e7f7e3dff1415817b31af76d746240d80772b448",
      "parents": [
        "b12d437b73d32203a41fde0d407e91812c866844"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Aug 02 12:32:07 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:07 2011 +0100"
      },
      "message": "dm raid: add md raid1 support\n\nSupport the MD RAID1 personality through dm-raid.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b12d437b73d32203a41fde0d407e91812c866844",
      "tree": "3c7a33f4a45779da4a5edb71678ce7f8ae4169e7",
      "parents": [
        "46bed2b5c16bb7c82e1088d7ae75fb958c8a8c4e"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Aug 02 12:32:07 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:07 2011 +0100"
      },
      "message": "dm raid: support metadata devices\n\nAdd the ability to parse and use metadata devices to dm-raid.  Although\nnot strictly required, without the metadata devices, many features of\nRAID are unavailable.  They are used to store a superblock and bitmap.\n\nThe role, or position in the array, of each device must be recorded in\nits superblock.  This is to help with fault handling, array reshaping,\nand sanity checks.  RAID 4/5/6 devices must be loaded in a specific order:\nin this way, the \u0027array_position\u0027 field helps validate the correctness\nof the mapping when it is loaded.  It can be used during reshaping to\nidentify which devices are added/removed.  Fault handling is impossible\nwithout this field.  For example, when a device fails it is recorded in\nthe superblock.  If this is a RAID1 device and the offending device is\nremoved from the array, there must be a way during subsequent array\nassembly to determine that the failed device was the one removed.  This\nis done by correlating the \u0027array_position\u0027 field and the bit-field\nvariable \u0027failed_devices\u0027.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "46bed2b5c16bb7c82e1088d7ae75fb958c8a8c4e",
      "tree": "bab932a8eec324ca470407ff54097d86a3c0e27f",
      "parents": [
        "c1084561bb85da3630540ebe951749a8cd8fc714"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Aug 02 12:32:07 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:07 2011 +0100"
      },
      "message": "dm raid: add write_mostly parameter\n\nAdd the write_mostly parameter to RAID1 dm-raid tables.\n\nThis allows the user to set the WriteMostly flag on a RAID1 device that\nshould normally be avoided for read I/O.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c1084561bb85da3630540ebe951749a8cd8fc714",
      "tree": "ecdefcf24dd88f4c19a873fa5d26039a0edf03a7",
      "parents": [
        "c0a2fa1ef1057a1e9450d6f055f1cde2ad4f85a2"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Aug 02 12:32:07 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:07 2011 +0100"
      },
      "message": "dm raid: add region_size parameter\n\nAllow the user to specify the region_size.\n\nEnsures that the supplied value meets md\u0027s constraints, viz. the number of\nregions does not exceed 2^21.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "3e8dbb7f3966c80d77272f8b4f430babc99f6595",
      "tree": "00192da87f8e5db890bd5c6dab9c941a905b294e",
      "parents": [
        "2ca4c92f58f9386e080b26f9ccd78c9ca5825a42"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:03 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:03 2011 +0100"
      },
      "message": "dm raid: tidy includes\n\nA dm target only needs to use include/linux dm headers.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "13c87583ea4e867211fc3e7edab750c353c47c95",
      "tree": "93d1a2b20f1033e031eedf86a19ab822b1fbb576",
      "parents": [
        "a2d2b0345a0f30c169b7d08b8cebdd4853fcb0f8"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Aug 02 12:32:03 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:03 2011 +0100"
      },
      "message": "dm raid: cleanup parameter handling\n\nRe-order the parameters so they are handled consistently in the same order\nwhere defined, parsed and output.\n\nOnly include rebuild parameters in the STATUSTYPE_TABLE output if they were\nsupplied in the original table line.\n\nCorrect the parameter count when outputting rebuild: there are two words,\nnot one.\n\nUse case-independent checks for keywords (as in other device-mapper targets).\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "af1db72d8b340f97ad12b60175afdef43e6f0e60",
      "tree": "c6f3d18bda596d136fdf9f7ba9e2a2ed1fdedc3b",
      "parents": [
        "e1dfa0a29737142c32f00a3bac0f609dc85b4a82"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 18 18:25:41 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 18 18:25:41 2011 +1000"
      },
      "message": "md/dm - remove remains of plug_fn callback.\n\nNow that unplugging is done differently, the unplug_fn callback is\nnever called, so it can be completely discarded.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7eaceaccab5f40bbfda044629a6298616aeaed50",
      "tree": "33954d12f63e25a47eb6d86ef3d3d0a5e62bf752",
      "parents": [
        "73c101011926c5832e6e141682180c4debe2cf45"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "message": "block: remove per-queue plugging\n\nCode has been converted over to the new explicit on-stack plugging,\nand delay users have been converted to use the new API for that.\nSo lets kill off the old plugging along with aops-\u003esync_page().\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "9d09e663d5502c46f2d9481c04c1087e1c2da698",
      "tree": "993f10eb7100a6ce8c00c0cff7951d7ffea9488e",
      "parents": [
        "99d03c141b40914b67d63c9d23b8da4386422ed7"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jan 13 20:00:02 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 20:00:02 2011 +0000"
      },
      "message": "dm: raid456 basic support\n\nThis patch is the skeleton for the DM target that will be\nthe bridge from DM to MD (initially RAID456 and later RAID1).  It\nprovides a way to use device-mapper interfaces to the MD RAID456\ndrivers.\n\nAs with all device-mapper targets, the nominal public interfaces are the\nconstructor (CTR) tables and the status outputs (both STATUSTYPE_INFO\nand STATUSTYPE_TABLE).  The CTR table looks like the following:\n\n1: \u003cs\u003e \u003cl\u003e raid \\\n2:\t\u003craid_type\u003e \u003c#raid_params\u003e \u003craid_params\u003e \\\n3:\t\u003c#raid_devs\u003e \u003cmeta_dev1\u003e \u003cdev1\u003e .. \u003cmeta_devN\u003e \u003cdevN\u003e\n\nLine 1 contains the standard first three arguments to any device-mapper\ntarget - the start, length, and target type fields.  The target type in\nthis case is \"raid\".\n\nLine 2 contains the arguments that define the particular raid\ntype/personality/level, the required arguments for that raid type, and\nany optional arguments.  Possible raid types include: raid4, raid5_la,\nraid5_ls, raid5_rs, raid6_zr, raid6_nr, and raid6_nc.  (again, raid1 is\nplanned for the future.)  The list of required and optional parameters\nis the same for all the current raid types.  The required parameters are\npositional, while the optional parameters are given as key/value pairs.\nThe possible parameters are as follows:\n \u003cchunk_size\u003e\t\tChunk size in sectors.\n [[no]sync]\t\tForce/Prevent RAID initialization\n [rebuild \u003cidx\u003e]\tRebuild the drive indicated by the index\n [daemon_sleep \u003cms\u003e]\tTime between bitmap daemon work to clear bits\n [min_recovery_rate \u003ckB/sec/disk\u003e]\tThrottle RAID initialization\n [max_recovery_rate \u003ckB/sec/disk\u003e]\tThrottle RAID initialization\n [max_write_behind \u003cvalue\u003e]\t\tSee \u0027-write-behind\u003d\u0027 (man mdadm)\n [stripe_cache \u003csectors\u003e]\t\tStripe cache size for higher RAIDs\n\nLine 3 contains the list of devices that compose the array in\nmetadata/data device pairs.  If the metadata is stored separately, a \u0027-\u0027\nis given for the metadata device position.  If a drive has failed or is\nmissing at creation time, a \u0027-\u0027 can be given for both the metadata and\ndata drives for a given position.\n\nExamples:\n# RAID4 - 4 data drives, 1 parity\n# No metadata devices specified to hold superblock/bitmap info\n# Chunk size of 1MiB\n# (Lines separated for easy reading)\n0 1960893648 raid \\\n\traid4 1 2048 \\\n\t5 - 8:17 - 8:33 - 8:49 - 8:65 - 8:81\n\n# RAID4 - 4 data drives, 1 parity (no metadata devices)\n# Chunk size of 1MiB, force RAID initialization,\n#\tmin recovery rate at 20 kiB/sec/disk\n0 1960893648 raid \\\n        raid4 4 2048 min_recovery_rate 20 sync\\\n        5 - 8:17 - 8:33 - 8:49 - 8:65 - 8:81\n\nPerforming a \u0027dmsetup table\u0027 should display the CTR table used to\nconstruct the mapping (with possible reordering of optional\nparameters).\n\nPerforming a \u0027dmsetup status\u0027 will yield information on the state and\nhealth of the array.  The output is as follows:\n1: \u003cs\u003e \u003cl\u003e raid \\\n2:\t\u003craid_type\u003e \u003c#devices\u003e \u003c1 health char for each dev\u003e \u003cresync_ratio\u003e\n\nLine 1 is standard DM output.  Line 2 is best shown by example:\n\t0 1960893648 raid raid4 5 AAAAA 2/490221568\nHere we can see the RAID type is raid4, there are 5 devices - all of\nwhich are \u0027A\u0027live, and the array is 2/490221568 complete with recovery.\n\nCc: linux-raid@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    }
  ]
}
