)]}'
{
  "log": [
    {
      "commit": "494b3ee7d4f69210def80aecce28d08c3f0755d5",
      "tree": "8cd8fc4de72cf9a1a56e45518019a3cae106515a",
      "parents": [
        "8627921fa2ef6d40fd9b787e163ba3a9ff8f471d"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jun 22 10:12:25 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:25 2009 +0100"
      },
      "message": "dm snapshot: support barriers\n\nFlush support for dm-snapshot target.\n\nThis patch just forwards the flush request to either the origin or the snapshot\ndevice.  (It doesn\u0027t flush exception store metadata.)\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "8f3d8ba20e67991b531e9c0227dcd1f99271a32c",
      "tree": "337efd46f067ce3b7eeab0c3627b02a7edef4afd",
      "parents": [
        "0882e8dd3aad33eca41696d463bb896e6c8817eb"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Apr 07 19:55:13 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 08:28:09 2009 +0200"
      },
      "message": "block: move bio list helpers into bio.h\n\nIt\u0027s used by DM and MD and generally useful, so move the bio list\nhelpers into bio.h.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.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": "fee1998e9c690f9920671e1e0ef187a48cfbbde4",
      "tree": "a217e9bc2142350d9e8065c6e581be0524636498",
      "parents": [
        "2e4a31df2b10cbcaf43c333112f6f7440a035c69"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Apr 02 19:55:34 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 02 19:55:34 2009 +0100"
      },
      "message": "dm snapshot: move ctr parsing to exception store\n\nFirst step of having the exception stores parse their own arguments -\ngeneralizing the interface.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "2e4a31df2b10cbcaf43c333112f6f7440a035c69",
      "tree": "fbfcde3d358e615b500c22219190654825e48a26",
      "parents": [
        "ccc45ea8aeffec49fa5985efc3649aa67bb4fcb7"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Apr 02 19:55:34 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 02 19:55:34 2009 +0100"
      },
      "message": "dm snapshot: use DMEMIT macro for status\n\nUse DMEMIT in place of snprintf.  This makes it easier later when\nother modules are helping to populate our status output.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ccc45ea8aeffec49fa5985efc3649aa67bb4fcb7",
      "tree": "69a72e1a1599d3495224dcd425f0bb230a48108e",
      "parents": [
        "71fab00a6bef7fb53119271a8abdbaf40970d28a"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Apr 02 19:55:34 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 02 19:55:34 2009 +0100"
      },
      "message": "dm snapshot: remove dm_snap header\n\nMove some of the last bits from dm-snap.h into dm-snap.c where they\nbelong and remove 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": "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": "0cea9c78270cdf1d2ad74ce0e083d5555a0842e8",
      "tree": "783785811de9ed558ec1179a6bc201dd6161cae6",
      "parents": [
        "493df71c6420b211a68ae82b889c1e8a5fe701be"
      ],
      "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 dm_target pointer\n\nMove target pointer 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": "35bf659b008e83e725dcd30f542e38461dbb867c",
      "tree": "40be2f357f0905573bd4d21ff59e0db3cda26442",
      "parents": [
        "c66213921c816f6b1b16a84911618ba9a363b134"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Apr 02 19:55:26 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 02 19:55:26 2009 +0100"
      },
      "message": "dm snapshot: avoid having two exceptions for the same chunk\n\nWe need to check if the exception was completed after dropping the lock.\n\nAfter regaining the lock, __find_pending_exception checks if the exception\nwas already placed into \u0026s-\u003epending hash.\n\nBut we don\u0027t check if the exception was already completed and placed into\n\u0026s-\u003ecomplete hash. If the process waiting in alloc_pending_exception was\ndelayed at this point because of a scheduling latency and the exception\nwas meanwhile completed, we\u0027d miss that and allocate another pending\nexception for already completed chunk.\n\nIt would lead to a situation where two records for the same chunk exist\nand potential data corruption because multiple snapshot I/Os to the\naffected chunk could be redirected to different locations in the\nsnapshot.\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": "c66213921c816f6b1b16a84911618ba9a363b134",
      "tree": "2b99c1ef34eea840fe3d517d8a20fb59a5a84044",
      "parents": [
        "2913808eb56a6445a7b277eb8d17651c8defb035"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Apr 02 19:55:25 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 02 19:55:25 2009 +0100"
      },
      "message": "dm snapshot: avoid dropping lock in __find_pending_exception\n\nIt is uncommon and bug-prone to drop a lock in a function that is called with\nthe lock held, so this is moved to the caller.\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": "2913808eb56a6445a7b277eb8d17651c8defb035",
      "tree": "a6d5392acc09cba9658071ca80a81b5a3a725a6c",
      "parents": [
        "b64b6bf4fd8b678a9f8477c11773c38a0a246a6d"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Apr 02 19:55:25 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 02 19:55:25 2009 +0100"
      },
      "message": "dm snapshot: refactor __find_pending_exception\n\nMove looking-up of a pending exception from __find_pending_exception to another\nfunction.\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": "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"
    },
    {
      "commit": "aea53d92f70eeb00ae480e399a997dd55fd5055d",
      "tree": "55e087e5e22168ed87f6d51ca0c8557a7678834f",
      "parents": [
        "fe9cf30eb8186ef267d1868dc9f12f2d0f40835a"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Jan 06 03:05:15 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:05:15 2009 +0000"
      },
      "message": "dm snapshot: separate out exception store interface\n\nPull structures that bridge the gap between snapshot and\nexception store out of dm-snap.h and put them in a new\n.h file - dm-exception-store.h.  This file will define the\nAPI for new exception stores.\n\nUltimately, dm-snap.h is unnecessary, since only dm-snap.c\nshould be using it.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "10d3bd09a3c25df114f74f7f86e1b58d070bef32",
      "tree": "a44e2fe5ccc5950b87a1d31849e5f0ac24fdcc16",
      "parents": [
        "d460c65a6a9ec9e0d284864ec3a9a2d1b73f0e43"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Jan 06 03:04:58 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:04:58 2009 +0000"
      },
      "message": "dm: consolidate target deregistration error handling\n\nChange dm_unregister_target to return void and use BUG() for error\nreporting.\n\ndm_unregister_target can only fail because of programming bug in the\ntarget driver. It can\u0027t fail because of user\u0027s behavior or disk errors.\n\nThis patch changes unregister_target to return void and use BUG if\nsomeone tries to unregister non-registered target or unregister target\nthat is in use.\n\nThis patch removes code duplication (testing of error codes in all dm\ntargets) and reports bugs in just one place, in dm_unregister_target. In\nsome target drivers, these return codes were ignored, which could lead\nto a situation where bugs could be missed.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "90fa1527bddc7147dc0d590ee6184ca88bc50ecf",
      "tree": "a6b692b5a7ef777cbd8f2927783f593234b091d1",
      "parents": [
        "a1b51e98676932d031f5eec1325b2df4bbdc8f26"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Jan 06 03:04:54 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:04:54 2009 +0000"
      },
      "message": "dm snapshot: change yield to msleep\n\nChange yield() to msleep(1). If the thread had realtime priority,\nyield() doesn\u0027t really yield, so the yielding process would loop\nindefinitely and cause machine lockup.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "879129d208f725267366296b631aef31409cf304",
      "tree": "7dd927ae094580f6a3fe420c0cc5f8e251ce9e9e",
      "parents": [
        "60c856c8e2f57a3f69c505735ef66e3719ea0bd6"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Oct 30 13:33:16 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Oct 30 13:33:16 2008 +0000"
      },
      "message": "dm snapshot: wait for chunks in destructor\n\nIf there are several snapshots sharing an origin and one is removed\nwhile the origin is being written to, the snapshot\u0027s mempool may get\ndeleted while elements are still referenced.\n\nPrior to dm-snapshot-use-per-device-mempools.patch the pending\nexceptions may still have been referenced after the snapshot was\ndestroyed, but this was not a problem because the shared mempool\nwas still there.\n\nThis patch fixes the problem by tracking the number of mempool elements\nin use.\n\nThe scenario:\n- You have an origin and two snapshots 1 and 2.\n- Someone writes to the origin.\n- It creates two exceptions in the snapshots, snapshot 1 will be primary\nexception, snapshot 2\u0027s pending_exception-\u003eprimary_pe will point to the\nexception in snapshot 1.\n- The exceptions are being relocated, relocation of exception 1 finishes\n(but it\u0027s pending_exception is still allocated, because it is referenced\nby an exception from snapshot 2)\n- The user lvremoves snapshot 1 --- it calls just suspend (does nothing)\nand destructor. md-\u003epending is zero (there is no I/O submitted to the\nsnapshot by md layer), so it won\u0027t help us.\n- The destructor waits for kcopyd jobs to finish on snapshot 1 --- but\nthere are none.\n- The destructor on snapshot 1 cleans up everything.\n- The relocation of exception on snapshot 2 finishes, it drops reference\non primary_pe. This frees its primary_pe pointer. Primary_pe points to\npending exception created for snapshot 1. So it frees memory into\nnon-existing mempool.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "60c856c8e2f57a3f69c505735ef66e3719ea0bd6",
      "tree": "a6295bec9c1fa01885ef14befa4ae3618f51ca57",
      "parents": [
        "b34578a48459ed1bd5396631aaa4a65d6bcc7726"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Oct 30 13:33:12 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Oct 30 13:33:12 2008 +0000"
      },
      "message": "dm snapshot: fix register_snapshot deadlock\n\nregister_snapshot() performs a GFP_KERNEL allocation while holding\n_origins_lock for write, but that could write out dirty pages onto a\ndevice that attempts to acquire _origins_lock for read, resulting in\ndeadlock.\n\nSo move the allocation up before taking the lock.\n\nThis path is not performance-critical, so it doesn\u0027t matter that we\nallocate memory and free it if we find that we won\u0027t need it.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f68d4f3d394da5b1f69d855b8513f4256ccc803e",
      "tree": "0302fdc83ab62aeb9ad891dffd772625219bcbfc",
      "parents": [
        "7c5f78b9d7f21937e46c26db82976df4b459c95c"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Oct 21 17:44:53 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:44:53 2008 +0100"
      },
      "message": "dm snapshot: drop unused last_percent\n\nThe last_percent field is unused - remove it.\n(It dates from when events were triggered as each X% filled up.)\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "7c5f78b9d7f21937e46c26db82976df4b459c95c",
      "tree": "dce6b094836929224af2ff16af60ee3109598652",
      "parents": [
        "b673c3a8192e28f13e2050a4b82c1986be92cc15"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Oct 21 17:44:51 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:44:51 2008 +0100"
      },
      "message": "dm snapshot: fix primary_pe race\n\nFix a race condition with primary_pe ref_count handling.\n\nput_pending_exception runs under dm_snapshot-\u003elock, it does atomic_dec_and_test\non primary_pe-\u003eref_count, and later does atomic_read primary_pe-\u003eref_count.\n\n__origin_write does atomic_dec_and_test on primary_pe-\u003eref_count without holding\ndm_snapshot-\u003elock.\n\nThis opens the following race condition:\nAssume two CPUs, CPU1 is executing put_pending_exception (and holding\ndm_snapshot-\u003elock). CPU2 is executing __origin_write in parallel.\nprimary_pe-\u003eref_count \u003d\u003d 2.\n\nCPU1:\nif (primary_pe \u0026\u0026 atomic_dec_and_test(\u0026primary_pe-\u003eref_count))\n\torigin_bios \u003d bio_list_get(\u0026primary_pe-\u003eorigin_bios);\n... decrements primary_pe-\u003eref_count to 1. Doesn\u0027t load origin_bios\n\nCPU2:\nif (first \u0026\u0026 atomic_dec_and_test(\u0026primary_pe-\u003eref_count)) {\n\tflush_bios(bio_list_get(\u0026primary_pe-\u003eorigin_bios));\n\tfree_pending_exception(primary_pe);\n\t/* If we got here, pe_queue is necessarily empty. */\n\treturn r;\n}\n... decrements primary_pe-\u003eref_count to 0, submits pending bios, frees\nprimary_pe.\n\nCPU1:\nif (!primary_pe || primary_pe !\u003d pe)\n\tfree_pending_exception(pe);\n... this has no effect.\nif (primary_pe \u0026\u0026 !atomic_read(\u0026primary_pe-\u003eref_count))\n\tfree_pending_exception(primary_pe);\n... sees ref_count \u003d\u003d 0 (written by CPU 2), does double free !!\n\nThis bug can happen only if someone is simultaneously writing to both the\norigin and the snapshot.\n\nIf someone is writing only to the origin, __origin_write will submit kcopyd\nrequest after it decrements primary_pe-\u003eref_count (so it can\u0027t happen that the\nfinished copy races with primary_pe-\u003eref_count decrementation).\n\nIf someone is writing only to the snapshot, __origin_write isn\u0027t invoked at all\nand the race can\u0027t happen.\n\nThe race happens when someone writes to the snapshot --- this creates\npending_exception with primary_pe \u003d\u003d NULL and starts copying. Then, someone\nwrites to the same chunk in the snapshot, and __origin_write races with\ntermination of already submitted request in pending_complete (that calls\nput_pending_exception).\n\nThis race may be reason for bugs:\n  http://bugzilla.kernel.org/show_bug.cgi?id\u003d11636\n  https://bugzilla.redhat.com/show_bug.cgi?id\u003d465825\n\nThe patch fixes the code to make sure that:\n1. If atomic_dec_and_test(\u0026primary_pe-\u003eref_count) returns false, the process\nmust no longer dereference primary_pe (because someone else may free it under\nus).\n2. If atomic_dec_and_test(\u0026primary_pe-\u003eref_count) returns true, the process\nis responsible for freeing primary_pe.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "92e868122edf08b9fc06b112e7e0c80ab94c1f93",
      "tree": "9cd2e5e2f15adcaf1b8d3f8f55d5a676ad40bfd6",
      "parents": [
        "a8d41b59f3f5a7ac19452ef442a7fc1b5fa17366"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jul 21 12:00:35 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jul 21 12:00:35 2008 +0100"
      },
      "message": "dm snapshot: use per device mempools\n\nChange snapshot per-module mempool to per-device mempool.\n\nPer-module mempools could cause a deadlock if multiple\nsnapshot devices are stacked above each other.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a8d41b59f3f5a7ac19452ef442a7fc1b5fa17366",
      "tree": "f9435bed2d582e4cd3e91e4d6fb18a18f62aa019",
      "parents": [
        "cd45daffd1f7b53aac0835b23e97f814ec3f10dc"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jul 21 12:00:34 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jul 21 12:00:34 2008 +0100"
      },
      "message": "dm snapshot: fix race during exception creation\n\nFix a race condition that returns incorrect data when a write causes an\nexception to be allocated whilst a read is still in flight.\n\nThe race condition happens as follows:\n* A read to non-reallocated sector in the snapshot is submitted so that the\n  read is routed to the original device.\n* A write to the original device is submitted. The write causes an exception\n  that reallocates the block.  The write proceeds.\n* The original read is dequeued and reads the wrong data.\n\nThis race can be triggered with CFQ scheduler and one thread writing and\nmultiple threads reading simultaneously.\n\n(This patch relies upon the earlier dm-kcopyd-per-device.patch to avoid a\ndeadlock.)\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "cd45daffd1f7b53aac0835b23e97f814ec3f10dc",
      "tree": "17d35682a8a97f3a73f513531f08ba7e0c8cd718",
      "parents": [
        "def052d21c4e77975bb75cf212f018ec913f8e2f"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jul 21 12:00:32 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jul 21 12:00:32 2008 +0100"
      },
      "message": "dm snapshot: track snapshot reads\n\nWhenever a snapshot read gets mapped through to the origin, track it in\na per-snapshot hash table indexed by chunk number, using memory allocated\nfrom a new per-snapshot mempool.\n\nWe need to track these reads to avoid race conditions which will be fixed\nby patches that follow.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\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": "eb69aca5d3370b81450d68edeebc2bb9a3eb9689",
      "tree": "ddb4c6d52e963b0898a892aaaee3228680e36449",
      "parents": [
        "22a1ceb1e6a7fbce95a1531ff10bb4fb036d4a37"
      ],
      "author": {
        "name": "Heinz Mauelshagen",
        "email": "hjm@redhat.com",
        "time": "Thu Apr 24 21:43:19 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:44 2008 +0100"
      },
      "message": "dm kcopyd: clean interface\n\nClean up the kcopyd 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": "72727bad544b4ce0a3f7853bfd7ae939f398007d",
      "tree": "97961bf4031c9fa1739f545e6030e8ab6cbf0ecc",
      "parents": [
        "769aef30f0f505c44bbe9fcd2c911a052a386139"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Apr 24 21:43:11 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:40 2008 +0100"
      },
      "message": "dm snapshot: store pointer to target instance\n\nSave pointer to dm_target in dm_snapshot structure.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "8ee2767a5903fde549fd3597690f64c8d951051a",
      "tree": "d419a324e1da7323113e8b6e0063ba94ab70fa70",
      "parents": [
        "924362629bf5645aee5f49f8a0d0d5b193e65997"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Thu Apr 24 21:42:36 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:35 2008 +0100"
      },
      "message": "dm snapshot: reduce default memory allocation\n\nLimit the amount of memory allocated per snapshot on systems\nwith a large page size.  (The larger default chunk size on\nthese systems compensates for the smaller number of pages reserved.)\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4cdc1d1fa5c5ac14dc21be19832f02fd0b83867e",
      "tree": "a8c93c90dd088b18b9307bb50413478dbc48f5b5",
      "parents": [
        "d250dad64a154a9f95ec3574e2ffc97d9f61a19c"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 28 14:16:10 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 28 14:45:23 2008 -0700"
      },
      "message": "dm io: write error bits form long not int\n\nwrite_err is an unsigned long used with set_bit() so should not be passed\naround as unsigned int.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d10271\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d74f81f8adc504a23be3babf347b9f69e9389924",
      "tree": "4a687e400479ad330bb36ded54012cd8b8b84ecf",
      "parents": [
        "4f7f5c675fd6bacaae3c67be44de872dcff0e3b7"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Feb 08 02:11:27 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:11:27 2008 +0000"
      },
      "message": "dm snapshot: combine consecutive exceptions in memory\n\nProvided sector_t is 64 bits, reduce the in-memory footprint of the\nsnapshot exception table by the simple method of using unused bits of\nthe chunk number to combine consecutive entries.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "8defd83084c3ce46d314c038f7c0f0ed7156d6f8",
      "tree": "c21d30f80f0d991e731ba9a2c1263c5dbe498e6e",
      "parents": [
        "82d601dc076deb5f348cc3a70f57248bc976ae0c"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@crashcourse.ca",
        "time": "Fri Feb 08 02:10:06 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:10:06 2008 +0000"
      },
      "message": "dm snapshot: use rounddown_pow_of_two\n\nSince the source file already includes the log2.h header file, it\nseems pointless to re-invent the necessary routine.\n\nSigned-off-by: Robert P. J. Day \u003crpjday@crashcourse.ca\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6f3c3f0afa50782dc1742c968646c491657d255a",
      "tree": "cb1f69504094cec60564be51c405bba5eb66c322",
      "parents": [
        "ae9da83f6d800fe1f3b23bfbc8f7222ad1c5bb74"
      ],
      "author": {
        "name": "vignesh babu",
        "email": "vignesh.babu@wipro.com",
        "time": "Fri Oct 19 22:38:44 2007 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Oct 20 02:01:06 2007 +0100"
      },
      "message": "dm: use is_power_of_2\n\nReplacing n \u0026 (n - 1) for power of 2 check by is_power_of_2(n)\n\nSigned-off-by: vignesh babu \u003cvignesh.babu@wipro.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6712ecf8f648118c3363c142196418f89a510b90",
      "tree": "347d39a7d5a7ed96d3b1afecd28de2a0f98b98c9",
      "parents": [
        "5bb23a688b2de23d7765a1dd439d89c038378978"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Sep 27 12:47:43 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.home.kernel.dk",
        "time": "Wed Oct 10 09:25:57 2007 +0200"
      },
      "message": "Drop \u0027size\u0027 argument from bio_endio and bi_end_io\n\nAs bi_end_io is only called once when the reqeust is complete,\nthe \u0027size\u0027 argument is now redundant.  Remove it.\n\nNow there is no need for bio_endio to subtract the size completed\nfrom bi_size.  So don\u0027t do that either.\n\nWhile we are at it, change bi_end_io to return void.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "07a83c47cfc00ba5f0f090ccddd3a0703be0eec9",
      "tree": "a17d8028f76ba242a04f3c0678644f93cc7eee7d",
      "parents": [
        "943317efdbc295e8a28df3f5cbd549d066ee8b4a"
      ],
      "author": {
        "name": "Stefan Bader",
        "email": "shbader@de.ibm.com",
        "time": "Thu Jul 12 17:28:33 2007 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 12 15:01:08 2007 -0700"
      },
      "message": "dm: disable barriers\n\nThis patch causes device-mapper to reject any barrier requests.  This is done\nsince most of the targets won\u0027t handle this correctly anyway.  So until the\nsituation improves it is better to reject these requests at the first place.\nSince barrier requests won\u0027t get to the targets, the checks there can be\nremoved.\n\nCc: stable@kernel.org\nSigned-off-by: Stefan Bader \u003cshbader@de.ibm.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0764147b111b8ca886e4f2e9c9e019106b09b657",
      "tree": "815c9d80c961d54c79692ebe4751318c9052ad45",
      "parents": [
        "fcac03abd325e4f7a4cc8fe05fea2793b1c8eb75"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Thu Jul 12 17:28:13 2007 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 12 15:01:08 2007 -0700"
      },
      "message": "dm snapshot: permit invalid activation\n\nAllow invalid snapshots to be activated instead of failing.\n\nThis allows userspace to reinstate any given snapshot state - for\nexample after an unscheduled reboot - and clean up the invalid snapshot\nat its leisure.\n\nCc: stable@kernel.org\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "028867ac28e51afc834a5931e7545c022557eded",
      "tree": "0a268776ac68f26c86a28416b35a60ab54e3fb94",
      "parents": [
        "79e15ae424afa0a40b1a0c4478046d6ba0b71e20"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jul 12 17:26:32 2007 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 12 15:01:08 2007 -0700"
      },
      "message": "dm: use kmem_cache macro\n\nUse new KMEM_CACHE() macro and make the newly-exposed structure names more\nmeaningful.  Also remove some superfluous casts and inlines (let a modern\ncompiler be the judge).\n\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c642f9e03b3ca04fc806ba5d8d34cc821382e525",
      "tree": "6161b0bbdae62c648b411c2ef01e8b539540d2cd",
      "parents": [
        "88b20a1a71d98d6e0b8373fa68fb784340b3ee51"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Fri Dec 08 02:41:13 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:29:09 2006 -0800"
      },
      "message": "[PATCH] make drivers/md/dm-snap.c:ksnapd static\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\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": "31c93a0c29bf96efd806ccf4ee81cacf04f255de",
      "tree": "dad0b4ce13c5efb82a5bff72fbd1a41b08042c99",
      "parents": [
        "45e157206c732613d1c07e8ceeb1a3e497fb2abf"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@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: snapshot: abstract memory release\n\nMove the code that releases memory used by a snapshot into a separate function.\n\nSigned-off-by: Milan Broz \u003cmbroz@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": "d2a7ad29a810441e9dacbaddcc2f0c6045390008",
      "tree": "36bea90fa2f286f525a3b4f05adf40ec4d28221c",
      "parents": [
        "45cbcd798354251b99694086af9d57c99e89bb43"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Fri Dec 08 02:41:06 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:29:09 2006 -0800"
      },
      "message": "[PATCH] dm: map and endio symbolic return codes\n\nUpdate existing targets to use the new symbols for return values from target\nmap and end_io functions.\n\nThere is no effect on behaviour.\n\nTest results:\nDone build test without errors.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.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": "e18b890bb0881bbab6f4f1a6cd20d9c60d66b003",
      "tree": "4828be07e1c24781c264b42c5a75bcd968223c3f",
      "parents": [
        "441e143e95f5aa1e04026cb0aa71c801ba53982f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:20 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:25 2006 -0800"
      },
      "message": "[PATCH] slab: remove kmem_cache_t\n\nReplace all uses of kmem_cache_t with struct kmem_cache.\n\nThe patch was generated using the following script:\n\n\t#!/bin/sh\n\t#\n\t# Replace one string by another in all the kernel sources.\n\t#\n\n\tset -e\n\n\tfor file in `find * -name \"*.c\" -o -name \"*.h\"|xargs grep -l $1`; do\n\t\tquilt add $file\n\t\tsed -e \"1,\\$s/$1/$2/g\" $file \u003e/tmp/$$\n\t\tmv /tmp/$$ $file\n\t\tquilt refresh\n\tdone\n\nThe script was run like this\n\n\tsh replace kmem_cache_t \"struct kmem_cache\"\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c4028958b6ecad064b1a6303a6a5906d4fe48d73",
      "tree": "1c4c89652c62a75da09f9b9442012007e4ac6250",
      "parents": [
        "65f27f38446e1976cc98fd3004b110fedcddd189"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Nov 22 14:57:56 2006 +0000"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Nov 22 14:57:56 2006 +0000"
      },
      "message": "WorkStruct: make allyesconfig\n\nFix up for make allyesconfig.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "695368ac3302174531429a90d55c3f7f9b83906e",
      "tree": "515457b78ec2bf95dab7f5b614284ccecda8afbd",
      "parents": [
        "4b832e8de22726206eb886f6dbff47a0f3fe5168"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 03 01:15:31 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:15 2006 -0700"
      },
      "message": "[PATCH] dm snapshot: fix freeing pending exception\n\nIf a snapshot became invalid while there are outstanding pending_exceptions,\nwhen pending_complete() processes each one it forgets to remove the\ncorresponding exception from its exception table before freeing it.\n\nFix this by moving the \u0027out:\u0027 label up one statement so that\nremove_exception() is always called.  Then __invalidate_exception() no longer\nneeds to call it and its \u0027pe\u0027 argument become superfluous.\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": "4b832e8de22726206eb886f6dbff47a0f3fe5168",
      "tree": "279cf60137cc08f4f4ae17f04940d69d68262b10",
      "parents": [
        "ca3a931fd33b841cbcc5932f8eac7c43e0909242"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 03 01:15:30 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:14 2006 -0700"
      },
      "message": "[PATCH] dm snapshot: tidy pe ref counting\n\nRename sibling_count to ref_count and introduce get and put functions.\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": "ca3a931fd33b841cbcc5932f8eac7c43e0909242",
      "tree": "bc8aa7ace1a5e528cbfabc01b17a2016c55bc448",
      "parents": [
        "9d493fa8c943ed4ec6e42b7ebfd8f0b7657d54f8"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 03 01:15:30 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:14 2006 -0700"
      },
      "message": "[PATCH] dm snapshot: add workqueue\n\nAdd a workqueue so that I/O can be queued up to be flushed from a separate\nthread (e.g.  if local interrupts are disabled).\n\nA new per-snapshot spinlock pe_lock is introduced to protect queued_bios.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Mark McLoughlin \u003cmarkmc@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9d493fa8c943ed4ec6e42b7ebfd8f0b7657d54f8",
      "tree": "8d7cac80b09a73058fd491563737a77db47df7de",
      "parents": [
        "ba40a2aa6e6f3d084cf35c8b872fc9f18f91231f"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 03 01:15:29 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:14 2006 -0700"
      },
      "message": "[PATCH] dm snapshot: tidy pending_complete\n\nThis patch rearranges the pending_complete() code so that the functional\nchanges in subsequent patches are clearer.\n\nBy consolidating the error and the non-error paths, we can move\nerror_snapshot_bios() and __flush_bios() in line.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Mark McLoughlin \u003cmarkmc@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ba40a2aa6e6f3d084cf35c8b872fc9f18f91231f",
      "tree": "d32ec4949a0a9721e8955e7f0e98130019d95849",
      "parents": [
        "927ffe7c9a156e259aae31c07dd76072c459ec57"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 03 01:15:28 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:14 2006 -0700"
      },
      "message": "[PATCH] dm snapshot: tidy snapshot_map\n\nThis patch rearranges the snapshot_map code so that the functional changes in\nsubsequent patches are clearer.\n\nThe only functional change is to replace the existing read lock with a write\nlock which the next patch needs.\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": "f9cea4f70734f743e0beb55552a9794fa5032645",
      "tree": "7227221bc8913aedfa0f222c365137f549125efc",
      "parents": [
        "4c7e3bf44d0ae227ea1ee87c2197212e65d043d7"
      ],
      "author": {
        "name": "Mark McLoughlin",
        "email": "markmc@redhat.com",
        "time": "Tue Oct 03 01:15:25 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:14 2006 -0700"
      },
      "message": "[PATCH] dm snapshot: fix metadata error handling\n\nFix the error handling when store.read_metadata is called: the error should be\nreturned immediately.\n\nSigned-off-by: Mark McLoughlin \u003cmarkmc@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": "4c7e3bf44d0ae227ea1ee87c2197212e65d043d7",
      "tree": "658140b966d78f4709de10cd03e0bfdade6bc13e",
      "parents": [
        "92c060a692a0c3482cdfcaf346cb2f7572368895"
      ],
      "author": {
        "name": "Mark McLoughlin",
        "email": "markmc@redhat.com",
        "time": "Tue Oct 03 01:15:25 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:14 2006 -0700"
      },
      "message": "[PATCH] dm snapshot: allow zero chunk_size\n\nThe chunk size of snapshots cannot be changed so it is redundant to require it\nas a parameter when activating an existing snapshot.  Allow a value of zero in\nthis case and ignore it.  For a new snapshot, use a default value if zero is\nspecified.\n\nSigned-off-by: Mark McLoughlin \u003cmarkmc@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": "92c060a692a0c3482cdfcaf346cb2f7572368895",
      "tree": "7d0c16f4fffff713fbf0fdd5612f1961556f8ac0",
      "parents": [
        "e3f6ac6123be6f4ba14d71af0da0e8d3d39c33ed"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Tue Oct 03 01:15:24 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:14 2006 -0700"
      },
      "message": "[PATCH] dm snapshot: fix invalidation ENOMEM\n\nFix ENOMEM error sign.\n\nSigned-off-by: Milan Broz \u003cmbroz@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": "6ab3d5624e172c553004ecc862bfeac16d9d68b7",
      "tree": "6d98881fe91fd9583c109208d5c27131b93fa248",
      "parents": [
        "e02169b682bc448ccdc819dc8639ed34a23cedd8"
      ],
      "author": {
        "name": "Jörn Engel",
        "email": "joern@wohnheim.fh-wedel.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "message": "Remove obsolete #include \u003clinux/config.h\u003e\n\nSigned-off-by: Jörn Engel \u003cjoern@wohnheim.fh-wedel.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\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": "c51c2752491e5e771de6c8861a85ba46752d7888",
      "tree": "9371dab2a38e1a17bf91d9bc143b47b1c58c5fb7",
      "parents": [
        "b877a96409a3a99f2ce27b3c6473c9b28298ac7c"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 26 00:27:18 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:34 2006 -0700"
      },
      "message": "[PATCH] dm snapshot: unify chunk_size\n\nPersistent snapshots currently store a private copy of the chunk size.\nUserspace also supplies the chunk size when loading a snapshot.  Ensure\nconsistency by only storing the chunk_size in one place instead of two.\n\nCurrently the two sizes will differ if the chunk size supplied by userspace\ndoes not match the chunk size an existing snapshot actually uses.  Amongst\nother problems, this causes an incorrect \u0027percentage full\u0027 to be reported.\n\nThe patch ensures consistency by only storing the chunk_size in one place,\nremoving it from struct pstore.  Some initialisation is delayed until the\ncorrect chunk_size is known.  If read_header() discovers that the wrong chunk\nsize was supplied, the \u0027area\u0027 buffer (which the header already got read into)\nis reinitialised to the correct size.\n\n[akpm: too late for 2.6.17 - suitable for 2.6.17.x after it has settled]\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "138728dc96529f20dfe970c470e51885a60e329f",
      "tree": "a0369a9de402cd8b9a123129c5e8ba7c69ba1a95",
      "parents": [
        "969429b504ae866d3f8b1cafd68a2c099e305093"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Mar 27 01:17:50 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:44:59 2006 -0800"
      },
      "message": "[PATCH] dm snapshot: fix kcopyd destructor\n\nBefore removing a snapshot, wait for the completion of any kcopyd jobs using\nit.\n\nDo this by maintaining a count (nr_jobs) of how many outstanding jobs each\nkcopyd_client has.\n\nThe snapshot destructor first unregisters the snapshot so that no new kcopyd\njobs (created by writes to the origin) will reference that particular\nsnapshot.  kcopyd_client_destroy() is now run next to wait for the completion\nof any outstanding jobs before the snapshot exception structures (that those\njobs reference) are freed.\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": "4ee218cd67b385759993a6c840ea45f0ee0a8b30",
      "tree": "788d33b31e9d008eeb2de2a7f874e45b09695719",
      "parents": [
        "930d332a23682202c07df0276dd665a57755b37d"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Mon Mar 27 01:17:48 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:44:58 2006 -0800"
      },
      "message": "[PATCH] dm: remove SECTOR_FORMAT\n\nWe don\u0027t know what type sector_t has.  Sometimes it\u0027s unsigned long, sometimes\nit\u0027s unsigned long long.  For example on ppc64 it\u0027s unsigned long with\nCONFIG_LBD\u003dn and on x86_64 it\u0027s unsigned long long with CONFIG_LBD\u003dn.\n\nThe way to handle all of this is to always use unsigned long long and to\nalways typecast the sector_t when printing it.\n\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": "76df1c651b66bdf07d60b3d60789feb5f58d73e3",
      "tree": "5458257a6a089396ac6ed5883a916af542ca8477",
      "parents": [
        "b4b610f684d13bf8691feeae5d4d7a8bd1f1033e"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Mar 27 01:17:45 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:44:58 2006 -0800"
      },
      "message": "[PATCH] device-mapper snapshot: fix invalidation\n\nWhen a snapshot becomes invalid, s-\u003evalid is set to 0.  In this state, a\nsnapshot can no longer be accessed.\n\nWhen s-\u003elock is acquired, before doing anything else, s-\u003evalid must be checked\nto ensure the snapshot remains valid.\n\nThis patch eliminates some races (that may cause panics) by adding some\nmissing checks.  At the same time, some unnecessary levels of indentation are\nremoved and snapshot invalidation is moved into a single function that always\ngenerates a device-mapper event.\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": "b4b610f684d13bf8691feeae5d4d7a8bd1f1033e",
      "tree": "3226c70f318f494d3c6a6707879ba82ebec900b9",
      "parents": [
        "eccf081799be8d83852f183838bf26e1ca099db4"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Mar 27 01:17:44 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:44:58 2006 -0800"
      },
      "message": "[PATCH] device-mapper snapshot: replace sibling list\n\nThe siblings \"list\" is used unsafely at the moment.\n\nFirstly, only the element on the list being changed gets locked (via the\nsnapshot lock), not the next and previous elements which have pointers that\nare also being changed.\n\nSecondly, if you have two or more snapshots and write to the same chunk a\nsecond time before every snapshot has finished making its private copy of the\ndata, if you\u0027re unlucky, _origin_write() could attempt its list_merge() and\ndereference a \u0027last\u0027 pointer to a pending_exception structure that has just\nbeen freed.\n\nAnalysis reveals that the list is actually only there for reference counting.\nIf 5 pending_exceptions are needed in origin_write, then the 5 are joined\ntogether into a 5-element list - without a separate list head because there\u0027s\nnowhere suitable to store it.  As the pending_exceptions complete, they are\nremoved from the list one-by-one and any contents of origin_bios get moved\nacross to one of the remaining pending_exceptions on the list.  Whichever one\nis last is detected because list_empty() is then true and the origin_bios get\nsubmitted.\n\nThe fix proposed here uses an alternative reference counting mechanism by\nchoosing one of the pending_exceptions as primary and maintaining an atomic\ncounter there.\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": "eccf081799be8d83852f183838bf26e1ca099db4",
      "tree": "ff6e2fa87a149f1122e5f0f854bf1707e962f3b8",
      "parents": [
        "e4ccde33de202fae1b1e2a940604ee9e295450d9"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Mar 27 01:17:42 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:44:58 2006 -0800"
      },
      "message": "[PATCH] device-mapper snapshot: fix origin_write pending_exception submission\n\nSay you have several snapshots of the same origin and then you issue a write\nto some place in the origin for the first time.\n\nBefore the device-mapper snapshot target lets the write go through to the\nunderlying device, it needs to make a copy of the data that is about to be\noverwritten.  Each snapshot is independent, so it makes one copy for each\nsnapshot.\n\n__origin_write() loops through each snapshot and checks to see whether a copy\nis needed for that snapshot.  (A copy is only needed the first time that data\nchanges.)\n\nIf a copy is needed, the code allocates a \u0027pending_exception\u0027 structure\nholding the details.  It links these together for all the snapshots, then\nworks its way through this list and submits the copying requests to the kcopyd\nthread by calling start_copy().  When each request is completed, the original\npending_exception structure gets freed in pending_complete().\n\nIf you\u0027re very unlucky, this structure can get freed *before* the submission\nprocess has finished walking the list.\n\nThis patch:\n\n  1) Creates a new temporary list pe_queue to hold the pending exception\n     structures;\n\n  2) Does all the bookkeeping up-front, then walks through the new list\n     safely and calls start_copy() for each pending_exception that needed it;\n\n  3) Avoids attempting to add pe-\u003esiblings to the list if it\u0027s already\n     connected.\n\n[NB This does not fix all the races in this code.  More patches will follow.]\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": "93d2341c750cda0df48a6cc67b35fe25f1ec47df",
      "tree": "f098a3bbfae65ce967591ee94d605c6e6bea21c6",
      "parents": [
        "fec433aaaae32a02329ad7d71b0f3c91b7525077"
      ],
      "author": {
        "name": "Matthew Dobson",
        "email": "colpatch@us.ibm.com",
        "time": "Sun Mar 26 01:37:50 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Mar 26 08:57:00 2006 -0800"
      },
      "message": "[PATCH] mempool: use mempool_create_slab_pool()\n\nModify well over a dozen mempool users to call mempool_create_slab_pool()\nrather than calling mempool_create() with extra arguments, saving about 30\nlines of code and increasing readability.\n\nSigned-off-by: Matthew Dobson \u003ccolpatch@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4aac0a63fe8d418a2b74e43708f59380ba379a3b",
      "tree": "b71c432edf274776443a27d5dfdbd7800d014e08",
      "parents": [
        "3eaf840e0b0046f56602c524c7ba58a82f5526c5"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Feb 01 03:04:55 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Feb 01 08:53:11 2006 -0800"
      },
      "message": "[PATCH] device-mapper snapshot: barriers not supported\n\nThe snapshot and origin targets are incapable of handling barriers and need to\nindicate this.\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": "aa14edeb994f8f7e223d02ad14780bf2fa719f6d",
      "tree": "07fb8ba39d619708bdc0a68a32d4a7296abd955c",
      "parents": [
        "cb82a6cdf994d6656ad0a25ed28395af3416a27c"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Feb 01 03:04:50 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Feb 01 08:53:10 2006 -0800"
      },
      "message": "[PATCH] device-mapper snapshot: load metadata on creation\n\nMove snapshot metadata loading to happen when the table is created instead of\nwhen the device is resumed.  Writes to the origin device don\u0027t trigger\nexceptions until each snapshot table becomes active when resume() is called on\neach snapshot.\n\nIf you\u0027re using lvm2, for this patch to work properly you should update to\nlvm2 version 2.02.01 or later and device-mapper version 1.02.02 or later.\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": "858119e159384308a5dde67776691a2ebf70df0f",
      "tree": "f360768f999d51edc0863917ce0bf79e88c0ec4c",
      "parents": [
        "b0a9499c3dd50d333e2aedb7e894873c58da3785"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Sat Jan 14 13:20:43 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Jan 14 18:27:06 2006 -0800"
      },
      "message": "[PATCH] Unlinline a bunch of other functions\n\nRemove the \"inline\" keyword from a bunch of big functions in the kernel with\nthe goal of shrinking it by 30kb to 40kb\n\nSigned-off-by: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Jeff Garzik \u003cjgarzik@pobox.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2d38fe204461dc542bb38f2b01a9cd115b367b36",
      "tree": "3a8267a1ed308a6ae67f89ddc90ca44370b79371",
      "parents": [
        "81f1777a55e8c631b61e5fa5980fb7a2004287af"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Jan 06 00:20:02 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:00 2006 -0800"
      },
      "message": "[PATCH] device-mapper snapshot: metadata reading separation\n\nMore snapshot metadata reading into separate function, to prepare for changing\nthe place it gets called from.\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": "d5e404c10a98fc2979643476851e9cbdb1944812",
      "tree": "1d7d846b43a6a8a022e5cf4fd5453b27abf0de94",
      "parents": [
        "93c534aefb906824d71ea779ed0c7f1573843f4e"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jul 12 15:53:05 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jul 12 16:19:11 2005 -0700"
      },
      "message": "[PATCH] device-mapper snapshots: Handle origin extension\n\nHandle writes to a snapshot-origin device that has been extended since the\nsnapshot was taken.\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": "f6a80ea8ed44de0b19c42d41928be37a186a3f41",
      "tree": "2e565669d042e54576a4beaba03145ea35ec2145",
      "parents": [
        "3f603ed319d5120e883e64ac5967b2fc848fc43b"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jul 12 15:53:01 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jul 12 16:19:10 2005 -0700"
      },
      "message": "[PATCH] device-mapper multipath: Barriers not supported\n\ndm multipath will report barriers as not supported with this patch.\n\nSigned-off-by: Lars Marowsky-Bree \u003clmb@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"
    }
  ]
}
