)]}'
{
  "log": [
    {
      "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "83f0d77a7f336130a0ae1290d6bcfa606abaad66",
      "tree": "96a9f3396eb7737a195ce0a14025c96f394b71af",
      "parents": [
        "54d00f6069d921bfe83344cb94e2dd7cb54531ef"
      ],
      "author": {
        "name": "Masanari Iida",
        "email": "standby24x7@gmail.com",
        "time": "Tue Oct 30 00:18:08 2012 +0900"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Oct 29 22:57:50 2012 +0100"
      },
      "message": "md: Fix typo in drivers/md\n\nCorrect spelling typo in drivers/md.\n\nSigned-off-by: Masanari Iida \u003cstandby24x7@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "0bcf08798eb9fc3cd0fe2e6b74b25f3f57fa8af2",
      "tree": "61a17180c1ee5ee32c02137016bbbc4c421466b2",
      "parents": [
        "fe5fe90639b62a75349dd1f1c74c4a984397171c"
      ],
      "author": {
        "name": "Wei Yongjun",
        "email": "yongjun_wei@trendmicro.com.cn",
        "time": "Fri Oct 12 16:59:47 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 12 16:59:47 2012 +0100"
      },
      "message": "dm persistent data: convert to use le32_add_cpu\n\nConvert cpu_to_le32(le32_to_cpu(E1) + E2) to use le32_add_cpu().\n\ndpatch engine is used to auto generate this patch.\n(https://github.com/weiyj/dpatch)\n\nSigned-off-by: Wei Yongjun \u003cyongjun_wei@trendmicro.com.cn\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "310975573ba40ab526b0d76d28225d8d0999d72b",
      "tree": "3ad362bb4fc0c70662c7337723222df16611f2eb",
      "parents": [
        "4afdd680f7c106e1c87b6dd7af9751c282ecb4b0"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Jul 27 15:08:15 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:15 2012 +0100"
      },
      "message": "dm persistent data: introduce dm_bm_set_read_only\n\nIntroduce dm_bm_set_read_only to switch the block manager into a\nread-only mode.  To be used when dm-thin degrades due to io errors on\nthe metadata device.\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": "3c9ad9bd87b03032999ddbeb44bdf7938f7dbd57",
      "tree": "358c25628410d272958baca08a1975a8b213f34b",
      "parents": [
        "384ef0e62e409e52c80adef5b1ff83075377c19e"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Jul 27 15:08:09 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:09 2012 +0100"
      },
      "message": "dm persistent data: stop using dm_bm_unlock_move when shadowing blocks in tm\n\nStop using dm_bm_unlock_move when shadowing blocks in the transaction\nmanager as an optimisation and remove the function as it is then no\nlonger used.\n\nSome code, such as the space maps, keeps using on-disk data structures\nfrom the previous transaction.  It can do this because blocks won\u0027t\nbe reallocated until the subsequent transaction.  Using\ndm_bm_unlock_move to copy blocks sounds like a win, but it forces a\nsynchronous read should the old block be accessed.\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": "384ef0e62e409e52c80adef5b1ff83075377c19e",
      "tree": "734db218c323e88a303f64218661286f94f9e52a",
      "parents": [
        "eb04cf634fc2d5e3bc8fe88fbf434eda4921d875"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Jul 27 15:08:09 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:09 2012 +0100"
      },
      "message": "dm persistent data: tidy transaction manager creation fns\n\nTidy the transaction manager creation functions.\n\nThey no longer lock the superblock.  Superblock locking is pulled out to\nthe caller.\n\nAlso export dm_bm_write_lock_zero.\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": "51a0f659c03ccc8ec407c7a9f9701d1b4618d515",
      "tree": "21b05e433e1f513079e51d3ccec1da6b1ea1008f",
      "parents": [
        "41675aea32949786cf002c4ab179b85144d3423b"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@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 persistent data: create new dm_block_manager struct\n\nThis patch introduces a separate struct for the block_manager.\nIt also uses IS_ERR to check the return value of dm_bufio_client_create\ninstead of testing incorrectly for NULL.\n\nPrior to this patch a struct dm_block_manager was really an alias for\na struct dm_bufio_client.  We want to add some functionality to the\nblock manager that will require extra fields, so this one to one\nmapping is no longer valid.\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": "f4b90369d3a9ffe0f48f373c566578c142e95bf2",
      "tree": "a31918eb5bb8a8704bd24812496cf451d302c522",
      "parents": [
        "8d44c98aac540cdf3cb5385bc6ef8d56930c7d70"
      ],
      "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 persistent data: only commit space map if index changed\n\nIntroduce bitmap_index_changed to track whether or not the index changed\nthen only commit a space map if it did.\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": "8d44c98aac540cdf3cb5385bc6ef8d56930c7d70",
      "tree": "abc7ac2ad9e95a8110374596001c0af40db33683",
      "parents": [
        "600497013687516153cb82637acfe56f7eb9308a"
      ],
      "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 persistent data: always unlock superblock in dm_bm_flush_and_unlock\n\nUnlock the superblock even if initial dm_bufio_write_dirty_buffers fails.\n\nAlso, remove redundant flush calls.  dm_bm_flush_and_unlock\u0027s calls to\ndm_bufio_write_dirty_buffers already result in dm_bufio_issue_flush\nbeing called.\n\nThis avoids warnings about unflushed dirty buffers from bufio.\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": "3caf6d73d4dc163b2d135e0b52b052a2b63e5216",
      "tree": "df766d38649d24d3e3967b74ae989251a1241a9c",
      "parents": [
        "af7346ebbda5f4a95da71359231d32cb136bd246"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Jul 27 15:07:58 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:07:58 2012 +0100"
      },
      "message": "dm persistent data: remove debug space map checker\n\nRemove debug space map checker from dm persistent data.\n\nThe space map checker is a wrapper for other space maps that double\nchecks the reference counts are correct.  It holds all these reference\ncounts in memory rather than on disk, so uses a lot of memory and is\nthus restricted to small pools.\n\nAs yet, this checker hasn\u0027t found any issues, but has caused a few of\nits own due to people turning it on by default with larger pools.\n\nRemoving.\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": "b0239faaf87c38bb419c9264bf20817438ddc3a9",
      "tree": "cc91fa9575c0900e5e26a0aa5edca2dc29cd37ca",
      "parents": [
        "62662303e7f590fdfbb0070ab820a0ad4267c119"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Tue Jul 03 12:55:37 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jul 03 12:55:37 2012 +0100"
      },
      "message": "dm persistent data: fix allocation failure in space map checker init\n\nIf CONFIG_DM_DEBUG_SPACE_MAPS is enabled and memory is fragmented and a\nsufficiently-large metadata device is used in a thin pool then the space\nmap checker will fail to allocate the memory it requires.\n\nSwitch from kmalloc to vmalloc to allow larger virtually contiguous\nallocations for the space map checker\u0027s internal count arrays.\n\nReported-by: Vivek Goyal \u003cvgoyal@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": "62662303e7f590fdfbb0070ab820a0ad4267c119",
      "tree": "48f5e40d7daf73bdc1d435f8c6cfbe70453ce855",
      "parents": [
        "25d7cd6faa7ae6ed2565617c3ee2500ccb8a9f7f"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Tue Jul 03 12:55:35 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jul 03 12:55:35 2012 +0100"
      },
      "message": "dm persistent data: handle space map checker creation failure\n\nIf CONFIG_DM_DEBUG_SPACE_MAPS is enabled and dm_sm_checker_create()\nfails, dm_tm_create_internal() would still return success even though it\ncleaned up all resources it was supposed to have created.  This will\nlead to a kernel crash:\n\ngeneral protection fault: 0000 [#1] SMP DEBUG_PAGEALLOC\n...\nRIP: 0010:[\u003cffffffff81593659\u003e]  [\u003cffffffff81593659\u003e] dm_bufio_get_block_size+0x9/0x20\nCall Trace:\n  [\u003cffffffff81599bae\u003e] dm_bm_block_size+0xe/0x10\n  [\u003cffffffff8159b8b8\u003e] sm_ll_init+0x78/0xd0\n  [\u003cffffffff8159c1a6\u003e] sm_ll_new_disk+0x16/0xa0\n  [\u003cffffffff8159c98e\u003e] dm_sm_disk_create+0xfe/0x160\n  [\u003cffffffff815abf6e\u003e] dm_pool_metadata_open+0x16e/0x6a0\n  [\u003cffffffff815aa010\u003e] pool_ctr+0x3f0/0x900\n  [\u003cffffffff8158d565\u003e] dm_table_add_target+0x195/0x450\n  [\u003cffffffff815904c4\u003e] table_load+0xe4/0x330\n  [\u003cffffffff815917ea\u003e] ctl_ioctl+0x15a/0x2c0\n  [\u003cffffffff81591963\u003e] dm_ctl_ioctl+0x13/0x20\n  [\u003cffffffff8116a4f8\u003e] do_vfs_ioctl+0x98/0x560\n  [\u003cffffffff8116aa51\u003e] sys_ioctl+0x91/0xa0\n  [\u003cffffffff81869f52\u003e] system_call_fastpath+0x16/0x1b\n\nFix the space map checker code to return an appropriate ERR_PTR and have\ndm_sm_disk_create() and dm_tm_create_internal() check for it with\nIS_ERR.\n\nReported-by: Vivek Goyal \u003cvgoyal@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": "25d7cd6faa7ae6ed2565617c3ee2500ccb8a9f7f",
      "tree": "b25b921b508994e51c7d2f03fe9ca1a055a59e77",
      "parents": [
        "0d200aefd4ac51787b6b80de1bb7ce93bccd59f6"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Tue Jul 03 12:55:33 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jul 03 12:55:33 2012 +0100"
      },
      "message": "dm persistent data: fix shadow_info_leak on dm_tm_destroy\n\nCleanup the shadow table before destroying the transaction manager.\n\nReference: leak was identified with kmemleak when running\ntest_discard_random_sectors in the thinp-test-suite.\n\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": "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": "71fd5ae25d88841c08d5bbea90c0f0a12ca05509",
      "tree": "763ec9657bd25e4d42f1f6774faa65166364eede",
      "parents": [
        "905e51b39a5558706a6ed883fe104de3d417050b"
      ],
      "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 persistent data: remove space map ref_count entries if redundant\n\nSave space by removing entries from the space map ref_count tree if\nthey\u0027re no longer needed.\n\nRef counts are stored in two places: a bitmap if the ref_count is\nbelow 3, or a btree of uint32_t if 3 or above.\n\nWhen a ref_count that was above 3 drops below we can remove it from\nthe tree and save some metadata space.  This removal was commented out\nbefore because I was unsure why this was causing under-populated btree\nnodes.  Earlier patches have fixed this issue.\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": "a3aefb395e4f321c8b1314c88f1123624adcf743",
      "tree": "cedb3dbc643009cdba3c927b499e32e3247f7e5e",
      "parents": [
        "466891f9959b500e037836737c064a72f2bbe8cf"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:25 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:25 2012 +0100"
      },
      "message": "dm persistent data: remove redundant value_size arg from value_ptr\n\nNow that the value_size is held within every node of the btrees we can\nremove this argument from value_ptr().\n\nFor the last few months a BUG_ON has been checking this argument is\nthe same as that held in the node.  No issues were reported.  So this\nis a safe change.\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": "b0988900bae9ecf968a8a8d086a9eec671a9517a",
      "tree": "9dd34ec6f4563b78ac454f3691757dece46c1926",
      "parents": [
        "6f94a4c45a6f744383f9f695dde019998db3df55"
      ],
      "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 persistent data: fix btree rebalancing after remove\n\nWhen we remove an entry from a node we sometimes rebalance with it\u0027s\ntwo neighbours.  This wasn\u0027t being done correctly; in some cases\nentries have to move all the way from the right neighbour to the left\nneighbour, or vice versa.  This patch pretty much re-writes the\nbalancing code to fix it.\n\nThis code is barely used currently; only when you delete a thin\ndevice, and then only if you have hundreds of them in the same pool.\nOnce we have discard support, which removes mappings, this will be used\nmuch more heavily.\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": "a84450604d0fe08b6a2335efbedede18d3d7cc75",
      "tree": "013be8cd17b787a3051d1d614f794f30573467f8",
      "parents": [
        "6f66263f8ebe1fb1f138de41ca9aa0a4860b30d0"
      ],
      "author": {
        "name": "Stephen Rothwell",
        "email": "sfr@canb.auug.org.au",
        "time": "Tue Nov 01 20:27:43 2011 +1100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 07 10:29:10 2011 -0800"
      },
      "message": "device-mapper: using EXPORT_SYBOL in dm-space-map-checker.c needs export.h\n\nReported-by: Witold Baryluk \u003cbaryluk@smp.if.uj.edu.pl\u003e\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1944ce60fe1e92506d3347f4d8e10a82b17096e4",
      "tree": "1da72242c0a525e6a46c3ddc9693d88816362a03",
      "parents": [
        "0c073e35550879fd133bc3fe509df5b88da51278"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Wed Sep 28 18:29:32 2011 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 07 10:29:09 2011 -0800"
      },
      "message": "drivers/md: change module.h -\u003e export.h in persistent-data/dm-*\n\nFor the files which are not themselves modular, we can change\nthem to include only the smaller export.h since all they are\ndoing is looking for EXPORT_SYMBOL.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3241b1d3e0aaafbfcd320f4d71ade629728cc4f4",
      "tree": "499461f724d4db3d7118641f4a20f5be23549edd",
      "parents": [
        "95d402f057f2e208e4631893f6cd4a59c7c05e41"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "thornber@redhat.com",
        "time": "Mon Oct 31 20:19:11 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:19:11 2011 +0000"
      },
      "message": "dm: add persistent data library\n\nThe persistent-data library offers a re-usable framework for the storage\nand management of on-disk metadata in device-mapper targets.\n\nIt\u0027s used by the thin-provisioning target in the next patch and in an\nupcoming hierarchical storage target.\n\nFor further information, please read\nDocumentation/device-mapper/persistent-data.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"
    }
  ]
}
