)]}'
{
  "log": [
    {
      "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": "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": "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"
    }
  ]
}
