)]}'
{
  "log": [
    {
      "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": "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": "da105ed5fd7edcc5e0df7dbacef4dadda74e7ebe",
      "tree": "2db9643e499e9bc9d38c7ccc4a00e01d875150c7",
      "parents": [
        "12ba58af46e5973822f1cfaaf5f29a2a17a523bf"
      ],
      "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 thin metadata: introduce dm_pool_abort_metadata\n\nIntroduce dm_pool_abort_metadata to abort the current metadata\ntransaction.  Generally this will only be called when bad things are\nhappening and dm-thin is trying to roll back to a good state for\nread-only mode.\n\nIt\u0027s complicated by the fact that the metadata device may have failed\ncompletely causing the abort to be unable to read the old transaction.\nIn this case the metadata object is placed in a \u0027fail\u0027 mode and\neverything fails apart from destroying 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": "12ba58af46e5973822f1cfaaf5f29a2a17a523bf",
      "tree": "4641ca8730db9c61a34052cf267765305323b896",
      "parents": [
        "310975573ba40ab526b0d76d28225d8d0999d72b"
      ],
      "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 thin metadata: introduce dm_pool_metadata_set_read_only\n\nIntroduce dm_pool_metadata_set_read_only to put the underlying block\nmanager into read-only mode.\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": "40db5a537655aa0b17a82a4b5596f8d27400edd8",
      "tree": "5e9d59aac1c42d949b47c962d4ee24b4287d23fa",
      "parents": [
        "66b1edc05e3f4c1227f51e40f2ead3e973c00cb0"
      ],
      "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 dm_thin_changed_this_transaction\n\nIntroduce dm_thin_changed_this_transaction to dm-thin-metadata to publish a\nuseful bit of information we\u0027re already tracking.  This will help dm thin\ndecide when to commit.\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": "0fa5b17b08baa37919ddd21529081e3090d47de5",
      "tree": "f6e5ad3bf444e20856c4be52752056a4dfdd0973",
      "parents": [
        "d73ec52538041f29a8ae22bc72521222279439b9"
      ],
      "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: tidy up open and format error paths\n\nTidy up error path in __open_metadata and __format_metadata in dm-thin-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": "d73ec52538041f29a8ae22bc72521222279439b9",
      "tree": "2bd99685c1e5b67f7486920d97d65295e4d61508",
      "parents": [
        "b79399510888998778ea6a3a281e30cbe59fdb37"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Jul 27 15:08:13 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:13 2012 +0100"
      },
      "message": "dm thin metadata: only check incompat features on open\n\nFactor out __check_incompat_features and only call it once when we open\nthe metadata device rather than at the beginning of every transaction.\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": "b79399510888998778ea6a3a281e30cbe59fdb37",
      "tree": "eaec46591b4ed89a0d7deb4470fe948270ccb00e",
      "parents": [
        "8801e06945b6fec9927d5f7a04890a20061340c2"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Jul 27 15:08:13 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:13 2012 +0100"
      },
      "message": "dm thin metadata: remove duplicate pmd initialisation\n\nRemove some duplicate initialisation of struct dm_pool_metadata.\n\nThese pmd fields are initialised by both:\n  __format_metadata\u0027s calls to dm_btree_empty\n  __write_initial_superblock + __begin_transaction\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": "8801e06945b6fec9927d5f7a04890a20061340c2",
      "tree": "5c21ddcc622ff3dbd1a9173b2d8f66ba119db272",
      "parents": [
        "237074c0a30ac017faaf5c3dfab01aff0c6bb03a"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Jul 27 15:08:13 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:13 2012 +0100"
      },
      "message": "dm thin metadata: remove create parameter from __create_persistent_data_objects\n\nRemove \u0027create\u0027 parameter from __create_persistent_data_objects() in dm-thin-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": "237074c0a30ac017faaf5c3dfab01aff0c6bb03a",
      "tree": "e980f9294638797fa8ef3412dd7036d56b19df1d",
      "parents": [
        "a97e5e6fd027840fc28c72470c581ba68ee9732a"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Jul 27 15:08:13 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:13 2012 +0100"
      },
      "message": "dm thin metadata: move __superblock_all_zeroes to __open_or_format_metadata\n\nMove the check for __superblock_all_zeroes from\n__create_persistent_data_objects() down to __open_or_format_metadata in\ndm-thin-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": "a97e5e6fd027840fc28c72470c581ba68ee9732a",
      "tree": "58dea5e831eeb489572fb22cdb8b90f53851b28f",
      "parents": [
        "e4d2205cdf2094eb9f7246a4474f8df63806c1d3"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Jul 27 15:08:12 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:12 2012 +0100"
      },
      "message": "dm thin metadata: remove nr_blocks arg from __create_persistent_data_objects\n\nRemove nr_blocks arg from __create_persistent_data_objects in dm-thin-metadata.\nIt was always passed as 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": "e4d2205cdf2094eb9f7246a4474f8df63806c1d3",
      "tree": "b7e202a32d0ae8ee19d55dc895d3009345addd3e",
      "parents": [
        "d6332814e343c76097ff10ed8225069e6392022f"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Jul 27 15:08:12 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:12 2012 +0100"
      },
      "message": "dm thin metadata: split __open or format metadata\n\nSplit __open_or_format_metadata into __format_metadata and __open_metadata in\ndm-thin-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": "d6332814e343c76097ff10ed8225069e6392022f",
      "tree": "dcd4c0a1db3f91e90cb985833dc3ab424e24a0ab",
      "parents": [
        "583ceee2ed1d171718aee348163f2ed25d461772"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Jul 27 15:08:12 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:12 2012 +0100"
      },
      "message": "dm thin metadata: use struct dm_pool_metadata members in __open_or_format_metadata\n\nClean up __open_or_format_metadata in dm-thin-metadata by using struct\ndm_pool_metadata members to replace local variables.\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": "583ceee2ed1d171718aee348163f2ed25d461772",
      "tree": "997074e27de9a2f8204ad89751613eb46dea1d61",
      "parents": [
        "270938bac53b03b83b4b0b65b760f32975df72b1"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Jul 27 15:08:11 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:11 2012 +0100"
      },
      "message": "dm thin metadata: zero unused superblock uuid\n\nZero the unused uuid when initialising the metadata superblock.\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": "270938bac53b03b83b4b0b65b760f32975df72b1",
      "tree": "bee95595b9ada2de4e7a0d132ef4928ccc4dc263",
      "parents": [
        "10d2a9ff7c37635619c4d03ca672ffbd58b9c3fa"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Jul 27 15:08:11 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:11 2012 +0100"
      },
      "message": "dm thin metadata: lift __begin_transaction out of __write_initial_superblock\n\nLift the call to __begin_transaction out of __write_initial_superblock in\ndm-thin-metadata.  Called higher up the call chain now.\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": "10d2a9ff7c37635619c4d03ca672ffbd58b9c3fa",
      "tree": "70510cdf9135df151d41c11ef3caa792f168fb55",
      "parents": [
        "9cb6653f9a515f6cb0eaabfb27a2204b0aaf4e48"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Jul 27 15:08:11 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:11 2012 +0100"
      },
      "message": "dm thin metadata: move dm_commit_pool_metadata into __write_initial_superblock\n\nMove dm_commit_pool_metadata inline into __write_initial_superblock in dm-thin-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": "9cb6653f9a515f6cb0eaabfb27a2204b0aaf4e48",
      "tree": "4ee954b9f28e131ac1429b5f905f8688c1e8a921",
      "parents": [
        "6a0ebd31b6b504621254f5d453d618d36b0179a1"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Jul 27 15:08:10 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:10 2012 +0100"
      },
      "message": "dm thin metadata: factor out __write_initial_superblock\n\nFactor out __write_initial_superblock and also pull some other initial\ncreation code out of dm_pool_metadata_open.\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": "6a0ebd31b6b504621254f5d453d618d36b0179a1",
      "tree": "2c9620617b5302d0ab7432112e0be5f0918de7f6",
      "parents": [
        "f9dd9352b92cd66729fcb0f0e32f647e811d9083"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Jul 27 15:08:10 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:10 2012 +0100"
      },
      "message": "dm thin metadata: lift some initialisation out of __open_or_format_metadata\n\nLift some initialisation out of __open_or_format_metadata in dm-thin-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": "f9dd9352b92cd66729fcb0f0e32f647e811d9083",
      "tree": "64a68b82471961a8b9c71ffb4dd7391ea9af617d",
      "parents": [
        "332627db00a982b395f5b141d50298866bfec98c"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Jul 27 15:08:10 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:10 2012 +0100"
      },
      "message": "dm thin metadata: factor __destroy_persistent_data out of dm_pool_metadata_close\n\nFactor __destroy_persistent_data_objects out of dm_pool_metadata_close.\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": "332627db00a982b395f5b141d50298866bfec98c",
      "tree": "88a5925a0850719b52f67d63ae6e5098bbb894ce",
      "parents": [
        "77f49a402769f7db022935ef317f1c12c1c06319"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Jul 27 15:08:10 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:10 2012 +0100"
      },
      "message": "dm thin metadata: move bm creation code into create_persistent_data_objects\n\nMove block manager creation and the check for unformatted metadata into\n__create_persistent_data_objects().\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": "77f49a402769f7db022935ef317f1c12c1c06319",
      "tree": "6e30f001a9b855e15b83c61276c56378b3a9211c",
      "parents": [
        "2597119206405b9dbaee491e7c2389b7570b3227"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Fri Jul 27 15:08:10 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jul 27 15:08:10 2012 +0100"
      },
      "message": "dm thin metadata: rename init_pmd to __create_persistent_data_objects\n\nRename init_pmd to __create_persistent_data_objects in dm-thin-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": "2597119206405b9dbaee491e7c2389b7570b3227",
      "tree": "e3b21489dd14fde4f8ed30c67f4431285c08852c",
      "parents": [
        "3c9ad9bd87b03032999ddbeb44bdf7938f7dbd57"
      ],
      "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 thin metadata: wrap superblock locking\n\nIntroduce wrappers to handle write locking the superblock\nappropriately.\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": "eb04cf634fc2d5e3bc8fe88fbf434eda4921d875",
      "tree": "92948b71b13387b85ec3da1b6471074df3cd6c07",
      "parents": [
        "51a0f659c03ccc8ec407c7a9f9701d1b4618d515"
      ],
      "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 thin metadata: stop tracking need for commit\n\nRemove an optimisation that tracks whether or not a thin metadata commit\nis needed.\n\nIf dm_pool_commit_metadata() is called and no changes have been made\nto the metadata then this optimisation avoided writing to disk.\n\nRemoving because we\u0027re going to do something better later.\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": "41675aea32949786cf002c4ab179b85144d3423b",
      "tree": "d721f9383bc9c7614106188f12e3781fe85dc3e4",
      "parents": [
        "0ac55489d9e3898987b2ae305844cf2af86e6b8d"
      ],
      "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 thin metadata: factor __setup_btree_details out of init_pmd\n\nFactor __setup_btree_details out of init_pmd in dm-thin-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": "8c971178a788c70e8d6db5c3a813de1a1f54e5b7",
      "tree": "d909d1e3aae1ce0cf2ca92be709ffc8405ba0aa8",
      "parents": [
        "d973ac196b7668c198f3c1338d8b07c13a3e7713"
      ],
      "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 thin metadata: introduce THIN_MAX_CONCURRENT_LOCKS\n\nIntroduce THIN_MAX_CONCURRENT_LOCKS into dm-thin-metadata to\ngive a name to an otherwise \"magic\" number.\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": "d973ac196b7668c198f3c1338d8b07c13a3e7713",
      "tree": "cab64b3e47e8a4e350f2eed1e5770ab8d2dfc6bb",
      "parents": [
        "3caf6d73d4dc163b2d135e0b52b052a2b63e5216"
      ],
      "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 thin metadata: remove pointless label from __commit_transaction\n\nRemove the pointless label \u0027out\u0027 from __commit_transaction in\ndm-thin-metadata.c\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": "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": "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": "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": "fef838cc1ac34e599c74888274506d76767f3098",
      "tree": "197179f2408018f66f5ca60b1c48bc4bea458072",
      "parents": [
        "a3aefb395e4f321c8b1314c88f1123624adcf743"
      ],
      "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 thin metadata: pass correct space map to dm_sm_root_size\n\nFix a harmless typo.\n\nThe root is a chunk of data that gets written to the superblock.  This\ndata is used to recreate the space map when opening a metadata area.\nWe have two space maps; one tracking space on the metadata device and\none of the data device.  Both of these use the same format for their\nroot, so this typo was harmless.\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": "af63bcb817cf708f53bcae6edc2e3fb7dd7d8051",
      "tree": "9c38899465b9bc3b8ae613b41a70ab0ff02030d1",
      "parents": [
        "4469a5f387fdde956894137751a41473618a4a52"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 07 19:09:44 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 07 19:09:44 2012 +0000"
      },
      "message": "dm thin metadata: decrement counter after removing mapped block\n\nCorrect the number of mapped sectors shown on a thin device\u0027s\nstatus line by decrementing td-\u003emapped_blocks in __remove() each time\na block is removed.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4469a5f387fdde956894137751a41473618a4a52",
      "tree": "f191a4eeabe0af42d8025b15286257f6a4bf9b1a",
      "parents": [
        "1f3db25d8be4ac50b897b39609802183ea68a514"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 07 19:09:43 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 07 19:09:43 2012 +0000"
      },
      "message": "dm thin metadata: unlock superblock in init_pmd error path\n\nIf dm_sm_disk_create() fails the superblock must be unlocked.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "1f3db25d8be4ac50b897b39609802183ea68a514",
      "tree": "b8e140111ba62062d309ae0dec90543f35e28172",
      "parents": [
        "1212268fd9816e3b8801e57b896fceaec71969ad"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Wed Mar 07 19:09:41 2012 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 07 19:09:41 2012 +0000"
      },
      "message": "dm thin metadata: remove incorrect close_device on creation error paths\n\nThe __open_device() error paths in __create_thin() and __create_snap()\nincorrectly call __close_device() even if td was not initialized by\n__open_device().  Remove this.\n\nAlso document __open_device() return values, remove a redundant\ntd-\u003echanged \u003d 1 in __create_thin(), and insert an additional\nsafeguard against creating an already-existing device.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@kernel.org\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"
    }
  ]
}
