)]}'
{
  "log": [
    {
      "commit": "239c8dd533e74de4a7f3c85c4f9f430eb08867c1",
      "tree": "0dfb9e39aad0f2ab09a4f278a6e7f1b46bf64307",
      "parents": [
        "9c4376de98719d2768dd919553843de34bb094a6"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 13 19:59:59 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:59 2011 +0000"
      },
      "message": "dm snapshot: persistent make metadata_wq multithreaded\n\nmetadata_wq serves on-stack work items from chunk_io().  Even if\nmultiple chunk_io() are simultaneously in progress, each is\nindependent and queued only once, so multithreaded workqueue can be\nsafely used.\n\nSwitch metadata_wq to multithread and flush the work item instead of\nthe workqueue in chunk_io().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4d4d66ab5322fa9b0f51842a76139387a40e1ce9",
      "tree": "37485e2fa56c38044c496ac5632e8304c5cc25db",
      "parents": [
        "f521f074abe7b3990f5df65482cdc3d851b80665"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 13 19:59:57 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:57 2011 +0000"
      },
      "message": "dm: convert workqueues to alloc_ordered\n\nConvert all create[_singlethread]_work() users to the new\nalloc[_ordered]_workqueue().  This conversion is mechanical and\ndoesn\u0027t introduce any behavior change.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ca1cab37d91cbe8a8333732540d43cabb54cfa85",
      "tree": "ea936dc8e5eb80b02fdf1d970bcb6f2e836051b9",
      "parents": [
        "99dc829256bb8cfcb1f58b7f118893fdbf608e60"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue Oct 26 14:22:34 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:14 2010 -0700"
      },
      "message": "workqueues: s/ON_STACK/ONSTACK/\n\nSilly though it is, completions and wait_queue_heads use foo_ONSTACK\n(COMPLETION_INITIALIZER_ONSTACK, DECLARE_COMPLETION_ONSTACK,\n__WAIT_QUEUE_HEAD_INIT_ONSTACK and DECLARE_WAIT_QUEUE_HEAD_ONSTACK) so I\nguess workqueues should do the same thing.\n\ns/INIT_WORK_ON_STACK/INIT_WORK_ONSTACK/\ns/INIT_DELAYED_WORK_ON_STACK/INIT_DELAYED_WORK_ONSTACK/\n\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d87f4c14f27dc82d215108d8392a7d26687148a1",
      "tree": "55f2a81f3df5d70fd85c4428089f6fe28540bcf4",
      "parents": [
        "3a2edd0d6ddbd5fa3b389ea6db811285415ce6c8"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:19 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:38 2010 +0200"
      },
      "message": "dm: implement REQ_FLUSH/FUA support for bio-based dm\n\nThis patch converts bio-based dm to support REQ_FLUSH/FUA instead of\nnow deprecated REQ_HARDBARRIER.\n\n* -EOPNOTSUPP handling logic dropped.\n\n* Preflush is handled as before but postflush is dropped and replaced\n  with passing down REQ_FUA to member request_queues.  This replaces\n  one array wide cache flush w/ member specific FUA writes.\n\n* __split_and_process_bio() now calls __clone_and_map_flush() directly\n  for flushes and guarantees all FLUSH bio\u0027s going to targets are zero\n`  length.\n\n* It\u0027s now guaranteed that all FLUSH bio\u0027s which are passed onto dm\n  targets are zero length.  bio_empty_barrier() tests are replaced\n  with REQ_FLUSH tests.\n\n* Empty WRITE_BARRIERs are replaced with WRITE_FLUSHes.\n\n* Dropped unlikely() around REQ_FLUSH tests.  Flushes are not unlikely\n  enough to be marked with unlikely().\n\n* Block layer now filters out REQ_FLUSH/FUA bio\u0027s if the request_queue\n  doesn\u0027t support cache flushing.  Advertise REQ_FLUSH | REQ_FUA\n  capability.\n\n* Request based dm isn\u0027t converted yet.  dm_init_request_based_queue()\n  resets flush support to 0 for now.  To avoid disturbing request\n  based dm code, dm-\u003eflush_error is added for bio based dm while\n  requested based dm continues to use dm-\u003ebarrier_error.\n\nLightly tested linear, stripe, raid1, snap and crypt targets.  Please\nproceed with caution as I\u0027m not familiar with the code base.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: dm-devel@redhat.com\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "87c961cb747fa55b664b76abfcb9d44c14ae851f",
      "tree": "2aefac4f795bd211bb60c13c4ea401bd6a747e1b",
      "parents": [
        "a9c88f2ebc1a5937915cb3b89c9f03894134f39a"
      ],
      "author": {
        "name": "Tomohiro Kusumi",
        "email": "kusumi.tomohiro@jp.fujitsu.com",
        "time": "Thu Aug 12 04:13:59 2010 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Aug 12 04:13:59 2010 +0100"
      },
      "message": "dm snapshot: persistent use define for disk header chunk size\n\nThis patch fixes hard-coded value for the size of a chunk that includes\ndisk header for persistent snapshot. It should be changed to existing\nmacro NUM_SNAPSHOT_HDR_CHUNKS instead of using hard-coded value 1.\n\nSigned-off-by: Tomohiro Kusumi \u003ckusumi.tomohiro@jp.fujitsu.com\u003e\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "55f67f2dedec1e3049abc30b6d82b999a14cafb7",
      "tree": "33c39276f5b185c9ec9fefa296f344675241f98a",
      "parents": [
        "781248c1b50c776a9ef4be1130f84ced1cba42fe"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Tue Feb 16 18:42:51 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Feb 16 18:42:51 2010 +0000"
      },
      "message": "dm snapshot: persistent annotate work_queue as on stack\n\nchunk_io() declares its \u0027struct mdata_req\u0027 on the stack and then\ninitializes its \u0027struct work_struct\u0027 member.  Annotate the\ninitialization of this workqueue with INIT_WORK_ON_STACK to suppress a\ndebugobjects warning seen when CONFIG_DEBUG_OBJECTS_WORK is enabled.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4454a6216f75a9ef8c4bd0a65e34b101f725ef1e",
      "tree": "25b97b629954702692397072dd6cd20f34221b5c",
      "parents": [
        "615d1eb9cad9b34ed17c18c604254e8db533ac6f"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Dec 10 23:52:29 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:29 2009 +0000"
      },
      "message": "dm exception store: add merge specific methods\n\nAdd functions that decide how many consecutive chunks of snapshot to\nmerge back into the origin next and to update the metadata afterwards.\n\nprepare_merge provides a pointer to the most recent still-to-be-merged\nchunk and returns how many previous ones are consecutive and can be\nprocessed together.\n\ncommit_merge removes the nr_merged most-recent chunks permanently from\nthe exception store.  The number must not exceed that returned by\nprepare_merge.\n\nIntroduce NUM_SNAPSHOT_HDR_CHUNKS to show where the snapshot header\nchunk is accounted for.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nReviewed-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fc56f6fbcca3672c63c93c65f45105faacfc13cb",
      "tree": "f50f42a461ef33f8617fbdb781879e6ae77b62c4",
      "parents": [
        "985903bb3a6d98623360ab6c855417f638840029"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Dec 10 23:52:12 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:12 2009 +0000"
      },
      "message": "dm snapshot: move cow ref from exception store to snap core\n\nStore the reference to the snapshot cow device in the core snapshot\ncode instead of each exception store.  It can be accessed through the\nnew function dm_snap_cow().  Exception stores should each now maintain a\nreference to their parent snapshot struct.\n\nThis is cleaner and makes part of the forthcoming snapshot merge code simpler.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nReviewed-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nCc: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\n"
    },
    {
      "commit": "985903bb3a6d98623360ab6c855417f638840029",
      "tree": "64e7582e0b7827aa318c4fe1c497ebc541d9ce8b",
      "parents": [
        "3510cb94ff7b04b016bd22bfee913e2c1c05c066"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Dec 10 23:52:11 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:11 2009 +0000"
      },
      "message": "dm snapshot: add allocated metadata to snapshot status\n\nAdd number of sectors used by metadata to the end of the snapshot\u0027s status\nline.\n\nRenamed dm_exception_store_type\u0027s \u0027fraction_full\u0027 to \u0027usage\u0027.  Renamed\narguments to be clearer about what is being returned.  Also added\n\u0027metadata_sectors\u0027.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "1d4989c858093bda0426be536fc7f9c415857836",
      "tree": "f3d831048cb65b39d5fb89178d2a6de599518a2b",
      "parents": [
        "d32a6ea65fbc33621f9c790da3dff10201640b2a"
      ],
      "author": {
        "name": "Jon Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Dec 10 23:52:10 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:10 2009 +0000"
      },
      "message": "dm snapshot: rename dm_snap_exception to dm_exception\n\nThe exception structure is not necessarily just a snapshot\nelement (especially after we pull it out of dm-snap.c).\n\nRenaming appropriately.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nReviewed-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f5acc834287dd4f6cf712093ce0e779e38caad70",
      "tree": "d3100f28c096a79d487a79b832fa8964af4e2274",
      "parents": [
        "a518b86d0b1b6a474f154697dc6f33e0a317ae72"
      ],
      "author": {
        "name": "Jon Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Dec 10 23:52:07 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:07 2009 +0000"
      },
      "message": "dm snapshot: avoid else clause in persistent_read_metadata\n\nMinor code touch-up.  We don\u0027t need the \u0027else\u0027.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nReviewed-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nReviewed-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "df96eee679ba28c98cf722fa7c9f4286ee1ed0bd",
      "tree": "282c1368f3dff6ed0e0994210cc13c09b4680d66",
      "parents": [
        "4c6fff445d7aa753957856278d4d93bcad6e2c14"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Oct 16 23:18:17 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 16 23:18:17 2009 +0100"
      },
      "message": "dm snapshot: use unsigned integer chunk size\n\nUse unsigned integer chunk size.\n\nMaximum chunk size is 512kB, there won\u0027t ever be need to use 4GB chunk size,\nso the number can be 32-bit. This fixes compiler failure on 32-bit systems\nwith large block devices.\n\nCc: stable@kernel.org\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nReviewed-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ae0b7448e91353ea5f821601a055aca6b58042cd",
      "tree": "a5c5d0532c808fb1eb2c01414edfcd2d0c039a7e",
      "parents": [
        "2defcc3fb4661e7351cb2ac48d843efc4c64db13"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Sep 04 20:40:43 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:43 2009 +0100"
      },
      "message": "dm snapshot: fix on disk chunk size validation\n\nFix some problems seen in the chunk size processing when activating a\npre-existing snapshot.\n\nFor a new snapshot, the chunk size can either be supplied by the creator\nor a default value can be used.  For an existing snapshot, the\nchunk size in the snapshot header on disk should always be used.\n\nIf someone attempts to load an existing snapshot and has the \u0027default\nchunk size\u0027 option set, the kernel uses its default value even when it\nis incorrect for the snapshot being loaded.  This patch ensures the\ncorrect on-disk value is always used.\n\nSecondly, when the code does use the chunk size stored on the disk it is\nprudent to revalidate it, so the code can exit cleanly if it got\ncorrupted as happened in\nhttps://bugzilla.redhat.com/show_bug.cgi?id\u003d461506 .\n\nCc: stable@kernel.org\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "61578dcd3fafe6babd72e8db32110cc0b630a432",
      "tree": "8e5bb9e66ec43666dd5079cc9203fc56c233b469",
      "parents": [
        "02d2fd31defce6ff77146ad0fef4f19006055d86"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Sep 04 20:40:39 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:39 2009 +0100"
      },
      "message": "dm snapshot: fix header corruption race on invalidation\n\nIf a persistent snapshot fills up, a race can corrupt the on-disk header\nwhich causes a crash on any future attempt to activate the snapshot\n(typically while booting).  This patch fixes the race.\n\nWhen the snapshot overflows, __invalidate_snapshot is called, which calls\nsnapshot store method drop_snapshot. It goes to persistent_drop_snapshot that\ncalls write_header. write_header constructs the new header in the \"area\"\nlocation.\n\nConcurrently, an existing kcopyd job may finish, call copy_callback\nand commit_exception method, that goes to persistent_commit_exception.\npersistent_commit_exception doesn\u0027t do locking, relying on the fact that\ncallbacks are single-threaded, but it can race with snapshot invalidation and\noverwrite the header that is just being written while the snapshot is being\ninvalidated.\n\nThe result of this race is a corrupted header being written that can\nlead to a crash on further reactivation (if chunk_size is zero in the\ncorrupted header).\n\nThe fix is to use separate memory areas for each.\n\nSee the bug: https://bugzilla.redhat.com/show_bug.cgi?id\u003d461506\n\nCc: stable@kernel.org\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "02d2fd31defce6ff77146ad0fef4f19006055d86",
      "tree": "de8103e62595fbc1efcd39ff83bf146018e5180b",
      "parents": [
        "7ec23d50949d5062b5b749638dd9380ed75e58e5"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Sep 04 20:40:37 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:37 2009 +0100"
      },
      "message": "dm snapshot: refactor zero_disk_area to use chunk_io\n\nRefactor chunk_io to prepare for the fix in the following patch.\n\nPass an area pointer to chunk_io and simplify zero_disk_area to use\nchunk_io.  No functional change.\n\nCc: stable@kernel.org\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "2bd023452592e5f5cf90dd426cc39b7632b15b76",
      "tree": "62fe4d816c597e1b6c58bf150603dd72c9ce6135",
      "parents": [
        "51aa322849581f1a73594e48ea0df63f914ee6a2"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:26 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:26 2009 +0100"
      },
      "message": "dm snapshot: use barrier when writing exception store\n\nSend barrier requests when updating the exception area.\n\nException area updates need to be ordered w.r.t. data writes, so that\nthe writes are not reordered in hardware disk cache.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "e1defc4ff0cf57aca6c5e3ff99fa503f5943c1f1",
      "tree": "d60d15a082171c58ac811d547d51a9c3119f23e3",
      "parents": [
        "9bd7de51ee8537094656149eaf45338cadb7d7d4"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri May 22 17:17:49 2009 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 22 23:22:54 2009 +0200"
      },
      "message": "block: Do away with the notion of hardsect_size\n\nUntil now we have had a 1:1 mapping between storage device physical\nblock size and the logical block sized used when addressing the device.\nWith SATA 4KB drives coming out that will no longer be the case.  The\nsector size will be 4KB but the logical block size will remain\n512-bytes.  Hence we need to distinguish between the physical block size\nand the logical ditto.\n\nThis patch renames hardsect_size to logical_block_size.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a32079ce17899192a7b98a42753be467605a8b2f",
      "tree": "116fefba16427c16cb792e218889aa971eab755b",
      "parents": [
        "1e302a929e2da6e8448e2058e4b07b07252b57fe"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Apr 02 19:55:35 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 02 19:55:35 2009 +0100"
      },
      "message": "dm snapshot: persistent fix dtr cleanup\n\nThe persistent exception store destructor does not properly\naccount for all conditions in which it can be called.  If it\nis called after \u0027ctr\u0027 but before \u0027read_metadata\u0027 (e.g. if\nsomething else in \u0027snapshot_ctr\u0027 fails) then it will attempt\nto free areas of memory that haven\u0027t been allocated yet.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "1e302a929e2da6e8448e2058e4b07b07252b57fe",
      "tree": "3345d31926a2254a2041d62d270cba76b2590bae",
      "parents": [
        "fee1998e9c690f9920671e1e0ef187a48cfbbde4"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Apr 02 19:55:35 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 02 19:55:35 2009 +0100"
      },
      "message": "dm snapshot: move status to exception store\n\nLet the exception store types print out their status through\nthe new API, rather than having the snapshot code do it.\n\nAdjust the buffer position to allow for the preceding DMEMIT in the\narguments to type-\u003estatus().\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "71fab00a6bef7fb53119271a8abdbaf40970d28a",
      "tree": "4881f8f6d1b1c42528889d7a56fb8674d2aa7723",
      "parents": [
        "49beb2b87a972a994ff77633234ca3bf0d30a1d8"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Apr 02 19:55:33 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 02 19:55:33 2009 +0100"
      },
      "message": "dm snapshot: remove dm_snap header use\n\nMove useful functions out of dm-snap.h and stop using dm-snap.h.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "49beb2b87a972a994ff77633234ca3bf0d30a1d8",
      "tree": "4b281ebd48624d0fbe74b93fa72baa834211ca2f",
      "parents": [
        "d0216849519bec8dc96301a3cd80316e71243839"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Apr 02 19:55:33 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 02 19:55:33 2009 +0100"
      },
      "message": "dm exception store: move cow pointer\n\nMove COW device from snapshot to exception store.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "d0216849519bec8dc96301a3cd80316e71243839",
      "tree": "06e7f1d2028e784213e17f1a8ea1abae9ffb0ab9",
      "parents": [
        "0cea9c78270cdf1d2ad74ce0e083d5555a0842e8"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Apr 02 19:55:32 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 02 19:55:32 2009 +0100"
      },
      "message": "dm exception store: move chunk_fields\n\nMove chunk fields from snapshot to exception store.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "493df71c6420b211a68ae82b889c1e8a5fe701be",
      "tree": "2738295190c1b3c5f72d85059aae3c96f162afa6",
      "parents": [
        "7513c2a761d69d2a93f17146b3563527d3618ba0"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Apr 02 19:55:31 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 02 19:55:31 2009 +0100"
      },
      "message": "dm exception store: introduce registry\n\nMove exception stores into a registry.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b2a114652940ccf7e9668ad447ca78bf16a31139",
      "tree": "f86e851ff752a8ae5ce1b5571cde1918c86a156a",
      "parents": [
        "ec44ab9d6681ddf9026b593e866bec9c0e075e1d"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Apr 02 19:55:30 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 02 19:55:30 2009 +0100"
      },
      "message": "dm exception store: separate type from instance\n\nIntroduce struct dm_exception_store_type.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a159c1ac5f33c6cf0f5aa3c9d1ccdc82c907ee46",
      "tree": "2cb6bfd3f376e2366f3e3820ebd07a0a86a01cfc",
      "parents": [
        "4db6bfe02bdc7dc5048f46dd682a94801d029adc"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Jan 06 03:05:19 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:05:19 2009 +0000"
      },
      "message": "dm snapshot: extend exception store functions\n\nSupply dm_add_exception as a callback to the read_metadata function.\nAdd a status function ready for a later patch and name the functions\nconsistently.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4db6bfe02bdc7dc5048f46dd682a94801d029adc",
      "tree": "780a41560ea05266288853204f0d7e4eef4f6355",
      "parents": [
        "1ae25f9c933d1432fbffdf3e126051a974608abf"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:05:17 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:05:17 2009 +0000"
      },
      "message": "dm snapshot: split out exception store implementations\n\nMove the existing snapshot exception store implementations out into\nseparate files.  Later patches will place these behind a new\ninterface in preparation for alternative implementations.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    }
  ]
}
