)]}'
{
  "log": [
    {
      "commit": "2c7d46ec192e4f2b350f67a0e185b9bce646cd6b",
      "tree": "2a49c1e99de3442184726be20d03e3a15d80cee0",
      "parents": [
        "6b9656205469269c050963c71fca1998b247a560"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Aug 18 16:16:05 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Aug 18 16:16:05 2010 +1000"
      },
      "message": "md raid-1/10 Fix bio_rw bit manipulations again\n\ncommit 7b6d91daee5cac6402186ff224c3af39d79f4a0e changed the behaviour\nof a few variables in raid1 and raid10 from flags to bit-sets, but\nleft them as type \u0027bool\u0027 so they did not work.\n\nChange them (back) to unsigned long.\n(historical note: see 1ef04fefe2241087d9db7e9615c3f11b516e36cf)\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReported-by: Jiri Slaby \u003cjslaby@suse.cz\u003e and many others\n"
    },
    {
      "commit": "6b9656205469269c050963c71fca1998b247a560",
      "tree": "9d090d2e363d269cdc55549213025d86af8ef70a",
      "parents": [
        "e6ffbcb6cd0ac471223df24ae77eb486c1ee68cc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Aug 18 11:56:59 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Aug 18 12:04:32 2010 +1000"
      },
      "message": "md: provide appropriate return value for spare_active functions.\n\nmd_check_recovery expects -\u003espare_active to return \u0027true\u0027 if any\nspares were activated, but none of them do, so the consequent change\nin \u0027degraded\u0027 is not notified through sysfs.\n\nSo count the number of spares activated, subtract it from \u0027degraded\u0027\njust once, and return it.\n\nReported-by: Adrian Drzewiecki \u003cadriand@vmware.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e6ffbcb6cd0ac471223df24ae77eb486c1ee68cc",
      "tree": "8739230c95a051c8ab95fdbfd90ec2e6ce0bf3c9",
      "parents": [
        "3a3a5ddb7a0f43c3dd0f98673f3d930a456725f8"
      ],
      "author": {
        "name": "Adrian Drzewiecki",
        "email": "adriand@vmware.com",
        "time": "Wed Aug 18 11:49:02 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Aug 18 11:49:02 2010 +1000"
      },
      "message": "md: Notify sysfs when RAID1/5/10 disk is In_sync.\n\nWhen RAID1 is done syncing disks, it\u0027ll update the state\nof synced rdevs to In_sync. But it neglected to notify\nsysfs that the attribute changed. So any programs that\nare waiting for an rdev\u0027s state to change will not be\nwoken.\n\n(raid5/raid10 added by neilb)\n\nSigned-off-by: Adrian Drzewiecki \u003cadriand@vmware.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n\n"
    },
    {
      "commit": "3a3a5ddb7a0f43c3dd0f98673f3d930a456725f8",
      "tree": "fa1e33c011c9f6350ce5118b89deafacbb1e0f2b",
      "parents": [
        "da5cabf80e2433131bf0ed8993abc0f7ea618c73"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 16 18:09:31 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Aug 18 11:39:38 2010 +1000"
      },
      "message": "Update recovery_offset even when external metadata is used.\n\nThe update of -\u003erecovery_offset in sync_sbs is appropriate even then external\nmetadata is in use.  However sync_sbs is only called when native\nmetadata is used.\n\nSo move that update in to the top of md_update_sb (which is the only\ncaller of sync_sbs) before the test on -\u003eexternal.\n\nThis moves the update out of -\u003ewrite_lock protection, but those fields\nonly need -\u003ereconfig_mutex protection which they still have.\n\nAlso move the test on -\u003epersistent up to where -\u003eexternal is set as\nfor metadata update purposes they are the same.\n\nClear MD_CHANGE_DEVS and MD_CHANGE_CLEAN as they can only be confusing\nif -\u003eexternal is set or -\u003epersistent isn\u0027t.\n\nFinally move the update of -\u003eutime down as it is only relevent (like\nthe -\u003eevents update) for native metadata.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReported-by: \"Kwolek, Adam\" \u003cadam.kwolek@intel.com\u003e\n"
    },
    {
      "commit": "959eb4e5592cc0b0b07db0ca30d2b1efd790020f",
      "tree": "564a22942512825ca1f466ae9d18ffe9fd7bf1fb",
      "parents": [
        "7b76ec11fec40203836b488496d2df082d5b2022"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Aug 12 04:14:32 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:32 2010 +0100"
      },
      "message": "dm mpath: support discard\n\nEnable discard support in the DM multipath target.\n\nThis discard support depends on a few discard-specific fixes to the\nblock layer\u0027s request stacking driver methods.\n\nDiscard requests are optional so don\u0027t allow a failed discard to trigger\npath failures.  If there is a real problem with a given path the\nbarriers associated with the discard (either before or after the\ndiscard) will cause path failure.  That said, unconditionally passing\ndiscard failures up the stack is not ideal.  This must be fixed once DM\nhas more information about the nature of the underlying storage failure.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\n"
    },
    {
      "commit": "7b76ec11fec40203836b488496d2df082d5b2022",
      "tree": "8b3c75295945f0533206c699139e55a30bcd426e",
      "parents": [
        "a79245b3e5669dc203fec63644d988c451fe55d5"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Aug 12 04:14:26 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:26 2010 +0100"
      },
      "message": "dm stripe: support discards\n\nThe DM core will submit a discard bio to the stripe target for each\nstripe in a striped DM device.  The stripe target will determine\nstripe-specific portions of the supplied bio to be remapped into\nindividual (at most \u0027num_discard_requests\u0027 extents).  If a given\nstripe-specific discard bio doesn\u0027t touch a particular stripe the bio\nwill be dropped.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a79245b3e5669dc203fec63644d988c451fe55d5",
      "tree": "8814720781708a95ac0bd23bb5232aa5ed9337bd",
      "parents": [
        "c96053b767d494d7c30e2be68097ac9defa9403f"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Aug 12 04:14:24 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:24 2010 +0100"
      },
      "message": "dm: split discard requests on target boundaries\n\nUpdate __clone_and_map_discard to loop across all targets in a DM\ndevice\u0027s table when it processes a discard bio.  If a discard crosses a\ntarget boundary it must be split accordingly.\n\nUpdate __issue_target_requests and __issue_target_request to allow a\ncloned discard bio to have a custom start sector and size.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c96053b767d494d7c30e2be68097ac9defa9403f",
      "tree": "b66f185ffd58538f6107f3acf3af38b8aecd7f8a",
      "parents": [
        "65988525abde0b0a5833c4e20f32967184a5dcf0"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Aug 12 04:14:21 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:21 2010 +0100"
      },
      "message": "dm stripe: optimize sector division\n\nOptimize sector division: If the number of stripes is a power of two,\nwe can do shift and mask instead of division.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "65988525abde0b0a5833c4e20f32967184a5dcf0",
      "tree": "27e8908099d9dbd1473e6b69775fcba23827d2a1",
      "parents": [
        "38e1b257fd7b4f3eee667d29a5e44ec15e253c1c"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Aug 12 04:14:14 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:14 2010 +0100"
      },
      "message": "dm stripe: move sector translation to a function\n\nMove sector to stripe translation into a function.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "38e1b257fd7b4f3eee667d29a5e44ec15e253c1c",
      "tree": "c5b8d853de330cb2db9fefc8588e283a1916b934",
      "parents": [
        "3fd5d48027181168ce85e8094b926aeb9f34c556"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Aug 12 04:14:14 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:14 2010 +0100"
      },
      "message": "dm: error return error for discards\n\nHave the error target respond to a discard request with a hard -EIO\nrather than fail the request with -EOPNOTSUPP.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "3fd5d48027181168ce85e8094b926aeb9f34c556",
      "tree": "740534f0992225e64b2874df296b6dff59111c0b",
      "parents": [
        "f8facb61b5095488a4d78fa78116ef4f4b82bc4d"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Aug 12 04:14:13 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:13 2010 +0100"
      },
      "message": "dm delay: support discard\n\nEnable discard support for the delay target.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f8facb61b5095488a4d78fa78116ef4f4b82bc4d",
      "tree": "5ee747721c27a8ac1cb68bb05862bfdfea185d9b",
      "parents": [
        "b441a262e7d1c56fbe21794c91d7a9c83809113f"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Aug 12 04:14:12 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:12 2010 +0100"
      },
      "message": "dm: zero silently drop discards\n\nHave the zero target silently drop a discard rather than fail the\nrequest with -EOPNOTSUPP.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b441a262e7d1c56fbe21794c91d7a9c83809113f",
      "tree": "cc9acb2c3f7045ff513739fd81bba8a789d713b6",
      "parents": [
        "56a67df766039666f61fb15b079f713e44a735ae"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:11 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:11 2010 +0100"
      },
      "message": "dm: use dm_target_offset macro\n\nUse new dm_target_offset() macro to avoid most references to ti-\u003ebegin\nin dm targets.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "56a67df766039666f61fb15b079f713e44a735ae",
      "tree": "cfeeb4f0a151b440293da593c723e9982368a58f",
      "parents": [
        "06a426cee9b35505aeb7516a67bd26496ca7ed08"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Aug 12 04:14:10 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:10 2010 +0100"
      },
      "message": "dm: factor out max_io_len_target_boundary\n\nSplit max_io_len_target_boundary out of max_io_len so that the discard\nsupport can make use of it without duplicating max_io_len code.\n\nAvoiding max_io_len\u0027s split_io logic enables DM\u0027s discard support to\nsubmit the entire discard request to a target.  But discards must still\nbe split on target boundaries.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "06a426cee9b35505aeb7516a67bd26496ca7ed08",
      "tree": "008d8d20b667b195dbe7e53a53e5003aec0a0a5f",
      "parents": [
        "5ae89a8720c28caf35c4e53711d77df2856c404e"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Aug 12 04:14:09 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:09 2010 +0100"
      },
      "message": "dm: use common __issue_target_request for flush and discard support\n\nRename __flush_target to __issue_target_request now that it is used to\nissue both flush and discard requests.\n\nIntroduce __issue_target_requests as a convenient wrapper to\n__issue_target_request \u0027num_flush_requests\u0027 or \u0027num_discard_requests\u0027\ntimes per target.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5ae89a8720c28caf35c4e53711d77df2856c404e",
      "tree": "712ddc158309d7ad77e3c19e70f0ae9fafb94446",
      "parents": [
        "5ebaee6d290279d1df6ce45d6d54de8cfc473273"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Aug 12 04:14:08 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:08 2010 +0100"
      },
      "message": "dm: linear support discard\n\nAllow discards to be passed through to linear mappings if at least one\nunderlying device supports it.  Discards will be forwarded only to\ndevices that support them.\n\nA target that supports discards should set num_discard_requests to\nindicate how many times each discard request must be submitted to it.\n\nVerify table\u0027s underlying devices support discards prior to setting the\nassociated DM device as capable of discards (via QUEUE_FLAG_DISCARD).\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nReviewed-by: Joe Thornber \u003cthornber@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5ebaee6d290279d1df6ce45d6d54de8cfc473273",
      "tree": "9fa2693bcd1f46827e90f1aff1d36fd1d6da4ea6",
      "parents": [
        "28513fccf0ceefb8171ddc0cefa429b82e92a2c9"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Thu Aug 12 04:14:07 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:07 2010 +0100"
      },
      "message": "dm crypt: simplify crypt_ctr\n\nAllocate cipher strings indpendently of struct crypt_config and move\ncipher parsing and allocation into a separate function to prepare for\nsupporting the cryptoapi format e.g. \"xts(aes)\".\n\nNo functional change in this patch.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "28513fccf0ceefb8171ddc0cefa429b82e92a2c9",
      "tree": "3d094133a496dd045657e9b631bb0a903cf8274e",
      "parents": [
        "7e507eb6432afdd798d4c6dccf949b8c43ef151c"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Thu Aug 12 04:14:06 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:06 2010 +0100"
      },
      "message": "dm crypt: simplify crypt_config destruction logic\n\nUse just one label and reuse common destructor for crypt target.\n\nParse remaining argv arguments in logic order.\n\nAlso do not ignore error values from IV init and set key functions.\n\nNo functional change in this patch except changed return codes\nbased on above.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "7e507eb6432afdd798d4c6dccf949b8c43ef151c",
      "tree": "a9c91e310bfd8e26c326f094eade79f5baf1ee25",
      "parents": [
        "57cba5d3658d9fdc019c6af14a2d80aefa651e56"
      ],
      "author": {
        "name": "Peter Rajnoha",
        "email": "prajnoha@redhat.com",
        "time": "Thu Aug 12 04:14:05 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:05 2010 +0100"
      },
      "message": "dm: allow autoloading of dm mod\n\nAdd devname:mapper/control and MAPPER_CTRL_MINOR module alias\nto support dm-mod module autoloading.\n\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Peter Rajnoha \u003cprajnoha@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "57cba5d3658d9fdc019c6af14a2d80aefa651e56",
      "tree": "4905a162b6785e1a1228b8870d8011cf9035147a",
      "parents": [
        "26803b9f06d365122fae82e7554a66ef8278e0bb"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Aug 12 04:14:04 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:04 2010 +0100"
      },
      "message": "dm: rename map_info flush_request to target_request_nr\n\n\u0027target_request_nr\u0027 is a more generic name that reflects the fact that\nit will be used for both flush and discard support.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "26803b9f06d365122fae82e7554a66ef8278e0bb",
      "tree": "83f77be2b09bbaa6d97105509d54955b2eec7147",
      "parents": [
        "b1d5552838334c600b068c9c8cc18638e5a8cb47"
      ],
      "author": {
        "name": "Will Drewry",
        "email": "wad@chromium.org",
        "time": "Thu Aug 12 04:14:03 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:03 2010 +0100"
      },
      "message": "dm ioctl: refactor dm_table_complete\n\nThis change unifies the various checks and finalization that occurs on a\ntable prior to use.  By doing so, it allows table construction without\ntraversing the dm-ioctl interface.\n\nSigned-off-by: Will Drewry \u003cwad@chromium.org\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b1d5552838334c600b068c9c8cc18638e5a8cb47",
      "tree": "789e435ab60e6956abffc15b4da85fe1e5b1714c",
      "parents": [
        "4a0b4ddf261fc89c050fe0a10ec57a61251d7ac0"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Aug 12 04:14:02 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:02 2010 +0100"
      },
      "message": "dm snapshot: implement merge\n\nImplement merge method for the snapshot origin to improve read\nperformance.\n\nWithout merge method, dm asks the upper layers to submit smallest possible\nbios --- one page. Submitting such small bios impacts performance negatively\nwhen reading or writing the origin device.\n\nWithout this patch, CPU consumption when reading the origin on lvm on md-raid0\nwas 6 to 12%, with this patch, it drops to 1 to 4%.\n\nNote: in my testing, it actually degraded performance in some settings, I\ntraced it to Maxtor disks having problems with \u003e 512-sector requests.\nReducing the number of sectors to /sys/block/sd*/queue/max_sectors_kb to\n256 fixed the read performance. I think we don\u0027t have to care about weird\ndisks that actually degrade performance because of large requests being\nsent to them.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4a0b4ddf261fc89c050fe0a10ec57a61251d7ac0",
      "tree": "23854bb6d42e7cedec9100fcdd63c307ee5d1332",
      "parents": [
        "a5664dad7e1a278d2915c2bf79cf42250e12d7db"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Aug 12 04:14:02 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:02 2010 +0100"
      },
      "message": "dm: do not initialise full request queue when bio based\n\nChange bio-based mapped devices no longer to have a fully initialized\nrequest_queue (request_fn, elevator, etc).  This means bio-based DM\ndevices no longer register elevator sysfs attributes (\u0027iosched/\u0027 tree\nor \u0027scheduler\u0027 other than \"none\").\n\nIn contrast, a request-based DM device will continue to have a full\nrequest_queue and will register elevator sysfs attributes.  Therefore\na user can determine a DM device\u0027s type by checking if elevator sysfs\nattributes exist.\n\nFirst allocate a minimalist request_queue structure for a DM device\n(needed for both bio and request-based DM).\n\nInitialization of a full request_queue is deferred until it is known\nthat the DM device is request-based, at the end of the table load\nsequence.\n\nFactor DM device\u0027s request_queue initialization:\n- common to both request-based and bio-based into dm_init_md_queue().\n- specific to request-based into dm_init_request_based_queue().\n\nThe md-\u003etype_lock mutex is used to protect md-\u003equeue, in addition to\nmd-\u003etype, during table_load().\n\nA DM device\u0027s first table_load will establish the immutable md-\u003etype.\nBut md-\u003equeue initialization, based on md-\u003etype, may fail at that time\n(because blk_init_allocated_queue cannot allocate memory).  Therefore\nany subsequent table_load must (re)try dm_setup_md_queue independently of\nestablishing md-\u003etype.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nAcked-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a5664dad7e1a278d2915c2bf79cf42250e12d7db",
      "tree": "3bdbe17f12376c63ea05100c2597757e01dc95e2",
      "parents": [
        "708e929513502fb050c0a3c3ee267cab5b056ded"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Aug 12 04:14:01 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:01 2010 +0100"
      },
      "message": "dm ioctl: make bio or request based device type immutable\n\nDetermine whether a mapped device is bio-based or request-based when\nloading its first (inactive) table and don\u0027t allow that to be changed\nlater.\n\nThis patch performs different device initialisation in each of the two\ncases.  (We don\u0027t think it\u0027s necessary to add code to support changing\nbetween the two types.)\n\nAllowed md-\u003etype transitions:\n  DM_TYPE_NONE to DM_TYPE_BIO_BASED\n  DM_TYPE_NONE to DM_TYPE_REQUEST_BASED\n\nWe now prevent table_load from replacing the inactive table with a\nconflicting type of table even after an explicit table_clear.\n\nIntroduce \u0027type_lock\u0027 into the struct mapped_device to protect md-\u003etype\nand to prepare for the next patch that will change the queue\ninitialization and allocate memory while md-\u003etype_lock is held.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nAcked-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n\n drivers/md/dm-ioctl.c    |   15 +++++++++++++++\n drivers/md/dm.c          |   37 ++++++++++++++++++++++++++++++-------\n drivers/md/dm.h          |    5 +++++\n include/linux/dm-ioctl.h |    4 ++--\n 4 files changed, 52 insertions(+), 9 deletions(-)\n"
    },
    {
      "commit": "708e929513502fb050c0a3c3ee267cab5b056ded",
      "tree": "e7b6845a3d53c5b92350f1755b4e89418f0c351c",
      "parents": [
        "87c961cb747fa55b664b76abfcb9d44c14ae851f"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Aug 12 04:14:00 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:14:00 2010 +0100"
      },
      "message": "dm: skip second flush on bio unsupported error\n\nWhen processing barriers, skip the second flush if processing the bio\nfailed with -EOPNOTSUPP.  This can happen with discard+barrier requests.\nIf the device doesn\u0027t support discard, there would be two useless\nSYNCHRONIZE CACHE commands.  The first dm_flush cannot be so easily\noptimized out, so we leave it there.\n\nPreviously, -EOPNOTSUPP could be received in dec_pending only with empty\nbarriers and we ignored that error, assuming the device not supporting\ncache flushes has cache always consistent.  With the addition of discard\nbarriers, this -EOPNOTSUPP can also be generated by discards and we\nmust record it in md-\u003ebarrier_error for process_barrier.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "87c961cb747fa55b664b76abfcb9d44c14ae851f",
      "tree": "2aefac4f795bd211bb60c13c4ea401bd6a747e1b",
      "parents": [
        "a9c88f2ebc1a5937915cb3b89c9f03894134f39a"
      ],
      "author": {
        "name": "Tomohiro Kusumi",
        "email": "kusumi.tomohiro@jp.fujitsu.com",
        "time": "Thu Aug 12 04:13:59 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:13:59 2010 +0100"
      },
      "message": "dm snapshot: persistent use define for disk header chunk size\n\nThis patch fixes hard-coded value for the size of a chunk that includes\ndisk header for persistent snapshot. It should be changed to existing\nmacro NUM_SNAPSHOT_HDR_CHUNKS instead of using hard-coded value 1.\n\nSigned-off-by: Tomohiro Kusumi \u003ckusumi.tomohiro@jp.fujitsu.com\u003e\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a9c88f2ebc1a5937915cb3b89c9f03894134f39a",
      "tree": "84f409698a8b0c861b91f90dc8e8043009132398",
      "parents": [
        "402ab352c2c00ba8f90c724565f8cf31210d99cf"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Thu Aug 12 04:13:58 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:13:58 2010 +0100"
      },
      "message": "dm crypt: use kstrdup\n\nUse kstrdup when the goal of an allocation is copy a string into the\nallocated region.\n\nThe semantic patch that makes this change is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@\nexpression from,to;\nexpression flag,E1,E2;\nstatement S;\n@@\n\n-  to \u003d kmalloc(strlen(from) + 1,flag);\n+  to \u003d kstrdup(from, flag);\n   ... when !\u003d \\(from \u003d E1 \\| to \u003d E1 \\)\n   if (to\u003d\u003dNULL || ...) S\n   ... when !\u003d \\(from \u003d E2 \\| to \u003d E2 \\)\n-  strcpy(to, from);\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "402ab352c2c00ba8f90c724565f8cf31210d99cf",
      "tree": "d24566917708f1624a7af33bc049aa5dfb24e96c",
      "parents": [
        "3f77316de0ec0fd208467fbee8d9edc70e2c73b2"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@relay.de.ibm.com",
        "time": "Thu Aug 12 04:13:57 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:13:57 2010 +0100"
      },
      "message": "dm ioctl: use nonseekable_open\n\nThe dm control device does not implement read/write, so it has no use for\nseeking.  Using no_llseek prevents falling back to default_llseek, which\nrequires the BKL.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "3f77316de0ec0fd208467fbee8d9edc70e2c73b2",
      "tree": "73a91aa53eefe9537432a344ebf116cc7d106e51",
      "parents": [
        "98f332855effef02aeb738e4d62e9a5b903c52fd"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Aug 12 04:13:56 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:13:56 2010 +0100"
      },
      "message": "dm: separate device deletion from dm_put\n\nThis patch separates the device deletion code from dm_put()\nto make sure the deletion happens in the process context.\n\nBy this patch, device deletion always occurs in an ioctl (process)\ncontext and dm_put() can be called in interrupt context.\nAs a result, the request-based dm\u0027s bad dm_put() usage pointed out\nby Mikulas below disappears.\n    http://marc.info/?l\u003ddm-devel\u0026m\u003d126699981019735\u0026w\u003d2\n\nWithout this patch, I confirmed there is a case to crash the system:\n    dm_put() \u003d\u003e dm_table_destroy() \u003d\u003e vfree() \u003d\u003e BUG_ON(in_interrupt())\n\nSome more backgrounds and details:\nIn request-based dm, a device opener can remove a mapped_device\nwhile the last request is still completing, because bios in the last\nrequest complete first and then the device opener can close and remove\nthe mapped_device before the last request completes:\n  CPU0                                          CPU1\n  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n  \u003c\u003cINTERRUPT\u003e\u003e\n  blk_end_request_all(clone_rq)\n    blk_update_request(clone_rq)\n      bio_endio(clone_bio) \u003d\u003d end_clone_bio\n        blk_update_request(orig_rq)\n          bio_endio(orig_bio)\n                                                \u003c\u003cI/O completed\u003e\u003e\n                                                dm_blk_close()\n                                                dev_remove()\n                                                  dm_put(md)\n                                                    \u003c\u003cFree md\u003e\u003e\n   blk_finish_request(clone_rq)\n     ....\n     dm_end_request(clone_rq)\n       free_rq_clone(clone_rq)\n       blk_end_request_all(orig_rq)\n       rq_completed(md)\n\nSo request-based dm used dm_get()/dm_put() to hold md for each I/O\nuntil its request completion handling is fully done.\nHowever, the final dm_put() can call the device deletion code which\nmust not be run in interrupt context and may cause kernel panic.\n\nTo solve the problem, this patch moves the device deletion code,\ndm_destroy(), to predetermined places that is actually deleting\nthe mapped_device in ioctl (process) context, and changes dm_put()\njust to decrement the reference count of the mapped_device.\nBy this change, dm_put() can be used in any context and the symmetric\nmodel below is introduced:\n    dm_create():  create a mapped_device\n    dm_destroy(): destroy a mapped_device\n    dm_get():     increment the reference count of a mapped_device\n    dm_put():     decrement the reference count of a mapped_device\n\ndm_destroy() waits for all references of the mapped_device to disappear,\nthen deletes the mapped_device.\n\ndm_destroy() uses active waiting with msleep(1), since deleting\nthe mapped_device isn\u0027t performance-critical task.\nAnd since at this point, nobody opens the mapped_device and no new\nreference will be taken, the pending counts are just for racing\ncompleting activity and will eventually decrease to zero.\n\nFor the unlikely case of the forced module unload, dm_destroy_immediate(),\nwhich doesn\u0027t wait and forcibly deletes the mapped_device, is also\nintroduced and used in dm_hash_remove_all().  Otherwise, \"rmmod -f\"\nmay be stuck and never return.\nAnd now, because the mapped_device is deleted at this point, subsequent\naccesses to the mapped_device may cause NULL pointer references.\n\nCc: stable@kernel.org\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "98f332855effef02aeb738e4d62e9a5b903c52fd",
      "tree": "b10d7f632022415ddb047c2bacbaa1f861a76161",
      "parents": [
        "abdc568b0540bec6d3e0afebac496adef1189b77"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Aug 12 04:13:55 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:13:55 2010 +0100"
      },
      "message": "dm ioctl: release _hash_lock between devices in remove_all\n\nThis patch changes dm_hash_remove_all() to release _hash_lock when\nremoving a device.  After removing the device, dm_hash_remove_all()\ntakes _hash_lock and searches the hash from scratch again.\n\nThis patch is a preparation for the next patch, which changes device\ndeletion code to wait for md reference to be 0.  Without this patch,\nthe wait in the next patch may cause AB-BA deadlock:\n  CPU0                                CPU1\n  -----------------------------------------------------------------------\n  dm_hash_remove_all()\n    down_write(_hash_lock)\n                                      table_status()\n                                        md \u003d find_device()\n                                               dm_get(md)\n                                                 \u003cincrement md-\u003eholders\u003e\n                                        dm_get_live_or_inactive_table()\n                                          dm_get_inactive_table()\n                                            down_write(_hash_lock)\n    \u003cin the md deletion code\u003e\n      \u003cwait for md-\u003eholders to be 0\u003e\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "abdc568b0540bec6d3e0afebac496adef1189b77",
      "tree": "1c88c8de6e90b7f9cbbc788fa9e3fb539f1d231c",
      "parents": [
        "856a6f1dbd8940e72755af145ebcd806408ecedd"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Aug 12 04:13:54 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:13:54 2010 +0100"
      },
      "message": "dm: prevent access to md being deleted\n\nThis patch prevents access to mapped_device which is being deleted.\n\nCurrently, even after a mapped_device has been removed from the hash,\nit could be accessed through idr_find() using minor number.\nThat could cause a race and NULL pointer reference below:\n  CPU0                          CPU1\n  ------------------------------------------------------------------\n  dev_remove(param)\n    down_write(_hash_lock)\n    dm_lock_for_deletion(md)\n      spin_lock(_minor_lock)\n      set_bit(DMF_DELETING)\n      spin_unlock(_minor_lock)\n    __hash_remove(hc)\n    up_write(_hash_lock)\n                                dev_status(param)\n                                  md \u003d find_device(param)\n                                         down_read(_hash_lock)\n                                         __find_device_hash_cell(param)\n                                           dm_get_md(param-\u003edev)\n                                             md \u003d dm_find_md(dev)\n                                                    spin_lock(_minor_lock)\n                                                    md \u003d idr_find(MINOR(dev))\n                                                    spin_unlock(_minor_lock)\n    dm_put(md)\n      free_dev(md)\n                                             dm_get(md)\n                                         up_read(_hash_lock)\n                                  __dev_status(md, param)\n                                  dm_put(md)\n\nThis patch fixes such problems.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "856a6f1dbd8940e72755af145ebcd806408ecedd",
      "tree": "e9fcdd440e5a4dbc58ffe59699b918d34b1cdd21",
      "parents": [
        "094ea9a071f68bd6f56c3f8cdeb5263727b68ce9"
      ],
      "author": {
        "name": "Peter Rajnoha",
        "email": "prajnoha@redhat.com",
        "time": "Thu Aug 12 04:13:53 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:13:53 2010 +0100"
      },
      "message": "dm ioctl: return uevent flag after rename\n\nAll the dm ioctls that generate uevents set the DM_UEVENT_GENERATED flag so\nthat userspace knows whether or not to wait for a uevent to be processed\nbefore continuing,\n\nThe dm rename ioctl sets this flag but was not structured to return it\nto userspace.  This patch restructures the rename ioctl processing to\nbehave like the other ioctls that return data and so fix this.\n\nSigned-off-by: Peter Rajnoha \u003cprajnoha@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "094ea9a071f68bd6f56c3f8cdeb5263727b68ce9",
      "tree": "26455271959efc8241adaee9f49c31e87606c9ff",
      "parents": [
        "6be544940109b4c45f560785fe5798ce3fdc1922"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:13:52 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:13:52 2010 +0100"
      },
      "message": "dm ioctl: make __dev_status void\n\n__dev_status() cannot fail so make it void and simplify callers.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6be544940109b4c45f560785fe5798ce3fdc1922",
      "tree": "46307861cfa5d9cc00ba936a0db76aa5feac5226",
      "parents": [
        "c24110450650f17f7d3ba4fbe01f01ac5a115456"
      ],
      "author": {
        "name": "Peter Rajnoha",
        "email": "prajnoha@redhat.com",
        "time": "Thu Aug 12 04:13:52 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:13:52 2010 +0100"
      },
      "message": "dm ioctl: remove __dev_status from geometry and target message\n\nRemove useless __dev_status call while processing an ioctl that sets up\ndevice geometry and target message.  The data is not returned to\nuserspace so there is no point collecting it and in the case of\ntarget_message it is collected before processing the message so if it\ndid return it might be stale.\n\nSigned-off-by: Peter Rajnoha \u003cprajnoha@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c24110450650f17f7d3ba4fbe01f01ac5a115456",
      "tree": "8b5bff17f77c995099d93b2b4a32bc306962a0bf",
      "parents": [
        "1e5554c8428bc7209a83e2d07ca724be4d981ce3"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Aug 12 04:13:51 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:13:51 2010 +0100"
      },
      "message": "dm snapshot: test chunk size against both origin and snapshot\n\nValidate chunk size against both origin and snapshot sector size\n\nDon\u0027t allow chunk size smaller than either origin or snapshot logical\nsector size. Reading or writing data not aligned to sector size is not\nallowed and causes immediate errors.\n\nThis requires us to open the origin before initialising the\nexception store and to export dm_snap_origin.\n\nCc: stable@kernel.org\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nReviewed-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "1e5554c8428bc7209a83e2d07ca724be4d981ce3",
      "tree": "c434fd684132ae502880dc745b1982fc3ca94db0",
      "parents": [
        "6bbf79a14080a0c61212f53b4b87dc1a99fedf9c"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Aug 12 04:13:50 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:13:50 2010 +0100"
      },
      "message": "dm snapshot: iterate origin and cow devices\n\nIterate both origin and snapshot devices\n\niterate_devices method should call the callback for all the devices where\nthe bio may be remapped. Thus, snapshot_iterate_devices should call the callback\nfor both snapshot and origin underlying devices because it remaps some bios\nto the snapshot and some to the origin.\n\nsnapshot_iterate_devices called the callback only for the origin device.\nThis led to badly calculated device limits if snapshot and origin were placed\non different types of disks.\n\nCc: stable@kernel.org\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nReviewed-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6bbf79a14080a0c61212f53b4b87dc1a99fedf9c",
      "tree": "332dea35445605f6e1bacd9330500e9d93057319",
      "parents": [
        "5af568cbd55f60b5a1d174f621b273e4f585dc35"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:13:49 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:13:49 2010 +0100"
      },
      "message": "dm mpath: fix NULL pointer dereference when path parameters missing\n\nmultipath_ctr() forgets to return an error after detecting\nmissing path parameters.  Fix this.\n\nSigned-off-by: Patrick LoPresti \u003clopresti@gmail.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "3d30701b58970425e1d45994d6cb82f828924fdd",
      "tree": "8b14cf462628bebf8548c1b8c205a674564052d1",
      "parents": [
        "8cbd84f2dd4e52a8771b191030c374ba3e56d291",
        "fd8aa2c1811bf60ccb2d5de0579c6f62aec1772d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 15:38:19 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 15:38:19 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md: (24 commits)\n  md: clean up do_md_stop\n  md: fix another deadlock with removing sysfs attributes.\n  md: move revalidate_disk() back outside open_mutex\n  md/raid10: fix deadlock with unaligned read during resync\n  md/bitmap:  separate out loading a bitmap from initialising the structures.\n  md/bitmap: prepare for storing write-intent-bitmap via dm-dirty-log.\n  md/bitmap: optimise scanning of empty bitmaps.\n  md/bitmap: clean up plugging calls.\n  md/bitmap: reduce dependence on sysfs.\n  md/bitmap: white space clean up and similar.\n  md/raid5: export raid5 unplugging interface.\n  md/plug: optionally use plugger to unplug an array during resync/recovery.\n  md/raid5: add simple plugging infrastructure.\n  md/raid5: export is_congested test\n  raid5: Don\u0027t set read-ahead when there is no queue\n  md: add support for raising dm events.\n  md: export various start/stop interfaces\n  md: split out md_rdev_init\n  md: be more careful setting MD_CHANGE_CLEAN\n  md/raid5: ensure we create a unique name for kmem_cache when mddev has no gendisk\n  ...\n"
    },
    {
      "commit": "fd8aa2c1811bf60ccb2d5de0579c6f62aec1772d",
      "tree": "311567d03758afc3a93b4273fe172836e89bb01d",
      "parents": [
        "6e17b0276452912cb13445e5ea552b599984675f",
        "2144381da478cc4aa3a29ee29b0c5e6ddaaced14"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 10 10:02:33 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 10 10:02:33 2010 +1000"
      },
      "message": "Merge git://git.infradead.org/users/dwmw2/libraid-2.6 into for-linus\n"
    },
    {
      "commit": "2144381da478cc4aa3a29ee29b0c5e6ddaaced14",
      "tree": "380a29fec86b537ed602d12f4050654b1c66c27c",
      "parents": [
        "45d7f32c7a43cbb9592886d38190e379e2eb2226",
        "e5d84970a554d5c0072043a7b9f0f5b88b5fdfe1"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Mon Aug 09 10:36:44 2010 +0100"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Mon Aug 09 10:36:44 2010 +0100"
      },
      "message": "Merge branch \u0027async\u0027 of macbook:git/btrfs-unstable\n\nConflicts:\n\tdrivers/md/Makefile\n\tlib/raid6/unroll.pl\n"
    },
    {
      "commit": "6e17b0276452912cb13445e5ea552b599984675f",
      "tree": "1ccac9c3d01f7ea8c6c0061948b92c901253e676",
      "parents": [
        "bb4f1e9d0e2ef93de8e36ca0f5f26625fcd70b7d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Aug 07 21:41:19 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sun Aug 08 21:22:45 2010 +1000"
      },
      "message": "md: clean up do_md_stop\n\nThere is only one error exit from do_md_stop, so make that more\nexplicit and discard the \u0027err\u0027 variable.\nAlso drop the \u0027revalidate\u0027 variable by moving the unlock calls around.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bb4f1e9d0e2ef93de8e36ca0f5f26625fcd70b7d",
      "tree": "7c7edc0d5fa2b5702358f11396d52d07183708c0",
      "parents": [
        "147e0b6a639ac581ca3bf627bedc3f4a6d3eca66"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sun Aug 08 21:18:03 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sun Aug 08 21:21:27 2010 +1000"
      },
      "message": "md: fix another deadlock with removing sysfs attributes.\n\nMove the deletion of sysfs attributes from reconfig_mutex to\nopen_mutex didn\u0027t really help as a process can try to take\nopen_mutex while holding reconfig_mutex, so the same deadlock can\nhappen, just requiring one more process to be involved in the chain.\n\nI looks like I cannot easily use locking to wait for the sysfs\ndeletion to complete, so don\u0027t.\n\nThe only things that we cannot do while the deletions are still\npending is other things which can change the sysfs namespace: run,\ntakeover, stop.  Each of these can fail with -EBUSY.\nSo set a flag while doing a sysfs deletion, and fail run, takeover,\nstop if that flag is set.\n\nThis is suitable for 2.6.35.x\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "147e0b6a639ac581ca3bf627bedc3f4a6d3eca66",
      "tree": "95ca7cb3b2f06586d678ec33c0e9910d11f3af42",
      "parents": [
        "51e9ac77035a3dfcb6fc0a88a0d80b6f99b5edb1"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Aug 06 18:01:59 2010 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sun Aug 08 21:20:17 2010 +1000"
      },
      "message": "md: move revalidate_disk() back outside open_mutex\n\nCommit b821eaa5 \"md: remove -\u003echanged and related code\" moved\nrevalidate_disk() under open_mutex, and lockdep noticed.\n\n[ INFO: possible circular locking dependency detected ]\n2.6.32-mdadm-locking #1\n-------------------------------------------------------\nmdadm/3640 is trying to acquire lock:\n (\u0026bdev-\u003ebd_mutex){+.+.+.}, at: [\u003cffffffff811acecb\u003e] revalidate_disk+0x5b/0x90\n\nbut task is already holding lock:\n (\u0026mddev-\u003eopen_mutex){+.+...}, at: [\u003cffffffffa055e07a\u003e] do_md_stop+0x4a/0x4d0 [md_mod]\n\nwhich lock already depends on the new lock.\n\nIt is suitable for 2.6.35.x\n\nCc: \u003cstable@kernel.org\u003e\nReported-by: Przemyslaw Czarnowski \u003cprzemyslaw.hawrylewicz.czarnowski@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6e9624b8caec290d28b4c6d9ec75749df6372b87",
      "tree": "47225b544e1da82742795553dc4e8aa70c17afdc",
      "parents": [
        "8a6cfeb6deca3a8fefd639d898b0d163c0b5d368"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sat Aug 07 18:25:34 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:25:34 2010 +0200"
      },
      "message": "block: push down BKL into .open and .release\n\nThe open and release block_device_operations are currently\ncalled with the BKL held. In order to change that, we must\nfirst make sure that all drivers that currently rely\non this have no regressions.\n\nThis blindly pushes the BKL into all .open and .release\noperations for all block drivers to prepare for the\nnext step. The drivers can subsequently replace the BKL\nwith their own locks or remove it completely when it can\nbe shown that it is not needed.\n\nThe functions blkdev_get and blkdev_put are the only\nremaining users of the big kernel lock in the block\nlayer, besides a few uses in the ioctl code, none\nof which need to serialize with blkdev_{get,put}.\n\nMost of these two functions is also under the protection\nof bdev-\u003ebd_mutex, including the actual calls to\n-\u003eopen and -\u003erelease, and the common code does not\naccess any global data structures that need the BKL.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "00fff26539bfe3fad21c164fc4002d9ede056fb0",
      "tree": "4909c8eed03133b1d46f689e465ed1f579b8e282",
      "parents": [
        "afc23068103ccfbf1917eb2a007bc15ab5418cc9"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Sat Jul 03 17:45:40 2010 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:24:15 2010 +0200"
      },
      "message": "block: remove q-\u003eprepare_flush_fn completely\n\nThis removes q-\u003eprepare_flush_fn completely (changes the\nblk_queue_ordered API).\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "144d6ed551ce430084489b198826c89bac5680dc",
      "tree": "78b59ca5c4487784bfc2a16bcd91c0cb41631f8a",
      "parents": [
        "98d8c8f40ed72d997e50bc107a5cc1a6cee19e76"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Sat Jul 03 17:45:37 2010 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:24:14 2010 +0200"
      },
      "message": "dm: stop using q-\u003eprepare_flush_fn\n\nuse REQ_FLUSH flag instead.\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: Alasdair G Kergon \u003cagk@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7b6d91daee5cac6402186ff224c3af39d79f4a0e",
      "tree": "b1518cf0b6c301178e0a320f80610cd5b3aa7625",
      "parents": [
        "33659ebbae262228eef4e0fe990f393d1f0ed941"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "message": "block: unify flags for struct bio and struct request\n\nRemove the current bio flags and reuse the request flags for the bio, too.\nThis allows to more easily trace the type of I/O from the filesystem\ndown to the block driver.  There were two flags in the bio that were\nmissing in the requests:  BIO_RW_UNPLUG and BIO_RW_AHEAD.  Also I\u0027ve\nrenamed two request flags that had a superflous RW in them.\n\nNote that the flags are in bio.h despite having the REQ_ name - as\nblkdev.h includes bio.h that is the only way to go for now.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "33659ebbae262228eef4e0fe990f393d1f0ed941",
      "tree": "fcb537f09359c8dad3a6f6e16dc4319562dc42cc",
      "parents": [
        "7e005f79791dcd58436c88ded4a7f5aed1b82147"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Aug 07 18:17:56 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:17:56 2010 +0200"
      },
      "message": "block: remove wrappers for request type/flags\n\nRemove all the trivial wrappers for the cmd_type and cmd_flags fields in\nstruct requests.  This allows much easier grepping for different request\ntypes instead of unwinding through macros.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "51e9ac77035a3dfcb6fc0a88a0d80b6f99b5edb1",
      "tree": "94167223c5711c47169db672a0ec0d23a36208b9",
      "parents": [
        "69e51b449d383e97b1b9f890f8378c96e9e17346"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Aug 07 21:17:00 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Aug 07 21:17:00 2010 +1000"
      },
      "message": "md/raid10: fix deadlock with unaligned read during resync\n\nIf the \u0027bio_split\u0027 path in raid10-read is used while\nresync/recovery is happening it is possible to deadlock.\nFix this be elevating -\u003enr_waiting for the duration of both\nparts of the split request.\n\nThis fixes a bug that has been present since 2.6.22\nbut has only started manifesting recently for unknown reasons.\nIt is suitable for and -stable since then.\n\nReported-by:  Justin Bronder \u003cjsbronder@gentoo.org\u003e\nTested-by:  Justin Bronder \u003cjsbronder@gentoo.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "69e51b449d383e97b1b9f890f8378c96e9e17346",
      "tree": "650123fa4f08e8fa7f348a4ca875c59c129e5d84",
      "parents": [
        "e384e58549a2e9a83071ad80280c1a9053cfd84c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:35 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 13:21:34 2010 +1000"
      },
      "message": "md/bitmap:  separate out loading a bitmap from initialising the structures.\n\ndm makes this distinction between -\u003ectr and -\u003eresume, so we need to\ntoo.\n\nAlso get the new bitmap_load to clear out the bitmap first, as this is\nmost consistent with the dm suspend/resume approach\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e384e58549a2e9a83071ad80280c1a9053cfd84c",
      "tree": "805619143612ddc8cc71a45dd4522393c23a576f",
      "parents": [
        "ef4256733506f2459a0c436b62267d22a3f0cec6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:34 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 13:21:34 2010 +1000"
      },
      "message": "md/bitmap: prepare for storing write-intent-bitmap via dm-dirty-log.\n\nThis allows md/raid5 to fully work as a dm target.\n\nNormally md uses a \u0027filemap\u0027 which contains a list of pages of bits\neach of which may be written separately.\ndm-log uses and all-or-nothing approach to writing the log, so\nwhen using a dm-log, -\u003efilemap is NULL and the flags normally stored\nin filemap_attr are stored in -\u003elogattrs instead.\n\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ef4256733506f2459a0c436b62267d22a3f0cec6",
      "tree": "c73e1849052f56a8f6033498f7fbd65c6259c776",
      "parents": [
        "b63d7c2e29bf9cc94989806f2df0cfca4976b830"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:33 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 13:21:32 2010 +1000"
      },
      "message": "md/bitmap: optimise scanning of empty bitmaps.\n\nA bitmap is stored as one page per 2048 bits.\nIf none of the bits are set, the page is not allocated.\n\nWhen bitmap_get_counter finds that a page isn\u0027t allocate,\nit just reports that one bit work of space isn\u0027t flagged,\nrather than reporting that 2048 bits worth of space are\nunflagged.\nThis can cause searches for flagged bits (e.g. bitmap_close_sync)\nto do more work than is really necessary.\n\nSo change bitmap_get_counter (when creating) to report a number of\nblocks that more accurately reports the range of the device for which\nno counter currently exists.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b63d7c2e29bf9cc94989806f2df0cfca4976b830",
      "tree": "fdb82527ca458769d3c7381375873931bfb23b19",
      "parents": [
        "5ff5afffe6527543866a47ffab12769427283917"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:33 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 13:21:32 2010 +1000"
      },
      "message": "md/bitmap: clean up plugging calls.\n\n1/ use md_unplug in bitmap.c as we will soon be using bitmaps under\n  arrays with no queue attached.\n\n2/ Don\u0027t bother plugging the queue when we set a bit in the bitmap.\n   The reason for this was to encourage as many bits as possible to\n   get set before we unplug and write stuff out.\n   However every personality already plugs the queue after\n   bitmap_startwrite either directly (raid1/raid10) or be setting\n   STRIPE_BIT_DELAY which causes the queue to be plugged later\n   (raid5).\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5ff5afffe6527543866a47ffab12769427283917",
      "tree": "b37cf6ad3557ffada21aa05174bb055ea8e6c173",
      "parents": [
        "ac2f40be46ce6ab3bec4c8c297d6923f941741ce"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:32 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 13:21:31 2010 +1000"
      },
      "message": "md/bitmap: reduce dependence on sysfs.\n\nFor dm-raid45 we will want to use bitmaps in dm-targets which don\u0027t\nhave entries in sysfs, so cope with the mddev not living in sysfs.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ac2f40be46ce6ab3bec4c8c297d6923f941741ce",
      "tree": "f1abc7d627edaaf450dbff3e68a902ff667a3c92",
      "parents": [
        "9f7c2220017771253d7d10b3cc017cb79eeac0fb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:31 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 13:07:22 2010 +1000"
      },
      "message": "md/bitmap: white space clean up and similar.\n\nFixes some whitespace problems\nFixed some checkpatch.pl complaints.\nReplaced kmalloc ... memset(0), with kzalloc\nFixed an unlikely memory leak on an error path.\nReformatted a number of \u0027if/else\u0027 sets, sometimes\nreplacing goto with an else clause.\nRemoved some old comments and commented-out code.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9f7c2220017771253d7d10b3cc017cb79eeac0fb",
      "tree": "91e387cc225d59ac975b53590c4a75e20770b5ce",
      "parents": [
        "252ac5221a71be72b7e7c7b7482af91e9c962e8c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:04:13 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:53:10 2010 +1000"
      },
      "message": "md/raid5: export raid5 unplugging interface.\n\nAlso remove remaining accesses to -\u003equeue and -\u003egendisk when -\u003equeue\nis NULL (As it is in a DM target).\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "252ac5221a71be72b7e7c7b7482af91e9c962e8c",
      "tree": "cb9542b1391dabc136ce0052eb28948e77a6e2e5",
      "parents": [
        "2ac8740151b082f045e58010eb92560c3a23a0e9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:29 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:53:08 2010 +1000"
      },
      "message": "md/plug: optionally use plugger to unplug an array during resync/recovery.\n\nIf an array doesn\u0027t have a \u0027queue\u0027 then md_do_sync cannot\nunplug it.\nIn that case it will have a \u0027plugger\u0027, so make that available\nto the mddev, and use it to unplug the array if needed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2ac8740151b082f045e58010eb92560c3a23a0e9",
      "tree": "39bff686e28f033339c6d1cf47042b6dc1586c2f",
      "parents": [
        "11d8a6e3719519fbc0e2c9d61b6fa931b84bf813"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:29 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:53:08 2010 +1000"
      },
      "message": "md/raid5: add simple plugging infrastructure.\n\nmd/raid5 uses the plugging infrastructure provided by the block layer\nand \u0027struct request_queue\u0027.  However when we plug raid5 under dm there\nis no request queue so we cannot use that.\n\nSo create a similar infrastructure that is much lighter weight and use\nit for raid5.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "11d8a6e3719519fbc0e2c9d61b6fa931b84bf813",
      "tree": "13a075d1423b2caa3d3264db0cf8cd378c545623",
      "parents": [
        "4a5add49951e698073011855d1a8a7306bc9308d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 11:57:07 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:52:29 2010 +1000"
      },
      "message": "md/raid5: export is_congested test\n\nthe dm module will need this for dm-raid45.\n\nAlso only access -\u003equeue-\u003ebacking_dev_info-\u003econgested_fn\nif -\u003equeue actually exists.  It won\u0027t in a dm target.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4a5add49951e698073011855d1a8a7306bc9308d",
      "tree": "91c098468b96b959f88e1e2a386c6e8911db7c09",
      "parents": [
        "768a418db102bb6aa6064e6090892b5c21ff1f9e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:28 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:52:27 2010 +1000"
      },
      "message": "raid5: Don\u0027t set read-ahead when there is no queue\n\ndm-raid456 does not provide a \u0027queue\u0027 for raid5 to use,\nso we must make raid5 stop depending on the queue.\n\nFirst: read_ahead\ndm handles read-ahead adjustment fully in userspace, so\nsimply don\u0027t do any readahead adjustments if there is\nno queue.\n\nAlso re-arrange code slightly so all the accesses to -\u003equeue are\ntogether.\n\nFinally, move the blk_queue_merge_bvec function into the \u0027if\u0027 as\nthe -\u003esplit_io setting in dm-raid456 has the same effect.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "768a418db102bb6aa6064e6090892b5c21ff1f9e",
      "tree": "2f33acbf0ca542f43c8014201b539ae8f461ee5c",
      "parents": [
        "390ee602a142a93f2c7eb7bffee8e277058b8e0a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 11:49:55 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:52:27 2010 +1000"
      },
      "message": "md: add support for raising dm events.\n\ndm uses scheduled work to raise events to user-space.\nSo allow md device to have work_structs and schedule them on an error.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "390ee602a142a93f2c7eb7bffee8e277058b8e0a",
      "tree": "33a23748dd5ff4ea76b34ed3e458c6da91185376",
      "parents": [
        "e8bb9a839a26f076379e9cb9f46a879d210156f1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:27 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:52:27 2010 +1000"
      },
      "message": "md: export various start/stop interfaces\n\nexport entry points for starting and stopping md arrays.\nThis will be used by a module to make md/raid5 work under\ndm.\nAlso stop calling md_stop_writes from md_stop, as that won\u0027t\nwork well with dm - it will want to call the two separately.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e8bb9a839a26f076379e9cb9f46a879d210156f1",
      "tree": "4da184e861cc5fea4967089711dfdc4fbb175f43",
      "parents": [
        "676e42d896ab6967859fabbb06f4e11b9615cbcf"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:26 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:52:27 2010 +1000"
      },
      "message": "md: split out md_rdev_init\n\nThis functionality will be needed separately in a subsequent patch, so\nsplit it into it\u0027s own exported function.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "676e42d896ab6967859fabbb06f4e11b9615cbcf",
      "tree": "efab4dffe8e930ec9ef51a5a4d4fd04ffe3749b1",
      "parents": [
        "f4be6b43f1ac60dff00ef0923ee43b0e08872947"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:26 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:52:27 2010 +1000"
      },
      "message": "md: be more careful setting MD_CHANGE_CLEAN\n\nWhen MD_CHANGE_CLEAN is set we might block in md_write_start.\nSo we should only set it when fairly sure that something will clear\nit.\n\nThere are two places where it is set so as to encourage a metadata\nupdate to record the progress of resync/recovery.  This should only\nbe done if the internal metadata update mechanisms are in use, which\ncan be tested by by inspecting \u0027-\u003epersistent\u0027.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f4be6b43f1ac60dff00ef0923ee43b0e08872947",
      "tree": "b4fbfed60c0614d97a91638483058a133ddfcbf4",
      "parents": [
        "c41d4ac40df0d01bf9c383ff28f194d1df2d4fd9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:25 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:52:26 2010 +1000"
      },
      "message": "md/raid5: ensure we create a unique name for kmem_cache when mddev has no gendisk\n\nWe will shortly allow md devices with no gendisk (they are attached to\na dm-target instead).  That will cause mdname() to return \u0027mdX\u0027.\nThere is one place where mdname really needs to be unique: when\ncreating the name for a slab cache.\nSo in that case, if there is no gendisk, you the address of the mddev\nformatted in HEX to provide a unique name.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c41d4ac40df0d01bf9c383ff28f194d1df2d4fd9",
      "tree": "0e22b3cc5e211a3f7dd4b6dea69d2afc1a173543",
      "parents": [
        "00bcb4ac7ee7e557a491b614219142cea0ef16f4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:24 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 21 13:28:15 2010 +1000"
      },
      "message": "md/raid5: factor out code for changing size of stripe cache.\n\nSeparate the actual \u0027change\u0027 code from the sysfs interface\nso that it can eventually be called internally.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "00bcb4ac7ee7e557a491b614219142cea0ef16f4",
      "tree": "992cfa1d0e653aa3de8f0865c5e1a5a0fee4f935",
      "parents": [
        "d0c6f6258478e1dba532bf7c28e2cd6e1047d3a4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:23 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 21 13:27:53 2010 +1000"
      },
      "message": "md: reduce dependence on sysfs.\n\nWe will want md devices to live as dm targets where sysfs is not\nvisible.  So allow md to not connect to sysfs.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3424bf6a772cff606fc4bc24a3639c937afb547f",
      "tree": "be299de834e0f939d19665efec4cacadd74c4914",
      "parents": [
        "2f115882499f3e5eca33d1df07b8876cc752a1ff"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 17 17:48:26 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:36:04 2010 +1000"
      },
      "message": "md/raid5: don\u0027t include \u0027spare\u0027 drives when reshaping to fewer devices.\n\nThere are few situations where it would make any sense to add a spare\nwhen reducing the number of devices in an array, but it is\nconceivable:  A 6 drive RAID6 with two missing devices could be\nreshaped to a 5 drive RAID6, and a spare could become available\njust in time for the reshape, but not early enough to have been\nrecovered first.  \u0027freezing\u0027 recovery can make this easy to\ndo without any races.\n\nHowever doing such a thing is a bad idea.  md will not record the\npartially-recovered state of the \u0027spare\u0027 and when the reshape\nfinished it will think that the spare is still spare.\nEasiest way to avoid this confusion is to simply disallow it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2f115882499f3e5eca33d1df07b8876cc752a1ff",
      "tree": "8f9f1e723be1b4dd0e5fa7592a69245a704d8440",
      "parents": [
        "415e72d034c50520ddb7ff79e7d1792c1306f0c9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 17 17:41:03 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:35:49 2010 +1000"
      },
      "message": "md/raid5: add a missing \u0027continue\u0027 in a loop.\n\nAs the comment says, the tail of this loop only applies to devices\nthat are not fully in sync, so if In_sync was set, we should avoid\nthe rest of the loop.\n\nThis bug will hardly ever cause an actual problem.  The worst it\ncan do is allow an array to be assembled that is dirty and degraded,\nwhich is not generally a good idea (without warning the sysadmin\nfirst).\n\nThis will only happen if the array is RAID4 or a RAID5/6 in an\nintermediate state during a reshape and so has one drive that is\nall \u0027parity\u0027 - no data - while some other device has failed.\n\nThis is certainly possible, but not at all common.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "415e72d034c50520ddb7ff79e7d1792c1306f0c9",
      "tree": "4558df940a15693e477af206b54423d98d9a04b1",
      "parents": [
        "674806d62fb02a22eea948c9f1b5e58e0947b728"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 17 17:25:21 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:35:39 2010 +1000"
      },
      "message": "md/raid5: Allow recovered part of partially recovered devices to be in-sync\n\nDuring a recovery of reshape the early part of some devices might be\nin-sync while the later parts are not.\nWe we know we are looking at an early part it is good to treat that\npart as in-sync for stripe calculations.\n\nThis is particularly important for a reshape which suffers device\nfailure.  Treating the data as in-sync can mean the difference between\ndata-safety and data-loss.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "674806d62fb02a22eea948c9f1b5e58e0947b728",
      "tree": "3367850a95d62713aa96acd2aecc493b66779398",
      "parents": [
        "70fffd0bfab1558a8c64c5e903dea1fb84cd9f6b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jun 16 17:17:53 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:35:27 2010 +1000"
      },
      "message": "md/raid5: More careful check for \"has array failed\".\n\nWhen we are reshaping an array, the device failure combinations\nthat cause us to decide that the array as failed are more subtle.\n\nIn particular, any \u0027spare\u0027 will be fully in-sync in the section\nof the array that has already been reshaped, thus failures that\naffect only that section are less critical.\n\nSo encode this subtlety in a new function and call it as appropriate.\n\nThe case that showed this problem was a 4 drive RAID5 to 8 drive RAID6\nconversion where the last two devices failed.\nThis resulted in:\n\n  good good good good incomplete good good failed failed\n\nwhile converting a 5-drive RAID6 to 8 drive RAID5\nThe incomplete device causes the whole array to look bad,\nbad as it was actually good for the section that had been\nconverted to 8-drives, all the data was actually safe.\n\nReported-by: Terry Morris \u003ctbmorris@tbmorris.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "70fffd0bfab1558a8c64c5e903dea1fb84cd9f6b",
      "tree": "126f2ae8faa2cff8f9dde91cc7a07569ff9851cb",
      "parents": [
        "e4e11e385d1e5516ac76c956d6c25e6c2fa1b8d0"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jun 16 17:01:25 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:35:18 2010 +1000"
      },
      "message": "md: Don\u0027t update -\u003erecovery_offset when reshaping an array to fewer devices.\n\nWhen an array is reshaped to have fewer devices, the reshape proceeds\nfrom the end of the devices to the beginning.\n\nIf a device happens to be non-In_sync (which is possible but rare)\nwe would normally update the -\u003erecovery_offset as the reshape\nprogresses. However that would be wrong as the recover_offset records\nthat the early part of the device is in_sync, while in fact it would\nonly be the later part that is in_sync, and in any case the offset\nnumber would be measured from the wrong end of the device.\n\nRelatedly, if after a reshape a spare is discovered to not be\nrecoverred all the way to the end, not allow spare_active\nto incorporate it in the array.\n\nThis becomes relevant in the following sample scenario:\n\nA 4 drive RAID5 is converted to a 6 drive RAID6 in a combined\noperation.\nThe RAID5-\u003eRAID6 conversion will cause a 5 drive to be included as a\nspare, then the 5drive -\u003e 6drive reshape will effectively rebuild that\nspare as it progresses.  The 6th drive is treated as in_sync the whole\ntime as there is never any case that we might consider reading from\nit, but must not because there is no valid data.\n\nIf we interrupt this reshape part-way through and reverse it to return\nto a 5-drive RAID6 (or event a 4-drive RAID5), we don\u0027t want to update\nthe recovery_offset - as that would be wrong - and we don\u0027t want to\ninclude that spare as active in the 5-drive RAID6 when the reversed\nreshape completed and it will be mostly out-of-sync still.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e4e11e385d1e5516ac76c956d6c25e6c2fa1b8d0",
      "tree": "978807084ae3136b20a12efab3720ecec861d0ff",
      "parents": [
        "049d6c1ef983c9ac43aa423dfd752071a5b0002d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jun 16 16:45:16 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:35:02 2010 +1000"
      },
      "message": "md/raid5: avoid oops when number of devices is reduced then increased.\n\nThe entries in the stripe_cache maintained by raid5 are enlarged\nwhen we increased the number of devices in the array, but not\nshrunk when we reduce the number of devices.\nSo if entries are added after reducing the number of devices, we\nmuch ensure to initialise the whole entry, not just the part that\nis currently relevant.  Otherwise if we enlarge the array again,\nwe will reference uninitialised values.\n\nAs grow_buffers/shrink_buffer now want to use a count that is stored\nexplicity in the raid_conf, they should get it from there rather than\nbeing passed it as a parameter.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "049d6c1ef983c9ac43aa423dfd752071a5b0002d",
      "tree": "909db6119d7b96991fa724b633c2ee185474836d",
      "parents": [
        "001048a318d48e93cb6a1246f3b20335b2a7c855"
      ],
      "author": {
        "name": "Maciej Trela",
        "email": "maciej.trela@intel.com",
        "time": "Wed Jun 16 11:56:12 2010 +0100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:34:57 2010 +1000"
      },
      "message": "md: enable raid4-\u003eraid0 takeover\n\nOnly level 5 with layout\u003dPARITY_N can be taken over to raid0 now.\nLets allow level 4 either.\n\nSigned-off-by: Maciej Trela \u003cmaciej.trela@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "001048a318d48e93cb6a1246f3b20335b2a7c855",
      "tree": "82a90465d46b9f495ceee52ef24dee9ada3a9827",
      "parents": [
        "f73ea87375a1b2bf6c0be82bb9a3cb9d5ee7a407"
      ],
      "author": {
        "name": "Maciej Trela",
        "email": "maciej.trela@intel.com",
        "time": "Wed Jun 16 11:55:14 2010 +0100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:34:45 2010 +1000"
      },
      "message": "md: clear layout after -\u003eraid0 takeover\n\nAfter takeover from raid5/10 -\u003e raid0 mddev-\u003elayout is not cleared.\n\nSigned-off-by: Maciej Trela \u003cmaciej.trela@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f73ea87375a1b2bf6c0be82bb9a3cb9d5ee7a407",
      "tree": "c6353ca45235a258cf7d72ecb1b29d6babfcd2fc",
      "parents": [
        "e93f68a1fc6244c05ad8fae28e75835ec74ab34e"
      ],
      "author": {
        "name": "Maciej Trela",
        "email": "maciej.trela@intel.com",
        "time": "Wed Jun 16 11:46:29 2010 +0100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:33:51 2010 +1000"
      },
      "message": "md: fix raid10 takeover: use new_layout for setup_conf\n\nUse mddev-\u003enew_layout in setup_conf.\nAlso use new_chunk, and don\u0027t set -\u003edegraded in takeover().  That\ngets set in run()\n\nSigned-off-by: Maciej Trela \u003cmaciej.trela@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e93f68a1fc6244c05ad8fae28e75835ec74ab34e",
      "tree": "d282978aac8f6fcec512be2a6e61287bbb6241b1",
      "parents": [
        "0544a21db02c1d8883158fd6f323364f830a120a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 15 09:36:03 2010 +0100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:33:24 2010 +1000"
      },
      "message": "md: fix handling of array level takeover that re-arranges devices.\n\nMost array level changes leave the list of devices largely unchanged,\npossibly causing one at the end to become redundant.\nHowever conversions between RAID0 and RAID10 need to renumber\nall devices (except 0).\n\nThis renumbering is currently being done in the -\u003erun method when the\nnew personality takes over.  However this is too late as the common\ncode in md.c might already have invalidated some of the devices if\nthey had a -\u003eraid_disk number that appeared to high.\n\nMoving it into the -\u003etakeover method is too early as the array is\nstill active at that time and wrong -\u003eraid_disk numbers could cause\nconfusion.\n\nSo add a -\u003enew_raid_disk field to mdk_rdev_s and use it to communicate\nthe new raid_disk number.\nNow the common code knows exactly which devices need to be renumbered,\nand which can be invalidated, and can do it all at a convenient time\nwhen the array is suspend.\nIt can also update some symlinks in sysfs which previously were not be\nupdated correctly.\n\nReported-by: Maciej Trela \u003cmaciej.trela@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0544a21db02c1d8883158fd6f323364f830a120a",
      "tree": "086c38e3c9132a8ecdee0ccbdd845ce2604caad9",
      "parents": [
        "f3b99be19ded511a1bf05a148276239d9f13eefa"
      ],
      "author": {
        "name": "Prasanna S. Panchamukhi",
        "email": "prasanna.panchamukhi@riverbed.com",
        "time": "Thu Jun 24 13:31:03 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:31:03 2010 +1000"
      },
      "message": "md: raid10: Fix null pointer dereference in fix_read_error()\n\nSuch NULL pointer dereference can occur when the driver was fixing the\nread errors/bad blocks and the disk was physically removed\ncausing a system crash. This patch check if the\nrcu_dereference() returns valid rdev before accessing it in fix_read_error().\n\nCc: stable@kernel.org\nSigned-off-by: Prasanna S. Panchamukhi \u003cprasanna.panchamukhi@riverbed.com\u003e\nSigned-off-by: Rob Becker \u003crbecker@riverbed.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f3b99be19ded511a1bf05a148276239d9f13eefa",
      "tree": "c9e59617e67e7a43e38b5c41f3307d54f4279c13",
      "parents": [
        "7e27d6e778cd87b6f2415515d7127eba53fe5d02"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:31:03 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:31:03 2010 +1000"
      },
      "message": "Restore partition detection of newly created md arrays.\n\nCommit  b821eaa572fd737faaf6928ba046e571526c36c6 broke partition\ndetection for md arrays.\n\nThe logic was almost right.  However if revalidate_disk is called\nwhen the device is not yet open, bdev-\u003ebd_disk won\u0027t be set, so the\nflush_disk() Call will not set bd_invalidated.\n\nSo when md_open is called we still need to ensure that\n-\u003ebd_invalidated gets set.  This is easily done with a call to\ncheck_disk_size_change in the place where the offending commit removed\ncheck_disk_change.  At the important times, the size will have changed\nfrom 0 to non-zero, so check_disk_size_change will set bd_invalidated.\n\nTested-by: Duncan \u003c1i5t5.duncan@cox.net\u003e\nReported-by: Duncan \u003c1i5t5.duncan@cox.net\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "55af6bb509d3ef2696faddd4a734bf024794b337",
      "tree": "4a5f3493957c5c7504b91bf90bedd828a26106c0",
      "parents": [
        "d882ba699dbdd2156891290c31c22dc13d6530e4"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Wed May 26 14:43:35 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:48 2010 -0700"
      },
      "message": "md: convert cpu notifier to return encapsulate errno value\n\nBy the previous modification, the cpu notifier can return encapsulate\nerrno value.  This converts the cpu notifiers for raid5.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e8bebe2f71d26871b0970ae1d9cf0ed3cdd9569d",
      "tree": "c0d82cbd11daaf579b74121c6641d58947091094",
      "parents": [
        "6109e2ce2600e2db26cd0424bb9c6ed019723288",
        "82f3952c02add60b15eea9151d4d99b6b82066c6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 19:37:45 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 19:37:45 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (69 commits)\n  fix handling of offsets in cris eeprom.c, get rid of fake on-stack files\n  get rid of home-grown mutex in cris eeprom.c\n  switch ecryptfs_write() to struct inode *, kill on-stack fake files\n  switch ecryptfs_get_locked_page() to struct inode *\n  simplify access to ecryptfs inodes in -\u003ereadpage() and friends\n  AFS: Don\u0027t put struct file on the stack\n  Ban ecryptfs over ecryptfs\n  logfs: replace inode uid,gid,mode initialization with helper function\n  ufs: replace inode uid,gid,mode initialization with helper function\n  udf: replace inode uid,gid,mode init with helper\n  ubifs: replace inode uid,gid,mode initialization with helper function\n  sysv: replace inode uid,gid,mode initialization with helper function\n  reiserfs: replace inode uid,gid,mode initialization with helper function\n  ramfs: replace inode uid,gid,mode initialization with helper function\n  omfs: replace inode uid,gid,mode initialization with helper function\n  bfs: replace inode uid,gid,mode initialization with helper function\n  ocfs2: replace inode uid,gid,mode initialization with helper function\n  nilfs2: replace inode uid,gid,mode initialization with helper function\n  minix: replace inode uid,gid,mode init with helper\n  ext4: replace inode uid,gid,mode init with helper\n  ...\n\nTrivial conflict in fs/fs-writeback.c (mark bitfields unsigned)\n"
    },
    {
      "commit": "19fdb9eefb21b72edbc365b838502780c392bad6",
      "tree": "deae04c48532d6eab64ed4b0396737bb854b5506",
      "parents": [
        "be6800a73aa2f3dc14744c3b80e676d189789f04",
        "3ff195b011d7decf501a4d55aeed312731094796"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat May 22 08:31:36 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat May 22 08:31:36 2010 +1000"
      },
      "message": "Merge commit \u00273ff195b011d7decf501a4d55aeed312731094796\u0027 into for-linus\n\nConflicts:\n\tdrivers/md/md.c\n\n- Resolved conflict in md_update_sb\n- Added extra \u0027NULL\u0027 arg to new instance of sysfs_get_dirent.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8018ab057480974e7f26a387bf4ce040e9a5f6f1",
      "tree": "98298180bf60797a028eca4f24234dc67d38a9d4",
      "parents": [
        "e970a573ce30a3976234dcfb67906c164b0df9ee"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Mar 22 17:32:25 2010 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 18:31:21 2010 -0400"
      },
      "message": "sanitize vfs_fsync calling conventions\n\nNow that the last user passing a NULL file pointer is gone we can remove\nthe redundant dentry argument and associated hacks inside vfs_fsynmc_range.\n\nThe next step will be removig the dentry argument from -\u003efsync, but given\nthe luck with the last round of method prototype changes I\u0027d rather\ndefer this until after the main merge window.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3ff195b011d7decf501a4d55aeed312731094796",
      "tree": "8cfdc330abbf82893955f2d7d6e96efee81bfd7c",
      "parents": [
        "bc451f2058238013e1cdf4acd443c01734d332f0"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Mar 30 11:31:26 2010 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri May 21 09:37:31 2010 -0700"
      },
      "message": "sysfs: Implement sysfs tagged directory support.\n\nThe problem.  When implementing a network namespace I need to be able\nto have multiple network devices with the same name.  Currently this\nis a problem for /sys/class/net/*, /sys/devices/virtual/net/*, and\npotentially a few other directories of the form /sys/ ... /net/*.\n\nWhat this patch does is to add an additional tag field to the\nsysfs dirent structure.  For directories that should show different\ncontents depending on the context such as /sys/class/net/, and\n/sys/devices/virtual/net/ this tag field is used to specify the\ncontext in which those directories should be visible.  Effectively\nthis is the same as creating multiple distinct directories with\nthe same name but internally to sysfs the result is nicer.\n\nI am calling the concept of a single directory that looks like multiple\ndirectories all at the same path in the filesystem tagged directories.\n\nFor the networking namespace the set of directories whose contents I need\nto filter with tags can depend on the presence or absence of hotplug\nhardware or which modules are currently loaded.  Which means I need\na simple race free way to setup those directories as tagged.\n\nTo achieve a reace free design all tagged directories are created\nand managed by sysfs itself.\n\nUsers of this interface:\n- define a type in the sysfs_tag_type enumeration.\n- call sysfs_register_ns_types with the type and it\u0027s operations\n- sysfs_exit_ns when an individual tag is no longer valid\n\n- Implement mount_ns() which returns the ns of the calling process\n  so we can attach it to a sysfs superblock.\n- Implement ktype.namespace() which returns the ns of a syfs kobject.\n\nEverything else is left up to sysfs and the driver layer.\n\nFor the network namespace mount_ns and namespace() are essentially\none line functions, and look to remain that.\n\nTags are currently represented a const void * pointers as that is\nboth generic, prevides enough information for equality comparisons,\nand is trivial to create for current users, as it is just the\nexisting namespace pointer.\n\nThe work needed in sysfs is more extensive.  At each directory\nor symlink creating I need to check if the directory it is being\ncreated in is a tagged directory and if so generate the appropriate\ntag to place on the sysfs_dirent.  Likewise at each symlink or\ndirectory removal I need to check if the sysfs directory it is\nbeing removed from is a tagged directory and if so figure out\nwhich tag goes along with the name I am deleting.\n\nCurrently only directories which hold kobjects, and\nsymlinks are supported.  There is not enough information\nin the current file attribute interfaces to give us anything\nto discriminate on which makes it useless, and there are\nno potential users which makes it an uninteresting problem\nto solve.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Benjamin Thery \u003cbenjamin.thery@bull.net\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "be6800a73aa2f3dc14744c3b80e676d189789f04",
      "tree": "7db76b4488ad45e923223748c41fa8a61a09aa25",
      "parents": [
        "a8707c08f4f718bb0ed65499d3f43201f6e41455"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 10:17:09 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:28:01 2010 +1000"
      },
      "message": "md: don\u0027t insist on valid event count for spare devices.\n\nDevices which know that they are spares do not really need to have\nan event count that matches the rest of the array, so there are no\ndata-in-sync issues. It is enough that the uuid matches.\nSo remove the requirement that the event count is up-to-date.\n\nWe currently still write out and event count on spares, but this\nallows us in a year or 3 to stop doing that completely.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a8707c08f4f718bb0ed65499d3f43201f6e41455",
      "tree": "8fc3ea9ea924ebc4f28012c11f3c1e70ad60bcb2",
      "parents": [
        "7b0bb5368a7195606eca475d9f4e291ab7227052"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 09:28:43 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:28:01 2010 +1000"
      },
      "message": "md: simplify updating of event count to sometimes avoid updating spares.\n\nWhen updating the event count for a simple clean \u003c-\u003e dirty transition,\nwe try to avoid updating the spares so they can safely spin-down.\nAs the event_counts across an array must be +/- 1, this means\ndecrementing the event_count on a dirty-\u003eclean transition.\nThis is not always safe and we have to avoid the unsafe time.\nWe current do this with a misguided idea about it being safe or\nnot depending on whether the event_count is odd or even.  This\napproach only works reliably in a few common instances, but easily\nfalls down.\n\nSo instead, simply keep internal state concerning whether it is safe\nor not, and always assume it is not safe when an array is first\nassembled.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7b0bb5368a7195606eca475d9f4e291ab7227052",
      "tree": "2c5b9e5269fb585d0386cf931a0d154bee5d875f",
      "parents": [
        "75a73a29e520a6ce982b0da6dd8b7560ae3faa90"
      ],
      "author": {
        "name": "Gabriele A. Trombetti",
        "email": "g.trombetti.lkrnl1213@logicschema.com",
        "time": "Wed Apr 28 11:51:17 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:28:00 2010 +1000"
      },
      "message": "md/raid6: Fix raid-6 read-error correction in degraded state\n\nFix: Raid-6 was not trying to correct a read-error when in\nsingly-degraded state and was instead dropping one more device, going to\ndoubly-degraded state. This patch fixes this behaviour.\n\nTested-by: Janos Haar \u003cjanos.haar@netcenter.hu\u003e\nSigned-off-by: Gabriele A. Trombetti \u003cg.trombetti.lkrnl1213@logicschema.com\u003e\nReported-by: Janos Haar \u003cjanos.haar@netcenter.hu\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "75a73a29e520a6ce982b0da6dd8b7560ae3faa90",
      "tree": "1bcb14b69e2ae7673bf29be6b3f27aee6e896070",
      "parents": [
        "af3a2cd6b8a479345786e7fe5e199ad2f6240e56"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 07 19:44:26 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:28:00 2010 +1000"
      },
      "message": "md: restore ability of spare drives to spin down.\n\nSome time ago we stopped the clean/active metadata updates\nfrom being written to a \u0027spare\u0027 device in most cases so that\nit could spin down and say spun down.  Device failure/removal\netc are still recorded on spares.\n\nHowever commit 51d5668cb2e3fd1827a55 broke this 50% of the time,\ndepending on whether the event count is even or odd.\nThe change log entry said:\n\n   This means that the alignment between \u0027odd/even\u0027 and\n    \u0027clean/dirty\u0027 might take a little longer to attain,\n\nhow ever the code makes no attempt to create that alignment, so it\ncould take arbitrarily long.\n\nSo when we find that clean/dirty is not aligned with odd/even,\nforce a second metadata-update immediately.  There are already cases\nwhere a second metadata-update is needed immediately (e.g. when a\ndevice fails during the metadata update).  We just piggy-back on that.\n\nReported-by: Joe Bryant \u003ctenminjoe@yahoo.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "af3a2cd6b8a479345786e7fe5e199ad2f6240e56",
      "tree": "10690853d80455e69bcc0d027ad6c8b9c7951332",
      "parents": [
        "2dc40f80945ac3e5ec05c3a6c75baf09b13cee51"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat May 08 08:20:17 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:28:00 2010 +1000"
      },
      "message": "md: Fix read balancing in RAID1 and RAID10 on drives \u003e 2TB\n\nread_balance uses a \"unsigned long\" for a sector number which\nwill get truncated beyond 2TB.\nThis will cause read-balancing to be non-optimal, and can cause\ndata to be read from the \u0027wrong\u0027 branch during a resync.  This has a\nvery small chance of returning wrong data.\n\nReported-by: Jordan Russell \u003cjr-list-2010@quo.to\u003e\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2dc40f80945ac3e5ec05c3a6c75baf09b13cee51",
      "tree": "b1f171090517f548e7c17302cef12a77aa9563b9",
      "parents": [
        "b5a20961f3479dda48bdc340354ee5469997839d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 03 15:12:04 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:59 2010 +1000"
      },
      "message": "md/linear: standardise all printk messages\n\n  md/linear:mdname:\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b5a20961f3479dda48bdc340354ee5469997839d",
      "tree": "19eb94b00531621512364a544108016ab533f47d",
      "parents": [
        "128595ed6ff2c7358ae253a560d47a0af463bc99"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 03 15:06:27 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:59 2010 +1000"
      },
      "message": "md/raid0: tidy up printk messages.\n\nAll messages now start\n   md/raid0:md-device-name:\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "128595ed6ff2c7358ae253a560d47a0af463bc99",
      "tree": "6cadab1e71eb7e9881e33fcfd63556364ccd7517",
      "parents": [
        "9dd1e2faf72f79a2af9dcbd059473c06648726c2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 03 14:47:14 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:59 2010 +1000"
      },
      "message": "md/raid10: tidy up printk messages.\n\nAll raid10 printk messages now start\n   md/raid10:md-device-name:\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9dd1e2faf72f79a2af9dcbd059473c06648726c2",
      "tree": "a3b400d49671930f6d6ff0b9d5890e598af7a94f",
      "parents": [
        "0c55e02259115c151e4835dd417cf41467bb02e2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 03 14:30:35 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:59 2010 +1000"
      },
      "message": "md/raid1: improve printk messages\n\nMake sure the array name is included in a uniform way in all printk\nmessages.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0c55e02259115c151e4835dd417cf41467bb02e2",
      "tree": "bcc12cd6c9b2d40b8bc31a4d85cae13103168493",
      "parents": [
        "08fb730ca346ff16598ef31911c88fbca6133bf5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 03 14:09:02 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:58 2010 +1000"
      },
      "message": "md/raid5: improve consistency of error messages.\n\nMany \u0027printk\u0027 messages from the raid456 module mention \u0027raid5\u0027 even\nthough it may be a \u0027raid6\u0027 or even \u0027raid4\u0027 array.  This can cause\nconfusion.\nAlso the actual array name is not always reported and when it is\nit is not reported consistently.\n\nSo change all the messages to start:\n    md/raid:%s:\nwhere \u0027%s\u0027 becomes e.g. md3 to identify the particular array.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "08fb730ca346ff16598ef31911c88fbca6133bf5",
      "tree": "a567e87dc6a13bcc5708e1ed4909738ba9d642db",
      "parents": [
        "f2859af6716ce99cac7f35c5a0c6b7fed346312f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 03 13:16:56 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:58 2010 +1000"
      },
      "message": "md: remove EXPERIMENTAL designation from RAID10\n\nRAID10 has been available for quite a while now and is quite well\ntested, so we can remove the EXPERIMENTAL designation.\n\nReported-by: Eric MSP Veith \u003ceveith@wwweb-library.net\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f2859af6716ce99cac7f35c5a0c6b7fed346312f",
      "tree": "37d1af49ce710098bc35d45c7a9aec6e6f8eb5d9",
      "parents": [
        "bb7f8d2217d8753ab5008c78f16697d9e697d570"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sun May 02 10:04:16 2010 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:58 2010 +1000"
      },
      "message": "md: allow integers to be passed to md/level\n\ne.g. allow md to interpret \u0027echo 4 \u003e md/level\u0027 as a request for raid4.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "bb7f8d2217d8753ab5008c78f16697d9e697d570",
      "tree": "5717c254192b171215bbb8358f68646c3b2e1326",
      "parents": [
        "f1b29bcae116409db5e543622aadab43041c9ae9"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat May 01 18:14:57 2010 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:57 2010 +1000"
      },
      "message": "md: notify mdstat waiters of level change\n\nLevel modifications change the output of mdstat.  The mdmon manager\nthread is interested in these events for external metadata management.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "f1b29bcae116409db5e543622aadab43041c9ae9",
      "tree": "05dff62e747d8f0c91d6bd38ce900c0083dcbc98",
      "parents": [
        "e555190d82c0f58e825e3cbd9e6ebe2e7ac713bd"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat May 01 18:09:05 2010 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:57 2010 +1000"
      },
      "message": "md/raid4: permit raid0 takeover\n\nFor consistency allow raid4 to takeover raid0 in addition to raid5 (with a\nraid4 layout).\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "e555190d82c0f58e825e3cbd9e6ebe2e7ac713bd",
      "tree": "ea9c8e548c4d5eb5fc903bab05af3bda4192ed00",
      "parents": [
        "d754c5ae1ff76b20d3ecde8ad666d7865eada8ae"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Mar 31 11:21:44 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:57 2010 +1000"
      },
      "message": "md/raid1: delay reads that could overtake behind-writes.\n\nWhen a raid1 array is configured to support write-behind\non some devices, it normally only reads from other devices.\nIf all devices are write-behind (because the rest have failed)\nit is possible for a read request to be serviced before a\nbehind-write request, which would appear as data corruption.\n\nSo when forced to read from a WriteMostly device, wait for any\nwrite-behind to complete, and don\u0027t start any more behind-writes.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d754c5ae1ff76b20d3ecde8ad666d7865eada8ae",
      "tree": "60523d76c5e437ea39ce158295d75ea4247f70e1",
      "parents": [
        "9e35b99c7efacfddc748c89a0c53b1122b0ee72c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Apr 07 12:14:43 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:56 2010 +1000"
      },
      "message": "md/raid1: fix confusing \u0027redirect sector\u0027 message.\n\nThis message seems to suggest the named device is the one on which a\nread failed, however it is actually the device that the read will be\nredirected to.\nSo make the message a little clearer.\n\nReported-by: Tim Burgess \u003cozburgess@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n\n"
    }
  ],
  "next": "9e35b99c7efacfddc748c89a0c53b1122b0ee72c"
}
