)]}'
{
  "log": [
    {
      "commit": "b49249d10324d0fd6fb29725c2807dfd80d0edbc",
      "tree": "9a8fa724e6c9f9283530979c6e32a311c74999d5",
      "parents": [
        "10532b560bacf23766f9c7dc09778b31b198ff45",
        "45e621d45e24ffc4cb2b2935e8438987b860063a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 21 17:08:06 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 21 17:08:06 2012 -0800"
      },
      "message": "Merge tag \u0027dm-3.8-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-dm\n\nPull dm update from Alasdair G Kergon:\n \"Miscellaneous device-mapper fixes, cleanups and performance\n  improvements.\n\n  Of particular note:\n   - Disable broken WRITE SAME support in all targets except linear and\n     striped.  Use it when kcopyd is zeroing blocks.\n   - Remove several mempools from targets by moving the data into the\n     bio\u0027s new front_pad area(which dm calls \u0027per_bio_data\u0027).\n   - Fix a race in thin provisioning if discards are misused.\n   - Prevent userspace from interfering with the ioctl parameters and\n     use kmalloc for the data buffer if it\u0027s small instead of vmalloc.\n   - Throttle some annoying error messages when I/O fails.\"\n\n* tag \u0027dm-3.8-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-dm: (36 commits)\n  dm stripe: add WRITE SAME support\n  dm: remove map_info\n  dm snapshot: do not use map_context\n  dm thin: dont use map_context\n  dm raid1: dont use map_context\n  dm flakey: dont use map_context\n  dm raid1: rename read_record to bio_record\n  dm: move target request nr to dm_target_io\n  dm snapshot: use per_bio_data\n  dm verity: use per_bio_data\n  dm raid1: use per_bio_data\n  dm: introduce per_bio_data\n  dm kcopyd: add WRITE SAME support to dm_kcopyd_zero\n  dm linear: add WRITE SAME support\n  dm: add WRITE SAME support\n  dm: prepare to support WRITE SAME\n  dm ioctl: use kmalloc if possible\n  dm ioctl: remove PF_MEMALLOC\n  dm persistent data: improve improve space map block alloc failure message\n  dm thin: use DMERR_LIMIT for errors\n  ...\n"
    },
    {
      "commit": "45e621d45e24ffc4cb2b2935e8438987b860063a",
      "tree": "96c49f06c5bb6b2f6f8d01dc354d59202a7954a5",
      "parents": [
        "7de3ee57da4b717050e79c9313a9bf66ccc72519"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Dec 21 20:23:41 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:41 2012 +0000"
      },
      "message": "dm stripe: add WRITE SAME support\n\nRename stripe_map_discard to stripe_map_range and reuse it for WRITE\nSAME bio processing.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "7de3ee57da4b717050e79c9313a9bf66ccc72519",
      "tree": "dd9bf250c6d9139528e563167cabdb811c8fd6cb",
      "parents": [
        "ee18026ac69efba804144541171299efd41747d2"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Dec 21 20:23:41 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:41 2012 +0000"
      },
      "message": "dm: remove map_info\n\nThis patch removes map_info from bio-based device mapper targets.\nmap_info is still used for request-based targets.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ee18026ac69efba804144541171299efd41747d2",
      "tree": "8e6e9e85114a6b6568b8325aca750428150d4b95",
      "parents": [
        "59c3d2c6a12ff580b2c19c3925af4f4552639f8a"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Dec 21 20:23:41 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:41 2012 +0000"
      },
      "message": "dm snapshot: do not use map_context\n\nEliminate struct map_info from dm-snap.\n\nmap_info-\u003eptr was used in dm-snap to indicate if the bio was tracked.\nIf map_info-\u003eptr was non-NULL, the bio was linked in tracked_chunk_hash.\n\nThis patch removes the use of map_info-\u003eptr. We determine if the bio was\ntracked based on hlist_unhashed(\u0026c-\u003enode). If hlist_unhashed is true,\nthe bio is not tracked, if it is false, the bio is tracked.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "59c3d2c6a12ff580b2c19c3925af4f4552639f8a",
      "tree": "c36bffdac55cf1bed47abd0cb194c2c93aa1815c",
      "parents": [
        "0045d61b5b7470f7228b35e1ab7139119e249503"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Dec 21 20:23:40 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:40 2012 +0000"
      },
      "message": "dm thin: dont use map_context\n\nThis patch removes endio_hook_pool from dm-thin and uses per-bio data instead.\n\nThis patch removes any use of map_info in preparation for the next patch\nthat removes map_info from bio-based device mapper.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "0045d61b5b7470f7228b35e1ab7139119e249503",
      "tree": "d4e0f926484cf243141e83aeda5fd82703fc9151",
      "parents": [
        "c7cfdf5973f644a21ef4a0a0f1aa1f081efc42c1"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Dec 21 20:23:40 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:40 2012 +0000"
      },
      "message": "dm raid1: dont use map_context\n\nDon\u0027t use map_info any more in dm-raid1.\n\nmap_info was used for writes to hold the region number. For this purpose\nwe add a new field dm_bio_details to dm_raid1_bio_record.\n\nmap_info was used for reads to hold a pointer to dm_raid1_bio_record (if\nthe pointer was non-NULL, bio details were saved; if the pointer was\nNULL, bio details were not saved). We use\ndm_raid1_bio_record.details-\u003ebi_bdev for this purpose. If bi_bdev is\nNULL, details were not saved, if bi_bdev is non-NULL, details were\nsaved.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c7cfdf5973f644a21ef4a0a0f1aa1f081efc42c1",
      "tree": "fe9c287cca218170bd244ee688888cd775271f89",
      "parents": [
        "89c7cd8974035f1fbfac5c01e668b2de0733b443"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Dec 21 20:23:39 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:39 2012 +0000"
      },
      "message": "dm flakey: dont use map_context\n\nReplace map_info with a per-bio structure \"struct per_bio_data\" in dm-flakey.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "89c7cd8974035f1fbfac5c01e668b2de0733b443",
      "tree": "124543b8fd1283c35fcf1f3ee456c62c73fff299",
      "parents": [
        "ddbd658f6446a35e4d6ba84812fd71023320cae2"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Dec 21 20:23:39 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:39 2012 +0000"
      },
      "message": "dm raid1: rename read_record to bio_record\n\nRename struct read_record to bio_record in dm-raid1.\n\nIn the following patch, the structure will be used for both read and\nwrite bios, so rename it.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ddbd658f6446a35e4d6ba84812fd71023320cae2",
      "tree": "6c5bf9fd1cab10d20c21eb8582a5cc73f1bccc85",
      "parents": [
        "42bc954f2a4525c9034667dedc9bd1c342208013"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Dec 21 20:23:39 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:39 2012 +0000"
      },
      "message": "dm: move target request nr to dm_target_io\n\nThis patch moves target_request_nr from map_info to dm_target_io and\nmakes it accessible with dm_bio_get_target_request_nr.\n\nThis patch is a preparation for the next patch that removes map_info.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "42bc954f2a4525c9034667dedc9bd1c342208013",
      "tree": "761a324dd360d9f67105c6598a2d62957559acbf",
      "parents": [
        "e42c3f914da79102c54a7002329a086790c15327"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Dec 21 20:23:38 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:38 2012 +0000"
      },
      "message": "dm snapshot: use per_bio_data\n\nReplace tracked_chunk_pool with per_bio_data in dm-snap.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "e42c3f914da79102c54a7002329a086790c15327",
      "tree": "1679b19150c578bc34bc041c203999563c30634c",
      "parents": [
        "39cf0ed27ec70626e416c2f4780ea0449d405941"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Dec 21 20:23:38 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:38 2012 +0000"
      },
      "message": "dm verity: use per_bio_data\n\nReplace io_mempool with per_bio_data in dm-verity.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "39cf0ed27ec70626e416c2f4780ea0449d405941",
      "tree": "3ccd2ada4c4b09e59076304a45e1e267602931f3",
      "parents": [
        "c0820cf5ad09522bdd9ff68e84841a09c9f339d8"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Dec 21 20:23:38 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:38 2012 +0000"
      },
      "message": "dm raid1: use per_bio_data\n\nReplace read_record_pool with per_bio_data in dm-raid1.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c0820cf5ad09522bdd9ff68e84841a09c9f339d8",
      "tree": "04817d6d9a7d213ac96d1e014a9714f8f29ff07a",
      "parents": [
        "70d6c400acc386ea910c77318688541fc32e7ce8"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Dec 21 20:23:38 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:38 2012 +0000"
      },
      "message": "dm: introduce per_bio_data\n\nIntroduce a field per_bio_data_size in struct dm_target.\n\nTargets can set this field in the constructor. If a target sets this\nfield to a non-zero value, \"per_bio_data_size\" bytes of auxiliary data\nare allocated for each bio submitted to the target. These data can be\nused for any purpose by the target and help us improve performance by\nremoving some per-target mempools.\n\nPer-bio data is accessed with dm_per_bio_data. The\nargument data_size must be the same as the value per_bio_data_size in\ndm_target.\n\nIf the target has a pointer to per_bio_data, it can get a pointer to\nthe bio with dm_bio_from_per_bio_data() function (data_size must be the\nsame as the value passed to dm_per_bio_data).\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "70d6c400acc386ea910c77318688541fc32e7ce8",
      "tree": "6ab32a9b9699656c8d9147b38a776f615c1c737a",
      "parents": [
        "4f0b70b0479101522b8645ddc1f5ee7137821db3"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Dec 21 20:23:37 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:37 2012 +0000"
      },
      "message": "dm kcopyd: add WRITE SAME support to dm_kcopyd_zero\n\nAdd WRITE SAME support to dm-io and make it accessible to\ndm_kcopyd_zero().  dm_kcopyd_zero() provides an asynchronous interface\nwhereas the blkdev_issue_write_same() interface is synchronous.\n\nWRITE SAME is a SCSI command that can be leveraged for more efficient\nzeroing of a specified logical extent of a device which supports it.\nOnly a single zeroed logical block is transfered to the target for each\nWRITE SAME and the target then writes that same block across the\nspecified extent.\n\nThe dm thin target uses this.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4f0b70b0479101522b8645ddc1f5ee7137821db3",
      "tree": "b149c9faa420893ec5d35a227d9de5bd8cfde461",
      "parents": [
        "23508a96cd2e857d57044a2ed7d305f2d9daf441"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Dec 21 20:23:37 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:37 2012 +0000"
      },
      "message": "dm linear: add WRITE SAME support\n\nThe linear target can already support WRITE SAME requests so signal\nthis by setting num_write_same_requests to 1.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "23508a96cd2e857d57044a2ed7d305f2d9daf441",
      "tree": "149ead46c45a0fdd159fb32a6bfb6439eae3d652",
      "parents": [
        "d54eaa5a0fde0a202e4e91f200f818edcef15bee"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Dec 21 20:23:37 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:37 2012 +0000"
      },
      "message": "dm: add WRITE SAME support\n\nWRITE SAME bios have a payload that contain a single page.  When\ncloning WRITE SAME bios DM has no need to modify the bi_io_vec\nattributes (and doing so would be detrimental).  DM need only alter the\nstart and end of the WRITE SAME bio accordingly.\n\nRather than duplicate __clone_and_map_discard, factor out a common\nfunction that is also used by __clone_and_map_write_same.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "d54eaa5a0fde0a202e4e91f200f818edcef15bee",
      "tree": "bb40893166dc8cd1d0f84c8087d021b66774a007",
      "parents": [
        "9c5091f2eeeffe5eca2ffe8a1bc28d312c8a5083"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Dec 21 20:23:36 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:36 2012 +0000"
      },
      "message": "dm: prepare to support WRITE SAME\n\nAllow targets to opt in to WRITE SAME support by setting\n\u0027num_write_same_requests\u0027 in the dm_target structure.\n\nA dm device will only advertise WRITE SAME support if all its\ntargets and all its underlying devices support it.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "9c5091f2eeeffe5eca2ffe8a1bc28d312c8a5083",
      "tree": "8452b7ece373cf845bd745ff78750ae325a881d3",
      "parents": [
        "5023e5cf58e1dae904e2e8b5b9779c33512b75a1"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Dec 21 20:23:36 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:36 2012 +0000"
      },
      "message": "dm ioctl: use kmalloc if possible\n\nIf the parameter buffer is small enough, try to allocate it with kmalloc()\nrather than vmalloc().\n\nvmalloc is noticeably slower than kmalloc because it has to manipulate\npage tables.\n\nIn my tests, on PA-RISC this patch speeds up activation 13 times.\nOn Opteron this patch speeds up activation by 5%.\n\nThis patch introduces a new function free_params() to free the\nparameters and this uses new flags that record whether or not vmalloc()\nwas used and whether or not the input buffer must be wiped after use.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5023e5cf58e1dae904e2e8b5b9779c33512b75a1",
      "tree": "4b006347d01a1526a3ee42b5219b90ea9cf4cae7",
      "parents": [
        "7960123f2d335ded2ac4c510bcd2a236b293b1b1"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Dec 21 20:23:36 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:36 2012 +0000"
      },
      "message": "dm ioctl: remove PF_MEMALLOC\n\nWhen allocating memory for the userspace ioctl data, set some\nappropriate GPF flags directly instead of using PF_MEMALLOC.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "7960123f2d335ded2ac4c510bcd2a236b293b1b1",
      "tree": "9a5a925cba57f3ae44d7c7a0a7dafea3d6e33dbf",
      "parents": [
        "c397741c7645de7f2ead1f076f1a40e169875fe3"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Dec 21 20:23:36 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:36 2012 +0000"
      },
      "message": "dm persistent data: improve improve space map block alloc failure message\n\nImprove space map error message when unable to allocate a new\nmetadata block.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c397741c7645de7f2ead1f076f1a40e169875fe3",
      "tree": "dba3e0c8ee01a50fa22f2668c34a0d2ab06dc7ba",
      "parents": [
        "89ddeb8cb1383bfdfaaeb458f1c4a91e890cc60b"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Dec 21 20:23:34 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:34 2012 +0000"
      },
      "message": "dm thin: use DMERR_LIMIT for errors\n\nThrottle all errors logged from the IO path by dm thin.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "89ddeb8cb1383bfdfaaeb458f1c4a91e890cc60b",
      "tree": "6dfbbe972b14927897b6cab55b833b64260d8329",
      "parents": [
        "a5bd968aeb87af4a3a96ecdd78912832997e8a9d"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Dec 21 20:23:34 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:34 2012 +0000"
      },
      "message": "dm persistent data: use DMERR_LIMIT for errors\n\nNearly all of persistent-data is in the IO path so throttle error\nmessages with DMERR_LIMIT to limit the amount logged when\nsomething has gone wrong.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a5bd968aeb87af4a3a96ecdd78912832997e8a9d",
      "tree": "cb12dce916dfdbde42d1cf283d6756590bfd82fb",
      "parents": [
        "3a0f9aaee02857609d79b20c809c02a8b7c39d06"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Dec 21 20:23:34 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:34 2012 +0000"
      },
      "message": "dm block manager: reinstate message when validator fails\n\nReinstate a useful error message when the block manager buffer validator fails.\nThis was mistakenly eliminated when the block manager was converted to use\ndm-bufio.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "3a0f9aaee02857609d79b20c809c02a8b7c39d06",
      "tree": "274ae68dfc2d955bb8f9a771388947e947b359b4",
      "parents": [
        "2aab38502d0e1bf6cf98183769e35a9ff999dcb1"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Dec 21 20:23:33 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:33 2012 +0000"
      },
      "message": "dm raid: round region_size to power of two\n\nIf the user does not supply a bitmap region_size to the dm raid target,\na reasonable size is computed automatically.  If this is not a power of 2,\nthe md code will report an error later.\n\nThis patch catches the problem early and rounds the region_size to the\nnext power of two.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "2aab38502d0e1bf6cf98183769e35a9ff999dcb1",
      "tree": "3836c52183eaee1601060f1ead3c175b4be85ac3",
      "parents": [
        "f286ba0eede3d8f211e6029c2b52f2dbee7d7d35"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Dec 21 20:23:33 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:33 2012 +0000"
      },
      "message": "dm thin: cleanup dead code\n\nRemove unused @data_block parameter from cell_defer.\nChange thin_bio_map to use many returns rather than setting a variable.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f286ba0eede3d8f211e6029c2b52f2dbee7d7d35",
      "tree": "8f21c0973f2d0fb326834a03fb235f2cafd34ec4",
      "parents": [
        "9aa0c0e60ffc2594acaad23127dbea9f3b61821c"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Dec 21 20:23:33 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:33 2012 +0000"
      },
      "message": "dm thin: rename cell_defer_except to cell_defer_no_holder\n\nRename cell_defer_except() to cell_defer_no_holder() which describes\nits function more clearly.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "9aa0c0e60ffc2594acaad23127dbea9f3b61821c",
      "tree": "4464d72c53cc977dea9ddf071ed8d88ee6c312d9",
      "parents": [
        "19cbbc60c680e2e404bf55458ad2c4ff60d16076"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Dec 21 20:23:33 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:33 2012 +0000"
      },
      "message": "dm snapshot: optimize track_chunk\n\ntrack_chunk is always called with interrupts enabled. Consequently, we\ndo not need to save and restore interrupt state in \"flags\" variable.\nThis patch changes spin_lock_irqsave to spin_lock_irq and\nspin_unlock_irqrestore to spin_unlock_irq.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "19cbbc60c680e2e404bf55458ad2c4ff60d16076",
      "tree": "ad95b111e977da491f5f777873a8c7bf79c60c4e",
      "parents": [
        "7c27213b20f060111d5b6fa14bcdbab6588ae351"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Dec 21 20:23:32 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:32 2012 +0000"
      },
      "message": "dm raid: use DM_ENDIO_INCOMPLETE\n\nUse a defined macro DM_ENDIO_INCOMPLETE instead of a numeric constant.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "7c27213b20f060111d5b6fa14bcdbab6588ae351",
      "tree": "2500a6e11d141c83bf6f22df62b93cc015a9ea99",
      "parents": [
        "018debea8de9b8f17a9637e07c98c61517eb2a6b"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Dec 21 20:23:32 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:32 2012 +0000"
      },
      "message": "dm raid1: remove impossible mempool_alloc error test\n\nmempool_alloc can\u0027t fail if __GFP_WAIT is specified, so the condition\nthat tests if read_record is non-NULL is always true.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "018debea8de9b8f17a9637e07c98c61517eb2a6b",
      "tree": "80fa9a7e9b79e09e31081db699d1ad449cb7f46a",
      "parents": [
        "e3cbf94513c21516fbb44561857b155d1c599625"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Dec 21 20:23:32 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:32 2012 +0000"
      },
      "message": "dm thin: emit ignore_discard in status when discards disabled\n\nIf \"ignore_discard\" is specified when creating the thin pool device then\ndiscard support is disabled for that device.  The pool device\u0027s status\nshould reflect this fact rather than stating \"no_discard_passdown\"\n(which implies discards are enabled but passdown is disabled).\n\nReported-by: Zdenek Kabelac \u003czkabelac@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "e3cbf94513c21516fbb44561857b155d1c599625",
      "tree": "fbcfb3427b34d8469e404d5b8f63c4dc9c0f98c8",
      "parents": [
        "563af186df08002d2600c4e718ad8f3bde109f53"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Dec 21 20:23:32 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:32 2012 +0000"
      },
      "message": "dm persistent data: fix nested btree deletion\n\nWhen deleting nested btrees, the code forgets to delete the innermost\nbtree.  The thin-metadata code serendipitously compensates for this by\nclaiming there is one extra layer in the tree.\n\nThis patch corrects both problems.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "563af186df08002d2600c4e718ad8f3bde109f53",
      "tree": "e8ba7cf56e84a1aacb77d41499387c89bf58cce6",
      "parents": [
        "e8088073c9610af017fd47fddd104a2c3afb32e8"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Dec 21 20:23:31 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:31 2012 +0000"
      },
      "message": "dm thin: wake worker when discard is prepared\n\nWhen discards are prepared it is best to directly wake the worker that\nwill process them.  The worker will be woken anyway, via periodic\ncommit, but there is no reason to not wake_worker here.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "e8088073c9610af017fd47fddd104a2c3afb32e8",
      "tree": "4478742b0e876536f20031faaaeebe5b2bfc135a",
      "parents": [
        "b7ca9c9273e5eebd63880dd8a6e4e5c18fc7901d"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Dec 21 20:23:31 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:31 2012 +0000"
      },
      "message": "dm thin: fix race between simultaneous io and discards to same block\n\nThere is a race when discard bios and non-discard bios are issued\nsimultaneously to the same block.\n\nDiscard support is expensive for all thin devices precisely because you\nhave to be careful to quiesce the area you\u0027re discarding.  DM thin must\nhandle this conflicting IO pattern (simultaneous non-discard vs discard)\neven though a sane application shouldn\u0027t be issuing such IO.\n\nThe race manifests as follows:\n\n1. A non-discard bio is mapped in thin_bio_map.\n   This doesn\u0027t lock out parallel activity to the same block.\n\n2. A discard bio is issued to the same block as the non-discard bio.\n\n3. The discard bio is locked in a dm_bio_prison_cell in process_discard\n   to lock out parallel activity against the same block.\n\n4. The non-discard bio\u0027s mapping continues and its all_io_entry is\n   incremented so the bio is accounted for in the thin pool\u0027s all_io_ds\n   which is a dm_deferred_set used to track time locality of non-discard IO.\n\n5. The non-discard bio is finally locked in a dm_bio_prison_cell in\n   process_bio.\n\nThe race can result in deadlock, leaving the block layer hanging waiting\nfor completion of a discard bio that never completes, e.g.:\n\nINFO: task ruby:15354 blocked for more than 120 seconds.\n\"echo 0 \u003e /proc/sys/kernel/hung_task_timeout_secs\" disables this message.\nruby            D ffffffff8160f0e0     0 15354  15314 0x00000000\n ffff8802fb08bc58 0000000000000082 ffff8802fb08bfd8 0000000000012900\n ffff8802fb08a010 0000000000012900 0000000000012900 0000000000012900\n ffff8802fb08bfd8 0000000000012900 ffff8803324b9480 ffff88032c6f14c0\nCall Trace:\n [\u003cffffffff814e5a19\u003e] schedule+0x29/0x70\n [\u003cffffffff814e3d85\u003e] schedule_timeout+0x195/0x220\n [\u003cffffffffa06b9bc1\u003e] ? _dm_request+0x111/0x160 [dm_mod]\n [\u003cffffffff814e589e\u003e] wait_for_common+0x11e/0x190\n [\u003cffffffff8107a170\u003e] ? try_to_wake_up+0x2b0/0x2b0\n [\u003cffffffff814e59ed\u003e] wait_for_completion+0x1d/0x20\n [\u003cffffffff81233289\u003e] blkdev_issue_discard+0x219/0x260\n [\u003cffffffff81233e79\u003e] blkdev_ioctl+0x6e9/0x7b0\n [\u003cffffffff8119a65c\u003e] block_ioctl+0x3c/0x40\n [\u003cffffffff8117539c\u003e] do_vfs_ioctl+0x8c/0x340\n [\u003cffffffff8119a547\u003e] ? block_llseek+0x67/0xb0\n [\u003cffffffff811756f1\u003e] sys_ioctl+0xa1/0xb0\n [\u003cffffffff810561f6\u003e] ? sys_rt_sigprocmask+0x86/0xd0\n [\u003cffffffff814ef099\u003e] system_call_fastpath+0x16/0x1b\n\nThe thinp-test-suite\u0027s test_discard_random_sectors reliably hits this\ndeadlock on fast SSD storage.\n\nThe fix for this race is that the all_io_entry for a bio must be\nincremented whilst the dm_bio_prison_cell is held for the bio\u0027s\nassociated virtual and physical blocks.  That cell locking wasn\u0027t\noccurring early enough in thin_bio_map.  This patch fixes this.\n\nCare is taken to always call the new function inc_all_io_entry() with\nthe relevant cells locked, but they are generally unlocked before\ncalling issue() to try to avoid holding the cells locked across\ngeneric_submit_request.\n\nAlso, now that thin_bio_map may lock bios in a cell, process_bio() is no\nlonger the only thread that will do so.  Because of this we must be sure\nto use cell_defer_except() to release all non-holder entries, that\nwere added by the other thread, because they must be deferred.\n\nThis patch depends on \"dm thin: replace dm_cell_release_singleton with\ncell_defer_except\".\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "b7ca9c9273e5eebd63880dd8a6e4e5c18fc7901d",
      "tree": "8022d8d5f6f03d80896407562b48c554a8cbfa6f",
      "parents": [
        "c1a94672a830e01d58c7c7e8de530c3f136d6ff2"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Dec 21 20:23:31 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:31 2012 +0000"
      },
      "message": "dm thin: replace dm_cell_release_singleton with cell_defer_except\n\nChange existing users of the function dm_cell_release_singleton to share\ncell_defer_except instead, and then remove the now-unused function.\n\nEverywhere that calls dm_cell_release_singleton, the bio in question\nis the holder of the cell.\n\nIf there are no non-holder entries in the cell then cell_defer_except\nbehaves exactly like dm_cell_release_singleton.  Conversely, if there\n*are* non-holder entries then dm_cell_release_singleton must not be used\nbecause those entries would need to be deferred.\n\nConsequently, it is safe to replace use of dm_cell_release_singleton\nwith cell_defer_except.\n\nThis patch is a pre-requisite for \"dm thin: fix race between\nsimultaneous io and discards to same block\".\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c1a94672a830e01d58c7c7e8de530c3f136d6ff2",
      "tree": "00f9fa087a3bbae3fe55bda80f6b222512eea51a",
      "parents": [
        "e910d7ebecd1aac43125944a8641b6cb1a0dfabe"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Dec 21 20:23:30 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:30 2012 +0000"
      },
      "message": "dm: disable WRITE SAME\n\nWRITE SAME bios are not yet handled correctly by device-mapper so\ndisable their use on device-mapper devices by setting\nmax_write_same_sectors to zero.\n\nAs an example, a ciphertext device is incompatible because the data\ngets changed according to the location at which it written and so the\ndm crypt target cannot support it.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@vger.kernel.org\nCc: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "e910d7ebecd1aac43125944a8641b6cb1a0dfabe",
      "tree": "25d1565c4aec693a4a20d714d128637eb94f2cb9",
      "parents": [
        "550929faf89e2e2cdb3e9945ea87d383989274cf"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:30 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:30 2012 +0000"
      },
      "message": "dm ioctl: prevent unsafe change to dm_ioctl data_size\n\nAbort dm ioctl processing if userspace changes the data_size parameter\nafter we validated it but before we finished copying the data buffer\nfrom userspace.\n\nThe dm ioctl parameters are processed in the following sequence:\n 1. ctl_ioctl() calls copy_params();\n 2. copy_params() makes a first copy of the fixed-sized portion of the\n    userspace parameters into the local variable \"tmp\";\n 3. copy_params() then validates tmp.data_size and allocates a new\n    structure big enough to hold the complete data and copies the whole\n    userspace buffer there;\n 4. ctl_ioctl() reads userspace data the second time and copies the whole\n    buffer into the pointer \"param\";\n 5. ctl_ioctl() reads param-\u003edata_size without any validation and stores it\n    in the variable \"input_param_size\";\n 6. \"input_param_size\" is further used as the authoritative size of the\n    kernel buffer.\n\nThe problem is that userspace code could change the contents of user\nmemory between steps 2 and 4.  In particular, the data_size parameter\ncan be changed to an invalid value after the kernel has validated it.\nThis lets userspace force the kernel to access invalid kernel memory.\n\nThe fix is to ensure that the size has not changed at step 4.\n\nThis patch shouldn\u0027t have a security impact because CAP_SYS_ADMIN is\nrequired to run this code, but it should be fixed anyway.\n\nReported-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "550929faf89e2e2cdb3e9945ea87d383989274cf",
      "tree": "f6ca310fe3955cb2a2925391e7fd4c6191fbd373",
      "parents": [
        "29594404d7fe73cd80eaa4ee8c43dcc53970c60e"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Dec 21 20:23:30 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Dec 21 20:23:30 2012 +0000"
      },
      "message": "dm persistent data: rename node to btree_node\n\nThis patch fixes a compilation failure on sparc32 by renaming struct node.\n\nstruct node is already defined in include/linux/node.h. On sparc32, it\nhappens to be included through other dependencies and persistent-data\ndoesn\u0027t compile because of conflicting declarations.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ea88eeac0cb8328014b53d80ca631e8dc0dc18dc",
      "tree": "de605c1d0e7ab1e342eedad47c56061b65a6b790",
      "parents": [
        "848b81415c42ff3dc9a4204749087b015c37ef66",
        "a9add5d92b64ea57fb4c3b557c3891cdeb15fa0c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 09:32:44 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 09:32:44 2012 -0800"
      },
      "message": "Merge tag \u0027md-3.8\u0027 of git://neil.brown.name/md\n\nPull md update from Neil Brown:\n \"Mostly just little fixes.  Probably biggest part is AVX accelerated\n  RAID6 calculations.\"\n\n* tag \u0027md-3.8\u0027 of git://neil.brown.name/md:\n  md/raid5: add blktrace calls\n  md/raid5: use async_tx_quiesce() instead of open-coding it.\n  md: Use -\u003ecurr_resync as last completed request when cleanly aborting resync.\n  lib/raid6: build proper files on corresponding arch\n  lib/raid6: Add AVX2 optimized gen_syndrome functions\n  lib/raid6: Add AVX2 optimized recovery functions\n  md: Update checkpoint of resync/recovery based on time.\n  md:Add place to update -\u003erecovery_cp.\n  md.c: re-indent various \u0027switch\u0027 statements.\n  md: close race between removing and adding a device.\n  md: removed unused variable in calc_sb_1_csm.\n"
    },
    {
      "commit": "a9add5d92b64ea57fb4c3b557c3891cdeb15fa0c",
      "tree": "d025f0fbba2389550acadc4489c3c9c59cd12d97",
      "parents": [
        "749586b7d34df910118bff2c248d08877d772e81"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 31 11:59:09 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Dec 18 10:22:21 2012 +1100"
      },
      "message": "md/raid5: add blktrace calls\n\nThis makes it easier to trace what raid5 is doing.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9228ff90387e276ad67b10c0eb525c9d6a57d5e9",
      "tree": "e7c87b68daba7cf7ca4c342c6b52165bd78fbe16",
      "parents": [
        "9360b53661a2c7754517b2925580055bacc8ec38",
        "d2ec180c23a5a1bfe34d8638b0342a47c00cf70f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 13:39:11 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 13:39:11 2012 -0800"
      },
      "message": "Merge branch \u0027for-3.8/drivers\u0027 of git://git.kernel.dk/linux-block\n\nPull block driver update from Jens Axboe:\n \"Now that the core bits are in, here are the driver bits for 3.8.  The\n  branch contains:\n\n   - A huge pile of drbd bits that were dumped from the 3.7 merge\n     window.  Following that, it was both made perfectly clear that\n     there is going to be no more over-the-wall pulls and how the\n     situation on individual pulls can be improved.\n\n   - A few cleanups from Akinobu Mita for drbd and cciss.\n\n   - Queue improvement for loop from Lukas.  This grew into adding a\n     generic interface for waiting/checking an even with a specific\n     lock, allowing this to be pulled out of md and now loop and drbd is\n     also using it.\n\n   - A few fixes for xen back/front block driver from Roger Pau Monne.\n\n   - Partition improvements from Stephen Warren, allowing partiion UUID\n     to be used as an identifier.\"\n\n* \u0027for-3.8/drivers\u0027 of git://git.kernel.dk/linux-block: (609 commits)\n  drbd: update Kconfig to match current dependencies\n  drbd: Fix drbdsetup wait-connect, wait-sync etc... commands\n  drbd: close race between drbd_set_role and drbd_connect\n  drbd: respect no-md-barriers setting also when changed online via disk-options\n  drbd: Remove obsolete check\n  drbd: fixup after wait_even_lock_irq() addition to generic code\n  loop: Limit the number of requests in the bio list\n  wait: add wait_event_lock_irq() interface\n  xen-blkfront: free allocated page\n  xen-blkback: move free persistent grants code\n  block: partition: msdos: provide UUIDs for partitions\n  init: reduce PARTUUID min length to 1 from 36\n  block: store partition_meta_info.uuid as a string\n  cciss: use check_signature()\n  cciss: cleanup bitops usage\n  drbd: use copy_highpage\n  drbd: if the replication link breaks during handshake, keep retrying\n  drbd: check return of kmalloc in receive_uuids\n  drbd: Broadcast sync progress no more often than once per second\n  drbd: don\u0027t try to clear bits once the disk has failed\n  ...\n"
    },
    {
      "commit": "a2013a13e68354e0c8f3696b69701803e13fb737",
      "tree": "a7e1da6bfad1aa2afd83f401874d606269ce90b4",
      "parents": [
        "dadfab4873256d2145640c0ce468fcbfb48977fe",
        "106f9d9337f65bd428c0c79f650e3489e458d771"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 13 12:00:02 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 13 12:00:02 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\nPull trivial branch from Jiri Kosina:\n \"Usual stuff -- comment/printk typo fixes, documentation updates, dead\n  code elimination.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (39 commits)\n  HOWTO: fix double words typo\n  x86 mtrr: fix comment typo in mtrr_bp_init\n  propagate name change to comments in kernel source\n  doc: Update the name of profiling based on sysfs\n  treewide: Fix typos in various drivers\n  treewide: Fix typos in various Kconfig\n  wireless: mwifiex: Fix typo in wireless/mwifiex driver\n  messages: i2o: Fix typo in messages/i2o\n  scripts/kernel-doc: check that non-void fcts describe their return value\n  Kernel-doc: Convention: Use a \"Return\" section to describe return values\n  radeon: Fix typo and copy/paste error in comments\n  doc: Remove unnecessary declarations from Documentation/accounting/getdelays.c\n  various: Fix spelling of \"asynchronous\" in comments.\n  Fix misspellings of \"whether\" in comments.\n  eisa: Fix spelling of \"asynchronous\".\n  various: Fix spelling of \"registered\" in comments.\n  doc: fix quite a few typos within Documentation\n  target: iscsi: fix comment typos in target/iscsi drivers\n  treewide: fix typo of \"suport\" in various comments and Kconfig\n  treewide: fix typo of \"suppport\" in various comments\n  ...\n"
    },
    {
      "commit": "749586b7d34df910118bff2c248d08877d772e81",
      "tree": "2785d1a7601ff4d717545b43ab60c32b45d683ba",
      "parents": [
        "0a19caabf01ac138bf3668786939e50ea4d9c8ac"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 20 14:11:15 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 13 19:52:32 2012 +1100"
      },
      "message": "md/raid5: use async_tx_quiesce() instead of open-coding it.\n\nhandle_stripe_expansion contains:\n\n        if (tx) {\n                async_tx_ack(tx);\n                dma_wait_for_async_tx(tx);\n        }\n\nwhich is very similar to the body of async_tx_quiesce(),\nexcept that the later handles an error from dma_wait_for_async_tx()\n(admittedly by panicing, but that decision belongs in the dma\ncode, not the md code).\n\nSo just us async_tx_quiesce().\n\nAcked-by: Dan Williams \u003cdjbw@fb.com\u003e\nReported-by: Bartlomiej Zolnierkiewicz \u003cb.zolnierkie@samsung.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n\n"
    },
    {
      "commit": "0a19caabf01ac138bf3668786939e50ea4d9c8ac",
      "tree": "dc672faa83d44dbbb8097b367a35ce1cfba9c90f",
      "parents": [
        "4f8c55c5ad491dbc7b52ce08bb702ca39ce944cf"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Mon Nov 19 19:57:34 2012 +0800"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 13 19:52:11 2012 +1100"
      },
      "message": "md: Use -\u003ecurr_resync as last completed request when cleanly aborting resync.\n\nIf a resync is aborted cleanly, -\u003ecurr_resync is a reliable\nrecord of where we got up to.\nIf there was an error it is less reliable but we always know that\n-\u003ecurr_resync_completed is safe.\n\nSo add a flag MD_RECOVERY_ERROR to differentiate between these cases\nand set recovery_cp accordingly.\n\nSigned-off-by: Jianpeng Ma \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "54f89341e8b8da0cdac8a7b873491739de19f098",
      "tree": "360f937ada4613db9772ef1a28f9503cb4457169",
      "parents": [
        "35d78c66969fbbb51046e9f251849cf54e9ed88c"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Wed Oct 31 11:59:10 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 13 16:41:40 2012 +1100"
      },
      "message": "md: Update checkpoint of resync/recovery based on time.\n\nmd will current only only checkpoint recovery or resync ever 1/16th\nof the device size.  As devices get larger this can become a long time\nan so a lot of work that might need to be duplicated after a shutdown.\n\nSo add a time-based checkpoint.  Every 5 minutes limits the amount of\nduplicated effort to at most 5 minutes, and has almost zero impact on\nperformance.\n\n[changelog entry re-written by NeilBrown]\n\nSigned-off-by: Jianpeng Ma \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "35d78c66969fbbb51046e9f251849cf54e9ed88c",
      "tree": "283ad99a530bc52d81487f1b188837d011124c87",
      "parents": [
        "c02c0aeb6c728e5ad705dba86784bd553cb6f059"
      ],
      "author": {
        "name": "kernelmail",
        "email": "kedacomkernel@gmail.com",
        "time": "Wed Oct 31 11:59:10 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 13 16:41:01 2012 +1100"
      },
      "message": "md:Add place to update -\u003erecovery_cp.\n\nIn resyncing, recovery_cp only updated when resync aborted or completed.\nBut in md drives,many place used it to judge.So add a place to update.\n\nSigned-off-by: Jianpeng Ma \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c02c0aeb6c728e5ad705dba86784bd553cb6f059",
      "tree": "35984ce2a006118d687448de64e17624d5ef29b0",
      "parents": [
        "a7a3f08dc24690ae00c75cfe4b4701a970dd0155"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Dec 11 13:39:21 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Dec 11 13:39:21 2012 +1100"
      },
      "message": "md.c: re-indent various \u0027switch\u0027 statements.\n\nIntent was unnecessarily deep.\n\nAlso change one \u0027switch\u0027 which has a single case element, into an\n\u0027if\u0027.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a7a3f08dc24690ae00c75cfe4b4701a970dd0155",
      "tree": "bc9174cc50feba550a33148e661dc57ac37950dd",
      "parents": [
        "1f3c9907b8037de7b9635b0b471572ea8758bcd1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Dec 11 13:35:54 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Dec 11 13:35:54 2012 +1100"
      },
      "message": "md: close race between removing and adding a device.\n\nWhen we remove a device from an md array, the final removal of\nthe \"dev-XX\" sys entry is run asynchronously.\nIf we then re-add that device immediately before the worker thread\ngets to run, we can end up trying to add the \"dev-XX\" sysfs entry back\nbefore it has been removed.\n\nSo in both places where we add a device, call\n  flush_workqueue(md_misc_wq);\nbefore taking the md lock (as holding the md lock can prevent removal\nto complete).\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1f3c9907b8037de7b9635b0b471572ea8758bcd1",
      "tree": "a316efed038ec0f22aa8ad7bfc35d11dec4acde0",
      "parents": [
        "874807a83139abc094f939e93623c5623573d543"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Dec 11 13:09:00 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Dec 11 13:09:00 2012 +1100"
      },
      "message": "md: removed unused variable in calc_sb_1_csm.\n\n\u0027i\u0027 is unused.\n\nNeilBrown \u003cneilb@suse.de\u003e\n\n"
    },
    {
      "commit": "4ccc804586c9ad1622687a24223c6ad2955759cc",
      "tree": "4cb881b7dcd3b63b53756b8d7362c835d1c312f1",
      "parents": [
        "9d73fc2d641f8831c9dc803177fe47c02120cc36",
        "874807a83139abc094f939e93623c5623573d543"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Dec 02 16:24:31 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Dec 02 16:24:31 2012 -0800"
      },
      "message": "Merge tag \u0027md-3.7-fixes\u0027 of git://neil.brown.name/md\n\nPull md bugfix from NeilBrown:\n \"Single bugfix for raid1/raid10.\n\n  Fixes a recently introduced deadlock.\"\n\n* tag \u0027md-3.7-fixes\u0027 of git://neil.brown.name/md:\n  md/raid1{,0}: fix deadlock in bitmap_unplug.\n"
    },
    {
      "commit": "eed8c02e680c04cd737e0a9cef74e68d8eb0cefa",
      "tree": "8bd2bd10b0c02bb8a579ca3fd4f1482e5335c747",
      "parents": [
        "d33b98fc82b0908e91fb05ae081acaed7323f9d2"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Fri Nov 30 11:42:40 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Nov 30 11:47:57 2012 +0100"
      },
      "message": "wait: add wait_event_lock_irq() interface\n\nNew wait_event{_interruptible}_lock_irq{_cmd} macros added. This commit\nmoves the private wait_event_lock_irq() macro from MD to regular wait\nincludes, introduces new macro wait_event_lock_irq_cmd() instead of using\nthe old method with omitting cmd parameter which is ugly and makes a use\nof new macros in the MD. It also introduces the _interruptible_ variant.\n\nThe use of new interface is when one have a special lock to protect data\nstructures used in the condition, or one also needs to invoke \"cmd\"\nbefore putting it to sleep.\n\nAll new macros are expected to be called with the lock taken. The lock\nis released before sleep and is reacquired afterwards. We will leave the\nmacro with the lock held.\n\nNote to DM: IMO this should also fix theoretical race on waitqueue while\nusing simultaneously wait_event_lock_irq() and wait_event() because of\nlack of locking around current state setting and wait queue removal.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "874807a83139abc094f939e93623c5623573d543",
      "tree": "c36b108b47272d31cbe906cb4267829c02e9c121",
      "parents": [
        "884162df2aadd7414bef4935e1a54976fd4e3988"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 27 12:14:40 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 27 12:14:40 2012 +1100"
      },
      "message": "md/raid1{,0}: fix deadlock in bitmap_unplug.\n\nIf the raid1 or raid10 unplug function gets called\nfrom a make_request function (which is very possible) when\nthere are bios on the current-\u003ebio_list list, then it will not\nbe able to successfully call bitmap_unplug() and it could\nneed to submit more bios and wait for them to complete.\nBut they won\u0027t complete while current-\u003ebio_list is non-empty.\n\nSo detect that case and handle the unplugging off to another thread\njust like we already do when called from within the scheduler.\n\nRAID1 version of bug was introduced in 3.6, so that part of fix is\nsuitable for 3.6.y.  RAID10 part won\u0027t apply.\n\nCc: stable@vger.kernel.org\nReported-by: Torsten Kaiser \u003cjust.for.lkml@googlemail.com\u003e\nReported-by: Peter Maloney \u003cpeter.maloney@brockmann-consult.de\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1d838d70fb867b155ee380b37d556893a7313ed2",
      "tree": "bf7d99d096864151791ef70066448d0cd51ecd23",
      "parents": [
        "a8946afe5a3519bf4fd84d87f94c92d49f2f13d8",
        "884162df2aadd7414bef4935e1a54976fd4e3988"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 23 12:11:13 2012 -1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 23 12:11:13 2012 -1000"
      },
      "message": "Merge tag \u0027md-3.7-fixes\u0027 of git://neil.brown.name/md\n\nPull md fixes from NeilBrown:\n \"Several bug fixes for md in 3.7:\n\n   - raid5 discard has problems\n   - raid10 replacement devices have problems\n   - bad block lock seqlock usage has problems\n   - dm-raid doesn\u0027t free everything\"\n\n* tag \u0027md-3.7-fixes\u0027 of git://neil.brown.name/md:\n  md/raid10: decrement correct pending counter when writing to replacement.\n  md/raid10: close race that lose writes lost when replacement completes.\n  md/raid5: Make sure we clear R5_Discard when discard is finished.\n  md/raid5: move resolving of reconstruct_state earlier in stripe_handle.\n  md/raid5: round discard alignment up to power of 2.\n  md: make sure everything is freed when dm-raid stops an array.\n  md: Avoid write invalid address if read_seqretry returned true.\n  md: Reassigned the parameters if read_seqretry returned true in func md_is_badblock.\n"
    },
    {
      "commit": "a8c32a5c98943d370ea606a2e7dc04717eb92206",
      "tree": "234dc265f7af235e1360da7d6e862abacd2f32c0",
      "parents": [
        "eac7cc52c6b410e542af431b2ee93f3d7dbfb6af"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Nov 06 12:24:26 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Nov 23 14:32:54 2012 +0100"
      },
      "message": "dm: fix deadlock with request based dm and queue request_fn recursion\n\nRequest based dm attempts to re-run the request queue off the\nrequest completion path. If used with a driver that potentially does\nend_io from its request_fn, we could deadlock trying to recurse\nback into request dispatch. Fix this by punting the request queue\nrun to kblockd.\n\nTested to fix a quickly reproducible deadlock in such a scenario.\n\nCc: stable@kernel.org\nAcked-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "884162df2aadd7414bef4935e1a54976fd4e3988",
      "tree": "e562edba9a947346b124e9583de9d20f41c7f8c5",
      "parents": [
        "e7c0c3fa29280d62aa5e11101a674bb3064bd791"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 22 15:12:09 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 22 15:12:42 2012 +1100"
      },
      "message": "md/raid10: decrement correct pending counter when writing to replacement.\n\nWhen a write to a replacement device completes, we carefully\nand correctly found the rdev that the write actually went to\nand the blithely called rdev_dec_pending on the primary rdev,\neven if this write was to the replacement.\n\nThis means that any writes to an array while a replacement\nwas ongoing would cause the nr_pending count for the primary\ndevice to go negative, so it could never be removed.\n\nThis bug has been present since replacement was introduced in\n3.3, so it is suitable for any -stable kernel since then.\n\nReported-by: \"George Spelvin\" \u003clinux@horizon.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e7c0c3fa29280d62aa5e11101a674bb3064bd791",
      "tree": "eb897529fb562a99e56fe29934f141f68c906af3",
      "parents": [
        "ca64cae96037de16e4af92678814f5d4bf0c1c65"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 22 14:42:49 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 22 15:12:36 2012 +1100"
      },
      "message": "md/raid10: close race that lose writes lost when replacement completes.\n\nWhen a replacement operation completes there is a small window\nwhen the original device is marked \u0027faulty\u0027 and the replacement\nstill looks like a replacement.  The faulty should be removed and\nthe replacement moved in place very quickly, bit it isn\u0027t instant.\n\nSo the code write out to the array must handle the possibility that\nthe only working device for some slot in the replacement - but it\ndoesn\u0027t.  If the primary device is faulty it just gives up.  This\ncan lead to corruption.\n\nSo make the code more robust: if either  the primary or the\nreplacement is present and working, write to them.  Only when\nneither are present do we give up.\n\nThis bug has been present since replacement was introduced in\n3.3, so it is suitable for any -stable kernel since then.\n\nReported-by: \"George Spelvin\" \u003clinux@horizon.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ca64cae96037de16e4af92678814f5d4bf0c1c65",
      "tree": "b789332f018682bbab38981d3bd95b8a0129f5e9",
      "parents": [
        "ef5b7c69b7a1b8b8744a6168b6ff02900f81b6ca"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Nov 21 16:33:40 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 22 09:14:13 2012 +1100"
      },
      "message": "md/raid5: Make sure we clear R5_Discard when discard is finished.\n\ncommit 9e44476851e91c86c98eb92b9bc27fb801f89072\n    MD: raid5 avoid unnecessary zero page for trim\n\nchange raid5 to clear R5_Discard when the complete request is\nhandled rather than when submitting the per-device discard request.\nHowever it did not clear R5_Discard for the parity device.\n\nThis means that if the stripe_head was reused before it expired from\nthe cache, the setting would be wrong and a hang would result.\n\nAlso if the R5_Uptodate bit happens to be set, R5_Discard again\nwon\u0027t be cleared.  But R5_Uptodate really should be clear at this point.\n\nSo make sure R5_Discard is cleared in all cases, and clear\nR5_Uptodate when a \u0027discard\u0027 completes.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ef5b7c69b7a1b8b8744a6168b6ff02900f81b6ca",
      "tree": "e1be4e404f7a60002ed447cf017f90c3e23b4565",
      "parents": [
        "4ac6875eeb97a49bad7bc8d56b5ec935904fc6e7"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 22 09:13:36 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 22 09:14:09 2012 +1100"
      },
      "message": "md/raid5: move resolving of reconstruct_state earlier in\nstripe_handle.\n\nThe chunk of code in stripe_handle which responds to a\n*_result value in reconstruct_state is really the completion\nof some processing that happened outside of handle_stripe\n(possibly asynchronously) and so should be one of the first\nthings done in handle_stripe().\n\nAfter the next patch it will be important that it happens before\nhandle_stripe_clean_event(), as that will clear some dev-\u003eflags\nbit that this code tests.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4ac6875eeb97a49bad7bc8d56b5ec935904fc6e7",
      "tree": "3443bf90a75f43f118487bcb822ff5e511ee3e3b",
      "parents": [
        "5eff3c439d3478ba9e8ba5f8c0aaf6e6fadb6e58"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Nov 19 13:11:26 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 20 19:42:56 2012 +1100"
      },
      "message": "md/raid5: round discard alignment up to power of 2.\n\nblkdev_issue_discard currently assumes that the granularity\nis a power of 2.  So in raid5, round the chosen number up to\navoid embarrassment.\n\nCc: Shaohua Li \u003cshli@kernel.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5eff3c439d3478ba9e8ba5f8c0aaf6e6fadb6e58",
      "tree": "4e60271793978e8ee07f73360a2044a33a8d91de",
      "parents": [
        "35f9ac2dcec8f79d7059ce174fd7b7ee3290d620"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Nov 19 10:47:48 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 20 10:27:37 2012 +1100"
      },
      "message": "md: make sure everything is freed when dm-raid stops an array.\n\nmd_stop() would stop an array, but not free various attached\ndata structures.\nFor internal arrays, these are freed later in do_md_stop() or\nmddev_put(), but they don\u0027t apply for dm-raid arrays.\nSo get md_stop() to free them, and only all it from dm-raid.\nFor internal arrays we now call __md_stop.\n\nReported-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "35f9ac2dcec8f79d7059ce174fd7b7ee3290d620",
      "tree": "0192c0d2874221bf8672e278c86fd0239cb32b08",
      "parents": [
        "ab05613a0646dcc11049692d54bae76ca9ffa910"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Thu Nov 08 08:56:27 2012 +0800"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 20 10:27:17 2012 +1100"
      },
      "message": "md: Avoid write invalid address if read_seqretry returned true.\n\nIf read_seqretry returned true and bbp was changed, it will write\ninvalid address which can cause some serious problem.\n\nThis bug was introduced by commit v3.0-rc7-130-g2699b67.\nSo fix is suitable for 3.0.y thru 3.6.y.\n\nReported-by: zhuwenfeng@kedacom.com\nTested-by: zhuwenfeng@kedacom.com\nCc: stable@vger.kernel.org\nSigned-off-by: Jianpeng Ma \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ab05613a0646dcc11049692d54bae76ca9ffa910",
      "tree": "1d1cfb2cef6d0092c0ef88558b694f58298c31f5",
      "parents": [
        "ed30be077e705e0dff53bfc51d23feb8aeeab78f"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Tue Nov 06 17:13:44 2012 +0800"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 20 10:27:05 2012 +1100"
      },
      "message": "md: Reassigned the parameters if read_seqretry returned true in func md_is_badblock.\n\nThis bug was introduced by commit(v3.0-rc7-126-g2230dfe).\nSo fix is suitable for 3.0.y thru 3.6.y.\n\nCc: stable@vger.kernel.org\nSigned-off-by: Jianpeng Ma \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ed30be077e705e0dff53bfc51d23feb8aeeab78f",
      "tree": "bd57d2636bbe5d757549fc6dde8d2b93643bb4f2",
      "parents": [
        "02b898f2f04e418094f0093a3ad0b415bcdbe8eb"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Wed Oct 31 11:42:30 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 31 11:42:30 2012 +1100"
      },
      "message": "MD RAID10: Fix oops when creating RAID10 arrays via dm-raid.c\n\nCommit 2863b9eb didn\u0027t take into account the changes to add TRIM support to\nRAID10 (commit 532a2a3fb).  That is, when using dm-raid.c to create the\nRAID10 arrays, there is no mddev-\u003egendisk or mddev-\u003equeue.  The code added\nto support TRIM simply assumes that mddev-\u003equeue is available without\nchecking.  The result is an oops any time dm-raid.c attempts to create a\nRAID10 device.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "02b898f2f04e418094f0093a3ad0b415bcdbe8eb",
      "tree": "d66e05604b227e9b952db28fd796013a5cf22515",
      "parents": [
        "0be1fecd7ee61b5a6d2b2e94b052b8a070b946ef"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 31 11:42:03 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 31 11:42:03 2012 +1100"
      },
      "message": "md/raid1: Fix assembling of arrays containing Replacements.\n\nsetup_conf in raid1.c uses conf-\u003eraid_disks before assigning\na value.  It is used when including \u0027Replacement\u0027 devices.\n\nThe consequence is that assembling an array which contains a\nreplacement will misbehave and either not include the replacement, or\nnot include the device being replaced.\n\nThough this doesn\u0027t lead directly to data corruption, it could lead to\nreduced data safety.\n\nSo use mddev-\u003eraid_disks, which is initialised, instead.\n\nBug was introduced by commit c19d57980b38a5bb613a898937a1cf85f422fb9b\n      md/raid1: recognise replacements when assembling arrays.\n\nin 3.3, so fix is suitable for 3.3.y thru 3.6.y.\n\nCc: stable@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "83f0d77a7f336130a0ae1290d6bcfa606abaad66",
      "tree": "96a9f3396eb7737a195ce0a14025c96f394b71af",
      "parents": [
        "54d00f6069d921bfe83344cb94e2dd7cb54531ef"
      ],
      "author": {
        "name": "Masanari Iida",
        "email": "standby24x7@gmail.com",
        "time": "Tue Oct 30 00:18:08 2012 +0900"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Oct 29 22:57:50 2012 +0100"
      },
      "message": "md: Fix typo in drivers/md\n\nCorrect spelling typo in drivers/md.\n\nSigned-off-by: Masanari Iida \u003cstandby24x7@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "0be1fecd7ee61b5a6d2b2e94b052b8a070b946ef",
      "tree": "f77875630f9081d381838db0ce82aa1e6686e3ff",
      "parents": [
        "ae9d2b8ac0e88e868088a8fbdcf92cafc220a0d3"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Mon Oct 22 10:44:55 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 22 10:44:55 2012 +1100"
      },
      "message": "md faulty: use disk_stack_limits()\n\nin:\nfe86cdce block: do not artificially constrain max_sectors for stacking drivers\n\nmax_sectors defaults to UINT_MAX.  md faulty wasn\u0027t using\ndisk_stack_limits(), so inherited this large value as well.\nThis triggered a bug in XFS when stressed over md_faulty, when\na very large bio_alloc() failed.\n\nThat was on an older kernel, and I can\u0027t reproduce exactly the\nsame thing upstream, but I think the fix is appropriate in any\ncase.\n\nThanks to Mike Snitzer for pointing out the problem.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9db908806b85c1430150fbafe269a7b21b07d15d",
      "tree": "3911759c93e0be26b6771e1a92b75612b206ffa5",
      "parents": [
        "4d7127dace8cf4b05eb7c8c8531fc204fbb195f4",
        "72f36d5972a166197036c1281963f6863c429bf2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 13 13:22:01 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 13 13:22:01 2012 -0700"
      },
      "message": "Merge tag \u0027md-3.7\u0027 of git://neil.brown.name/md\n\nPull md updates from NeilBrown:\n - \"discard\" support, some dm-raid improvements and other assorted bits\n   and pieces.\n\n* tag \u0027md-3.7\u0027 of git://neil.brown.name/md: (29 commits)\n  md: refine reporting of resync/reshape delays.\n  md/raid5: be careful not to resize_stripes too big.\n  md: make sure manual changes to recovery checkpoint are saved.\n  md/raid10: use correct limit variable\n  md: writing to sync_action should clear the read-auto state.\n  Subject: [PATCH] md:change resync_mismatches to atomic64_t to avoid races\n  md/raid5: make sure to_read and to_write never go negative.\n  md: When RAID5 is dirty, force reconstruct-write instead of read-modify-write.\n  md/raid5: protect debug message against NULL derefernce.\n  md/raid5: add some missing locking in handle_failed_stripe.\n  MD: raid5 avoid unnecessary zero page for trim\n  MD: raid5 trim support\n  md/bitmap:Don\u0027t use IS_ERR to judge alloc_page().\n  md/raid1: Don\u0027t release reference to device while handling read error.\n  raid: replace list_for_each_continue_rcu with new interface\n  add further __init annotations to crypto/xor.c\n  DM RAID: Fix for \"sync\" directive ineffectiveness\n  DM RAID: Fix comparison of index and quantity for \"rebuild\" parameter\n  DM RAID: Add rebuild capability for RAID10\n  DM RAID: Move \u0027rebuild\u0027 checking code to its own function\n  ...\n"
    },
    {
      "commit": "dba141601d1327146c84b575bd581ea8730e901c",
      "tree": "fb2f82b07d682e5e8cbe5bca94249ad7dc6bbbd7",
      "parents": [
        "4f81a4176297db57c7ef3b2893092dd837c1e2a8"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Oct 12 21:02:15 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 12 21:02:15 2012 +0100"
      },
      "message": "dm: store dm_target_io in bio front_pad\n\nUse the recently-added bio front_pad field to allocate struct dm_target_io.\n\nPrior to this patch, dm_target_io was allocated from a mempool. For each\ndm_target_io, there is exactly one bio allocated from a bioset.\n\nThis patch merges these two allocations into one allocation: we create a\nbioset with front_pad equal to the size of dm_target_io so that every\nbio allocated from the bioset has sizeof(struct dm_target_io) bytes\nbefore it. We allocate a bio and use the bytes before the bio as\ndm_target_io.\n\n_tio_cache is removed and the tio_pool mempool is now only used for\nrequest-based devices.\n\nThis idea was introduced by Kent Overstreet.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nCc: Kent Overstreet \u003ckoverstreet@google.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: tj@kernel.org\nCc: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nCc: Bill Pemberton \u003cwfp5p@viridian.itc.virginia.edu\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4f81a4176297db57c7ef3b2893092dd837c1e2a8",
      "tree": "80a52e60b29377dc82c7f4c902ca0053479d6909",
      "parents": [
        "44feb387f6f5584535bd6e3ad7ccfdce715d7dba"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Oct 12 21:02:13 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 12 21:02:13 2012 +0100"
      },
      "message": "dm thin: move bio_prison code to separate module\n\nThe bio prison code will be useful to other future DM targets so\nmove it to a separate module.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "44feb387f6f5584535bd6e3ad7ccfdce715d7dba",
      "tree": "f49e3e91bcba0c55d3a0357def6472069d00c42f",
      "parents": [
        "28eed34e7662d7602da6753b0ba2563006b8e7a2"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Oct 12 21:02:10 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 12 21:02:10 2012 +0100"
      },
      "message": "dm thin: prepare to separate bio_prison code\n\nThe bio prison code will be useful to share with future DM targets.\n\nPrepare to move this code into a separate module, adding a dm prefix\nto structures and functions that will be exported.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "28eed34e7662d7602da6753b0ba2563006b8e7a2",
      "tree": "0aeeda160b7cccfb77be58d47084a8e606905bf7",
      "parents": [
        "0bcf08798eb9fc3cd0fe2e6b74b25f3f57fa8af2"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Oct 12 21:02:07 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 12 21:02:07 2012 +0100"
      },
      "message": "dm thin: support discard with non power of two block size\n\nSupport discards when the pool\u0027s block size is not a power of 2.\nThe block layer assumes discard_granularity is a power of 2 (in\nblkdev_issue_discard), so we set this to the largest power of 2 that is\na divides into the number of sectors in each block, but never less than\nDATA_DEV_BLOCK_SIZE_MIN_SECTORS.\n\nThis patch eliminates the \"Discard support must be disabled when the\nblock size is not a power of 2\" constraint that was imposed in commit\n55f2b8b (\"dm thin: support for non power of 2 pool blocksize\").  That\ncommit was incomplete: using a block size that is not a power of 2\nshouldn\u0027t mean disabling discard support on the device completely.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "0bcf08798eb9fc3cd0fe2e6b74b25f3f57fa8af2",
      "tree": "61a17180c1ee5ee32c02137016bbbc4c421466b2",
      "parents": [
        "fe5fe90639b62a75349dd1f1c74c4a984397171c"
      ],
      "author": {
        "name": "Wei Yongjun",
        "email": "yongjun_wei@trendmicro.com.cn",
        "time": "Fri Oct 12 16:59:47 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 12 16:59:47 2012 +0100"
      },
      "message": "dm persistent data: convert to use le32_add_cpu\n\nConvert cpu_to_le32(le32_to_cpu(E1) + E2) to use le32_add_cpu().\n\ndpatch engine is used to auto generate this patch.\n(https://github.com/weiyj/dpatch)\n\nSigned-off-by: Wei Yongjun \u003cyongjun_wei@trendmicro.com.cn\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fe5fe90639b62a75349dd1f1c74c4a984397171c",
      "tree": "50332fca2fb4ff5851c4e1bfd8151d41ba83d781",
      "parents": [
        "54499afbb80e44ae5511984486b4b33d6229fceb"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Oct 12 16:59:46 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 12 16:59:46 2012 +0100"
      },
      "message": "dm: use ACCESS_ONCE for sysfs values\n\nUse the ACCESS_ONCE macro in dm-bufio and dm-verity where a variable\ncan be modified asynchronously (through sysfs) and we want to prevent\ncompiler optimizations that assume that the variable hasn\u0027t changed.\n(See Documentation/atomic_ops.txt.)\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "54499afbb80e44ae5511984486b4b33d6229fceb",
      "tree": "f6a6f02a5f7b7b6666390d024eee256785899313",
      "parents": [
        "a71a261f5c39685698f7f1970dc7046b36e132d1"
      ],
      "author": {
        "name": "Wei Yongjun",
        "email": "yongjun_wei@trendmicro.com.cn",
        "time": "Fri Oct 12 16:59:44 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 12 16:59:44 2012 +0100"
      },
      "message": "dm bufio: use list_move\n\nUse list_move() instead of list_del() + list_add().\n\nspatch with a semantic match was used to find this.\n(http://coccinelle.lip6.fr/)\n\nSigned-off-by: Wei Yongjun \u003cyongjun_wei@trendmicro.com.cn\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a71a261f5c39685698f7f1970dc7046b36e132d1",
      "tree": "da8d0847828584d2788244d07c33a4422e489e50",
      "parents": [
        "ce40be7a820bb393ac4ac69865f018d2f4038cf0"
      ],
      "author": {
        "name": "Wei Yongjun",
        "email": "yongjun_wei@trendmicro.com.cn",
        "time": "Fri Oct 12 16:59:42 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 12 16:59:42 2012 +0100"
      },
      "message": "dm mpath: fix check for null mpio in end_io fn\n\nThe mpio dereference should be moved below the BUG_ON NULL test\nin multipath_end_io().\n\nspatch with a semantic match was used to found this.\n(http://coccinelle.lip6.fr/)\n\nSigned-off-by: Wei Yongjun \u003cyongjun_wei@trendmicro.com.cn\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "72f36d5972a166197036c1281963f6863c429bf2",
      "tree": "9bf42eb456ea85126489dad2283ed0343d91172d",
      "parents": [
        "e56108d65f8705170d238858616728359542aebb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 14:25:57 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 14:25:57 2012 +1100"
      },
      "message": "md: refine reporting of resync/reshape delays.\n\nIf \u0027resync_max\u0027 is set to 0 (as is often done when starting a\nreshape, so the mdadm can remain in control during a sensitive\nperiod), and if the reshape request is initially delayed because\nanother array using the same array is resyncing or reshaping etc,\nwhen user-space cannot easily tell when the delay changes from being\ndue to a conflicting reshape, to being due to resync_max \u003d 0.\n\nSo introduce a new state: (curr_resync \u003d\u003d 3) to reflect this, make\nsure it is visible both via /proc/mdstat and via the \"sync_completed\"\nsysfs attribute, and ensure that the event transition from one delay\nstate to the other is properly notified.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e56108d65f8705170d238858616728359542aebb",
      "tree": "ebb300a8d901cdad3c160575a72e813dc5709728",
      "parents": [
        "db07d85ef6395d4768c6cdceeb2ea4878bd2a3f4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 14:24:13 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 14:24:13 2012 +1100"
      },
      "message": "md/raid5: be careful not to resize_stripes too big.\n\nWhen a RAID5 is reshaping, conf-\u003eraid_disks is increased\nbefore mddev-\u003edelta_disks becomes zero.\nThis can result in check_reshape calling resize_stripes with a\nnumber that is too large.  This particularly happens\nwhen md_check_recovery calls -\u003echeck_reshape().\n\nIf we use -\u003eprevious_raid_disks, we don\u0027t risk this.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "db07d85ef6395d4768c6cdceeb2ea4878bd2a3f4",
      "tree": "a0e049bfc08c2d6fd39ddae5065f9bd49d87f880",
      "parents": [
        "91502f099dfc5a1e8812898e26ee280713e1d002"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 14:22:17 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 14:22:17 2012 +1100"
      },
      "message": "md: make sure manual changes to recovery checkpoint are saved.\n\nIf you make an array bigger but suppress resync of the new region with\n  mdadm --grow /dev/mdX --size\u003dmax --assume-clean\n\nthen stop the array before anything is written to it, the effect of\nthe \"--assume-clean\" is lost and the array will resync the new space\nwhen restarted.\nSo ensure that we update the metadata in the case.\n\nReported-by: Sebastian Riemer \u003csebastian.riemer@profitbricks.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "91502f099dfc5a1e8812898e26ee280713e1d002",
      "tree": "7e38d225da477345f674739ecf3aefec3c44307c",
      "parents": [
        "48c26ddc9f85808632a63b3ae50b868c86a2435f"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Thu Oct 11 14:20:58 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 14:20:58 2012 +1100"
      },
      "message": "md/raid10: use correct limit variable\n\nClang complains that we are assigning a variable to itself.  This should\nbe using bad_sectors like the similar earlier check does.\n\nBug has been present since 3.1-rc1.  It is minor but could\nconceivably cause corruption or other bad behaviour.\n\nCc: stable@vger.kernel.org\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "48c26ddc9f85808632a63b3ae50b868c86a2435f",
      "tree": "2d4f5d9f299f4be2c7b137655a0daae01e659a9a",
      "parents": [
        "7f7583d420231b9d09897afd57a957011b606a5b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 14:19:39 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 14:19:39 2012 +1100"
      },
      "message": "md: writing to sync_action should clear the read-auto state.\n\nIn some cases array are started in \u0027read-auto\u0027 state where in\nnothing gets written to any device until the array is written\nto.  The purpose of this is to make accidental auto-assembly\nof the wrong arrays less of a risk, and to allow arrays to be\nstarted to read suspend-to-disk images without actually changing\nanything (as might happen if the array were dirty and a\nresync seemed necessary).\n\nExplicitly writing the \u0027sync_action\u0027 for a read-auto array currently\ndoesn\u0027t clear the read-auto state, so the sync action doesn\u0027t\nhappen, which can be confusing.\n\nSo allow any successful write to sync_action to clear any read-auto\nstate.\n\nReported-by: Alexander Kühn \u003calexander.kuehn@nagilum.de\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7f7583d420231b9d09897afd57a957011b606a5b",
      "tree": "aa45d88b926bfc8e22f841b9ea83d338afa4c3ae",
      "parents": [
        "1ed850f356a0a422013846b5291acff08815008b"
      ],
      "author": {
        "name": "Jianpeng Ma",
        "email": "majianpeng@gmail.com",
        "time": "Thu Oct 11 14:17:59 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 14:17:59 2012 +1100"
      },
      "message": "Subject: [PATCH] md:change resync_mismatches to atomic64_t to avoid races\n\nNow that multiple threads can handle stripes, it is safer to\nuse an atomic64_t for resync_mismatches, to avoid update races.\n\nSigned-off-by: Jianpeng Ma \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1ed850f356a0a422013846b5291acff08815008b",
      "tree": "9dd66a6b204a385574b7a885b6415e58f26a6780",
      "parents": [
        "a7854487cd7128a30a7f4f5259de9f67d5efb95f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:50:13 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:50:13 2012 +1100"
      },
      "message": "md/raid5: make sure to_read and to_write never go negative.\n\nto_read and to_write are part of the result of analysing\na stripe before handling it.\nTheir use is to avoid some loops and tests if the values are\nknown to be zero.  Thus it is not a problem if they are a\nlittle bit larger than they should be.\n\nSo decrementing them in handle_failed_stripe serves little value, and\ndue to races it could cause some loops to be skipped incorrectly.\n\nSo remove those decrements.\n\nReported-by: \"Jianpeng Ma\" \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a7854487cd7128a30a7f4f5259de9f67d5efb95f",
      "tree": "8eaa70d6fec12a94c75ee023cbf4170789665d5f",
      "parents": [
        "b97390aec4756373168ad2976e1f117b610513ea"
      ],
      "author": {
        "name": "Alexander Lyakas",
        "email": "alex.bolshoy@gmail.com",
        "time": "Thu Oct 11 13:50:12 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:50:12 2012 +1100"
      },
      "message": "md: When RAID5 is dirty, force reconstruct-write instead of read-modify-write.\n\nSigned-off-by: Alex Lyakas \u003calex@zadarastorage.com\u003e\nSuggested-by: Yair Hershko \u003cyair@zadarastorage.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b97390aec4756373168ad2976e1f117b610513ea",
      "tree": "bf800dcf15dd08774d2da161d6317294727d8e2c",
      "parents": [
        "143c4d0573caebe0ae017097614349697e2280eb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:50:12 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:50:12 2012 +1100"
      },
      "message": "md/raid5: protect debug message against NULL derefernce.\n\nThe pr_debug in add_stripe_bio could race with something\nchanging *bip, so it is best to hold the lock until\nafter the pr_debug.\n\nReported-by: \"Jianpeng Ma\" \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "143c4d0573caebe0ae017097614349697e2280eb",
      "tree": "b5a68ce2a375a8e2617d2f4099b1701b521ddcc8",
      "parents": [
        "9e44476851e91c86c98eb92b9bc27fb801f89072"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:50:12 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:50:12 2012 +1100"
      },
      "message": "md/raid5: add some missing locking in handle_failed_stripe.\n\nWe really should hold the stripe_lock while accessing\n\u0027toread\u0027 else we could race with add_stripe_bio and corrupt\na list.\n\nReported-by: \"Jianpeng Ma\" \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9e44476851e91c86c98eb92b9bc27fb801f89072",
      "tree": "c681fe9b8261f390d60fbbcce060fe6ed958c836",
      "parents": [
        "620125f2bf8ff0c4969b79653b54d7bcc9d40637"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shli@kernel.org",
        "time": "Thu Oct 11 13:49:49 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:49:49 2012 +1100"
      },
      "message": "MD: raid5 avoid unnecessary zero page for trim\n\nWe want to avoid zero discarded dev page, because it\u0027s useless for discard.\nBut if we don\u0027t zero it, another read/write hit such page in the cache and will\nget inconsistent data.\n\nTo avoid zero the page, we don\u0027t set R5_UPTODATE flag after construction is\ndone. In this way, discard write request is still issued and finished, but read\nwill not hit the page. If the stripe gets accessed soon, we need reread the\nstripe, but since the chance is low, the reread isn\u0027t a big deal.\n\nSigned-off-by: Shaohua Li \u003cshli@fusionio.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "620125f2bf8ff0c4969b79653b54d7bcc9d40637",
      "tree": "373257b7e9a236e66bc3ad99cd1d158e7430014e",
      "parents": [
        "582e2e056a5c3410174c23f5134e6b00e0db9101"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shli@kernel.org",
        "time": "Thu Oct 11 13:49:05 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:49:05 2012 +1100"
      },
      "message": "MD: raid5 trim support\n\n\nDiscard for raid4/5/6 has limitation. If discard request size is\nsmall, we do discard for one disk, but we need calculate parity and\nwrite parity disk.  To correctly calculate parity, zero_after_discard\nmust be guaranteed. Even it\u0027s true, we need do discard for one disk\nbut write another disks, which makes the parity disks wear out\nfast. This doesn\u0027t make sense. So an efficient discard for raid4/5/6\nshould discard all data disks and parity disks, which requires the\nwrite pattern to be (A, A+chunk_size, A+chunk_size*2...). If A\u0027s size\nis smaller than chunk_size, such pattern is almost impossible in\npractice. So in this patch, I only handle the case that A\u0027s size\nequals to chunk_size. That is discard request should be aligned to\nstripe size and its size is multiple of stripe size.\n\nSince we can only handle request with specific alignment and size (or\npart of the request fitting stripes), we can\u0027t guarantee\nzero_after_discard even zero_after_discard is true in low level\ndrives.\n\nThe block layer doesn\u0027t send down correctly aligned requests even\ncorrect discard alignment is set, so I must filter out.\n\nFor raid4/5/6 parity calculation, if data is 0, parity is 0. So if\nzero_after_discard is true for all disks, data is consistent after\ndiscard.  Otherwise, data might be lost. Let\u0027s consider a scenario:\ndiscard a stripe, write data to one disk and write parity disk. The\nstripe could be still inconsistent till then depending on using data\nfrom other data disks or parity disks to calculate new parity. If the\ndisk is broken, we can\u0027t restore it. So in this patch, we only enable\ndiscard support if all disks have zero_after_discard.\n\nIf discard fails in one disk, we face the similar inconsistent issue\nabove. The patch will make discard follow the same path as normal\nwrite request. If discard fails, a resync will be scheduled to make\nthe data consistent. This isn\u0027t good to have extra writes, but data\nconsistency is important.\n\nIf a subsequent read/write request hits raid5 cache of a discarded\nstripe, the discarded dev page should have zero filled, so the data is\nconsistent. This patch will always zero dev page for discarded request\nstripe. This isn\u0027t optimal because discard request doesn\u0027t need such\npayload. Next patch will avoid it.\n\nSigned-off-by: Shaohua Li \u003cshli@fusionio.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "582e2e056a5c3410174c23f5134e6b00e0db9101",
      "tree": "d80d1dfbd6781453d78a7394bcdec80249c61a72",
      "parents": [
        "7ad4d4a68a1a19f21c7b39cb3f51bf17fba6e3d0"
      ],
      "author": {
        "name": "Jianpeng Ma",
        "email": "majianpeng@gmail.com",
        "time": "Thu Oct 11 13:45:36 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:45:36 2012 +1100"
      },
      "message": "md/bitmap:Don\u0027t use IS_ERR to judge alloc_page().\n\nSigned-off-by: Jianpeng Ma \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7ad4d4a68a1a19f21c7b39cb3f51bf17fba6e3d0",
      "tree": "9a93ab26f6354988241dc003a9ab16b77a3d75d3",
      "parents": [
        "fd177481b440c3f7b5ee9b821a76b29fdf2a6712"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:44:30 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:44:30 2012 +1100"
      },
      "message": "md/raid1: Don\u0027t release reference to device while handling read error.\n\nWhen we get a read error, we arrange for raid1d to handle it.\nCurrently we release the reference on the device.  This can result\nin\n   conf-\u003emirrors[read_disk].rdev\nbeing NULL in fix_read_error, if the device happens to get removed\nbefore the read error is handled.\n\nSo instead keep the reference until the read error has been fully\nhandled.\n\nReported-by: hank \u003cpyu@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fd177481b440c3f7b5ee9b821a76b29fdf2a6712",
      "tree": "ae05afc6aa944768ff0874237af77d4e35b6c61a",
      "parents": [
        "af7cf25dd15b74a78bff8ed5dc969b20dae9554d"
      ],
      "author": {
        "name": "Michael Wang",
        "email": "wangyun@linux.vnet.ibm.com",
        "time": "Thu Oct 11 13:43:21 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:43:21 2012 +1100"
      },
      "message": "raid: replace list_for_each_continue_rcu with new interface\n\nThis patch replaces list_for_each_continue_rcu() with\nlist_for_each_entry_continue_rcu() to save a few lines\nof code and allow removing list_for_each_continue_rcu().\n\nReviewed-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Michael Wang \u003cwangyun@linux.vnet.ibm.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "761becff016b82a6a7a1b2ef224248da5f46bae9",
      "tree": "bf9e1b479b85c659c9f54cb479bed9804484c011",
      "parents": [
        "7386199c471f70526bbcc629f072a5a8effe218f"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Oct 11 13:42:19 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:42:19 2012 +1100"
      },
      "message": "DM RAID: Fix for \"sync\" directive ineffectiveness\n\nThere are two table arguments that can be given to a DM RAID target\nthat control whether the array is forced to (re)synchronize or skip\ninitialization: \"sync\" and \"nosync\".  When \"sync\" is given, we set\nmddev-\u003erecovery_cp to 0 in order to cause the device to resynchronize.\nThis is insufficient if there is a bitmap in use, because the array\nwill simply look at the bitmap and see that there is no recovery\nnecessary.\n\nThe fix is to skip over the loading of the superblocks when \"sync\" is\ngiven, causing new superblocks to be written that will force the array\nto go through initialization (i.e. synchronization).\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7386199c471f70526bbcc629f072a5a8effe218f",
      "tree": "f9a9db7769a86450ccdda52fa64c2ee7f74b709e",
      "parents": [
        "4ec1e369af83f7ecdfbd48a905e44fc9910115ba"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Oct 11 13:40:36 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:40:36 2012 +1100"
      },
      "message": "DM RAID: Fix comparison of index and quantity for \"rebuild\" parameter\n\nDM RAID: Fix comparison of index and quantity for \"rebuild\" parameter\n\nThe \"rebuild\" parameter takes an index argument that starts counting from\nzero.  The conditional used to validate the index was using \u0027\u003e\u0027 rather than\n\u0027\u003e\u003d\u0027, leaving the door open for an index value that would be 1 too large.\n\nReported-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4ec1e369af83f7ecdfbd48a905e44fc9910115ba",
      "tree": "5e7287f870140e041190604ede472ae4d7fa2baf",
      "parents": [
        "eb6491236f283eb6ebc5421fcdb14b86701a7e36"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Oct 11 13:40:24 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:40:24 2012 +1100"
      },
      "message": "DM RAID: Add rebuild capability for RAID10\n\nDM RAID:  Add code to validate replacement slots for RAID10 arrays\n\nRAID10 can handle \u0027copies - 1\u0027 failures for each mirror group.  This code\nensures the user has provided a valid array - one whose devices specified for\nrebuild do not exceed the amount of redundancy available.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "eb6491236f283eb6ebc5421fcdb14b86701a7e36",
      "tree": "eb79232eac585fcf2a2ad15eff108ef873f72d67",
      "parents": [
        "2863b9eb44787adecba4f977d71d7fd876805b1c"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Oct 11 13:40:09 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:40:09 2012 +1100"
      },
      "message": "DM RAID: Move \u0027rebuild\u0027 checking code to its own function\n\nDM RAID:  Move chunk of code to it\u0027s own function\n\nThe code that checks whether device replacements/rebuilds are possible given\na specific RAID type is moved to it\u0027s own function.  It will further expand\nwhen the code to check RAID10 is added.  A separate function makes it easier\nto read.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2863b9eb44787adecba4f977d71d7fd876805b1c",
      "tree": "e8d5417df70e9ade3b8e021426db6f22b4067b95",
      "parents": [
        "1ca69c4bc4b1ef889861db39f325901eadbf9497"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Oct 11 13:38:58 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:38:58 2012 +1100"
      },
      "message": "MD RAID10: Prep for DM RAID10 device replacement capability\n\nMD RAID10:  Fix a couple potential kernel panics if RAID10 is used by dm-raid\n\nWhen device-mapper uses the RAID10 personality through dm-raid.c, there is no\n\u0027gendisk\u0027 structure in mddev and some sysfs information is also not populated.\n\nThis patch avoids touching those non-existent structures.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@rehdat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1ca69c4bc4b1ef889861db39f325901eadbf9497",
      "tree": "a4c83843fc630c42853e1a5ecc51dff5ab3ef54f",
      "parents": [
        "4ed8731d8e6bd2a88a30697fbf4f7e6e979a6c46"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:37:33 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:37:33 2012 +1100"
      },
      "message": "md: avoid taking the mutex on some ioctls.\n\nSome ioctls don\u0027t need to take the mutex and doing so can cause\na delay as it is held during super-block update.\nSo move those ioctls out of the mutex and rely on rcu locking\nto ensure we don\u0027t access stale data.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4ed8731d8e6bd2a88a30697fbf4f7e6e979a6c46",
      "tree": "3bb77592fa5a89b8e7f0ef84b8d7f53122bbd071",
      "parents": [
        "57c67df48866d57b50d72eb198ffcc0cf7a6232d"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shli@kernel.org",
        "time": "Thu Oct 11 13:34:00 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:34:00 2012 +1100"
      },
      "message": "MD: change the parameter of md thread\n\nChange the thread parameter, so the thread can carry extra info. Next patch\nwill use it.\n\nSigned-off-by: Shaohua Li \u003cshli@fusionio.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "57c67df48866d57b50d72eb198ffcc0cf7a6232d",
      "tree": "ef0ed816c8ff324a8b7f1635f5d2727bbac2d968",
      "parents": [
        "532a2a3fba8df076d65fdf17518eeb327b37a313"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:32:13 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:32:13 2012 +1100"
      },
      "message": "md/raid10: submit IO from originating thread instead of md thread.\n\nqueuing writes to the md thread means that all requests go through the\none processor which may not be able to keep up with very high request\nrates.\n\nSo use the plugging infrastructure to submit all requests on unplug.\nIf a \u0027schedule\u0027 is needed, we fall back on the old approach of handing\nthe requests to the thread for it to handle.\n\nThis is nearly identical to a recent patch which provided similar\nfunctionality to RAID1.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "532a2a3fba8df076d65fdf17518eeb327b37a313",
      "tree": "c23b22940ed37804baf535eb4f79f369851b1779",
      "parents": [
        "2ff8cc2c6d4e323de71a42affeb3041fa17d5b10"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shli@kernel.org",
        "time": "Thu Oct 11 13:30:52 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:30:52 2012 +1100"
      },
      "message": "md: raid 10 supports TRIM\n\n\nThis makes md raid 10 support TRIM.\n\nIf one disk supports discard and another not, or one has\ndiscard_zero_data and another not, there could be inconsistent between\ndata from such disks. But this should not matter, discarded data is\nuseless. This will add extra copy in rebuild though.\n\nSigned-off-by: Shaohua Li \u003cshli@fusionio.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2ff8cc2c6d4e323de71a42affeb3041fa17d5b10",
      "tree": "12534cc77da4d06872e29b7eb114ca2c57b97478",
      "parents": [
        "c83057a1f4f987327c49448b046d9625c612ed8e"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shli@fusionio.com",
        "time": "Thu Oct 11 13:28:54 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:28:54 2012 +1100"
      },
      "message": "md: raid 1 supports TRIM\n\nThis makes md raid 1 support TRIM.\nIf one disk supports discard and another not, or one has discard_zero_data and\nanother not, there could be inconsistent between data from such disks. But this\nshould not matter, discarded data is useless. This will add extra copy in rebuild\nthough.\n\nSigned-off-by: Shaohua Li \u003cshli@fusionio.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c83057a1f4f987327c49448b046d9625c612ed8e",
      "tree": "c929eb135da2161461150bee82b1fa39305801a8",
      "parents": [
        "f1cad2b68ed12c0f82d3f56e150691f62b6f5edf"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shli@fusionio.com",
        "time": "Thu Oct 11 13:25:44 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:25:44 2012 +1100"
      },
      "message": "md: raid 0 supports TRIM\n\nThis makes md raid 0 support TRIM.\n\nSigned-off-by: Shaohua Li \u003cshli@fusionio.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    }
  ],
  "next": "f1cad2b68ed12c0f82d3f56e150691f62b6f5edf"
}
