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