)]}'
{
  "log": [
    {
      "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "4f81a4176297db57c7ef3b2893092dd837c1e2a8",
      "tree": "80a52e60b29377dc82c7f4c902ca0053479d6909",
      "parents": [
        "44feb387f6f5584535bd6e3ad7ccfdce715d7dba"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Oct 12 21:02:13 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 12 21:02:13 2012 +0100"
      },
      "message": "dm thin: move bio_prison code to separate module\n\nThe bio prison code will be useful to other future DM targets so\nmove it to a separate module.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "44feb387f6f5584535bd6e3ad7ccfdce715d7dba",
      "tree": "f49e3e91bcba0c55d3a0357def6472069d00c42f",
      "parents": [
        "28eed34e7662d7602da6753b0ba2563006b8e7a2"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Oct 12 21:02:10 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 12 21:02:10 2012 +0100"
      },
      "message": "dm thin: prepare to separate bio_prison code\n\nThe bio prison code will be useful to share with future DM targets.\n\nPrepare to move this code into a separate module, adding a dm prefix\nto structures and functions that will be exported.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "28eed34e7662d7602da6753b0ba2563006b8e7a2",
      "tree": "0aeeda160b7cccfb77be58d47084a8e606905bf7",
      "parents": [
        "0bcf08798eb9fc3cd0fe2e6b74b25f3f57fa8af2"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Oct 12 21:02:07 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 12 21:02:07 2012 +0100"
      },
      "message": "dm thin: support discard with non power of two block size\n\nSupport discards when the pool\u0027s block size is not a power of 2.\nThe block layer assumes discard_granularity is a power of 2 (in\nblkdev_issue_discard), so we set this to the largest power of 2 that is\na divides into the number of sectors in each block, but never less than\nDATA_DEV_BLOCK_SIZE_MIN_SECTORS.\n\nThis patch eliminates the \"Discard support must be disabled when the\nblock size is not a power of 2\" constraint that was imposed in commit\n55f2b8b (\"dm thin: support for non power of 2 pool blocksize\").  That\ncommit was incomplete: using a block size that is not a power of 2\nshouldn\u0027t mean disabling discard support on the device completely.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "0424caa14508f19ca8093d36c15250e0331a3a0a",
      "tree": "aa276ebe959e01f0bae7aafe9cb7f140219a6b64",
      "parents": [
        "9bc142dd755d360c08a91ecb107d218787a2e9db"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Wed Sep 26 23:45:47 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Sep 26 23:45:47 2012 +0100"
      },
      "message": "dm thin: fix discard support for data devices\n\nThe discard limits that get established for a thin-pool or thin device\nmay be incompatible with the pool\u0027s data device.  Avoid this by checking\nthe discard limits of the pool\u0027s data device.  If an incompatibility is\nfound then the pool\u0027s \u0027discard passdown\u0027 feature is disabled.\n\nChange thin_io_hints to ensure that a thin device always uses the same\nqueue limits as its pool device.\n\nIntroduce requested_pf to track whether or not the table line originally\ncontained the no_discard_passdown flag and use this directly for table\noutput.  We prepare the correct setting for discard_passdown directly in\nbind_control_target (called from pool_io_hints) and store it in\nadjusted_pf rather than waiting until we have access to pool-\u003epf in\npool_preresume.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "9bc142dd755d360c08a91ecb107d218787a2e9db",
      "tree": "b704174c6d6d3fdf55484fc85bd29ff37808b109",
      "parents": [
        "3ae706561637331aa578e52bb89ecbba5edcb7a9"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Wed Sep 26 23:45:46 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Sep 26 23:45:46 2012 +0100"
      },
      "message": "dm thin: tidy discard support\n\nA little thin discard code refactoring to make the next patch (dm thin:\nfix discard support for data devices) more readable.\nPull out a couple of functions (and uses bools instead of unsigned for\nfeatures).\n\nNo functional changes.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "307615a26e95406c42c95916a66ba50434567e0f",
      "tree": "3fcb794cbd50958839c955ec492b3fb25fd801b6",
      "parents": [
        "979570e02981d4a8fc20b3cc8fd651856c98ee9d"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Wed Sep 26 23:45:39 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Sep 26 23:45:39 2012 +0100"
      },
      "message": "dm thin: do not set discard_zeroes_data\n\nThe dm thin pool target claims to support the zeroing of discarded\ndata areas.  This turns out to be incorrect when processing discards\nthat do not exactly cover a complete number of blocks, so the target\nmust always set discard_zeroes_data_unsupported.\n\nThe thin pool target will zero blocks when they are allocated if the\nskip_block_zeroing feature is not specified.  The block layer\nmay send a discard that only partly covers a block.  If a thin pool\nblock is partially discarded then there is no guarantee that the\ndiscarded data will get zeroed before it is accessed again.\nDue to this, thin devices cannot claim discards will always zero data.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nCc: stable@vger.kernel.org # 3.4+\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "1f4e0ff07980820977f45d6a5dbc81d3bb9ce4d3",
      "tree": "5b5a159add010d09ea58ca12fd079b16f05333b8",
      "parents": [
        "e49e582965b3694f07a106adc83ddb44aa4f0890"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:16 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:16 2012 +0100"
      },
      "message": "dm thin: commit before gathering status\n\nCommit outstanding metadata before returning the status for a dm thin\npool so that the numbers reported are as up-to-date as possible.\n\nThe commit is not performed if the device is suspended or if\nthe DM_NOFLUSH_FLAG is supplied by userspace and passed to the target\nthrough a new \u0027status_flags\u0027 parameter in the target\u0027s dm_status_fn.\n\nThe userspace dmsetup tool will support the --noflush flag with the\n\u0027dmsetup status\u0027 and \u0027dmsetup wait\u0027 commands from version 1.02.76\nonwards.\n\nTested-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "e49e582965b3694f07a106adc83ddb44aa4f0890",
      "tree": "fcc6ff02fd4bd9afa59b5fd3bdbb9991f1271d8a",
      "parents": [
        "da105ed5fd7edcc5e0df7dbacef4dadda74e7ebe"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Jul 27 15:08:16 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:16 2012 +0100"
      },
      "message": "dm thin: add read only and fail io modes\n\nAdd read-only and fail-io modes to thin provisioning.\n\nIf a transaction commit fails the pool\u0027s metadata device will transition\nto \"read-only\" mode.  If a commit fails once already in read-only mode\nthe transition to \"fail-io\" mode occurs.\n\nOnce in fail-io mode the pool and all associated thin devices will\nreport a status of \"Fail\".\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": "4afdd680f7c106e1c87b6dd7af9751c282ecb4b0",
      "tree": "b5afcd97153a4a9e70823a2d0d2c33bfc2b51926",
      "parents": [
        "40db5a537655aa0b17a82a4b5596f8d27400edd8"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Jul 27 15:08:14 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:14 2012 +0100"
      },
      "message": "dm thin: reduce number of metadata commits\n\nReduce the number of metadata commits by using\ndm_thin_changed_this_transaction to check if metadata was changed on a\nper thin device granularity.\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": "66b1edc05e3f4c1227f51e40f2ead3e973c00cb0",
      "tree": "e9c549057d91f1bb57755b1ac0a38512fcea3664",
      "parents": [
        "0fa5b17b08baa37919ddd21529081e3090d47de5"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Jul 27 15:08:14 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:14 2012 +0100"
      },
      "message": "dm thin metadata: add format option to dm_pool_metadata_open\n\nAdd a parameter to dm_pool_metadata_open to indicate whether or not an\nunformatted metadata area should be formatted.\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": "0ac55489d9e3898987b2ae305844cf2af86e6b8d",
      "tree": "ceacdf378d929bd0037879f42ea6270bc5ba220d",
      "parents": [
        "16ad3d103dbec4fe6c5950d5a6c383ba9a5296ef"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:08 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:08 2012 +0100"
      },
      "message": "dm: use bool bitfields in struct dm_target\n\nUse boolean bit fields for flags in struct dm_target.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "16ad3d103dbec4fe6c5950d5a6c383ba9a5296ef",
      "tree": "90747a420fa5f27b1428514c231d4fb1a72b5b68",
      "parents": [
        "0e9c24ed7443d090e369a2eddfa13f7f0b5afbaf"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Jul 27 15:08:07 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:07 2012 +0100"
      },
      "message": "dm thin: set flush_supported\n\nThe thin provisioning target commits internal metadata on flush.  So it\nshould receive flushes regardless of whether the underlying devices\nsupport them.\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": "600497013687516153cb82637acfe56f7eb9308a",
      "tree": "d44382be55c68208ba7344dfaca8ade10e87c0d5",
      "parents": [
        "905386f82d08f66726912f303f3e6605248c60a3"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Jul 27 15:08:06 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:06 2012 +0100"
      },
      "message": "dm thin: avoid unnecessarily breaking sharing for flushes\n\nThere\u0027s no need to break sharing, triggering a copy, for a write that has no\ndata (i.e. a flush).\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": "905386f82d08f66726912f303f3e6605248c60a3",
      "tree": "183673431e4a0b76b90488447287cdcf53e1b695",
      "parents": [
        "c66029f4d4226452e9a7f468650aa1d553525b81"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Jul 27 15:08:05 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:05 2012 +0100"
      },
      "message": "dm thin: fix memory leak in process_prepared_mapping error paths\n\nFix memory leak in process_prepared_mapping by always freeing\nthe dm_thin_new_mapping structs from the mapping_pool mempool on\nthe error paths.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f9a8e0cd261fc05820539b0ea613686a32795406",
      "tree": "0edf941f787dd10dd674111cfefbde5004348ef4",
      "parents": [
        "4929630901100fdbfa19186ecf5ea2706f57719b"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Jul 27 15:08:03 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:03 2012 +0100"
      },
      "message": "dm thin: optimize power of two block size\n\ndm-thin will be most likely used with a block size that is a power of\ntwo. So it should be optimized for this case.\n\nThis patch changes division and modulo operations to shifts and bit\nmasks if block size is a power of two.\n\nA test that bi_sector is divisible by a block size is removed from\nio_overlaps_block. Device mapper never sends bios that span a block\nboundary. Consequently, if we tested that bi_size is equivalent to block\nsize, bi_sector must already be on a block boundary.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4929630901100fdbfa19186ecf5ea2706f57719b",
      "tree": "d12aaec9ccae4fb91eb55271fc8f987db0bbce96",
      "parents": [
        "7acf0277cea0f2da89ffffcc9892bea23f618e63"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Jul 27 15:08:03 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:03 2012 +0100"
      },
      "message": "dm thin: split discards on block boundary\n\nThis patch sets the variable \"ti-\u003esplit_discard_requests\" for the dm thin\ntarget so that device mapper core splits discard requests on a block\nboundary.\n\nConsequently, a discard request that spans multiple blocks is never sent\nto dm-thin. The patch also removes some code in process_discard that\ndeals with discards that span multiple blocks.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "55f2b8bdb0c7387eb2dc645b9ecbe5d0faa6b54e",
      "tree": "4428d66325bdc8d4f25a374e10b5a78cb0ab3e54",
      "parents": [
        "33d07c0dfab902a7c5420587984497dc05ab5c9c"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Jul 27 15:08:02 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:02 2012 +0100"
      },
      "message": "dm thin: support for non power of 2 pool blocksize\n\nNon power of 2 blocksize support is needed to properly align thinp IO\non storage that has non power of 2 optimal IO sizes (e.g. RAID6 10+2).\n\nUse sector_div to support non power of 2 blocksize for the pool\u0027s\ndata device.  This provides comparable performance to the power of 2\nmath that was performed until now (as tested on modern x86_64 hardware).\n\nThe kernel currently assumes that limits-\u003ediscard_granularity is a power\nof two so the thin target only enables discard support if the block\nsize is a power of two.\n\nEliminate pool structure\u0027s \u0027block_shift\u0027, \u0027offset_mask\u0027 and\nremaining 4 byte holes.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "542f90381422676544382d4071ba44a2de90a0c1",
      "tree": "0eae6798ab2fdef68a0eb1ea5ac14f3cc3ffb740",
      "parents": [
        "1df05483d758ea43abc375869fbe06be506ba827"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Jul 27 15:08:00 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:00 2012 +0100"
      },
      "message": "dm: support non power of two target max_io_len\n\nRemove the restriction that limits a target\u0027s specified maximum incoming\nI/O size to be a power of 2.\n\nRename this setting from \u0027split_io\u0027 to the less-ambiguous \u0027max_io_len\u0027.\nChange it from sector_t to uint32_t, which is plenty big enough, and\nintroduce a wrapper function dm_set_target_max_io_len() to set it.\nUse sector_div() to process it now that it is not necessarily a power of 2.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f09996c993e256fce4b920588959866998d51250",
      "tree": "462169f8d08cdac6960db32bf6307068630f634e",
      "parents": [
        "1a66a08ae82b16eb40705ad112ff28873981af92"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Jul 27 15:07:59 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:07:59 2012 +0100"
      },
      "message": "dm thin: provide specific errors for two table load failure cases\n\nProvide specific error message strings for two pool_ctr() failure cases\nthat currently give just \"Unknown error\".\n\nReference: test_two_pools_pointing_to_the_same_metadata_fails and\ntest_different_pool_cant_replace_pool in thinp-test-suite.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "17b7d63f7ed10376e762fdfadbc65da6687d569a",
      "tree": "5de13953644dab7ca76b0b924558503f0c8a7860",
      "parents": [
        "7768ed33ccdc02801c4483fc5682dc66ace14aea"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Jul 27 15:07:57 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:07:57 2012 +0100"
      },
      "message": "dm thin: clean up compiler warning\n\nClean up \"warning: dubious: !x \u0026 y\".  Also make it clear that\n__snapshotted_since() returns a bool and that dm_thin_lookup_result\u0027s\n\u0027shared\u0027 member is a flag.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "7768ed33ccdc02801c4483fc5682dc66ace14aea",
      "tree": "355d56037f8d0ff19e1dc332aeecf3ffd2c70f88",
      "parents": [
        "bdc0077af574800d24318b6945cf2344e8dbb050"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:07:57 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:07:57 2012 +0100"
      },
      "message": "dm thin: reduce endio_hook pool size\n\nReduce the slab size used for the dm_thin_endio_hook mempool.\n\nAllocation has been seen to fail on machines with smaller amounts\nof memory due to fragmentation.\n\n  lvm: page allocation failure. order:5, mode:0xd0\n  device-mapper: table: 253:38: thin-pool: Error creating pool\u0027s endio_hook mempool\n\nCc: stable@vger.kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "650d2a06b4fe1cc1d218c20e256650f68bf0ca31",
      "tree": "586e7da8f7bd3e895b52514bb4bd1ff1f1400181",
      "parents": [
        "751f188dd5ab95b3f2b5f2f467c38aae5a2877eb"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Jul 20 14:25:05 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 20 14:25:05 2012 +0100"
      },
      "message": "dm thin: do not send discards to shared blocks\n\nWhen process_discard receives a partial discard that doesn\u0027t cover a\nfull block, it sends this discard down to that block. Unfortunately, the\nblock can be shared and the discard would corrupt the other snapshots\nsharing this block.\n\nThis patch detects block sharing and ends the discard with success when\nsending it to the shared block.\n\nThe above change means that if the device supports discard it can\u0027t be\nguaranteed that a discard request zeroes data. Therefore, we set\nti-\u003ediscard_zeroes_data_unsupported.\n\nThin target discard support with this bug arrived in commit\n104655fd4dcebd50068ef30253a001da72e3a081 (dm thin: support discards).\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "0d200aefd4ac51787b6b80de1bb7ce93bccd59f6",
      "tree": "0a6da552aefa121af0856fb17da8cb6847d10342",
      "parents": [
        "6887a4131da3adaab011613776d865f4bcfb5678"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Tue Jul 03 12:55:31 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jul 03 12:55:31 2012 +0100"
      },
      "message": "dm thin: commit metadata before creating metadata snapshot\n\nUserland sometimes sees a corrupt metadata block if metadata is changing\nrapidly when a metadata snapshot is reserved for userland,  To make the\nproblem go away, commit before we take the metadata snapshot (which is a\nsensible thing to do anyway).\n\nThe checksums mean userland spots this corruption immediately so there\u0027s\nno risk of acting on incorrect data.  No corruption exists from the\nkernel\u0027s point of view, and thin_check passes after pool shutdown.\n\nI believe this is to do with shared blocks at the first level of the\n{device, mapping} btree.  Prior to the metadata-snap support no sharing\nat this level was possible, so this patch is only required after commit\ncc8394d86f045b86ff303d3c9e4ce47d97148951 (\"dm thin: provide userspace\naccess to pool metadata\").\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": "cc8394d86f045b86ff303d3c9e4ce47d97148951",
      "tree": "ad37143c9709f523fb2ca9fc5ac9de75e9a011f9",
      "parents": [
        "a24c25696b7133dd534d7a9436e576af79d9ce3b"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Sun Jun 03 00:30:01 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sun Jun 03 00:30:01 2012 +0100"
      },
      "message": "dm thin: provide userspace access to pool metadata\n\nThis patch implements two new messages that can be sent to the thin\npool target allowing it to take a snapshot of the _metadata_.  This,\nread-only snapshot can be accessed by userland, concurrently with the\nlive target.\n\nOnly one metadata snapshot can be held at a time.  The pool\u0027s status\nline will give the block location for the current msnap.\n\nSince version 0.1.5 of the userland thin provisioning tools, the\nthin_dump program displays the msnap as follows:\n\n    thin_dump -m \u003cmsnap root\u003e \u003cmetadata dev\u003e\n\nAvailable here: https://github.com/jthornber/thin-provisioning-tools\n\nNow that userland can access the metadata we can do various things\nthat have traditionally been kernel side tasks:\n\n     i) Incremental backups.\n\n     By using metadata snapshots we can work out what blocks have\n     changed over time.  Combined with data snapshots we can ensure\n     the data doesn\u0027t change while we back it up.\n\n     A short proof of concept script can be found here:\n\n     https://github.com/jthornber/thinp-test-suite/blob/master/incremental_backup_example.rb\n\n     ii) Migration of thin devices from one pool to another.\n\n     iii) Merging snapshots back into an external origin.\n\n     iv) Asyncronous replication.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a24c25696b7133dd534d7a9436e576af79d9ce3b",
      "tree": "7b8b429aec7d7b2cebfbfbba0047911dc79290aa",
      "parents": [
        "35991652baa12ff3d0e420c0d0cb2ad9f7076e5b"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Sun Jun 03 00:30:00 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sun Jun 03 00:30:00 2012 +0100"
      },
      "message": "dm thin: use slab mempools\n\nUse dedicated caches prefixed with a \"dm_\" name rather than relying on\nkmalloc mempools backed by generic slab caches so the memory usage of\nthin provisioning (and any leaks) can be accounted for independently.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f402693d06f32e746c6153e459c5fb064fa02741",
      "tree": "c4cfcf2702b3e5a1e94e3c3b923b52c413e4325a",
      "parents": [
        "36be50515fe2aef61533b516fa2576a2c7fe7664"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Sat May 19 01:01:01 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat May 19 01:01:01 2012 +0100"
      },
      "message": "dm thin: fix table output when pool target disables discard passdown internally\n\nWhen the thin pool target clears the discard_passdown parameter\ninternally, it incorrectly changes the table line reported to userspace.\nThis breaks dumb string comparisons on these table lines in generic\nuserspace device-mapper library code and leads to tables being reloaded\nrepeatedly when nothing is actually meant to be changing.\n\nThis patch corrects this by no longer changing the table line when\ndiscard passdown was disabled.\n\nWe can still tell when discard passdown is overridden by looking for the\nmessage \"Discard unsupported by data device (sdX): Disabling discard passdown.\"\n\nThis automatic detection is also moved from the \u0027load\u0027 to the \u0027resume\u0027\nso that it is re-evaluated should the properties of underlying devices\nchange.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nAcked-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "7cab8bf1601d38fd73a0a4ea40cc4892b26907cc",
      "tree": "541c6f0757a6a806e49dad866b1bca5cffd55c3e",
      "parents": [
        "c3a0ce2eab76daf9516c817c3f227ea3f4549bd8"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat May 12 01:43:19 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat May 12 01:43:19 2012 +0100"
      },
      "message": "dm thin: correct module description\n\nRemove duplicate copy of string \"device-mapper\" (DM_NAME) from\nMODULE_DESCRIPTION.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c3a0ce2eab76daf9516c817c3f227ea3f4549bd8",
      "tree": "c2510a2e8a4a0f2c0eb66f736d1e1b70b53d0e27",
      "parents": [
        "03aaae7cdc71bc306888440b1f569d463e917b6d"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Sat May 12 01:43:16 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat May 12 01:43:16 2012 +0100"
      },
      "message": "dm thin: fix unprotected use of prepared_discards list\n\nFix two places in commit 104655fd4dce (\"dm thin: support discards\") that\ndidn\u0027t use pool-\u003elock to protect against concurrent changes to the\nprepared_discards list.\n\nWithout this fix, thin_endio() can race with process_discard(), leading\nto concurrent list_add()s that result in the processes locking up with\nan error like the following:\n\nWARNING: at lib/list_debug.c:32 __list_add+0x8f/0xa0()\n...\nlist_add corruption. next-\u003eprev should be prev (ffff880323b96140), but was ffff8801d2c48440. (next\u003dffff8801d2c485c0).\n...\nPid: 17205, comm: kworker/u:1 Tainted: G        W  O 3.4.0-rc3.snitm+ #1\nCall Trace:\n [\u003cffffffff8103ca1f\u003e] warn_slowpath_common+0x7f/0xc0\n [\u003cffffffff8103cb16\u003e] warn_slowpath_fmt+0x46/0x50\n [\u003cffffffffa04f6ce6\u003e] ? bio_detain+0xc6/0x210 [dm_thin_pool]\n [\u003cffffffff8124ff3f\u003e] __list_add+0x8f/0xa0\n [\u003cffffffffa04f70d2\u003e] process_discard+0x2a2/0x2d0 [dm_thin_pool]\n [\u003cffffffffa04f6a78\u003e] ? remap_and_issue+0x38/0x50 [dm_thin_pool]\n [\u003cffffffffa04f7c3b\u003e] process_deferred_bios+0x7b/0x230 [dm_thin_pool]\n [\u003cffffffffa04f7df0\u003e] ? process_deferred_bios+0x230/0x230 [dm_thin_pool]\n [\u003cffffffffa04f7e42\u003e] do_worker+0x52/0x60 [dm_thin_pool]\n [\u003cffffffff81056fa9\u003e] process_one_work+0x129/0x450\n [\u003cffffffff81059b9c\u003e] worker_thread+0x17c/0x3c0\n [\u003cffffffff81059a20\u003e] ? manage_workers+0x120/0x120\n [\u003cffffffff8105eabe\u003e] kthread+0x9e/0xb0\n [\u003cffffffff814ceda4\u003e] kernel_thread_helper+0x4/0x10\n [\u003cffffffff8105ea20\u003e] ? kthread_freezable_should_stop+0x70/0x70\n [\u003cffffffff814ceda0\u003e] ? gs_change+0x13/0x13\n---[ end trace 7e0a523bc5e52692 ]---\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "03aaae7cdc71bc306888440b1f569d463e917b6d",
      "tree": "0f26df484419ac7cfc73b0d13f94a4cf7b701781",
      "parents": [
        "d48b97b403d23f6df0b990cee652bdf9a52337a3"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Sat May 12 01:43:12 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat May 12 01:43:12 2012 +0100"
      },
      "message": "dm thin: reinstate missing mempool_free in cell_release_singleton\n\nFix a significant memory leak inadvertently introduced during\nsimplification of cell_release_singleton() in commit\n6f94a4c45a6f744383f9f695dde019998db3df55 (\"dm thin: fix stacked bi_next\nusage\").\n\nA cell\u0027s hlist_del() must be accompanied by a mempool_free().\nUse __cell_release() to do this, like before.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "67e2e2b281812b5caf4923a38aadc6b89e34f064",
      "tree": "c04255840de5e70a0aa2880d1f1c8bfe1b2e7817",
      "parents": [
        "104655fd4dcebd50068ef30253a001da72e3a081"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:29 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:29 2012 +0100"
      },
      "message": "dm thin: add pool target flags to control discard\n\nAdd dm thin target arguments to control discard support.\n\nignore_discard: Disables discard support\n\nno_discard_passdown: Don\u0027t pass discards down to the underlying data\ndevice, but just remove the mapping within the thin provisioning target.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "104655fd4dcebd50068ef30253a001da72e3a081",
      "tree": "ce4cc70f3ecf643d1c63948f902bc135b17750c7",
      "parents": [
        "eb2aa48d4eb7aee63cba201bf47641dad3e92250"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "message": "dm thin: support discards\n\nSupport discards in the thin target.\n\nOn discard the corresponding mapping(s) are removed from the thin\ndevice.  If the associated block(s) are no longer shared the discard\nis passed to the underlying device.\n\nAll bios other than discards now have an associated deferred_entry\nthat is saved to the \u0027all_io_entry\u0027 in endio_hook.  When non-discard\nIO completes and associated mappings are quiesced any discards that\nwere deferred, via ds_add_work() in process_discard(), will be queued\nfor processing by the worker thread.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n\ndrivers/md/dm-thin.c |  173 ++++++++++++++++++++++++++++++++++++++++++++++----\n drivers/md/dm-thin.c |  172 ++++++++++++++++++++++++++++++++++++++++++++++-----\n 1 file changed, 158 insertions(+), 14 deletions(-)\n"
    },
    {
      "commit": "eb2aa48d4eb7aee63cba201bf47641dad3e92250",
      "tree": "3e160010319f6c4eb30770d07d6fb089955f5704",
      "parents": [
        "6efd6e83092cd4a7532270bc843de90bb93f6683"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "message": "dm thin: prepare to support discard\n\nThis patch contains the ground work needed for dm-thin to support discard.\n\n  - Adds endio function that replaces shared_read_endio.\n\n  - Introduce an explicit \u0027quiesced\u0027 flag into the new_mapping structure.\n    Before, this was implicitly indicated by m-\u003elist being empty.\n\n  - The map_info-\u003eptr remains constant for the duration of a bio\u0027s trip\n    through the thin target.  Make it easier to reason about it.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6efd6e83092cd4a7532270bc843de90bb93f6683",
      "tree": "129b9de5d03a11f0bf02feb3743a10e4fe8561d5",
      "parents": [
        "2dd9c257fbc243aa76ee6db0bb8371f9f74fad2d"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "message": "dm thin: use dm_target_offset\n\nUse dm_target_offset wrapper instead of referencing the awkward ti-\u003ebegin\nexplicitly.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "2dd9c257fbc243aa76ee6db0bb8371f9f74fad2d",
      "tree": "51c82de6e41b4f53f9d41dfe1211c4feba55dc6d",
      "parents": [
        "c4a69ecdb463a901b4645230613961e134e897cd"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "message": "dm thin: support read only external snapshot origins\n\nSupport the use of an external _read only_ device as an origin for a thin\ndevice.\n\nAny read to an unprovisioned area of the thin device will be passed\nthrough to the origin.  Writes trigger allocation of new blocks as\nusual.\n\nOne possible use case for this would be VM hosts that want to run\nguests on thinly-provisioned volumes but have the base image on another\ndevice (possibly shared between many VMs).\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c4a69ecdb463a901b4645230613961e134e897cd",
      "tree": "c53e0a569f3d390ea2a97f964225d5383c6401ec",
      "parents": [
        "71fd5ae25d88841c08d5bbea90c0f0a12ca05509"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "message": "dm thin: relax hard limit on the maximum size of a metadata device\n\nThe thin metadata format can only make use of a device that is \u003c\u003d\nTHIN_METADATA_MAX_SECTORS (currently 15.9375 GB).  Therefore, there is no\npractical benefit to using a larger device.\n\nHowever, it may be that other factors impose a certain granularity for\nthe space that is allocated to a device (E.g. lvm2 can impose a coarse\ngranularity through the use of large, \u003e\u003d 1 GB, physical extents).\n\nRather than reject a larger metadata device, during thin-pool device\nconstruction, switch to allowing it but issue a warning if a device\nlarger than THIN_METADATA_MAX_SECTORS_WARNING (16 GB) is\nprovided.  Any space over 15.9375 GB will not be used.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "905e51b39a5558706a6ed883fe104de3d417050b",
      "tree": "d8e1d9fcdba66942333f099618e6acc5be238538",
      "parents": [
        "31998ef19385c944600d9a981b96252f98204bee"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:27 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:27 2012 +0100"
      },
      "message": "dm thin: commit outstanding data every second\n\nCommit unwritten data every second to prevent too much building up.\n\nReleased blocks don\u0027t become available until after the next commit\n(for crash resilience).  Prior to this patch commits were only\ntriggered by a message to the target or a REQ_{FLUSH,FUA} bio.  This\nallowed far too big a position to build up.\n\nThe interval is hard-coded to 1 second.  This is a sensible setting.\nI\u0027m not making this user configurable, since there isn\u0027t much to be\ngained by tweaking this - and a lot lost by setting it far too high.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fe878f34df89ad4af758f40bbec829807dc93a00",
      "tree": "eaa377c640fd595391491725ab477f29062374b1",
      "parents": [
        "035220b33d6865d81d5433600def53373cca7127"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:24 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:24 2012 +0100"
      },
      "message": "dm thin: correct comments\n\nRemove documentation for unimplemented \u0027trim\u0027 message.\n\nI\u0027d planned a \u0027trim\u0027 target message for shrinking thin devices, but\nthis is better handled via the discard ioctl.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6f94a4c45a6f744383f9f695dde019998db3df55",
      "tree": "7e4982a066935a2434780b5e34fb24fb15e533f0",
      "parents": [
        "72c6e7afc43e19f68a31dea204fc366624d6eee9"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:23 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:23 2012 +0100"
      },
      "message": "dm thin: fix stacked bi_next usage\n\nAvoid using the bi_next field for the holder of a cell when deferring\nbios because a stacked device below might change it.  Store the\nholder in a new field in struct cell instead.\n\nWhen a cell is created, the bio that triggered creation (the holder) was\nadded to the same bio list as subsequent bios.  In some cases we pass\nthis holder bio directly to devices underneath.  If those devices use\nthe bi_next field there will be trouble...\n\nThis also simplifies some code that had to work out which bio was the\nholder.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "991d9fa02da0dd1f843dc011376965e0c8c6c9b5",
      "tree": "a64c94710246b77bb74cd77634581cea3d32cfe1",
      "parents": [
        "3241b1d3e0aaafbfcd320f4d71ade629728cc4f4"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "thornber@redhat.com",
        "time": "Mon Oct 31 20:21:18 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:21:18 2011 +0000"
      },
      "message": "dm: add thin provisioning target\n\nInitial EXPERIMENTAL implementation of device-mapper thin provisioning\nwith snapshot support.  The \u0027thin\u0027 target is used to create instances of\nthe virtual devices that are hosted in the \u0027thin-pool\u0027 target.  The\nthin-pool target provides data sharing among devices.  This sharing is\nmade possible using the persistent-data library in the previous patch.\n\nThe main highlight of this implementation, compared to the previous\nimplementation of snapshots, is that it allows many virtual devices to\nbe stored on the same data volume, simplifying administration and\nallowing sharing of data between volumes (thus reducing disk usage).\n\nAnother big feature is support for arbitrary depth of recursive\nsnapshots (snapshots of snapshots of snapshots ...).  The previous\nimplementation of snapshots did this by chaining together lookup tables,\nand so performance was O(depth).  This new implementation uses a single\ndata structure so we don\u0027t get this degradation with depth.\n\nFor further information and examples of how to use this, please read\nDocumentation/device-mapper/thin-provisioning.txt\n\nSigned-off-by: Joe Thornber \u003cthornber@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    }
  ]
}
