)]}'
{
  "log": [
    {
      "commit": "9ca170a3c0cbb0d5251cef6f5a3300fa436ba8ec",
      "tree": "78c023bd85bcbf01b5e81ae9586093aabe201312",
      "parents": [
        "c26655ca3ca7550740a63820ee981e5c7c797523"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Dec 10 23:52:13 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:13 2009 +0000"
      },
      "message": "dm kcopyd: accept zero size jobs\n\ndm-kcopyd: accept zero-size jobs\n\nThis patch changes dm-kcopyd so that it accepts zero-size jobs and completes\nthem immediatelly via its completion thread.\n\nIt is needed for multisnapshots snapshot resizing. When we are writing to\na chunk beyond origin end, no copying is done. To simplify the code, we submit\nan empty request to kcopyd and let kcopyd complete it. If we didn\u0027t submit\na request to kcopyd and called the completion routine immediatelly, it would\nviolate the principle that completion is called only from one thread and\nit would need additional locking.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "340cd44451fb0bfa542365e6b4b565bbd44836e2",
      "tree": "bd5e2d1436c91a3365d427552fc5a497234c6b50",
      "parents": [
        "73830857bca6f6c9dbd48e906daea50bea42d676"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Apr 09 00:27:17 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 09 00:27:17 2009 +0100"
      },
      "message": "dm kcopyd: fix callback race\n\nIf the thread calling dm_kcopyd_copy is delayed due to scheduling inside\nsplit_job/segment_complete and the subjobs complete before the loop in\nsplit_job completes, the kcopyd callback could be invoked from the\nthread that called dm_kcopyd_copy instead of the kcopyd workqueue.\n\ndm_kcopyd_copy -\u003e split_job -\u003e segment_complete -\u003e job-\u003efn()\n\nSnapshots depend on the fact that callbacks are called from the singlethreaded\nkcopyd workqueue and expect that there is no racing between individual\ncallbacks. The racing between callbacks can lead to corruption of exception\nstore and it can also mean that exception store callbacks are called twice\nfor the same exception - a likely reason for crashes reported inside\npending_complete() / remove_exception().\n\nThis patch fixes two problems:\n\n1. job-\u003efn being called from the thread that submitted the job (see above).\n\n- Fix: hand over the completion callback to the kcopyd thread.\n\n2. job-\u003efn(read_err, write_err, job-\u003econtext); in segment_complete\nreports the error of the last subjob, not the union of all errors.\n\n- Fix: pass job-\u003ewrite_err to the callback to report all error bits\n  (it is done already in run_complete_job)\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": "73830857bca6f6c9dbd48e906daea50bea42d676",
      "tree": "1d68ff2f2da69fea4ba3fe720bbfc32507a5f7e3",
      "parents": [
        "af7e466a1acededbc10beaba9eec8531d561c566"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Apr 09 00:27:16 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 09 00:27:16 2009 +0100"
      },
      "message": "dm kcopyd: prepare for callback race fix\n\nUse a variable in segment_complete() to point to the dm_kcopyd_client\nstruct and only release job-\u003epages in run_complete_job() if any are\ndefined.  These changes are needed by the next patch.\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": "93dbb393503d53cd226e5e1f0088fe8f4dbaa2b8",
      "tree": "790365e207951cf6810e8995f3141ddc0b74519b",
      "parents": [
        "c1c201200a359cf3b6e2e36a4236cdca77a3cd8e"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Feb 16 10:25:40 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Feb 18 10:32:00 2009 +0100"
      },
      "message": "block: fix bad definition of BIO_RW_SYNC\n\nWe can\u0027t OR shift values, so get rid of BIO_RW_SYNC and use BIO_RW_SYNCIO\nand BIO_RW_UNPLUG explicitly. This brings back the behaviour from before\n213d9417fec62ef4c3675621b9364a667954d4dd.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.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": "b673c3a8192e28f13e2050a4b82c1986be92cc15",
      "tree": "6d4f2f3565cc046750eb482a0ccb15cbe28ba7f9",
      "parents": [
        "2515ddc6db8eb49a79f0fe5e67ff09ac7c81eab4"
      ],
      "author": {
        "name": "Kazuo Ito",
        "email": "ito.kazuo@oss.ntt.co.jp",
        "time": "Tue Oct 21 17:44:50 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:44:50 2008 +0100"
      },
      "message": "dm kcopyd: avoid queue shuffle\n\nWrite throughput to LVM snapshot origin volume is an order\nof magnitude slower than those to LV without snapshots or\nsnapshot target volumes, especially in the case of sequential\nwrites with O_SYNC on.\n\nThe following patch originally written by Kevin Jamieson and\nJan Blunck and slightly modified for the current RCs by myself\ntries to improve the performance by modifying the behaviour\nof kcopyd, so that it pushes back an I/O job to the head of\nthe job queue instead of the tail as process_jobs() currently\ndoes when it has to wait for free pages. This way, write\nrequests aren\u0027t shuffled to cause extra seeks.\n\nI tested the patch against 2.6.27-rc5 and got the following results.\nThe test is a dd command writing to snapshot origin followed by fsync\nto the file just created/updated.  A couple of filesystem benchmarks\ngave me similar results in case of sequential writes, while random\nwrites didn\u0027t suffer much.\n\ndd if\u003d/dev/zero of\u003d\u003csomewhere on snapshot origin\u003e bs\u003d4096 count\u003d...\n   [conv\u003dnotrunc when updating]\n\n1) linux 2.6.27-rc5 without the patch, write to snapshot origin,\naverage throughput (MB/s)\n                     10M     100M    1000M\ncreate,dd         511.46   610.72    11.81\ncreate,dd+fsync     7.10     6.77     8.13\nupdate,dd         431.63   917.41    12.75\nupdate,dd+fsync     7.79     7.43     8.12\n\ncompared with write throughput to LV without any snapshots,\nall dd+fsync and 1000 MiB writes perform very poorly.\n\n                     10M     100M    1000M\ncreate,dd         555.03   608.98   123.29\ncreate,dd+fsync   114.27    72.78    76.65\nupdate,dd         152.34  1267.27   124.04\nupdate,dd+fsync   130.56    77.81    77.84\n\n2) linux 2.6.27-rc5 with the patch, write to snapshot origin,\naverage throughput (MB/s)\n\n                     10M     100M    1000M\ncreate,dd         537.06   589.44    46.21\ncreate,dd+fsync    31.63    29.19    29.23\nupdate,dd         487.59   897.65    37.76\nupdate,dd+fsync    34.12    30.07    26.85\n\nAlthough still not on par with plain LV performance -\ncannot be avoided because it\u0027s copy on write anyway -\nthis simple patch successfully improves throughtput\nof dd+fsync while not affecting the rest.\n\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nSigned-off-by: Kazuo Ito \u003cito.kazuo@oss.ntt.co.jp\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "7ff14a36159d947872870e7a3e9dcaebc46b23eb",
      "tree": "69544b7f29f2ffc392951f9e9c23f566e3cc41f7",
      "parents": [
        "a2aebe03be60ae4da03507a00d60211d5e0327c3"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Apr 24 22:10:47 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:57 2008 +0100"
      },
      "message": "dm: unplug queues in threads\n\nRemove an avoidable 3ms delay on some dm-raid1 and kcopyd I/O.\n\nIt is specified that any submitted bio without BIO_RW_SYNC flag may plug the\nqueue (i.e. block the requests from being dispatched to the physical device).\n\nThe queue is unplugged when the caller calls blk_unplug() function. Usually, the\nsequence is that someone calls submit_bh to submit IO on a buffer. The IO plugs\nthe queue and waits (to be possibly joined with other adjacent bios). Then, when\nthe caller calls wait_on_buffer(), it unplugs the queue and submits the IOs to\nthe disk.\n\nThis was happenning:\n\nWhen doing O_SYNC writes, function fsync_buffers_list() submits a list of\nbios to dm_raid1, the bios are added to dm_raid1 write queue and kmirrord is\nwoken up.\n\nfsync_buffers_list() calls wait_on_buffer().  That unplugs the queue, but\nthere are no bios on the device queue as they are still in the dm_raid1 queue.\n\nwait_on_buffer() starts waiting until the IO is finished.\n\nkmirrord is scheduled, kmirrord takes bios and submits them to the devices.\n\nThe submitted bio plugs the harddisk queue but there is no one to unplug it.\n(The process that called wait_on_buffer() is already sleeping.)\n\nSo there is a 3ms timeout, after which the queues on the harddisks are\nunplugged and requests are processed.\n\nThis 3ms timeout meant that in certain workloads (e.g. O_SYNC, 8kb writes),\ndm-raid1 is 10 times slower than md raid1.\n\nEvery time we submit something asynchronously via dm_io, we must unplug the\nqueue actually to send the request to the device.\n\nThis patch adds an unplug call to kmirrord - while processing requests, it keeps\nthe queue plugged (so that adjacent bios can be merged); when it finishes\nprocessing all the bios, it unplugs the queue to submit the bios.\n\nIt also fixes kcopyd which has the same potential problem. All kcopyd requests\nare submitted with BIO_RW_SYNC.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.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": "945fa4d283a3a472186c11028f6fea1e77a91d14",
      "tree": "99af5b3623665680417a61a43f5effcfbeba903b",
      "parents": [
        "08d8757a4d52d21d825b9170af36f2696d1da1a8"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Apr 24 21:43:49 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:52 2008 +0100"
      },
      "message": "dm kcopyd: remove redundant client counting\n\nRemove client counting code that is no longer needed.\n\nInitialization and destruction is made globally from dm_init and dm_exit and is\nnot based on client counts. Initialization allocates only one empty slab cache,\nso there is no negative impact from performing the initialization always,\nregardless of whether some client uses kcopyd or not.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "08d8757a4d52d21d825b9170af36f2696d1da1a8",
      "tree": "fd3e2b5620f3e8dca28464d2d0ade39c60d543c9",
      "parents": [
        "8c0cbc2f79bb222d21b466422fde71fcc9bd37e3"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Apr 24 21:43:46 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:50 2008 +0100"
      },
      "message": "dm kcopyd: private mempool\n\nChange the global mempool in kcopyd into a per-device mempool to avoid\ndeadlock possibilities.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "8c0cbc2f79bb222d21b466422fde71fcc9bd37e3",
      "tree": "392d54c0fb5cc92300ef2b93237fb5accca9ead4",
      "parents": [
        "2a23aa1ddb1f0c9eef2c929c89565c387f6bf68b"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Apr 24 21:43:44 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:49 2008 +0100"
      },
      "message": "dm kcopyd: per device\n\nMake one kcopyd thread per device.\n\nThe original shared kcopyd could deadlock.\n\nConfiguration:\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": "def5b5b26e6d97820465fadcb7d1cb73cc4daf33",
      "tree": "ee9649cc571503da040ba1582688e16e52de4483",
      "parents": [
        "094262db9e4c615e0db7a7b924d244b7a6c186b0"
      ],
      "author": {
        "name": "Matthias Kaehlcke",
        "email": "matthias.kaehlcke@gmail.com",
        "time": "Fri Oct 19 22:38:52 2007 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Oct 20 02:01:08 2007 +0100"
      },
      "message": "kcopyd use mutex instead of semaphore\n\nKcopyd uses a semaphore as mutex.  Use the mutex API instead of the (binary)\nsemaphore,\n\nSigned-off-by: Matthias Kaehlcke \u003cmatthias.kaehlcke@gmail.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@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": "373a392bd76c4cc2cbbdab3906aee2ae4dc6702e",
      "tree": "5adf4bf86e25abe107e0623dc3257a0e46b74670",
      "parents": [
        "c8b03afe3d38a635861e4bfa5c563d844e754a91"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Wed May 09 02:33:02 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:47 2007 -0700"
      },
      "message": "dm kcopyd: update dm io interface\n\nThis patch ports kcopyd.c to the new, scalable dm_io() interface.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Heinz Mauelshagen \u003chjm@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": "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": "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": "ce503f59ae899c3e75a8a1cf46f2d44c0c5b5c7c",
      "tree": "7bec805d077c3a7f47f7a1965a1a8020082c5544",
      "parents": [
        "8a835f11bce68ed990533e49b5dedb00bee46d71"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@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 kcopyd: error accumulation fix\n\nkcopyd should accumulate errors - otherwise I/O failures may be ignored\nunintentionally.\n\nAnd invert \u0027success\u0027 (used in a future patch), using a more intuitive\n!(read_err || write_err).\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@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "48c9c27b8bcd2a328a06151e2d5c1170db0b701b",
      "tree": "804fb1c410e0a246c92105710f1cd22a9daa8edc",
      "parents": [
        "2f889129de148b0ba2e1fbc9e9d33a4ef4c5f2cb"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Mon Mar 27 01:18:20 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:45:03 2006 -0800"
      },
      "message": "[PATCH] sem2mutex: drivers/md\n\nSemaphore to mutex conversion.\n\nThe conversion was generated via scripts, and the result was validated\nautomatically via a script as well.\n\nSigned-off-by: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Neil Brown \u003cneilb@cse.unsw.edu.au\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": "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": "14cc3e2b633bb64063698980974df4535368e98f",
      "tree": "d542c9db7376de199d640b8e34d5630460b217b5",
      "parents": [
        "353ab6e97b8f209dbecc9f650f1f84e3da2a7bb1"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Mar 26 01:37:14 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Mar 26 08:56:55 2006 -0800"
      },
      "message": "[PATCH] sem2mutex: misc static one-file mutexes\n\nSemaphore to mutex conversion.\n\nThe conversion was generated via scripts, and the result was validated\nautomatically via a script as well.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Dave Jones \u003cdavej@codemonkey.org.uk\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Jens Axboe \u003caxboe@suse.de\u003e\nCc: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nAcked-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: Dominik Brodowski \u003clinux@dominikbrodowski.net\u003e\nCc: Adam Belay \u003cambx1@neo.rr.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "715b49ef2de6fcead0776d9349071670282faf65",
      "tree": "d09b77c804aba3b191dc0ceb294387cf730ede4b",
      "parents": [
        "3213e913b0d6baeb28aa1affbdd4bfa7efedc35f"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@lxorguk.ukuu.org.uk",
        "time": "Wed Jan 18 17:44:07 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jan 18 19:20:30 2006 -0800"
      },
      "message": "[PATCH] EDAC: atomic scrub operations\n\nEDAC requires a way to scrub memory if an ECC error is found and the chipset\ndoes not do the work automatically.  That means rewriting memory locations\natomically with respect to all CPUs _and_ bus masters.  That means we can\u0027t\nuse atomic_add(foo, 0) as it gets optimised for non-SMP\n\nThis adds a function to include/asm-foo/atomic.h for the platforms currently\nsupported which implements a scrub of a mapped block.\n\nIt also adjusts a few other files include order where atomic.h is included\nbefore types.h as this now causes an error as atomic_scrub uses u32.\n\nSigned-off-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0b56306e56784d0513e1193d58c05a6bd97bd1a9",
      "tree": "df8b94d7df0e3c8cd3ac22f3a5a06d59658d89e3",
      "parents": [
        "6da487dcc0c6f4c827779687a20016efeffc4d60"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Fri Jan 06 00:20:08 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:01 2006 -0800"
      },
      "message": "[PATCH] drivers/md/kcopyd.c: #if 0 kcopyd_cancel()\n\nThis patch #if 0\u0027s the not yet implemented global function kcopyd_cancel().\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": "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"
    }
  ]
}
