)]}'
{
  "log": [
    {
      "commit": "a5e0d73163a848060ac0c2c054274e84a654986e",
      "tree": "708ab200af3653090d3cad95228fae21aa6c52cd",
      "parents": [
        "6dbe51c251a327e012439c4772097a13df43c5b8",
        "f3378b48705154b9089affb2d2e939622aea68f1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 05 17:22:08 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 05 17:22:08 2013 -0800"
      },
      "message": "Merge tag \u0027md-3.9\u0027 of git://neil.brown.name/md\n\nPull md updates from NeilBrown:\n \"Mostly little bugfixes.\n\n  Only \"feature\" is a new RAID10 layout which slightly improves the\n  number of sets of devices that can concurrently fail, without data\n  loss.\"\n\n* tag \u0027md-3.9\u0027 of git://neil.brown.name/md:\n  md: expedite metadata update when switching  read-auto -\u003e active\n  md: remove CONFIG_MULTICORE_RAID456\n  md/raid1,raid10: fix deadlock with freeze_array()\n  md/raid0: improve error message when converting RAID4-with-spares to RAID0\n  md: raid0: fix error return from create_stripe_zones.\n  md: fix two bugs when attempting to resize RAID0 array.\n  DM RAID: Add support for MD\u0027s RAID10 \"far\" and \"offset\" algorithms\n  MD RAID10: Improve redundancy for \u0027far\u0027 and \u0027offset\u0027 algorithms (part 2)\n  MD RAID10: Improve redundancy for \u0027far\u0027 and \u0027offset\u0027 algorithms (part 1)\n  MD RAID10: Minor non-functional code changes\n  md: raid1,10: Handle REQ_WRITE_SAME flag in write bios\n  md: protect against crash upon fsync on ro array\n"
    },
    {
      "commit": "8735a8134786fa4ef36dee65d7fa779b99ba5fe3",
      "tree": "0049cda7a855a2ba7d3e0c4628d983a8466fafbc",
      "parents": [
        "f283635281132af7bc7b90af3c105b8c0f73b9c7"
      ],
      "author": {
        "name": "Heinz Mauelshagen",
        "email": "mauelshagen@redhat.com",
        "time": "Fri Mar 01 22:45:52 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:52 2013 +0000"
      },
      "message": "dm cache: add cleaner policy\n\nA simple cache policy that writes back all data to the origin.\n\nThis is used to decommission a dm cache by emptying it.\n\nSigned-off-by: Heinz Mauelshagen \u003cmauelshagen@redhat.com\u003e\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f283635281132af7bc7b90af3c105b8c0f73b9c7",
      "tree": "5ea66de48bc1f93a34b301986fa5455e53ac5a4c",
      "parents": [
        "c6b4fcbad044e6fffcc75bba160e720eb8d67d17"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Mar 01 22:45:51 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:51 2013 +0000"
      },
      "message": "dm cache: add mq policy\n\nA cache policy that uses a multiqueue ordered by recent hit\ncount to select which blocks should be promoted and demoted.\nThis is meant to be a general purpose policy.  It prioritises\nreads over writes.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c6b4fcbad044e6fffcc75bba160e720eb8d67d17",
      "tree": "1fb20e6ca157ebfbf2c97ae022fc6ba3e0550dd6",
      "parents": [
        "7a87edfee75151abb69d47dba2277ff2de0f6071"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Mar 01 22:45:51 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:51 2013 +0000"
      },
      "message": "dm: add cache target\n\nAdd a target that allows a fast device such as an SSD to be used as a\ncache for a slower device such as a disk.\n\nA plug-in architecture was chosen so that the decisions about which data\nto migrate and when are delegated to interchangeable tunable policy\nmodules.  The first general purpose module we have developed, called\n\"mq\" (multiqueue), follows in the next patch.  Other modules are\nunder development.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Heinz Mauelshagen \u003cmauelshagen@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "7a87edfee75151abb69d47dba2277ff2de0f6071",
      "tree": "1f0304a22e9ab66cb52cf052600516714f2dddf8",
      "parents": [
        "6513c29f44f2cc970c0e9fecfe5a6526c3e73025"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Mar 01 22:45:51 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:51 2013 +0000"
      },
      "message": "dm persistent data: add bitset\n\nAdd a persistent bitset as a wrapper around dm-array.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6513c29f44f2cc970c0e9fecfe5a6526c3e73025",
      "tree": "5c501dceffb8a4c5c0a70bde68b084a171fee861",
      "parents": [
        "025b96853fe0bdc977d88b4242ca5e1f19d9bb66"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Mar 01 22:45:51 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:51 2013 +0000"
      },
      "message": "dm persistent data: add transactional array\n\nAdd a transactional array.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "025b96853fe0bdc977d88b4242ca5e1f19d9bb66",
      "tree": "5bf111eac74bb2798495fd4975b0d8df72c8d351",
      "parents": [
        "6beca5eb6e801aea810da6cbc4990d96e6c1c0bc"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Mar 01 22:45:50 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:50 2013 +0000"
      },
      "message": "dm thin: remove cells from stack\n\nThis patch takes advantage of the new bio-prison interface where the\nmemory is now passed in rather than using a mempool in bio-prison.\nThis allows the map function to avoid performing potentially-blocking\nallocations that could lead to deadlocks: We want to avoid the cell\nallocation that is done in bio_detain.\n\n(The potential for mempool deadlocks still remains in other functions\nthat use bio_detain.)\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6beca5eb6e801aea810da6cbc4990d96e6c1c0bc",
      "tree": "37586c9ecdd7bbc89ce4db07abde3ca32d6a8e1c",
      "parents": [
        "4e7f1f9089660aec3b5ab2645ce62777c6f4c6a2"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Mar 01 22:45:50 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:50 2013 +0000"
      },
      "message": "dm bio prison: pass cell memory in\n\nChange the dm_bio_prison interface so that instead of allocating memory\ninternally, dm_bio_detain is supplied with a pre-allocated cell each\ntime it is called.\n\nThis enables a subsequent patch to move the allocation of the struct\ndm_bio_prison_cell outside the thin target\u0027s mapping function so it can\nno longer block there.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4e7f1f9089660aec3b5ab2645ce62777c6f4c6a2",
      "tree": "56f012273947dcd88e4a73944aae37d01f023b56",
      "parents": [
        "b0d8ed4d96a26ef3ac54a4aa8911c9413070662e"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Mar 01 22:45:50 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:50 2013 +0000"
      },
      "message": "dm persistent data: add btree_walk\n\nAdd dm_btree_walk to iterate through the contents of a btree.\nThis will be used by the dm cache target.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b0d8ed4d96a26ef3ac54a4aa8911c9413070662e",
      "tree": "b43cc88d671e85840a625cdb0de75754182043ac",
      "parents": [
        "df5d2e9089c7d5b8c46f767e4278610ea3e815b9"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:49 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:49 2013 +0000"
      },
      "message": "dm: add target num_write_bios fn\n\nAdd a num_write_bios function to struct target.\n\nIf an instance of a target sets this, it will be queried before the\ntarget\u0027s mapping function is called on a write bio, and the response\ncontrols the number of copies of the write bio that the target will\nreceive.\n\nThis provides a convenient way for a target to send the same data to\nmore than one device.  The new cache target uses this in writethrough\nmode, to send the data both to the cache and the backing device.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "df5d2e9089c7d5b8c46f767e4278610ea3e815b9",
      "tree": "5285aa8b0c794da419133a209437b32a11aa8a8d",
      "parents": [
        "a26062416ef8add48f16fbadded2b5f6fb84d024"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Mar 01 22:45:49 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:49 2013 +0000"
      },
      "message": "dm kcopyd: introduce configurable throttling\n\nThis patch allows the administrator to reduce the rate at which kcopyd\nissues I/O.\n\nEach module that uses kcopyd acquires a throttle parameter that can be\nset in /sys/module/*/parameters.\n\nWe maintain a history of kcopyd usage by each module in the variables\nio_period and total_period in struct dm_kcopyd_throttle. The actual\nkcopyd activity is calculated as a percentage of time equal to\n\"(100 * io_period / total_period)\".  This is compared with the user-defined\nthrottle percentage threshold and if it is exceeded, we sleep.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a26062416ef8add48f16fbadded2b5f6fb84d024",
      "tree": "4f960c51bd22d99e55a1f56cf28f86f018de01a3",
      "parents": [
        "02cde50b7ea74557d32ff778c73809322445ccd2"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Mar 01 22:45:49 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:49 2013 +0000"
      },
      "message": "dm ioctl: allow message to return data\n\nThis patch introduces enhanced message support that allows the\ndevice-mapper core to recognise messages that are common to all devices,\nand for messages to return data to userspace.\n\nCore messages are processed by the function \"message_for_md\".  If the\ndevice mapper doesn\u0027t support the message, it is passed to the target\ndriver.\n\nIf the message returns data, the kernel sets the flag\nDM_MESSAGE_OUT_FLAG.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "02cde50b7ea74557d32ff778c73809322445ccd2",
      "tree": "5021be59504bc5dc3e4fb247debcbb9a383b0dab",
      "parents": [
        "e2914cc26bbca67fd30fff02c6777e8477fc8a6a"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Mar 01 22:45:49 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:49 2013 +0000"
      },
      "message": "dm ioctl: optimize functions without variable params\n\nDevice-mapper ioctls receive and send data in a buffer supplied\nby userspace.  The buffer has two parts.  The first part contains\na \u0027struct dm_ioctl\u0027 and has a fixed size.  The second part depends\non the ioctl and has a variable size.\n\nThis patch recognises the specific ioctls that do not use the variable\npart of the buffer and skips allocating memory for it.\n\nIn particular, when a device is suspended and a resume ioctl is sent,\nthis now avoid memory allocation completely.\n\nThe variable \"struct dm_ioctl tmp\" is moved from the function\ncopy_params to its caller ctl_ioctl and renamed to param_kernel.\nIt is used directly when the ioctl function doesn\u0027t need any arguments.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "e2914cc26bbca67fd30fff02c6777e8477fc8a6a",
      "tree": "b772ab680661d3bbedd35cbd48e4f19c5ffad854",
      "parents": [
        "5f01520415e82f8e354807484ef842335070a3bd"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Mar 01 22:45:48 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:48 2013 +0000"
      },
      "message": "dm ioctl: introduce ioctl_flags\n\nThis patch introduces flags for each ioctl function.\n\nSo far, one flag is defined, IOCTL_FLAGS_NO_PARAMS.  It is set if the\nfunction processing the ioctl doesn\u0027t take or produce any parameters in\nthe section of the data buffer that has a variable size.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5f01520415e82f8e354807484ef842335070a3bd",
      "tree": "0100b4309d01d22bd3726b20d76b5cd56c64df5e",
      "parents": [
        "23e5083b4d47e778bf7983329989dab7543def14"
      ],
      "author": {
        "name": "Jun\u0027ichi Nomura",
        "email": "j-nomura@ce.jp.nec.com",
        "time": "Fri Mar 01 22:45:48 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:48 2013 +0000"
      },
      "message": "dm: merge io_pool and tio_pool\n\nThis patch merges io_pool and tio_pool into io_pool and cleans up\nrelated functions.\n\nThough device-mapper used to have 2 pools of objects for each dm device,\nthe use of bioset frontbad for per-bio data has shrunk the number of\npools to 1 for both bio-based and request-based device types.\n(See c0820cf5 \"dm: introduce per_bio_data\" and\n 94818742 \"dm: Use bioset\u0027s front_pad for dm_rq_clone_bio_info\")\n\nSo dm no longer has to maintain 2 different pointers.\n\nNo functional changes.\n\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "23e5083b4d47e778bf7983329989dab7543def14",
      "tree": "2df0c48d02a4af159cbbe08231a26d94143cc809",
      "parents": [
        "87eb5b21d92a92ac2da3163039d62df88c2b8422"
      ],
      "author": {
        "name": "Jun\u0027ichi Nomura",
        "email": "j-nomura@ce.jp.nec.com",
        "time": "Fri Mar 01 22:45:48 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:48 2013 +0000"
      },
      "message": "dm: remove unused _rq_bio_info_cache\n\nRemove _rq_bio_info_cache, which is no longer used.\nNo functional changes.\n\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "87eb5b21d92a92ac2da3163039d62df88c2b8422",
      "tree": "ada6ec7e575e4b95a018ecbe023af135da2b639e",
      "parents": [
        "23cb21092eb9dcec9d3604b68d95192b79915890"
      ],
      "author": {
        "name": "Mike Christie",
        "email": "michaelc@cs.wisc.edu",
        "time": "Fri Mar 01 22:45:48 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:48 2013 +0000"
      },
      "message": "dm: fix limits initialization when there are no data devices\n\ndm_calculate_queue_limits will first reset the provided limits to\ndefaults using blk_set_stacking_limits; whereby defeating the purpose of\nretaining the original live table\u0027s limits -- as was intended via commit\n3ae706561637331aa578e52bb89ecbba5edcb7a9 (\"dm: retain table limits when\nswapping to new table with no devices\").\n\nFix this improper limits initialization (in the no data devices case) by\navoiding the call to dm_calculate_queue_limits.\n\n[patch header revised by Mike Snitzer]\n\nSigned-off-by: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@vger.kernel.org # v3.6+\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "23cb21092eb9dcec9d3604b68d95192b79915890",
      "tree": "c647110dbe004e2a6f8b56f32df18374d7189a03",
      "parents": [
        "018cede93c987273071aed153b6d207e0af5e868"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Mar 01 22:45:47 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:47 2013 +0000"
      },
      "message": "dm snapshot: add missing module aliases\n\nAdd module aliases so that autoloading works correctly if the user\ntries to activate \"snapshot-origin\" or \"snapshot-merge\" targets.\n\nReference: https://bugzilla.redhat.com/889973\n\nReported-by: Chao Yang \u003cchyang@redhat.com\u003e\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": "018cede93c987273071aed153b6d207e0af5e868",
      "tree": "fc5c8b6c980a1a5b08a50719cb8e9f3b74bfe4af",
      "parents": [
        "e4c938111f25dbbf2579e65ce4a7cb2d20a59308"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Mar 01 22:45:47 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:47 2013 +0000"
      },
      "message": "dm persistent data: set some btree fn parms const\n\nMark some constant parameters constant in some dm-btree functions.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "e4c938111f25dbbf2579e65ce4a7cb2d20a59308",
      "tree": "4aa990cb93b7ea3318a1ebde458044c57f87d1f0",
      "parents": [
        "14fe594d679c9ba8c8e3d6ad1a3ed9c0ba336df0"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:47 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:47 2013 +0000"
      },
      "message": "dm: refactor bio cloning\n\nRefactor part of the bio splitting and cloning code to try to make it\neasier to understand.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "14fe594d679c9ba8c8e3d6ad1a3ed9c0ba336df0",
      "tree": "9b0da04f6ddf9024f69f2196853b79c9ba6a440e",
      "parents": [
        "55a62eef8d1b50ceff3b7bf46851103bdcc7e5b0"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:47 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:47 2013 +0000"
      },
      "message": "dm: rename bio cloning functions\n\nRename functions involved in splitting and cloning bios.\n\nThe sequence of functions is now:\n  (1) __split_and_process* - entry point that selects the processing strategy\n  (2) __send* - prepare the details for each bio needed and loop through them\n  (3) __clone_and_map* - creates a clone and maps it\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "55a62eef8d1b50ceff3b7bf46851103bdcc7e5b0",
      "tree": "7fb8ce46abe5e6f4a0a2dbcf2d3c848fdbfe4a56",
      "parents": [
        "bd2a49b86d9aae0c505dcc99c0a073f9da2cc889"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:47 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:47 2013 +0000"
      },
      "message": "dm: rename request variables to bios\n\nUse \u0027bio\u0027 in the name of variables and functions that deal with\nbios rather than \u0027request\u0027 to avoid confusion with the normal\nblock layer use of \u0027request\u0027.\n\nNo functional changes.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "bd2a49b86d9aae0c505dcc99c0a073f9da2cc889",
      "tree": "cf11f71d96195abd2035695c5acf1fd2c0c789b1",
      "parents": [
        "88ae4c5294b319431c8c2ec86495b2de295adf62"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:46 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:46 2013 +0000"
      },
      "message": "dm: clean up clone_bio\n\nRemove the no-longer-used struct bio_set argument from clone_bio and split_bvec.\nUse tio-\u003eti in __map_bio() instead of passing in ti.\nFactor out some code for setting up cloned bios.\nTake target_request_nr as a parameter to alloc_tio().\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "88ae4c5294b319431c8c2ec86495b2de295adf62",
      "tree": "3f35b1d7ce30ff24339f1967e782fcab4d5748c0",
      "parents": [
        "d57916a00fd749ccd354a7f754c2aba98f86d064"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Fri Mar 01 22:45:46 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:46 2013 +0000"
      },
      "message": "dm persistent data: remove CONFIG_EXPERIMENTAL\n\nThe CONFIG_EXPERIMENTAL config item has not carried much meaning for a\nwhile now and is almost always enabled by default. As agreed during the\nLinux kernel summit, remove it from any \"depends on\" lines in Kconfigs.\n\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "d57916a00fd749ccd354a7f754c2aba98f86d064",
      "tree": "2a8e7412c074d3b139e13c0d913f92bebf786f51",
      "parents": [
        "58f77a2196ee65510885426e65049880be841193"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:46 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:46 2013 +0000"
      },
      "message": "dm: remove CONFIG_EXPERIMENTAL\n\nRemove EXPERIMENTAL from all existing device-mapper targets.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "58f77a2196ee65510885426e65049880be841193",
      "tree": "5ba1ff6a0f75c8df0a9be1c604a30304a98dcffb",
      "parents": [
        "3daec3b447bcb894c5725e433f7331f4cdae5b0b"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Mar 01 22:45:45 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:45 2013 +0000"
      },
      "message": "dm thin: use block_size_is_power_of_two\n\nUse block_size_is_power_of_two() rather than checking\nsectors_per_block_shift directly.  Also introduce local pool variable in\nget_bio_block() to eliminate redundant tc-\u003epool dereferences.\n\nNo functional change.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "3daec3b447bcb894c5725e433f7331f4cdae5b0b",
      "tree": "f5c262fca55a06811569795e5d31e514251127f6",
      "parents": [
        "d2ce70a119f844225c10f133f8b957d540027b0f"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Mar 01 22:45:45 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:45 2013 +0000"
      },
      "message": "dm bufio: use WRITE_FLUSH instead of REQ_FLUSH\n\nUse WRITE_FLUSH instead of REQ_FLUSH for submitted requests to make it\nconsistent with the rest of the kernel. There is no functional change.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "d2ce70a119f844225c10f133f8b957d540027b0f",
      "tree": "3a2cad94248674b3115dbefa49eeab07e3f5888f",
      "parents": [
        "f13945d75730081830b6f3360266950e2b7c9067"
      ],
      "author": {
        "name": "Wang Sheng-Hui",
        "email": "shhuiw@gmail.com",
        "time": "Fri Mar 01 22:45:45 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:45 2013 +0000"
      },
      "message": "dm table: remove superfluous variable reset\n\nIf allocation fails, the local var *t is not used any more after kfree.\nDon\u0027t need to reset it to NULL. Remove the unnecesary NULL set here.\n\nSigned-off-by: Wang Sheng-Hui \u003cshhuiw@gmail.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f13945d75730081830b6f3360266950e2b7c9067",
      "tree": "d911f24cd7d09a92c992e58495c7704621ccde38",
      "parents": [
        "fd7c092e711ebab55b2688d3859d95dfd0301f73"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Mar 01 22:45:44 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:44 2013 +0000"
      },
      "message": "dm thin: support a non power of 2 discard_granularity\n\nSupport a non-power-of-2 discard granularity in dm-thin, now that the block\nlayer supports this(via 8dd2cb7e880d2f77fba53b523c99133ad5054cfd \"block:\ndiscard granularity might not be power of 2\" and\n59771079c18c44e39106f0f30054025acafadb41 \"blk: avoid divide-by-zero with zero\ndiscard granularity\").\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fd7c092e711ebab55b2688d3859d95dfd0301f73",
      "tree": "3cc99f96f4a2de8e22347feb86b0ecd5dd7200d0",
      "parents": [
        "16245bdc9d3e22d1460341a655c8b5288953bc14"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Mar 01 22:45:44 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:44 2013 +0000"
      },
      "message": "dm: fix truncated status strings\n\nAvoid returning a truncated table or status string instead of setting\nthe DM_BUFFER_FULL_FLAG when the last target of a table fills the\nbuffer.\n\nWhen processing a table or status request, the function retrieve_status\ncalls ti-\u003etype-\u003estatus. If ti-\u003etype-\u003estatus returns non-zero,\nretrieve_status assumes that the buffer overflowed and sets\nDM_BUFFER_FULL_FLAG.\n\nHowever, targets don\u0027t return non-zero values from their status method\non overflow. Most targets returns always zero.\n\nIf a buffer overflow happens in a target that is not the last in the\ntable, it gets noticed during the next iteration of the loop in\nretrieve_status; but if a buffer overflow happens in the last target, it\ngoes unnoticed and erroneously truncated data is returned.\n\nIn the current code, the targets behave in the following way:\n* dm-crypt returns -ENOMEM if there is not enough space to store the\n  key, but it returns 0 on all other overflows.\n* dm-thin returns errors from the status method if a disk error happened.\n  This is incorrect because retrieve_status doesn\u0027t check the error\n  code, it assumes that all non-zero values mean buffer overflow.\n* all the other targets always return 0.\n\nThis patch changes the ti-\u003etype-\u003estatus function to return void (because\nmost targets don\u0027t use the return code). Overflow is detected in\nretrieve_status: if the status method fills up the remaining space\ncompletely, it is assumed that buffer overflow happened.\n\nCc: stable@vger.kernel.org\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "16245bdc9d3e22d1460341a655c8b5288953bc14",
      "tree": "61b6373392d2c074c2fc18203c6b9134174bed4b",
      "parents": [
        "b6669737d3db7df79fad07180837c23dbe581db5"
      ],
      "author": {
        "name": "Jun\u0027ichi Nomura",
        "email": "j-nomura@ce.jp.nec.com",
        "time": "Fri Mar 01 22:45:44 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 01 22:45:44 2013 +0000"
      },
      "message": "dm: do not replace bioset for request based dm\n\nThis patch fixes a regression introduced in v3.8, which causes oops\nlike this when dm-multipath is used:\n\ngeneral protection fault: 0000 [#1] SMP\nRIP: 0010:[\u003cffffffff810fe754\u003e]  [\u003cffffffff810fe754\u003e] mempool_free+0x24/0xb0\nCall Trace:\n  \u003cIRQ\u003e\n  [\u003cffffffff81187417\u003e] bio_put+0x97/0xc0\n  [\u003cffffffffa02247a5\u003e] end_clone_bio+0x35/0x90 [dm_mod]\n  [\u003cffffffff81185efd\u003e] bio_endio+0x1d/0x30\n  [\u003cffffffff811f03a3\u003e] req_bio_endio.isra.51+0xa3/0xe0\n  [\u003cffffffff811f2f68\u003e] blk_update_request+0x118/0x520\n  [\u003cffffffff811f3397\u003e] blk_update_bidi_request+0x27/0xa0\n  [\u003cffffffff811f343c\u003e] blk_end_bidi_request+0x2c/0x80\n  [\u003cffffffff811f34d0\u003e] blk_end_request+0x10/0x20\n  [\u003cffffffffa000b32b\u003e] scsi_io_completion+0xfb/0x6c0 [scsi_mod]\n  [\u003cffffffffa000107d\u003e] scsi_finish_command+0xbd/0x120 [scsi_mod]\n  [\u003cffffffffa000b12f\u003e] scsi_softirq_done+0x13f/0x160 [scsi_mod]\n  [\u003cffffffff811f9fd0\u003e] blk_done_softirq+0x80/0xa0\n  [\u003cffffffff81044551\u003e] __do_softirq+0xf1/0x250\n  [\u003cffffffff8142ee8c\u003e] call_softirq+0x1c/0x30\n  [\u003cffffffff8100420d\u003e] do_softirq+0x8d/0xc0\n  [\u003cffffffff81044885\u003e] irq_exit+0xd5/0xe0\n  [\u003cffffffff8142f3e3\u003e] do_IRQ+0x63/0xe0\n  [\u003cffffffff814257af\u003e] common_interrupt+0x6f/0x6f\n  \u003cEOI\u003e\n  [\u003cffffffffa021737c\u003e] srp_queuecommand+0x8c/0xcb0 [ib_srp]\n  [\u003cffffffffa0002f18\u003e] scsi_dispatch_cmd+0x148/0x310 [scsi_mod]\n  [\u003cffffffffa000a38e\u003e] scsi_request_fn+0x31e/0x520 [scsi_mod]\n  [\u003cffffffff811f1e57\u003e] __blk_run_queue+0x37/0x50\n  [\u003cffffffff811f1f69\u003e] blk_delay_work+0x29/0x40\n  [\u003cffffffff81059003\u003e] process_one_work+0x1c3/0x5c0\n  [\u003cffffffff8105b22e\u003e] worker_thread+0x15e/0x440\n  [\u003cffffffff8106164b\u003e] kthread+0xdb/0xe0\n  [\u003cffffffff8142db9c\u003e] ret_from_fork+0x7c/0xb0\n\nThe regression was introduced by the change\nc0820cf5 \"dm: introduce per_bio_data\", where dm started to replace\nbioset during table replacement.\nFor bio-based dm, it is good because clone bios do not exist during the\ntable replacement.\nFor request-based dm, however, (not-yet-mapped) clone bios may stay in\nrequest queue and survive during the table replacement.\nSo freeing the old bioset could cause the oops in bio_put().\n\nSince the size of front_pad may change only with bio-based dm,\nit is not necessary to replace bioset for request-based dm.\n\nReported-by: Bart Van Assche \u003cbvanassche@acm.org\u003e\nTested-by: Bart Van Assche \u003cbvanassche@acm.org\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nAcked-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ee89f81252179dcbf6cd65bd48299f5e52292d88",
      "tree": "805846cd12821f84cfe619d44c9e3e36e0b0f9e6",
      "parents": [
        "21f3b24da9328415792efc780f50b9f434c12465",
        "de33127d8d3f1d570aad8c2223cd81b206636bc1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 28 12:52:24 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 28 12:52:24 2013 -0800"
      },
      "message": "Merge branch \u0027for-3.9/core\u0027 of git://git.kernel.dk/linux-block\n\nPull block IO core bits from Jens Axboe:\n \"Below are the core block IO bits for 3.9.  It was delayed a few days\n  since my workstation kept crashing every 2-8h after pulling it into\n  current -git, but turns out it is a bug in the new pstate code (divide\n  by zero, will report separately).  In any case, it contains:\n\n   - The big cfq/blkcg update from Tejun and and Vivek.\n\n   - Additional block and writeback tracepoints from Tejun.\n\n   - Improvement of the should sort (based on queues) logic in the plug\n     flushing.\n\n   - _io() variants of the wait_for_completion() interface, using\n     io_schedule() instead of schedule() to contribute to io wait\n     properly.\n\n   - Various little fixes.\n\n  You\u0027ll get two trivial merge conflicts, which should be easy enough to\n  fix up\"\n\nFix up the trivial conflicts due to hlist traversal cleanups (commit\nb67bfe0d42ca: \"hlist: drop the node parameter from iterators\").\n\n* \u0027for-3.9/core\u0027 of git://git.kernel.dk/linux-block: (39 commits)\n  block: remove redundant check to bd_openers()\n  block: use i_size_write() in bd_set_size()\n  cfq: fix lock imbalance with failed allocations\n  drivers/block/swim3.c: fix null pointer dereference\n  block: don\u0027t select PERCPU_RWSEM\n  block: account iowait time when waiting for completion of IO request\n  sched: add wait_for_completion_io[_timeout]\n  writeback: add more tracepoints\n  block: add block_{touch|dirty}_buffer tracepoint\n  buffer: make touch_buffer() an exported function\n  block: add @req to bio_{front|back}_merge tracepoints\n  block: add missing block_bio_complete() tracepoint\n  block: Remove should_sort judgement when flush blk_plug\n  block,elevator: use new hashtable implementation\n  cfq-iosched: add hierarchical cfq_group statistics\n  cfq-iosched: collect stats from dead cfqgs\n  cfq-iosched: separate out cfqg_stats_reset() from cfq_pd_reset_stats()\n  blkcg: make blkcg_print_blkgs() grab q locks instead of blkcg lock\n  block: RCU free request_queue\n  blkcg: implement blkg_[rw]stat_recursive_sum() and blkg_[rw]stat_merge()\n  ...\n"
    },
    {
      "commit": "b67bfe0d42cac56c512dd5da4b1b347a23f4b70a",
      "tree": "3d465aea12b97683f26ffa38eba8744469de9997",
      "parents": [
        "1e142b29e210b5dfb2deeb6ce2210b60af16d2a6"
      ],
      "author": {
        "name": "Sasha Levin",
        "email": "sasha.levin@oracle.com",
        "time": "Wed Feb 27 17:06:00 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:24 2013 -0800"
      },
      "message": "hlist: drop the node parameter from iterators\n\nI\u0027m not sure why, but the hlist for each entry iterators were conceived\n\n        list_for_each_entry(pos, head, member)\n\nThe hlist ones were greedy and wanted an extra parameter:\n\n        hlist_for_each_entry(tpos, pos, head, member)\n\nWhy did they need an extra pos parameter? I\u0027m not quite sure. Not only\nthey don\u0027t really need it, it also prevents the iterator from looking\nexactly like the list iterator, which is unfortunate.\n\nBesides the semantic patch, there was some manual work required:\n\n - Fix up the actual hlist iterators in linux/list.h\n - Fix up the declaration of other iterators based on the hlist ones.\n - A very small amount of places were using the \u0027node\u0027 parameter, this\n was modified to use \u0027obj-\u003emember\u0027 instead.\n - Coccinelle didn\u0027t handle the hlist_for_each_entry_safe iterator\n properly, so those had to be fixed up manually.\n\nThe semantic patch which is mostly the work of Peter Senna Tschudin is here:\n\n@@\niterator name hlist_for_each_entry, hlist_for_each_entry_continue, hlist_for_each_entry_from, hlist_for_each_entry_rcu, hlist_for_each_entry_rcu_bh, hlist_for_each_entry_continue_rcu_bh, for_each_busy_worker, ax25_uid_for_each, ax25_for_each, inet_bind_bucket_for_each, sctp_for_each_hentry, sk_for_each, sk_for_each_rcu, sk_for_each_from, sk_for_each_safe, sk_for_each_bound, hlist_for_each_entry_safe, hlist_for_each_entry_continue_rcu, nr_neigh_for_each, nr_neigh_for_each_safe, nr_node_for_each, nr_node_for_each_safe, for_each_gfn_indirect_valid_sp, for_each_gfn_sp, for_each_host;\n\ntype T;\nexpression a,c,d,e;\nidentifier b;\nstatement S;\n@@\n\n-T b;\n    \u003c+... when !\u003d b\n(\nhlist_for_each_entry(a,\n- b,\nc, d) S\n|\nhlist_for_each_entry_continue(a,\n- b,\nc) S\n|\nhlist_for_each_entry_from(a,\n- b,\nc) S\n|\nhlist_for_each_entry_rcu(a,\n- b,\nc, d) S\n|\nhlist_for_each_entry_rcu_bh(a,\n- b,\nc, d) S\n|\nhlist_for_each_entry_continue_rcu_bh(a,\n- b,\nc) S\n|\nfor_each_busy_worker(a, c,\n- b,\nd) S\n|\nax25_uid_for_each(a,\n- b,\nc) S\n|\nax25_for_each(a,\n- b,\nc) S\n|\ninet_bind_bucket_for_each(a,\n- b,\nc) S\n|\nsctp_for_each_hentry(a,\n- b,\nc) S\n|\nsk_for_each(a,\n- b,\nc) S\n|\nsk_for_each_rcu(a,\n- b,\nc) S\n|\nsk_for_each_from\n-(a, b)\n+(a)\nS\n+ sk_for_each_from(a) S\n|\nsk_for_each_safe(a,\n- b,\nc, d) S\n|\nsk_for_each_bound(a,\n- b,\nc) S\n|\nhlist_for_each_entry_safe(a,\n- b,\nc, d, e) S\n|\nhlist_for_each_entry_continue_rcu(a,\n- b,\nc) S\n|\nnr_neigh_for_each(a,\n- b,\nc) S\n|\nnr_neigh_for_each_safe(a,\n- b,\nc, d) S\n|\nnr_node_for_each(a,\n- b,\nc) S\n|\nnr_node_for_each_safe(a,\n- b,\nc, d) S\n|\n- for_each_gfn_sp(a, c, d, b) S\n+ for_each_gfn_sp(a, c, d) S\n|\n- for_each_gfn_indirect_valid_sp(a, c, d, b) S\n+ for_each_gfn_indirect_valid_sp(a, c, d) S\n|\nfor_each_host(a,\n- b,\nc) S\n|\nfor_each_host_safe(a,\n- b,\nc, d) S\n|\nfor_each_mesh_entry(a,\n- b,\nc, d) S\n)\n    ...+\u003e\n\n[akpm@linux-foundation.org: drop bogus change from net/ipv4/raw.c]\n[akpm@linux-foundation.org: drop bogus hunk from net/ipv6/raw.c]\n[akpm@linux-foundation.org: checkpatch fixes]\n[akpm@linux-foundation.org: fix warnings]\n[akpm@linux-foudnation.org: redo intrusive kvm changes]\nTested-by: Peter Senna Tschudin \u003cpeter.senna@gmail.com\u003e\nAcked-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Sasha Levin \u003csasha.levin@oracle.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nCc: Gleb Natapov \u003cgleb@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c9d76be696bbb76ba1081d2b0fc0086f449788da",
      "tree": "67040374b1c276b0be5b2c5373e4af74f6e2f08d",
      "parents": [
        "80f22b4430cd5c108a4676803439ecb0c5cfeca1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 27 17:04:26 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:17 2013 -0800"
      },
      "message": "dm: convert to idr_alloc()\n\nConvert to the much saner new idr interface.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Alasdair Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "adaedbd9fe5c07e7fbd5854c0cfe5ce1dac7d9bd",
      "tree": "73efd6e24cf2fac1be9679b37a353dd053fc2a1a",
      "parents": [
        "4d53233a36fdda567cd4d080e27e1ee4b669ddd1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 27 17:03:41 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:13 2013 -0800"
      },
      "message": "dm: don\u0027t use idr_remove_all()\n\nidr_destroy() can destroy idr by itself and idr_remove_all() is being\ndeprecated.  Drop its usage.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Alasdair Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f3378b48705154b9089affb2d2e939622aea68f1",
      "tree": "c86f47335ba1bd4fea0dfeb56b0484cebec8dc9b",
      "parents": [
        "51acbcec6c42b24482bac18e42befc822524535d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 28 11:59:03 2013 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 28 11:59:03 2013 +1100"
      },
      "message": "md: expedite metadata update when switching  read-auto -\u003e active\n\nIf something has failed while the array was read-auto,\nthen when we switch to \u0027active\u0027 we need to update the metadata.\nThis will happen anyway but it is good to expedite it, and\nalso to ensure any failed device has been released by the\nunderlying device before we try to action the ioctl which\ncaused us to switch to \u0027active\u0027 mode.\n\nReported-by: Joe Lawrence \u003cJoe.Lawrence@stratus.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "51acbcec6c42b24482bac18e42befc822524535d",
      "tree": "8677d949a7fb1d398b5ace9c5554e9e14a0c00d2",
      "parents": [
        "ee0b0244030434cdda26777bfb98962447e080cd"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 28 09:08:34 2013 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 28 09:08:34 2013 +1100"
      },
      "message": "md: remove CONFIG_MULTICORE_RAID456\n\nThis doesn\u0027t seem to actually help and we have an alternate\nmulti-threading approach waiting in the wings, so just get\nrid of this config option and associated code.\n\nAs a bonus, we remove one use of CONFIG_EXPERIMENTAL\n\nCc: Dan Williams \u003cdjbw@fb.com\u003e\nCc: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d895cb1af15c04c522a25c79cc429076987c089b",
      "tree": "895dc9157e28f603d937a58be664e4e440d5530c",
      "parents": [
        "9626357371b519f2b955fef399647181034a77fe",
        "d3d009cb965eae7e002ea5badf603ea8f4c34915"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 26 20:16:07 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 26 20:16:07 2013 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs pile (part one) from Al Viro:\n \"Assorted stuff - cleaning namei.c up a bit, fixing -\u003ed_name/-\u003ed_parent\n  locking violations, etc.\n\n  The most visible changes here are death of FS_REVAL_DOT (replaced with\n  \"has -\u003ed_weak_revalidate()\") and a new helper getting from struct file\n  to inode.  Some bits of preparation to xattr method interface changes.\n\n  Misc patches by various people sent this cycle *and* ocfs2 fixes from\n  several cycles ago that should\u0027ve been upstream right then.\n\n  PS: the next vfs pile will be xattr stuff.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (46 commits)\n  saner proc_get_inode() calling conventions\n  proc: avoid extra pde_put() in proc_fill_super()\n  fs: change return values from -EACCES to -EPERM\n  fs/exec.c: make bprm_mm_init() static\n  ocfs2/dlm: use GFP_ATOMIC inside a spin_lock\n  ocfs2: fix possible use-after-free with AIO\n  ocfs2: Fix oops in ocfs2_fast_symlink_readpage() code path\n  get_empty_filp()/alloc_file() leave both -\u003ef_pos and -\u003ef_version zero\n  target: writev() on single-element vector is pointless\n  export kernel_write(), convert open-coded instances\n  fs: encode_fh: return FILEID_INVALID if invalid fid_type\n  kill f_vfsmnt\n  vfs: kill FS_REVAL_DOT by adding a d_weak_revalidate dentry op\n  nfsd: handle vfs_getattr errors in acl protocol\n  switch vfs_getattr() to struct path\n  default SET_PERSONALITY() in linux/elf.h\n  ceph: prepopulate inodes only when request is aborted\n  d_hash_and_lookup(): export, switch open-coded instances\n  9p: switch v9fs_set_create_acl() to inode+fid, do it before d_instantiate()\n  9p: split dropping the acls from v9fs_set_create_acl()\n  ...\n"
    },
    {
      "commit": "ee0b0244030434cdda26777bfb98962447e080cd",
      "tree": "f2e59eeed60c0b76f6f53c63221114f2c0d3dbe2",
      "parents": [
        "f96c9f305c24a0d4a075e2c75aa6b417aa238687"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Feb 25 12:38:29 2013 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 26 11:58:50 2013 +1100"
      },
      "message": "md/raid1,raid10: fix deadlock with freeze_array()\n\nWhen raid1/raid10 needs to fix a read error, it first drains\nall pending requests by calling freeze_array().\nThis calls flush_pending_writes() if it needs to sleep,\nbut some writes may be pending in a per-process plug rather\nthan in the per-array request queue.\n\nWhen raid1{,0}_unplug() moves the request from the per-process\nplug to the per-array request queue (from which\nflush_pending_writes() can flush them), it needs to wake up\nfreeze_array(), or freeze_array() will never flush them and so\nit will block forever.\n\nSo add the requires wake_up() calls.\n\nThis bug was introduced by commit\n   f54a9d0e59c4bea3db733921ca9147612a6f292c\nfor raid1 and a similar commit for RAID10, and so has been present\nsince linux-3.6.  As the bug causes a deadlock I believe this fix is\nsuitable for -stable.\n\nCc: stable@vger.kernel.org (3.6.y 3.7.y 3.8.y)\nReported-by: Tregaron Bayly \u003ctbayly@bluehost.com\u003e\nTested-by: Tregaron Bayly \u003ctbayly@bluehost.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f96c9f305c24a0d4a075e2c75aa6b417aa238687",
      "tree": "d0da42d7d60fbb920c3d8e5027596ed310c0ab9c",
      "parents": [
        "58ebb34c49fcfcaa029e4b1c1453d92583900f9a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 21 15:50:07 2013 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 26 11:58:44 2013 +1100"
      },
      "message": "md/raid0: improve error message when converting RAID4-with-spares to RAID0\n\nMentioning \"bad disk number -1\" exposes irrelevant internal detail.\nJust say they are inactive and must be removed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "58ebb34c49fcfcaa029e4b1c1453d92583900f9a",
      "tree": "797af00762847745eb34f1fa6241f5d157fd5f04",
      "parents": [
        "a64685399181780998281fe07309a94b25dd24c3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 21 15:36:38 2013 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 26 11:57:04 2013 +1100"
      },
      "message": "md: raid0: fix error return from create_stripe_zones.\n\nCreate_stripe_zones returns an error slightly differently to\nraid0_run and to raid0_takeover_*.\n\nThe error returned used by the second was wrong and an error would\nresult in mddev-\u003eprivate being set to NULL and sooner or later a\ncrash.\n\nSo never return NULL, return ERR_PTR(err), not NULL from\ncreate_stripe_zones.\n\nThis bug has been present since 2.6.35 so the fix is suitable\nfor any kernel since then.\n\nCc: stable@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a64685399181780998281fe07309a94b25dd24c3",
      "tree": "a1f72391b57c69b0e255844bfe063282d43a9839",
      "parents": [
        "fe5d2f4a15967bbe907e7b3e31e49dae7af7cc6b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 21 14:33:17 2013 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 26 11:55:40 2013 +1100"
      },
      "message": "md: fix two bugs when attempting to resize RAID0 array.\n\nYou cannot resize a RAID0 array (in terms of making the devices\nbigger), but the code doesn\u0027t entirely stop you.\nSo:\n\n disable setting of the available size on each device for\n RAID0 and Linear devices.  This must not change as doing so\n can change the effective layout of data.\n\n Make sure that the size that raid0_size() reports is accurate,\n but rounding devices sizes to chunk sizes.  As the device sizes\n cannot change now, this isn\u0027t so important, but it is best to be\n safe.\n\nWithout this change:\n  mdadm --grow /dev/md0 -z max\n  mdadm --grow /dev/md0 -Z max\n  then read to the end of the array\n\ncan cause a BUG in a RAID0 array.\n\nThese bugs have been present ever since it became possible\nto resize any device, which is a long time.  So the fix is\nsuitable for any -stable kerenl.\n\nCc: stable@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fe5d2f4a15967bbe907e7b3e31e49dae7af7cc6b",
      "tree": "480fe9fd2e9cd0884b375351c4db98a9dfb21aac",
      "parents": [
        "9a3152ab024867100f2f50d124b998d05fb1c3f6"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Feb 21 13:28:10 2013 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 26 11:55:36 2013 +1100"
      },
      "message": "DM RAID: Add support for MD\u0027s RAID10 \"far\" and \"offset\" algorithms\n\nDM RAID:  Add support for MD\u0027s RAID10 \"far\" and \"offset\" algorithms\n\nUntil now, dm-raid.c only supported the \"near\" algorthm of MD\u0027s RAID10\nimplementation.  This patch adds support for the \"far\" and \"offset\"\nalgorithms, but only with the improved redundancy that is brought with\nthe introduction of the \u0027use_far_sets\u0027 bit, which shifts copied stripes\naccording to smaller sets vs the entire array.  That is, the 17th bit\nof the \u0027layout\u0027 variable that defines the RAID10 implementation will\nalways be set.   (More information on how the \u0027layout\u0027 variable selects\nthe RAID10 algorithm can be found in the opening comments of\ndrivers/md/raid10.c.)\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9a3152ab024867100f2f50d124b998d05fb1c3f6",
      "tree": "15b97c56d117340fa5db609ced6e0d51a91f2f37",
      "parents": [
        "475901aff15841fb0a81e7546517407779a9b061"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Feb 21 13:28:10 2013 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 26 11:55:33 2013 +1100"
      },
      "message": "MD RAID10: Improve redundancy for \u0027far\u0027 and \u0027offset\u0027 algorithms (part 2)\n\nMD RAID10:  Improve redundancy for \u0027far\u0027 and \u0027offset\u0027 algorithms (part 2)\n\nThis patch addresses raid arrays that have a number of devices that cannot\nbe evenly divided by \u0027far_copies\u0027.  (E.g. 5 devices, far_copies \u003d 2)  This\ncase must be handled differently because it causes that last set to be of\na different size than the rest of the sets.  We must compute a new modulo\nfor this last set so that copied chunks are properly wrapped around.\n\nExample use_far_sets\u003d1, far_copies\u003d2, near_copies\u003d1, devices\u003d5:\n                \"far\" algorithm\n        dev1 dev2 dev3 dev4 dev5\n\t\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\n\t[ A   B ] [ C    D   E ]\n        [ G   H ] [ I    J   K ]\n                    ...\n        [ B   A ] [ E    C   D ] --\u003e nominal set of 2 and last set of 3\n        [ H   G ] [ K    I   J ]     []\u0027s show far/offset sets\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "475901aff15841fb0a81e7546517407779a9b061",
      "tree": "22a641d5ff0f86db53cba49f6f701b16e9148507",
      "parents": [
        "4c0ca26bd260dddf3b9781758cb5e2df3f74d4a3"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Feb 21 13:28:10 2013 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 26 11:55:30 2013 +1100"
      },
      "message": "MD RAID10: Improve redundancy for \u0027far\u0027 and \u0027offset\u0027 algorithms (part 1)\n\nThe MD RAID10 \u0027far\u0027 and \u0027offset\u0027 algorithms make copies of entire stripe\nwidths - copying them to a different location on the same devices after\nshifting the stripe.  An example layout of each follows below:\n\n\t        \"far\" algorithm\n\tdev1 dev2 dev3 dev4 dev5 dev6\n\t\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\n\t A    B    C    D    E    F\n\t G    H    I    J    K    L\n\t            ...\n\t F    A    B    C    D    E  --\u003e Copy of stripe0, but shifted by 1\n\t L    G    H    I    J    K\n\t            ...\n\n\t\t\"offset\" algorithm\n\tdev1 dev2 dev3 dev4 dev5 dev6\n\t\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\n\t A    B    C    D    E    F\n\t F    A    B    C    D    E  --\u003e Copy of stripe0, but shifted by 1\n\t G    H    I    J    K    L\n\t L    G    H    I    J    K\n\t            ...\n\nRedundancy for these algorithms is gained by shifting the copied stripes\none device to the right.  This patch proposes that array be divided into\nsets of adjacent devices and when the stripe copies are shifted, they wrap\non set boundaries rather than the array size boundary.  That is, for the\npurposes of shifting, the copies are confined to their sets within the\narray.  The sets are \u0027near_copies * far_copies\u0027 in size.\n\nThe above \"far\" algorithm example would change to:\n\t        \"far\" algorithm\n\tdev1 dev2 dev3 dev4 dev5 dev6\n\t\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\n\t A    B    C    D    E    F\n\t G    H    I    J    K    L\n\t            ...\n\t B    A    D    C    F    E  --\u003e Copy of stripe0, shifted 1, 2-dev sets\n\t H    G    J    I    L    K      Dev sets are 1-2, 3-4, 5-6\n\t            ...\n\nThis has the affect of improving the redundancy of the array.  We can\nalways sustain at least one failure, but sometimes more than one can\nbe handled.  In the first examples, the pairs of devices that CANNOT fail\ntogether are:\n\t(1,2) (2,3) (3,4) (4,5) (5,6) (1, 6) [40% of possible pairs]\nIn the example where the copies are confined to sets, the pairs of\ndevices that cannot fail together are:\n\t(1,2) (3,4) (5,6)                    [20% of possible pairs]\n\nWe cannot simply replace the old algorithms, so the 17th bit of the \u0027layout\u0027\nvariable is used to indicate whether we use the old or new method of computing\nthe shift.  (This is similar to the way the 16th bit indicates whether the\n\"far\" algorithm or the \"offset\" algorithm is being used.)\n\nThis patch only handles the cases where the number of total raid disks is\na multiple of \u0027far_copies\u0027.  A follow-on patch addresses the condition where\nthis is not true.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4c0ca26bd260dddf3b9781758cb5e2df3f74d4a3",
      "tree": "b9d8fc9c62a075db9ef41a4df1c22b0e31f6955c",
      "parents": [
        "c8dc9c654794a765ca61baed07f84ed8aaa7ca8c"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Feb 21 13:28:09 2013 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 26 11:55:27 2013 +1100"
      },
      "message": "MD RAID10: Minor non-functional code changes\n\nChanges include assigning \u0027addr\u0027 from \u0027s\u0027 instead of \u0027sector\u0027 to be\nconsistent with the way the code does it just a few lines later and\nusing \u0027%\u003d\u0027 vs a conditional and subtraction.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c8dc9c654794a765ca61baed07f84ed8aaa7ca8c",
      "tree": "81dea728ef7bcaa01fb7e06c1e731d76dd258dff",
      "parents": [
        "bbfa57c0f2243a7c31fd248d22e9861a2802cad5"
      ],
      "author": {
        "name": "Joe Lawrence",
        "email": "Joe.Lawrence@stratus.com",
        "time": "Thu Feb 21 13:28:09 2013 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 26 11:55:21 2013 +1100"
      },
      "message": "md: raid1,10: Handle REQ_WRITE_SAME flag in write bios\n\nSet mddev queue\u0027s max_write_same_sectors to its chunk_sector value (before\ndisk_stack_limits merges the underlying disk limits.)  With that in place,\nbe sure to handle writes coming down from the block layer that have the\nREQ_WRITE_SAME flag set.  That flag needs to be copied into any newly cloned\nwrite bio.\n\nSigned-off-by: Joe Lawrence \u003cjoe.lawrence@stratus.com\u003e\nAcked-by: \"Martin K. Petersen\" \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "df8557982fb3fa0a1e638cd1bf7b7092a202fa32",
      "tree": "559733a498baf93a329d191264c0e70a83b12777",
      "parents": [
        "2ef14f465b9e096531343f5b734cffc5f759f4a6"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Fri Feb 22 16:32:03 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Feb 23 17:50:08 2013 -0800"
      },
      "message": "drivers/md/persistent-data/dm-transaction-manager.c: rename HASH_SIZE\n\nFix the warning:\n\n  drivers/md/persistent-data/dm-transaction-manager.c:28:1: warning: \"HASH_SIZE\" redefined\n  In file included from include/linux/elevator.h:5,\n                   from include/linux/blkdev.h:216,\n                   from drivers/md/persistent-data/dm-block-manager.h:11,\n                   from drivers/md/persistent-data/dm-transaction-manager.h:10,\n                   from drivers/md/persistent-data/dm-transaction-manager.c:6:\n  include/linux/hashtable.h:22:1: warning: this is the location of the previous definition\n\nCc: Alasdair Kergon \u003cagk@redhat.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "496ad9aa8ef448058e36ca7a787c61f2e63f0f54",
      "tree": "8f4abde793cd7db5bb8fde6d27ebcacd0e54379a",
      "parents": [
        "57eccb830f1cc93d4b506ba306d8dfa685e0c88f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 23 17:07:38 2013 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 22 23:31:31 2013 -0500"
      },
      "message": "new helper: file_inode(file)\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bbfa57c0f2243a7c31fd248d22e9861a2802cad5",
      "tree": "a762bd442fe3799f3987881eb60526b4d9ea4952",
      "parents": [
        "19f949f52599ba7c3f67a5897ac6be14bfcb1200"
      ],
      "author": {
        "name": "Sebastian Riemer",
        "email": "sebastian.riemer@profitbricks.com",
        "time": "Thu Feb 21 13:28:09 2013 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 21 13:28:09 2013 +1100"
      },
      "message": "md: protect against crash upon fsync on ro array\n\nIf an fsync occurs on a read-only array, we need to send a\ncompletion for the IO and may not increment the active IO count.\nOtherwise, we hit a bug trace and can\u0027t stop the MD array anymore.\n\nBy advice of Christoph Hellwig we return success upon a flush\nrequest but we return -EROFS for other writes.\nWe detect flush requests by checking if the bio has zero sectors.\n\nThis patch is suitable to any -stable kernel to which it applies.\n\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Ben Hutchings \u003cben@decadent.org.uk\u003e\nCc: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Sebastian Riemer \u003csebastian.riemer@profitbricks.com\u003e\nReported-by: Ben Hutchings \u003cben@decadent.org.uk\u003e\nAcked-by: Paul Menzel \u003cpaulepanter@users.sourceforge.net\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "cc6c954a076c5df7e0ac8d5e4ffa8b4f5572ae1d",
      "tree": "5a53c5b15edf849a9ea390ca90342d0ffac99fdc",
      "parents": [
        "cf5425bfcd6909f9831a00bc06ccb9a5b163766a",
        "fe7af2d3babefabd96a39e8b0d58ede88f3c7993"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 01 12:04:22 2013 +1100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 01 12:04:22 2013 +1100"
      },
      "message": "Merge tag \u0027dm-3.8-fixes-2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-dm\n\nPull more device-mapper fixes from Alasdair G Kergon:\n \"A fix for stacked dm thin devices and a fix for the new dm WRITE SAME\n  support.\"\n\n* tag \u0027dm-3.8-fixes-2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-dm:\n  dm: fix write same requests counting\n  dm thin: fix queue limits stacking\n"
    },
    {
      "commit": "fe7af2d3babefabd96a39e8b0d58ede88f3c7993",
      "tree": "43f3facbed2274c5cec7df6ef2fc9ecdfa527f4c",
      "parents": [
        "0f640dca08330dfc7820d610578e5935b5e654b2"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 31 14:23:36 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 31 14:23:36 2013 +0000"
      },
      "message": "dm: fix write same requests counting\n\nWhen processing write same requests, fix dm to send the configured\nnumber of WRITE SAME requests to the target rather than the number of\ndiscards, which is not always the same.\n\nDevice-mapper WRITE SAME support was introduced by commit\n23508a96cd2e857d57044a2ed7d305f2d9daf441 (\"dm: add WRITE SAME support\").\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\n"
    },
    {
      "commit": "0f640dca08330dfc7820d610578e5935b5e654b2",
      "tree": "47c201a750b6f405726ee6b66fba825b6475a6c7",
      "parents": [
        "949db153b6466c6f7cad5a427ecea94985927311"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Jan 31 14:11:14 2013 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 31 14:11:14 2013 +0000"
      },
      "message": "dm thin: fix queue limits stacking\n\nthin_io_hints() is blindly copying the queue limits from the thin-pool\nwhich can lead to incorrect limits being set.  The fix here simply\ndeletes the thin_io_hints() hook which leaves the existing stacking\ninfrastructure to set the limits correctly.\n\nWhen a thin-pool uses an MD device for the data device a thin device\nfrom the thin-pool must respect MD\u0027s constraints about disallowing a bio\nfrom spanning multiple chunks.  Otherwise we can see problems.  If the raid0\nchunksize is 1152K and thin-pool chunksize is 256K I see the following\nmd/raid0 error (with extra debug tracing added to thin_endio) when\nmkfs.xfs is executed against the thin device:\n\nmd/raid0:md99: make_request bug: can\u0027t convert block across chunks or bigger than 1152k 6688 127\ndevice-mapper: thin: bio sector\u003d2080 err\u003d-5 bi_size\u003d130560 bi_rw\u003d17 bi_vcnt\u003d32 bi_idx\u003d0\n\nThis extra DM debugging shows that the failing bio is spanning across\nthe first and second logical 1152K chunk (sector 2080 + 255 takes the\nbio beyond the first chunk\u0027s boundary of sector 2304).  So the bio\nsplitting that DM is doing clearly isn\u0027t respecting the MD limits.\n\nmax_hw_sectors_kb is 127 for both the thin-pool and thin device\n(queue_max_hw_sectors returns 255 so we\u0027ll excuse sysfs\u0027s lack of\nprecision).  So this explains why bi_size is 130560.\n\nBut the thin device\u0027s max_hw_sectors_kb should be 4 (PAGE_SIZE) given\nthat it doesn\u0027t have a .merge function (for bio_add_page to consult\nindirectly via dm_merge_bvec) yet the thin-pool does sit above an MD\ndevice that has a compulsory merge_bvec_fn.  This scenario is exactly\nwhy DM must resort to sending single PAGE_SIZE bios to the underlying\nlayer. Some additional context for this is available in the header for\ncommit 8cbeb67a (\"dm: avoid unsupported spanning of md stripe boundaries\").\n\nLong story short, the reason a thin device doesn\u0027t properly get\nconfigured to have a max_hw_sectors_kb of 4 (PAGE_SIZE) is that\nthin_io_hints() is blindly copying the queue limits from the thin-pool\ndevice directly to the thin device\u0027s queue limits.\n\nFix this by eliminating thin_io_hints.  Doing so is safe because the\nblock layer\u0027s queue limits stacking already enables the upper level thin\ndevice to inherit the thin-pool device\u0027s discard and minimum_io_size and\noptimal_io_size limits that get set in pool_io_hints.  But avoiding the\nqueue limits copy allows the thin and thin-pool limits to be different\nwhere it is important, namely max_hw_sectors_kb.\n\nReported-by: Daniel Browning \u003cdb@kavod.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": "55ebbb59c1c6eb1b040f62b8c4ae0b724de6e55a",
      "tree": "93c97e2afe99e3cc329ec5dcd941f968a4729abb",
      "parents": [
        "5f243b9b46a22e5790dbbc36f574c2417af49a41"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Jan 22 21:42:18 2013 -0600"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jan 24 12:02:36 2013 +1100"
      },
      "message": "DM-RAID: Fix RAID10\u0027s check for sufficient redundancy\n\nBefore attempting to activate a RAID array, it is checked for sufficient\nredundancy.  That is, we make sure that there are not too many failed\ndevices - or devices specified for rebuild - to undermine our ability to\nactivate the array.  The current code performs this check twice - once to\nensure there were not too many devices specified for rebuild by the user\n(\u0027validate_rebuild_devices\u0027) and again after possibly experiencing a failure\nto read the superblock (\u0027analyse_superblocks\u0027).  Neither of these checks are\nsufficient.  The first check is done properly but with insufficient\ninformation about the possible failure state of the devices to make a good\ndetermination if the array can be activated.  The second check is simply\ndone wrong in the case of RAID10 because it doesn\u0027t account for the\nindependence of the stripes (i.e. mirror sets).  The solution is to use the\nproperly written check (\u0027validate_rebuild_devices\u0027), but perform the check\nafter the superblocks have been read and we know which devices have failed.\nThis gives us one check instead of two and performs it in a location where\nit can be done right.\n\nOnly RAID10 was affected and it was affected in the following ways:\n- the code did not properly catch the condition where a user specified\n  a device for rebuild that already had a failed device in the same mirror\n  set.  (This condition would, however, be caught at a deeper level in MD.)\n- the code triggers a false positive and denies activation when devices in\n  independent mirror sets have failed - counting the failures as though they\n  were all in the same set.\n\nThe most likely place this error was introduced (or this patch should have\nbeen included) is in commit 4ec1e369 - first introduced in v3.7-rc1.\nConsequently this fix should also go in v3.7.y, however there is a\nsmall conflict on the .version in raid_target, so I\u0027ll submit a\nseparate patch to -stable.\n\nCc: stable@vger.kernel.org\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3a366e614d0837d9fc23f78cdb1a1186ebc3387f",
      "tree": "5be6ec716687234ac1e6202db62c84ee1d2246be",
      "parents": [
        "ac9a19745196388ae5d828c0be7a1d6e472101f3"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jan 11 13:06:33 2013 -0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Jan 14 15:00:36 2013 +0100"
      },
      "message": "block: add missing block_bio_complete() tracepoint\n\nbio completion didn\u0027t kick block_bio_complete TP.  Only dm was\nexplicitly triggering the TP on IO completion.  This makes\nblock_bio_complete TP useless for tracers which want to know about\nbios, and all other bio based drivers skip generating blktrace\ncompletion events.\n\nThis patch makes all bio completions via bio_endio() generate\nblock_bio_complete TP.\n\n* Explicit trace_block_bio_complete() invocation removed from dm and\n  the trace point is unexported.\n\n* @rq dropped from trace_block_bio_complete().  bios may fly around\n  w/o queue associated.  Verifying and accessing the assocaited queue\n  belongs to TP probes.\n\n* blktrace now gets both request and bio completions.  Make it ignore\n  bio completions if request completion path is happening.\n\nThis makes all bio based drivers generate blktrace completion events\nproperly and makes the block_bio_complete TP actually useful.\n\nv2: With this change, block_bio_complete TP could be invoked on sg\n    commands which have bio\u0027s with %NULL bi_bdev.  Update TP\n    assignment code to check whether bio-\u003ebi_bdev is %NULL before\n    dereferencing.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nOriginal-patch-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Alasdair Kergon \u003cagk@redhat.com\u003e\nCc: dm-devel@redhat.com\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "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"
    }
  ],
  "next": "c02c0aeb6c728e5ad705dba86784bd553cb6f059"
}
