)]}'
{
  "log": [
    {
      "commit": "e29e65aacbd9e628378084905cbcf62a9fa4a8cc",
      "tree": "279e6e87d60da82c082833205c996d7046b1a46d",
      "parents": [
        "6c9b27ab08aaf46426515b8b858ad9c60731c7a1"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Tue Aug 02 12:32:02 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:02 2011 +0100"
      },
      "message": "dm: use vzalloc\n\nUse vzalloc() instead of vmalloc()+memset().\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c8f543e0786785d8c7118fc2878e42bc0193a88d",
      "tree": "b8984adc44c3a15f1bee56f3b6b9ff49f8ed4d2c",
      "parents": [
        "936688d7eb0f39be96c5791be1a04994cc8d6aa0"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Tue Aug 02 12:32:01 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:01 2011 +0100"
      },
      "message": "dm log: clean up bit little endian bitops\n\nUsing __test_and_{set,clear}_bit_le() with ignoring its return value\ncan be replaced with __{set,clear}_bit_le().\n\nThis also removes unnecessary casts.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "283a8328ca5b987e547848de8ff0e28edcfb9e08",
      "tree": "b500dbe90c0ebad2ff96ba1b7f0db16089bb3560",
      "parents": [
        "d15b774c2920d55e3d58275c97fbe3adc3afde38"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:01 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:01 2011 +0100"
      },
      "message": "dm: suppress endian warnings\n\nSuppress sparse warnings about cpu_to_le32() by using __le32 types for\non-disk data etc.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "bda8efec5c706a672e0714d341a342e811f0262a",
      "tree": "7daf7b505723f5ed2767353dc3fe53b939c46d87",
      "parents": [
        "d04714580f12379fcf7a0f799e86c92b96dd4e1f"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Sun May 29 13:03:09 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sun May 29 13:03:09 2011 +0100"
      },
      "message": "dm io: use fixed initial mempool size\n\nReplace the arbitrary calculation of an initial io struct mempool size\nwith a constant.\n\nThe code calculated the number of reserved structures based on the request\nsize and used a \"magic\" multiplication constant of 4.  This patch changes\nit to reserve a fixed number - itself still chosen quite arbitrarily.\nFurther testing might show if there is a better number to choose.\n\nNote that if there is no memory pressure, we can still allocate an\narbitrary number of \"struct io\" structures.  One structure is enough to\nprocess the whole request.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "44bbd7ac2658eb1118342493026ef141e259b739",
      "tree": "a804d3503e48ee8b2bd0dd3c40235e482a75a512",
      "parents": [
        "24c6d02fe8c34bc958aa4c464efc1cc10d43e29d",
        "29915202006c2e7bafe81348eb498ff9a724ac61"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 20:51:44 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 20:51:44 2011 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm:\n  dm stripe: implement merge method\n  dm mpath: allow table load with no priority groups\n  dm mpath: fail message ioctl if specified path is not valid\n  dm ioctl: add flag to wipe buffers for secure data\n  dm ioctl: prepare for crypt key wiping\n  dm crypt: wipe keys string immediately after key is set\n  dm: add flakey target\n  dm: fix opening log and cow devices for read only tables\n"
    },
    {
      "commit": "024d37e95ec4a7ccc256973ab2feab01f4fbdd2d",
      "tree": "f81ce3ac56c911577942b8404ed45a980c321621",
      "parents": [
        "4bbba111d94781d34081c37856bbc5eb33f6c72a"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Thu Mar 24 13:52:14 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Mar 24 13:52:14 2011 +0000"
      },
      "message": "dm: fix opening log and cow devices for read only tables\n\nIf a table is read-only, also open any log and cow devices it uses read-only.\n\nPreviously, even read-only devices were opened read-write internally.\nAfter patch 75f1dc0d076d1c1168f2115f1941ea627d38bd5a\n  block: check bdev_read_only() from blkdev_get()\nwas applied, loading such tables began to fail.  The patch\nwas reverted by e51900f7d38cbcfb481d84567fd92540e7e1d23a\n  block: revert block_dev read-only check\nbut this patch fixes this part of the code to work with the original patch.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "bb5cda3d706f44e5696533c9a7353c458f2871e0",
      "tree": "ad720028d76caf0f6ce69fd7f52086972177757b",
      "parents": [
        "6b33aff368def952be78102c0935ebd219f9a748"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Wed Mar 23 16:42:13 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:46:20 2011 -0700"
      },
      "message": "dm: use little-endian bitops\n\nAs a preparation for removing ext2 non-atomic bit operations from\nasm/bitops.h.  This converts ext2 non-atomic bit operations to\nlittle-endian bit operations.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: Alasdair Kergon \u003cagk@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": "dbc883f1570d992ba926a8c9e22140ba473c6cc1",
      "tree": "1a6bfde475cbbe2a978a13b9e2f2a8fec959d7fe",
      "parents": [
        "b83b2f295aec418c7501c05df4dfd168a79d165a"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Thu Jan 13 20:00:00 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 20:00:00 2011 +0000"
      },
      "message": "dm log: use PTR_ERR value instead of ENOMEM\n\nIt\u0027s nicer to return the PTR_ERR() value instead of just returning\n-ENOMEM.  In the current code the PTR_ERR() value is always equal to\n-ENOMEM so this doesn\u0027t actually affect anything, but still...\n\nIn addition, dm_dirty_log_create() doesn\u0027t check for a specific -ENOMEM\nreturn.  So this change is safe relative to potential for a non -ENOMEM\nreturn in the future.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nAcked-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\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": "8215d6ec5fee1e76545decea2cd73717efb5cb42",
      "tree": "54ed2c995c3b91417def0ad31368e3094f72bd81",
      "parents": [
        "0f3649a9e305ea22eb196a84a2d7520afcaa6060"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@novell.com",
        "time": "Sat Mar 06 02:32:27 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:32:27 2010 +0000"
      },
      "message": "dm table: remove unused dm_get_device range parameters\n\nRemove unused parameters(start and len) of dm_get_device()\nand fix the callers.\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "64b30c46e866bbff8a9e17883a18636adc358455",
      "tree": "e79ecbec9170dad5704df2ceddda7b65b1e5d1f6",
      "parents": [
        "c0da3748b9a894b9f9b561ecc2d090a913988a0f"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Dec 10 23:52:02 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:02 2009 +0000"
      },
      "message": "dm raid1: report flush errors separately in status\n\nReport flush errors as \u0027F\u0027 instead of \u0027D\u0027 for log and mirror devices.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "076010e2e6ea5b66dfd1f81a6133fb014c9b291d",
      "tree": "b8b6e7ebeb1b60166611e3bbd536818748689a6d",
      "parents": [
        "87a8f240e9bcf025ba45e4563c842b0d59c5e8ef"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Dec 10 23:52:01 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:01 2009 +0000"
      },
      "message": "dm log: use flush callback fn\n\nCall the flush callback from the log.\n\nIf flush failed, we have no alternative but to mark the whole log as dirty.\nAlso we set the variable flush_failed to prevent any bits ever being marked as\nclean again.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "87a8f240e9bcf025ba45e4563c842b0d59c5e8ef",
      "tree": "b6b42a74fc1135c11656d8cf4bf5ea4005c74a77",
      "parents": [
        "5adc78d0d231b030405b31759f125f13404fdb64"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Dec 10 23:52:01 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:01 2009 +0000"
      },
      "message": "dm log: add flush callback fn\n\nIntroduce a callback pointer from the log to dm-raid1 layer.\n\nBefore some region is set as \"in-sync\", we need to flush hardware cache on\nall the disks. But the log module doesn\u0027t have access to the mirror_set\nstructure. So it will use this callback.\n\nSo far the callback is unused, it will be used in further patches.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5adc78d0d231b030405b31759f125f13404fdb64",
      "tree": "8906799cb47e78790335eac122987872ef193dab",
      "parents": [
        "20a34a8ecc7d03eaa5054f58169ebff12f5f1f8c"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Dec 10 23:52:00 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:00 2009 +0000"
      },
      "message": "dm log: introduce flush_failed variable\n\nIntroduce \"flush failed\" variable.  When a flush before clearing a bit\nin the log fails, we don\u0027t know anything about which which regions are\nin-sync and which not.\n\nSo we need to set all regions as not-in-sync and set the variable\n\"flush_failed\" to prevent setting the in-sync bit in the future.\n\nA target reload is the only way to get out of this situation.\n\nThe variable will be set in following patches.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "20a34a8ecc7d03eaa5054f58169ebff12f5f1f8c",
      "tree": "87dd9a93e2bd11c8917d9c4bb000c3acb85723c8",
      "parents": [
        "b09acf1aa79462bdacfe6744b469a17722a52702"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Dec 10 23:52:00 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:00 2009 +0000"
      },
      "message": "dm log: add flush_header function\n\nIntroduce flush_header and use it to flush the log device.\n\nNote that we don\u0027t have to flush if all the regions transition\nfrom \"dirty\" to \"clean\" state.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b09acf1aa79462bdacfe6744b469a17722a52702",
      "tree": "27ef83ed0d0bbf35938814f8ba3206e7881a170d",
      "parents": [
        "4184153f9e483f9bb63339ed316e059962fe9794"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Dec 10 23:51:59 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:51:59 2009 +0000"
      },
      "message": "dm raid1: split touched state into two\n\nSplit the variable \"touched\" into two, \"touched_dirtied\" and\n\"touched_cleaned\", set when some region was dirtied or cleaned.\n\nThis will be used to optimize flushes.\n\nAfter a transition from \"dirty\" to \"clean\" state we don\u0027t have flush hardware\ncache on the log device. After a transition from \"clean\" to \"dirty\" the cache\nmust be flushed.\n\nBefore a transition from \"clean\" to \"dirty\" state we don\u0027t have to flush all\nthe raid legs. Before a transition from \"dirty\" to \"clean\" we must flush all\nthe legs to make sure that they are really in sync.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "18d8594dd93a1ae2fafd591ec026e87d743292bf",
      "tree": "9a4b0ac8512864666fef0c6e3bc26c5db172f649",
      "parents": [
        "af4874e03ed82f050d5872d8c39ce64bf16b5c38"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Mon Jun 22 10:12:33 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:33 2009 +0100"
      },
      "message": "dm log: fix create_log_context to use logical_block_size of log device\n\ncreate_log_context() must use the logical_block_size from the log disk,\nwhere the I/O happens, not the target\u0027s logical_block_size.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5657e8fa45cf230df278040c420fb80e06309d8f",
      "tree": "7817e1bd6c9b721be85fe54a1aec6ef971d7d96b",
      "parents": [
        "8cbeb67ad50f7d68e5e83be2cb2284de8f9c03b5"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:14 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:14 2009 +0100"
      },
      "message": "dm: use i_size_read\n\nUse i_size_read() instead of reading i_size.\n\nIf someone changes the size of the device simultaneously, i_size_read\nis guaranteed to return a valid value (either the old one or the new one).\n\ni_size can return some intermediate invalid value (on 32-bit computers\nwith 64-bit i_size, the reads to both halves of i_size can be interleaved\nwith updates to i_size, resulting in garbage being returned).\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": "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": "ec44ab9d6681ddf9026b593e866bec9c0e075e1d",
      "tree": "56c0f99068c7bf2a474e8094c1fa9d14a7861ae8",
      "parents": [
        "84e67c9319eb2232757a022c24f6a461291eaee5"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@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 log: remove struct dm_dirty_log_internal\n\nRemove the \u0027dm_dirty_log_internal\u0027 structure.  The resulting cleanup\neliminates extra memory allocations.  Therefore exposing the internal\nlist_head to the external \u0027dm_dirty_log_type\u0027 structure is a worthwhile\ncompromise.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "84e67c9319eb2232757a022c24f6a461291eaee5",
      "tree": "581e427fa8bc914089de24f70235e471c5bd0c5b",
      "parents": [
        "b81d6cf79b57f6123a5d4f7a4932cc359995484d"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Apr 02 19:55:29 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 02 19:55:29 2009 +0100"
      },
      "message": "dm log: use standard kernel module refcount\n\nAvoid private module usage accounting by removing \u0027use\u0027 from\ndm_dirty_log_internal.  The standard module reference counting is\nsufficient.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ac1f0ac22c7be908fd33407273b9808bfaedada4",
      "tree": "f6a867138918b591639464802744506f6b83ad14",
      "parents": [
        "2045e88edb4e0c9ce62d317f77dc59d27d9c530e"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Tue Jan 06 03:05:02 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:05:02 2009 +0000"
      },
      "message": "dm log: ensure log bitmap fits on log device\n\nCheck that the log bitmap will fit within the log device.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "2045e88edb4e0c9ce62d317f77dc59d27d9c530e",
      "tree": "324eeea271b889263d0141fe0c82d4b0e43d0079",
      "parents": [
        "6f3af01cb0eda0ec50fe1e4cbdf028269dc396fe"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Tue Jan 06 03:05:01 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:05:01 2009 +0000"
      },
      "message": "dm log: move region_size validation\n\nMove log size validation from mirror target to log constructor.\n\nRemoved PAGE_SIZE restriction we no longer think necessary.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6f3af01cb0eda0ec50fe1e4cbdf028269dc396fe",
      "tree": "29988ebe5a40ee1092bdbeac45eb0bdc312ff670",
      "parents": [
        "10d3bd09a3c25df114f74f7f86e1b58d070bef32"
      ],
      "author": {
        "name": "Takahiro Yasui",
        "email": "tyasui@redhat.com",
        "time": "Tue Jan 06 03:04:59 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:04:59 2009 +0000"
      },
      "message": "dm log: avoid reinitialising io_req on every operation\n\nrw_header function updates three members of io_req data every time\nwhen I/O is processed. bi_rw and notify.fn are never modified once\nthey get initialized, and so they can be set in advance.\n\nheader_to_disk() can also be pulled out of write_header() since only one\ncaller needs it and write_header() can be replaced by rw_header()\ndirectly.\n\nSigned-off-by: Takahiro Yasui \u003ctyasui@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c7a2bd19b7c1e0bd2c7604c53d2583e91e536948",
      "tree": "bb896040c05397026745de9d05bd6f491d26603f",
      "parents": [
        "90fa1527bddc7147dc0d590ee6184ca88bc50ecf"
      ],
      "author": {
        "name": "Takahiro Yasui",
        "email": "tyasui@redhat.com",
        "time": "Tue Jan 06 03:04:56 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:04:56 2009 +0000"
      },
      "message": "dm log: fix dm_io_client leak on error paths\n\nIn create_log_context function, dm_io_client_destroy function needs\nto be called, when memory allocation of disk_header, sync_bits and\nrecovering_bits failed, but dm_io_client_destroy is not called.\n\nCc: stable@kernel.org\nSigned-off-by: Takahiro Yasui \u003ctyasui@redhat.com\u003e\nAcked-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "586e80e6ee0d137c7d79fbae183bb37bc60ee97e",
      "tree": "1f3cc124ed6ad93abd4c14f9c8900333c6cba6fb",
      "parents": [
        "d63a5ce3c0d25c96bdadc78792e5b48b846e899d"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Oct 21 17:44:59 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:44:59 2008 +0100"
      },
      "message": "dm: remove dm header from targets\n\nChange #include \"dm.h\" to #include \u003clinux/device-mapper.h\u003e in all targets.\nTargets should not need direct access to internal DM structures.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c8da2f8dd86d70559ec4e50251f6a755b42bd5b4",
      "tree": "1991d27441d08a727160d75d7b2723b5514b19e1",
      "parents": [
        "371b2e348b7731a548b0a7432ca2ba32e90dd16f"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Mon Jul 21 12:00:27 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jul 21 12:00:27 2008 +0100"
      },
      "message": "dm log: make dm_dirty_log init and exit static\n\ndm_dirty_log_{init,exit}() can now become static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a765e20eeb423d0fa6a02ffab51141e53bbd93cb",
      "tree": "fc7279fa73a21518373e1ba2efad27dab89a2214",
      "parents": [
        "2d1e580afe23287871529ce54429e249809525a1"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 24 22:02:01 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:55 2008 +0100"
      },
      "message": "dm: move include files\n\nPublish the dm-io, dm-log and dm-kcopyd headers in include/linux.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "2a23aa1ddb1f0c9eef2c929c89565c387f6bf68b",
      "tree": "dc029b4230dc1282363a16d8a9d9126f1c9d7ffe",
      "parents": [
        "b8206bc3de0b0665d47655d270c18ea46aff5372"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Apr 24 21:43:41 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:48 2008 +0100"
      },
      "message": "dm log: make module use tracking internal\n\nRemove internal module reference fields from the interface.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b8206bc3de0b0665d47655d270c18ea46aff5372",
      "tree": "ae52f89c65b36f12887015104a37c4178303e889",
      "parents": [
        "416cd17b1982217bca3dc41b9f00b0b38fdaadad"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 24 21:43:38 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:47 2008 +0100"
      },
      "message": "dm log: move register functions\n\nReorder a couple of functions in the file so the next patch is readable.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "416cd17b1982217bca3dc41b9f00b0b38fdaadad",
      "tree": "dcb73db9876f5b973ad26b47449083b98efad1b6",
      "parents": [
        "eb69aca5d3370b81450d68edeebc2bb9a3eb9689"
      ],
      "author": {
        "name": "Heinz Mauelshagen",
        "email": "hjm@redhat.com",
        "time": "Thu Apr 24 21:43:35 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:46 2008 +0100"
      },
      "message": "dm log: clean interface\n\nClean up the dm-log interface to prepare for publishing it in include/linux.\n\nSigned-off-by: Heinz Mauelshagen \u003chjm@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "22a1ceb1e6a7fbce95a1531ff10bb4fb036d4a37",
      "tree": "5b6ebebc747a0027626684a153b418a26119d074",
      "parents": [
        "e01fd7eeb00f8078103f4ed3e8ef64474c11f300"
      ],
      "author": {
        "name": "Heinz Mauelshagen",
        "email": "hjm@redhat.com",
        "time": "Thu Apr 24 21:43:17 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:43 2008 +0100"
      },
      "message": "dm io: clean interface\n\nClean up the dm-io interface to prepare for publishing it in include/linux.\n\nSigned-off-by: Heinz Mauelshagen \u003chjm@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "769aef30f0f505c44bbe9fcd2c911a052a386139",
      "tree": "8c9d8da4d1f173935d54398b1daf52df316fc3ca",
      "parents": [
        "b7fd54a70f99061721e604d72d940541e5b2b168"
      ],
      "author": {
        "name": "Heinz Mauelshagen",
        "email": "hjm@redhat.com",
        "time": "Thu Apr 24 21:43:09 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:39 2008 +0100"
      },
      "message": "dm log: move dirty region log code into separate module\n\nMove the dirty region log code into a separate module so\nother targets can share the code.\n\nSigned-off-by: Heinz Mauelshagen \u003chjm@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b7fd54a70f99061721e604d72d940541e5b2b168",
      "tree": "177d9dfc5b0f2b9f79bf6708b41d904173712df4",
      "parents": [
        "c12bfc923ee02de5611730ddec087c11b3947038"
      ],
      "author": {
        "name": "Heinz Mauelshagen",
        "email": "hjm@redhat.com",
        "time": "Thu Apr 24 21:43:06 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:38 2008 +0100"
      },
      "message": "dm log: generalise name in messages\n\nChange dm-log.c messages from \"mirror log\" to \"dirty region log\" as\na new dm target wants to share this code.\n\nSigned-off-by: Heinz Mauelshagen \u003chjm@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fb8b284806124bef250196007d7373ea3fe26194",
      "tree": "8e34cc38a2c5a0e8e7a937c53421cf7f76466a00",
      "parents": [
        "304f3f6a58301316da612d7bf21d9abe1369d456"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Feb 08 02:11:19 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:11:19 2008 +0000"
      },
      "message": "dm log: auto load modules\n\nIf the log type is not recognised, attempt to load the module\n\u0027dm-log-\u003ctype\u003e.ko\u0027.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6b3df0d7a5e85ad2afd3eecc50e2dee59e876ae8",
      "tree": "d20f30d0a40d1162a6cc135dca31403ae38198e5",
      "parents": [
        "fe97e2aa0502922488ad62303a19a20c8044ae18"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Oct 19 22:47:57 2007 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Oct 20 02:01:21 2007 +0100"
      },
      "message": "dm log: split suspend\n\nThere are now two phases to a suspend in device-mapper -\npresuspend and postsuspend.  This patch removes the\nsingle \u0027suspend\u0027 in the logging API and replaces it with\n\u0027presuspend\u0027 and \u0027postsuspend\u0027 functions to align it\nbetter with core device-mapper.\n\nA subsequent patch will make use of \u0027presuspend\u0027.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ba8b45cea5f632540d561d37d94c71c07f6af1aa",
      "tree": "03604401cd4162a16d1888b71e7d65c8cc14ec31",
      "parents": [
        "b997b82d266c9fb910fc2ad95b9bb93b3bccf9be"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Wed May 09 02:33:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:48 2007 -0700"
      },
      "message": "dm log: fix resume failed log device\n\nThis patch removes the possibility of having uninitialized log state if the\nlog device has failed.\n\nWhen a mirror resumes operation, it calls \u0027resume\u0027 on the logging module.  If\ndisk based logging is being used, the log device is read to fill in the log\nstate.  If the log device has failed, we cannot simply return, because this\nwould leave the in-memory log state uninitialized.  Instead, we assume all\nregions are out-of-sync and reset the log state.  Failure to do this could\nresult in the logging code reporting a region as in-sync, even though it\nisn\u0027t; which could result in a corrupted mirror.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@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": "5d234d1e03d0a4cef4da32177be6657b45cc513f",
      "tree": "6f1cd0cedbd2a9ad276b1a92195f00925ce517fd",
      "parents": [
        "6cca1e7af543aa396b3e4919c251080741a49e69"
      ],
      "author": {
        "name": "Heinz Mauelshagen",
        "email": "heinzm@redhat.com",
        "time": "Wed May 09 02:33:03 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:47 2007 -0700"
      },
      "message": "dm log: update dm io interface\n\nThis patch ports dm-log.c to the new dm-io interface in order to make it\nscalable to have a large number of persistent dirty logs active in parallel.\n\nSigned-off-by: Heinz Mauelshagen \u003cheinzm@redhat.com\u003e\nCc: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@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": "315dcc226f066c1d3cef79283dcde807fe0e32d1",
      "tree": "f3abf75905aec13819292564ef4c2711c8bf4b8d",
      "parents": [
        "01d03a660e73fb524957c09825a3eb7c2ae7c205"
      ],
      "author": {
        "name": "Jonathan E Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Wed May 09 02:32:58 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:47 2007 -0700"
      },
      "message": "dm log: report fault status\n\nThis patch reports the status of the log device so that userspace can detect\nthe error and take appropriate action.\n\nSigned-off-by: Jonathan E Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@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": "01d03a660e73fb524957c09825a3eb7c2ae7c205",
      "tree": "8f87a5b6b6e34f9baab8661c127bf427cb4eaf41",
      "parents": [
        "2cd54d9bedb79a97f014e86c0da393416b264eb3"
      ],
      "author": {
        "name": "Jonathan E Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Wed May 09 02:32:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:47 2007 -0700"
      },
      "message": "dm log: fault detection\n\nThis patch gives the disk logging code the ability to store the fact that an\nerror occured on the log device.  In addition, an event is raised when an\nerror is encountered during I/O to the log device.\n\nSigned-off-by: Jonathan E Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@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": "88b20a1a71d98d6e0b8373fa68fb784340b3ee51",
      "tree": "c6406a5e5502356bb86555703b52573372ba3b5a",
      "parents": [
        "f3ee6b2f621fec7bc8bfe43fb465e938c37c8d20"
      ],
      "author": {
        "name": "Jonathan E Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Dec 08 02:41:12 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:29:09 2006 -0800"
      },
      "message": "[PATCH] dm: raid1: reset sync_search on resume\n\nReset sync_search on resume.  The effect is to retry syncing all out-of-sync\nregions when a mirror is resumed, including ones that previously failed.\n\nSigned-off-by: Jonathan E Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: dm-devel@redhat.com\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f3ee6b2f621fec7bc8bfe43fb465e938c37c8d20",
      "tree": "3d790014bbd3280fc7b0232dc212f4b34f06092f",
      "parents": [
        "31c93a0c29bf96efd806ccf4ee81cacf04f255de"
      ],
      "author": {
        "name": "Jonathan E Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Dec 08 02:41:11 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:29:09 2006 -0800"
      },
      "message": "[PATCH] dm: log: rename complete_resync_work\n\nThe complete_resync_work function only provides the ability to change an\nout-of-sync region to in-sync.  This patch enhances the function to allow us\nto change the status from in-sync to out-of-sync as well, something that is\nneeded when a mirror write to one of the devices or an initial resync on a\ngiven region fails.\n\nSigned-off-by: Jonathan E Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: dm-devel@redhat.com\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "72d9486169a2a8353e022813185ba2f32d7dde69",
      "tree": "2fe6c382feb3f21d829abf543c54be486007557c",
      "parents": [
        "5c6bd75d06db512515a3781aa97e42df2faf0815"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 26 00:27:35 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:36 2006 -0700"
      },
      "message": "[PATCH] dm: improve error message consistency\n\nTidy device-mapper error messages to include context information\nautomatically.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8a835f11bce68ed990533e49b5dedb00bee46d71",
      "tree": "8311b7c5b722fdf1a2b1c7267098ca0c05bd9a54",
      "parents": [
        "29121bd0b00ebb9524971a583fea4a2f7afe8041"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 26 00:27:30 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:35 2006 -0700"
      },
      "message": "[PATCH] dm mirror log: sync_count fix\n\nWhen a mirror is reduced in size, clear the part of the bitmap that is no\nlonger used.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "29121bd0b00ebb9524971a583fea4a2f7afe8041",
      "tree": "499be8e6dea167fd9a17ccce11467d6bdd1c40dc",
      "parents": [
        "b7cca195c4cc051210f3e60a859b779ca833a2e4"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 26 00:27:29 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:35 2006 -0700"
      },
      "message": "[PATCH] dm mirror log: bitset_size fix\n\nFix the \u0027sizeof\u0027 in the region log bitmap size calculation: it\u0027s uint32_t, not\nunsigned long - this breaks on some archs.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b7cca195c4cc051210f3e60a859b779ca833a2e4",
      "tree": "f9d7f2cc386c90214eaec2617715365708118bdc",
      "parents": [
        "702ca6f0be9ef95087ee2c9f31e6517492554483"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 26 00:27:29 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:35 2006 -0700"
      },
      "message": "[PATCH] dm mirror log: refactor context\n\nRefactor the code that creates the core and disk log contexts to avoid the\nrepeated allocation of clean_bits introduced by the last patch.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "702ca6f0be9ef95087ee2c9f31e6517492554483",
      "tree": "e59b9a1e71e68a9f0230d12a10931b60da1ac9c4",
      "parents": [
        "143535396c7ebd9395a931a000b3963f457712b8"
      ],
      "author": {
        "name": "Kevin Corry",
        "email": "kevcorry@us.ibm.com",
        "time": "Mon Jun 26 00:27:28 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:35 2006 -0700"
      },
      "message": "[PATCH] dm mirror log: sector size fix\n\nOn-disk logs for dm-mirror devices are currently hard-coded to use 512 byte\nhard-sector-sizes.  This patch fixes dm-log so it will work with devices with\nnon-512-byte hard-sector-sizes.\n\nTo maintain full compatibility, instead of moving the clean-bits bitset to a\nbitset, and enlarges the disk-header buffer to encompass both the header and\nthe bitset.  The I/O routines for the bitset are removed, and the I/O routines\nfor the disk-header now also read/write the bitset.\n\nSigned-off-by: Kevin Corry \u003ckevcorry@us.ibm.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1113a7e92e483074c6235da59460759e33b9b144",
      "tree": "632a2eded0668e9ce925ccae721feaf387364cff",
      "parents": [
        "35849c75d7750a254119c1a4b88c90156919df2a"
      ],
      "author": {
        "name": "Stefan Bader",
        "email": "shbader@de.ibm.com",
        "time": "Thu Feb 02 14:28:07 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Feb 02 15:07:13 2006 -0800"
      },
      "message": "[PATCH] device-mapper log bitset: fix big endian find_next_zero_bit\n\nThis is a fix to the device-mapper-log-bitset-fix-endian patch that\nswitched to ext2_* versions of the set and clear bit functions.  The\nfind_next_zero_bit function also has to be the ext2 one.  Otherwise the\nmirror target tries to recover non-existent regions beyond the end of\ndevice.\n\nSigned-off-by: Stefan Bader \u003cshbader@de.ibm.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a4fc4717fc55a3bcd3cfdafa285b7af164b83051",
      "tree": "bce42a0cc5a6675ab50fb6b525e4418b66863fdf",
      "parents": [
        "aa14edeb994f8f7e223d02ad14780bf2fa719f6d"
      ],
      "author": {
        "name": "Patrick Caulfield",
        "email": "pcaulfie@redhat.com",
        "time": "Wed Feb 01 03:04:51 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Feb 01 08:53:10 2006 -0800"
      },
      "message": "[PATCH] device-mapper log bitset: fix endian\n\nClean up the code responsible for the on-disk mirror logs by using the\nset_le_bit test_le_bit functions of ext2.  That makes the BE machines keep the\nbitmap internally in LE order - it does mean you can\u0027t use any other type of\noperations on the bitmap words but that looks to be OK in this instance.  The\nefficiency tradeoff is very minimal as you would expect for something that\next2 uses.\n\nThis allows us to remove bits_to_core(), bits_to_disk() and log-\u003edisk_bits.\n\nAlso increment the mirror log disk version transparently to avoid sharing with\nolder kernels that suffered from the 64-bit BE bug.\n\nSigned-off-by: Patrick Caulfield \u003cpcaulfie@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ac81b2ee45eb811fdb0aa1cfb71d468d944d00ce",
      "tree": "68ec667534f7669e60aadc09115f67fb0caf5fbe",
      "parents": [
        "9d3520a339d62f942085e9888f66905eb8b350bd"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Fri Jan 06 00:20:11 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:01 2006 -0800"
      },
      "message": "[PATCH] make dm-mirror not issue invalid resync requests\n\nI\u0027ve been attempting to set up a (Host)RAID mirror with dm_mirror on\n2.6.14.3, and I\u0027ve been having a strange little problem.  The configuration\nin question is a set of 9GB SCSI disks that have 17942584 sectors.  I set\nup the dm_mirror table as such:\n\n0 17942528 mirror core 2 2048 nosync 2 8:48 0 8:64 0\n\nIf I\u0027m not mistaken, this sets up a 9GB RAID1 mriror with 1MB stripes\nacross both SCSI disks.  The sector count of the dm device is less than the\nsize of the disks, so we shouldn\u0027t fall off the end.  However, I always get\nthe messages like this in dmesg when I set up the dm table:\n\nattempt to access beyond end of device\nsdd: rw\u003d0, want\u003d17958656, limit\u003d17942584\n\nClearly, something is trying to read sectors past the end of the drive.  I\ntraced it down to the __rh_recovery_prepare function in dm-raid1.c, which\ngets called when we\u0027re putting the mirror set together.  This function\ncalls the dirty region log\u0027s get_resync_work function to see if there\u0027s any\nresync that needs to be done, and queues up any areas that are out of sync.\n The log\u0027s get_resync_work function is actually a pointer to the\ncore_get_resync_work function in dm-log.c.\n\nThe core_get_resync_work function queries a bitset lc-\u003esync_bits to find\nout if there are any regions that are out of date (i.e.  the bit is 0),\nwhich is where the problem occurs.  If every bit in lc-\u003esync_bits is 1\n(which is the case when we\u0027ve just configured a new RAID1 with the nosync\noption), the find_next_zero_bit does NOT return the size parameter\n(lc-\u003eregion_count in this case), it returns the size parameter rounded up\nto the nearest multiple of 32!  I don\u0027t know if this is intentional, but\ni386 and x86_64 both exhibit this behavior.\n\nIn any case, the statement \"if (*region \u003d\u003d lc-\u003eregion_count)\" looks like\nit\u0027s supposed to catch the case where are no regions to resync and\nreturn 0.  Since find_next_zero_bit apparently has a habit of returning\na value that\u0027s larger than lc-\u003eregion_count, the enclosed patch changes\nthe equality test to a greater-than test so that we don\u0027t try to resync\nareas outside of the RAID1 region.  Seeing as the HostRAID metadata\nlives just past the end of the RAID1 data, mucking around in that area\nis not a good idea.\n\nI suppose another way to fix this would be to amend find_next_zero_bit so\nthat it doesn\u0027t return values larger than \"size\", but I don\u0027t know if\nthere\u0027s a reason for the current behavior.\n\nSigned-Off-By: Darrick J. Wong \u003cdjwong@us.ibm.com\u003e\nAcked-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0e56822d30184d0da35a6ecc51f38c4ceb457a80",
      "tree": "a9ee18ce0e724f16dde3c5c97af67fb3a92701f7",
      "parents": [
        "c4cc66351a24da5feec298be2da59a85f68dd3ea"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Nov 21 21:32:34 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Nov 22 09:14:31 2005 -0800"
      },
      "message": "[PATCH] device-mapper: mirror log bitset fix\n\nThe linux bitset operators (test_bit, set_bit etc) work on arrays of \"unsigned\nlong\".  dm-log uses such bitsets but treats them as arrays of uint32_t, only\nallocating and zeroing a multiple of 4 bytes (as \u0027clean_bits\u0027 is a uint32_t).\n\nThe patch below fixes this problem.\n\nThe problem is specific to 64-bit big endian machines such as s390x or ppc-64\nand can prevent pvmove terminating.\n\nIn the simplest case, if \"region_count\" were (say) 30, then\nbitset_size (below) would be 4 and bitset_uint32_count would be 1.\nThus the memory for this butset, after allocation and zeroing would\nbe\n   0 0 0 0 X X X X\nOn a bigendian 64bit machine, bit 0 for this bitset is in the 8th\nbyte! (and every bit that dm-log would use would be in the X area).\n\n   0 0 0 0 X X X X\n                 ^\n                 here\n\nwhich hasn\u0027t been cleared properly.\n\nAs the dm-raid1 code only syncs and counts regions which have a 0 in the\n\u0027sync_bits\u0027 bitset, and only finishes when it has counted high enough, a large\nnumber of 1\u0027s among those \u0027X\u0027s will cause the sync to not complete.\n\nIt is worth noting that the code uses the same bitsets for in-memory and\non-disk logs.  As these bitsets are host-endian and host-sized, this means\nthat they cannot safely be moved between computers with\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
