)]}'
{
  "log": [
    {
      "commit": "7f06965390e4a10fb6906c886324bfd0a96961be",
      "tree": "5a6fd96cd56fb9d80bf1a40110ebfcdb5a8a7aa3",
      "parents": [
        "fbdc86f3bd597e108fa03d998132d04fcfe1d669"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Oct 31 20:18:58 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:18:58 2011 +0000"
      },
      "message": "dm kcopyd: add dm_kcopyd_zero to zero an area\n\nThis patch introduces dm_kcopyd_zero() to make it easy to use\nkcopyd to write zeros into the requested areas instead\ninstead of copying.  It is implemented by passing a NULL\ncopying source to dm_kcopyd_copy().\n\nThe forthcoming thin provisioning target uses this.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a6e50b409d3f9e0833e69c3c9cca822e8fa4adbb",
      "tree": "82ca807c21156437270e6a1ed255b18ccf8b3672",
      "parents": [
        "d5b9dd04bd74b774b8e8d93ced7a0d15ad403fa9"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Aug 02 12:32:04 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:04 2011 +0100"
      },
      "message": "dm snapshot: skip reading origin when overwriting complete chunk\n\nIf we write a full chunk in the snapshot, skip reading the origin device\nbecause the whole chunk will be overwritten anyway.\n\nThis patch changes the snapshot write logic when a full chunk is written.\nIn this case:\n  1. allocate the exception\n  2. dispatch the bio (but don\u0027t report the bio completion to device mapper)\n  3. write the exception record\n  4. report bio completed\n\nCallbacks must be done through the kcopyd thread, because callbacks must not\nrace with each other.  So we create two new functions:\n\n  dm_kcopyd_prepare_callback: allocate a job structure and prepare the callback.\n  (This function must not be called from interrupt context.)\n\n  dm_kcopyd_do_callback: submit callback.\n  (This function may be called from interrupt context.)\n\nPerformance test (on snapshots with 4k chunk size):\n  without the patch:\n    non-direct-io sequential write (dd):    17.7MB/s\n    direct-io sequential write (dd):        20.9MB/s\n    non-direct-io random write (mkfs.ext2): 0.44s\n\n  with the patch:\n    non-direct-io sequential write (dd):    26.5MB/s\n    direct-io sequential write (dd):        33.2MB/s\n    non-direct-io random write (mkfs.ext2): 0.27s\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fa34ce73072f90ecd90dcc43f29d82e70e5f8676",
      "tree": "26f9c986da4433fa8ed00a1685e34709997474b2",
      "parents": [
        "5f43ba2950414dc0abf4ac44c397d88069056746"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Sun May 29 13:03:13 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sun May 29 13:03:13 2011 +0100"
      },
      "message": "dm kcopyd: return client directly and not through a pointer\n\nReturn client directly from dm_kcopyd_client_create, not through a\nparameter, making it consistent with dm_io_client_create.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5f43ba2950414dc0abf4ac44c397d88069056746",
      "tree": "f80df9947ef30f965d9c33e649d1856f1e47220f",
      "parents": [
        "bda8efec5c706a672e0714d341a342e811f0262a"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Sun May 29 13:03:11 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sun May 29 13:03:11 2011 +0100"
      },
      "message": "dm kcopyd: reserve fewer pages\n\nReserve just the minimum of pages needed to process one job.\n\nBecause we allocate pages from page allocator, we don\u0027t need to reserve\na large number of pages.  The maximum job size is SUB_JOB_SIZE and we\ncalculate the number of reserved pages based on this.\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": "2d1e580afe23287871529ce54429e249809525a1",
      "tree": "82a0e8b442308c9b9bcf8f8d59c405950dd827d5",
      "parents": [
        "0da336e5fab75c712ba8c67f3135d5a20528465f"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 24 21:55:00 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:54 2008 +0100"
      },
      "message": "dm kcopyd: rename\n\nRename kcopyd.[ch] to dm-kcopyd.[ch].\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": "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": "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"
    }
  ]
}
