)]}'
{
  "log": [
    {
      "commit": "be3b075354e170368a0d29558cae492205e80a64",
      "tree": "b37af91addb8d214b9010774f5cf31538a501267",
      "parents": [
        "dbecf3ab40b5a6cc4499543778cd9f9682c0abad"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Tue Apr 18 19:18:31 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 18 19:18:31 2006 +0200"
      },
      "message": "[PATCH] cfq: Further rbtree traversal and cfq_exit_queue() race fix\n\nIn current code, we are re-reading cic-\u003ekey after dead cic-\u003ekey check.\nSo, in theory, it may really re-read *after* cfq_exit_queue() seted NULL.\n\nTo avoid race, we copy it to stack, then use it. With this change, I\nguess gcc will assign cic-\u003ekey to a register or stack, and it wouldn\u0027t\nbe re-readed.\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "dbecf3ab40b5a6cc4499543778cd9f9682c0abad",
      "tree": "56dcd8c30835472b54017e1cb5fd852386ee9e49",
      "parents": [
        "fba822722e3f9d438fca8fd9541d7ddd447d7a48"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Tue Apr 18 09:45:18 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 18 09:45:18 2006 +0200"
      },
      "message": "[PATCH 2/2] cfq: fix cic\u0027s rbtree traversal\n\nWhen queue dies, we set cic-\u003ekey\u003dNULL as dead mark. So, when we\ntraverse a rbtree, we must check whether it\u0027s still valid key. if it\nwas invalidated, drop it, then restart the traversal from top.\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "fba822722e3f9d438fca8fd9541d7ddd447d7a48",
      "tree": "05fc35428f61fb6b66726e3aae03ce9187212c21",
      "parents": [
        "a9a5cd5d2a57fb76dbae2115450f777b69beccf7"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Tue Apr 18 09:44:06 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 18 09:44:06 2006 +0200"
      },
      "message": "[PATCH 1/2] iosched: fix typo and barrier()\n\nOn rmmod path, cfq/as waits to make sure all io-contexts was\nfreed. However, it\u0027s using complete(), not wait_for_completion().\n\nI think barrier() is not enough in here. To avoid the following case,\nthis patch replaces barrier() with smb_wmb().\n\n\tcpu0\t\t\tvisibility\t\t\tcpu1\n\t                [ioc_gnone\u003dNULL,ioc_count\u003d1]\n\nioc_gnone \u003d \u0026all_gone\t\tNULL,ioc_count\u003d1\natomic_read(\u0026ioc_count)\t\tNULL,ioc_count\u003d1\nwait_for_completion()\t\tNULL,ioc_count\u003d0\tatomic_sub_and_test()\n\t\t\t\tNULL,ioc_count\u003d0\tif ( \u0026\u0026 ioc_gone)\n\t\t\t\t\t\t    [ioc_gone\u003d\u003dNULL,\n\t\t\t\t\t\t    so doesn\u0027t call complete()]\n\t\t\t   \u0026all_gone,ioc_count\u003d0\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "206dc69b31ca05baac68c75b8ed2ba7dd857d273",
      "tree": "f9ca5d996e19cb072165b1f6474c39b59b0e7451",
      "parents": [
        "7143dd4b0127141a4f773e819d1d1f4ab82bb517"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Mar 28 13:03:44 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Mar 28 13:03:44 2006 +0200"
      },
      "message": "[BLOCK] cfq-iosched: seek and async performance fixes\n\nDetect whether a given process is seeky and if so disable (mostly) the\nidle window if it is. We still allow just a little idle time, just enough\nto allow that process to submit a new request. That is needed to maintain\nfairness across priority groups.\n\nIn some cases, we could setup several async queues. This is not optimal\nfrom a performance POV, since we want all async io in one queue to perform\ngood sorting on it. It also impacted sync queues, as async io got too much\nslice time.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "e8a99053ea82a4b4375049886cf1db64d7dcd755",
      "tree": "f16f440237e5627bda317923198fbbe00cb22e96",
      "parents": [
        "e2d74ac0664c89757bde8fb18c98cd7bf53da61c"
      ],
      "author": {
        "name": "Andreas Mohr",
        "email": "andi@lisas.de",
        "time": "Tue Mar 28 08:59:49 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Mar 28 08:59:49 2006 +0200"
      },
      "message": "[PATCH] cfq-iosched: small cfq_choose_req() optimization\n\nthis is a small optimization to cfq_choose_req() in the CFQ I/O scheduler\n(this function is a semi-often invoked candidate in an oprofile log):\nby using a bit mask variable, we can use a simple switch() to check\nthe various cases instead of having to query two variables for each check.\nBenefit: 251 vs. 285 bytes footprint of cfq_choose_req().\nAlso, common case 0 (no request wrapping) is now checked first in code.\n\nSigned-off-by: Andreas Mohr \u003candi@lisas.de\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "e2d74ac0664c89757bde8fb18c98cd7bf53da61c",
      "tree": "1e858044a9180766eae4ec694d4200c4ae850406",
      "parents": [
        "329b10bb0feacb7fb9a41389313ff0a51ae56f2a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Mar 28 08:59:01 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Mar 28 08:59:01 2006 +0200"
      },
      "message": "[PATCH] [BLOCK] cfq-iosched: change cfq io context linking from list to tree\n\nOn setups with many disks, we spend a considerable amount of time\nlooking up the process-disk mapping on each queue of io. Testing with\na NULL based block driver, this costs 40-50% reduction in throughput\nfor 1000 disks.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\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": "e572ec7e4e432de7ecf7bd2e62117646fa64e518",
      "tree": "56b4b738fb566128d2db6d62aed28cfd41b5398a",
      "parents": [
        "3d1ab40f4c20767afbd361b258a531d73e3e6fc2"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 22:27:18 2006 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 22:27:18 2006 -0500"
      },
      "message": "[PATCH] fix rmmod problems with elevator attributes, clean them up\n"
    },
    {
      "commit": "3d1ab40f4c20767afbd361b258a531d73e3e6fc2",
      "tree": "2da79cc8b47a98b0496b6e762fa790a8d547977b",
      "parents": [
        "1cc9be68ebcc1de9904bf225441613878da9c0d8"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 18:35:43 2006 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 18:35:43 2006 -0500"
      },
      "message": "[PATCH] elevator_t lifetime rules and sysfs fixes\n"
    },
    {
      "commit": "1cc9be68ebcc1de9904bf225441613878da9c0d8",
      "tree": "59a885d6e939725a6e37e0888ef41e3852ae3223",
      "parents": [
        "a90d742e4cbbc217c402265eb8b8bb0e0f9f8da2"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 12:29:52 2006 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 18:35:08 2006 -0500"
      },
      "message": "[PATCH] noise removal: cfq-iosched.c\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a90d742e4cbbc217c402265eb8b8bb0e0f9f8da2",
      "tree": "a2423ca7cf3249a4c8b2c55021e0ae8f089b35e7",
      "parents": [
        "483f4afc421435b7cfe5e88f74eea0b73a476d75"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 12:05:37 2006 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 18:35:05 2006 -0500"
      },
      "message": "[PATCH] don\u0027t bother with refcounting for cfq_data\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6f325a13442d4e4a6c93d06d8e6deff79b6540b1",
      "tree": "e180ac54bd6d0885a7d615dec866a6793340f0a6",
      "parents": [
        "334e94de9bea353156abd6f2242d3cc4a24562b0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 14:58:37 2006 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 18:34:17 2006 -0500"
      },
      "message": "[PATCH] fix cfq_get_queue()/ioprio_set(2) races\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "334e94de9bea353156abd6f2242d3cc4a24562b0",
      "tree": "ff4a253e9e3bf487be03bf58727a7ea40a34ba87",
      "parents": [
        "e17a9489b4a686bb5e9615e1d375c67619cb99c5"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 15:05:53 2006 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 18:34:15 2006 -0500"
      },
      "message": "[PATCH] deal with rmmod/put_io_context() races\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e17a9489b4a686bb5e9615e1d375c67619cb99c5",
      "tree": "e6574d24ad8f16fefe7663c91cf19109e48f8c6c",
      "parents": [
        "25975f863b0fd42c58109e253e7a4c65d9fdaf48"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 13:21:20 2006 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 18:34:12 2006 -0500"
      },
      "message": "[PATCH] stop elv_unregister() from rogering other iosched\u0027s data, fix locking\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "25975f863b0fd42c58109e253e7a4c65d9fdaf48",
      "tree": "98738124360c12c34b8820c3cc639dc275d1f4d0",
      "parents": [
        "d9ff41879364cfca7c15abc20ae398e35de3f883"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 12 13:45:25 2006 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 18:34:09 2006 -0500"
      },
      "message": "[PATCH] stop cfq from pinning queue down\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d9ff41879364cfca7c15abc20ae398e35de3f883",
      "tree": "58b69841c145a000d06658feff5d846eea624399",
      "parents": [
        "a6a0763a60eef374d4f02f82a6ecb6a74f380fcb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 13:51:22 2006 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 18:34:07 2006 -0500"
      },
      "message": "[PATCH] make cfq_exit_queue() prune the cfq_io_context for that queue\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a6a0763a60eef374d4f02f82a6ecb6a74f380fcb",
      "tree": "ab6811f034eb2839ee07bc8e251b96a1aba313f7",
      "parents": [
        "12a057321529df2fb650ac5f34dfd7abcca667df"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 13:26:44 2006 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 18:34:04 2006 -0500"
      },
      "message": "[PATCH] fix the exclusion for ioprio_set()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "12a057321529df2fb650ac5f34dfd7abcca667df",
      "tree": "b74a85a275cf97cebcd30aa544605081c80d7fb1",
      "parents": [
        "478a82b0edeea1cc82a5f79880b3a15923a678de"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 13:38:01 2006 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 18:34:02 2006 -0500"
      },
      "message": "[PATCH] keep sync and async cfq_queue separate\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "478a82b0edeea1cc82a5f79880b3a15923a678de",
      "tree": "091c2ace634975c62c8236f209b24e4fded81ff4",
      "parents": [
        "7670876d2d194b2aecb54f397704838eee7d72ee"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 13:25:24 2006 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 18:33:59 2006 -0500"
      },
      "message": "[PATCH] switch to use of -\u003ekey to get cfq_data by cfq_io_context\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7670876d2d194b2aecb54f397704838eee7d72ee",
      "tree": "4c1b29bba1b038a407870ab62b3dd70057c949e0",
      "parents": [
        "b0a6916bcc48f46996d54b8451591a2f2b7b2f64"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 13:22:53 2006 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 18:33:56 2006 -0500"
      },
      "message": "[PATCH] stop leaking cfq_data in cfq_set_request()\n\nWe don\u0027t need to pin -\u003ekey down; -\u003ecfqq-\u003ecfqd will do that for us.\nIncidentally, that stops the leak we had - that reference was never\ndropped.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b0a6916bcc48f46996d54b8451591a2f2b7b2f64",
      "tree": "8b22d7d04a802092928a642628d2ede339a5287a",
      "parents": [
        "c981ff9f893b9ab229a809f8ad287ae43fc17a64"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 14 15:32:50 2006 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 18:33:54 2006 -0500"
      },
      "message": "[PATCH] fix cfq hash lookups\n\nIf somebody does a hash lookup for cfq_queue while ioprio of an async queue\nis elevated, they shouldn\u0027t end up stuck with lowered ioprio when we go back.\nFix is to use -\u003eorg_ioprio{,class} in hash lookups.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7b14e3b52fe5a2fb1dfa2f1f7dae4fd5f7d3fc47",
      "tree": "93a65fa0c9e5a10dea118a9594651264f08e58c6",
      "parents": [
        "a8b76b491510b7591c584838d0d7922f9ffe5c2c"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Feb 28 09:35:11 2006 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Feb 28 00:38:02 2006 -0800"
      },
      "message": "[PATCH] cfq-iosched: slice expiry fixups\n\nDuring testing of SLES10, we encountered a hang in the CFQ io scheduler.\nTurns out the deferred slice expiry logic is buggy, so remove that for\nnow.  We could be left with an idle queue that would never wake up.  So\nkill that logic, always expire immediately.  Also fix a potential timer\nrace condition.\n\nPatch looks bigger than it is, because it moves a function.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "64100099ed22f71cce656c5c2caecf5c9cf255dc",
      "tree": "f6ebf7c94ee2eeb080d25880ffca839ec39ec47e",
      "parents": [
        "80cfd548eed68cf90c5ae9cfcd6b02230cece756"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Fri Jan 06 09:46:02 2006 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Fri Jan 06 09:46:02 2006 +0100"
      },
      "message": "[BLOCK] mark some block/ variables cons\n\nthe patch below marks various read-only variables in block/* as const,\nso that gcc can optimize the use of them; eg gcc will replace the use by\nthe value directly now and will even remove the memory usage of these.\n\nSigned-off-by: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "eb97b73d75d5c9af7c78c05106de9e3fdc4455ab",
      "tree": "b5e87f732a72cb3cdff96f7116906ed6a2f9643e",
      "parents": [
        "811803c5572b296e0031e0099203de90d77c7bcf"
      ],
      "author": {
        "name": "Coywolf Qi Hunt",
        "email": "qiyong@fc-cn.com",
        "time": "Wed Nov 16 15:27:24 2005 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Fri Nov 18 21:59:31 2005 +0100"
      },
      "message": "[BLOCK] new block/ directory comment tidy\n\nSome leftover comments referring to drivers/block that are now block/.\nThey don\u0027t add any information we don\u0027t already have, so kill them.\n\nSigned-off-by: Coywolf Qi Hunt \u003cqiyong@fc-cn.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "b740d98f5614e34b4cff2e1e67826f007c8d4f30",
      "tree": "50ff24c84b2ecfc2e8e518b1d9aecf3be2bc8ec5",
      "parents": [
        "be56123568072d223263a6a70a087d1e7faabb83"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Nov 10 18:20:16 2005 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Nov 12 10:56:36 2005 +0100"
      },
      "message": "[BLOCK] cfq-iosched: fix slice_left calculation\n\nWhen cfq slice expires, remainder of slice is calculated and stored in\ncfqq-\u003eslice_left.  Current code calculates the opposite of remainder -\nhow many jiffies the cfqq has used past slice end.  This patch fixes\nthe bug.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "1b5ed5e1f1315e37380e55102f58bcae3344d2a7",
      "tree": "785dc9675e2f22b60017030063ba103740c72f16",
      "parents": [
        "407df2aa29a33fe16f6ee4bac8cdfa414783b9f1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Nov 10 08:49:19 2005 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Nov 12 10:55:51 2005 +0100"
      },
      "message": "[BLOCK] cfq-iosched: cfq forced dispatching fix\n\ncfq forced dispatching might not return all requests on the queue.\nThis bug can hang elevator switchinig and corrupt request ordering\nduring flush sequence.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "3a65dfe8c088143c7155cfd36a72f4b0ad2fc4b2",
      "tree": "db930c9f71f94d3ee674f65e38c38e95ca97227e",
      "parents": [
        "0f3278d14f0255e4cd9e07ccefc33ff12d8bb59c"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Fri Nov 04 08:43:35 2005 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Fri Nov 04 08:43:35 2005 +0100"
      },
      "message": "[BLOCK] Move all core block layer code to new block/ directory\n\ndrivers/block/ is right now a mix of core and driver parts. Lets move\nthe core parts to a new top level directory. Al will move the fs/\nrelated block parts to block/ next.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "4fc207419d95e0e16fdc78e2f48f7c0b3640ffe5",
      "tree": "7b36e5810e549038d6cf4d1efd98aaf0541bbb11",
      "parents": [
        "dd05e42fa86e37b14f8169bbad8d334e2e8d4881"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Oct 31 13:51:33 2005 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 31 07:41:28 2005 -0800"
      },
      "message": "[PATCH] Fix on-the-fly switch from cfq i/o scheduler\n\nDon\u0027t clear -\u003eelevator_data on exit, if we are switching queues we are\noverwriting the data of the new io scheduler.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "83521d3eb8dd2dfb04dd78b4733e9766f61bb47e",
      "tree": "e372f6bef5205c12024512f3b1df5a76df7f0fba",
      "parents": [
        "a8db2db1e6a8d323d87a67c5391d48fe2b97faf5"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sun Oct 30 15:01:39 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:17 2005 -0800"
      },
      "message": "[PATCH] cfq-iosched: move tasklist walk to elevator.c\n\nWe\u0027re trying to get rid of as much as possible tasklist walks, or at\nleast moving them to core code.  This patch falls into the second\ncategory.\n\nInstead of walking the tasklist in cfq-iosched move that into\nelv_unregister.  The added benefit is that with this change the as\nioscheduler might be might unloadable more easily aswell.\n\nThe new code uses read_lock instead of read_lock_irq because the\ntasklist_lock only needs irq disabling for writers.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "28d721e24c88496ff8e9c4a0959bdc1415c0658e",
      "tree": "0652161bbbcbfddf47c7ddb25d2db8ecd4cbec89",
      "parents": [
        "0ee40c6628434f0535da31deeacc28b61e80d810",
        "cb19833dccb32f97cacbfff834b53523915f13f6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 28 08:53:49 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 28 08:53:49 2005 -0700"
      },
      "message": "Merge branch \u0027generic-dispatch\u0027 of git://brick.kernel.dk/data/git/linux-2.6-block\n"
    },
    {
      "commit": "8267e268e0914ac9371d07f711fcf20cc572993c",
      "tree": "6f83cbcb95187544ed9075470c14cc12128272c8",
      "parents": [
        "27496a8c67bef4d789d8e3c8317ca35813a507ae"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 21 03:20:53 2005 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 28 08:16:47 2005 -0700"
      },
      "message": "[PATCH] gfp_t: block layer core\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "98b11471d72a374f346bec50a00d0887719b85b3",
      "tree": "875feb99eacd983fdc9107eb1c3b68f24e641aa4",
      "parents": [
        "06b86245c052963029bfd9020ca1f08ceb66f85a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Oct 20 16:46:54 2005 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Fri Oct 28 08:45:35 2005 +0200"
      },
      "message": "[PATCH] 04/05 remove last_merge handling from ioscheds\n\nRemove last_merge handling from all ioscheds.  This patch\nremoves merging capability of noop iosched.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "b4878f245ec8e168cdd1f170f823a750b7dd4af5",
      "tree": "de784c2a7e1174e4843807998f0356bf92ee78be",
      "parents": [
        "d9ebb192aa13a026edc6faff137dcb14f2c91731"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu Oct 20 16:42:29 2005 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Fri Oct 28 08:45:08 2005 +0200"
      },
      "message": "[PATCH] 02/05: update ioscheds to use generic dispatch queue\n\nThis patch updates all four ioscheds to use generic dispatch\nqueue.  There\u0027s one behavior change in as-iosched.\n\n* In as-iosched, when force dispatching\n  (ELEVATOR_INSERT_BACK), batch_data_dir is reset to REQ_SYNC\n  and changed_batch and new_batch are cleared to zero.  This\n  prevernts AS from doing incorrect update_write_batch after\n  the forced dispatched requests are finished.\n\n* In cfq-iosched, cfqd-\u003erq_in_driver currently counts the\n  number of activated (removed) requests to determine\n  whether queue-kicking is needed and cfq_max_depth has been\n  reached.  With generic dispatch queue, I think counting\n  the number of dispatched requests would be more appropriate.\n\n* cfq_max_depth can be lowered to 1 again.\n\nOriginal from Tejun Heo, modified version applied.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "35797132b311b3b7d4add48393b0a03f3566cbc1",
      "tree": "8b2dee69a4f6b881e22815e9710c479ba853f6fc",
      "parents": [
        "31139971b3dc9fbb2e8a8572fb81e6e8470f363a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sat Sep 10 14:17:10 2005 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Sep 10 10:15:12 2005 -0700"
      },
      "message": "[PATCH] cfq-iosched: reverse bad reference count fix\n\nThe reference count fix merged isn\u0027t fully bug free. It doesn\u0027t leak\nnow, but instead it crashes due to looking at freed memory. So for now,\nlets reverse the change and I\u0027ll fix it for real next week.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "38f18527592756d24a12e84c0713e8c902ba7f15",
      "tree": "e20298522f411f1184d748206df6e15b3b949117",
      "parents": [
        "49e31cbac5be2202f351626fd4fb33ad4d4819b8"
      ],
      "author": {
        "name": "Brian King",
        "email": "brking@us.ibm.com",
        "time": "Tue Sep 06 15:18:04 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 07 16:57:39 2005 -0700"
      },
      "message": "[PATCH] block: CFQ refcounting fix\n\nI ran across a memory leak related to the cfq scheduler. The cfq\ninit function increments the refcnt of the associated request_queue.\n\nThis refcount gets decremented in cfq\u0027s exit function. Since blk_cleanup_queue\nonly calls the elevator exit function when its refcnt goes to zero, the\nrequest_q never gets cleaned up. It didn\u0027t look like other io schedulers were\nincrementing this refcnt, so I removed the refcnt increment and it fixed the\nmemory leak for me.\n\nTo reproduce the problem, simply use cfq and use the scsi_host scan sysfs\nattribute to scan \"- - -\" repeatedly on a scsi host and watch the memory\nvanish.\n\nSigned-off-by: Brian King \u003cbrking@us.ibm.com\u003e\nAcked-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9c2c38a122cc23d6a09b8004d60a33913683eedf",
      "tree": "0596d9e3315a64d01f2a6f64d4f352f3cd0de08f",
      "parents": [
        "41290c14640bc9312bf63202d14ebef075b6171a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed Aug 24 14:57:54 2005 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Aug 24 10:22:44 2005 -0700"
      },
      "message": "[PATCH] cfq-iosched.c: minor fixes\n\nOne critical fix and two minor fixes for 2.6.13-rc7:\n\n- Max depth must currently be 2 to allow barriers to function on SCSI\n- Prefer sync request over async in choosing the next request\n- Never allow async request to preempt or disturb the \"anticipation\" for\n  a single cfq process context. This is as-designed, the code right now\n  is buggy in that area.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d7ed538a02c219119adb20f1dccbf0f8015e53f3",
      "tree": "d716ae7dc2e986b36c8180333839312dc0eab7e2",
      "parents": [
        "f7c80c9f77b0e8a59a19506fd3caf323408a5166"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Aug 02 20:08:02 2005 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Aug 02 11:19:18 2005 -0700"
      },
      "message": "[PATCH] cfq-iosched: fix problem with barriers and max_depth \u003d\u003d 1\n\nCFQ will currently stall when using write barriers and the default\nmax_depth setting of 1, since we artificially need a depth of 2 when\npre-pending the first flush. So never deny the barrier request going to\nthe device.\n\nThis is a regression since 2.6.12, it was found in SUSE testing.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "99f95e5286df2f69edab8a04c7080d986ee4233b",
      "tree": "91963ac1a2e0f55ec5a619cf0390bff1453a5de4",
      "parents": [
        "6e5a32754c67f0d156c2f196d604b2e9129a1fd5"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Mon Jun 27 20:14:05 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Mon Jun 27 20:31:02 2005 -0700"
      },
      "message": "[PATCH] cfq build fix\n\ndrivers/block/cfq-iosched.c: In function \u0027cfq_put_queue\u0027:\ndrivers/block/cfq-iosched.c:303: sorry, unimplemented: inlining failed in call to \u0027cfq_pending_requests\u0027: function body not available\ndrivers/block/cfq-iosched.c:1080: sorry, unimplemented: called from here\ndrivers/block/cfq-iosched.c: In function \u0027__cfq_may_queue\u0027:\ndrivers/block/cfq-iosched.c:1955: warning: the address of \u0027cfq_cfqq_must_alloc_slice\u0027, will always evaluate as \u0027true\u0027\nmake[1]: *** [drivers/block/cfq-iosched.o] Error 1\nmake: *** [drivers/block/cfq-iosched.o] Error 2\n\nCc: Jeff Garzik \u003cjgarzik@pobox.com\u003e\nCc: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "96c51ce94e8415d2dfb08358bbd50e1589111f33",
      "tree": "b1b049dce9f3013334ddca6019e5835c4c994ae6",
      "parents": [
        "52a5e15f665385ac99607d6b9e0c3dbdf17c5cfa"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Jun 27 14:49:39 2005 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Mon Jun 27 14:33:30 2005 -0700"
      },
      "message": "[PATCH] CFQ io scheduler: scheduler switch oops\n\nIf cfq is managing a queue and a new scheduler is later selected, it is\npossible for the cfqd unplug_work work to be queued after the kblockd\nwork struct has been flushed.  The problem is the ordering of\ncfq_shutdown_timer_wq() and blk_put_queue() in cfq_put_cfqd().  The\nlatter may rearm the work, leaving cfq_kick_queue() with dead data.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3b18152c327707ae6a2eeba4cfb66457143753bc",
      "tree": "5cdf299af4119762c036cc98a09e23458e0b37fa",
      "parents": [
        "3d25f3566bb606720a67caef77b16190df10dd98"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Jun 27 10:56:24 2005 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Mon Jun 27 14:33:30 2005 -0700"
      },
      "message": "[PATCH] CFQ io scheduler updates\n\n- Adjust slice values\n\n- Instead of one async queue, one is defined per priority level. This\n  prevents kernel threads (such as reiserfs/x and others) that run at\n  higher io priority from conflicting with others. Previously, it was a\n  coin toss what io prio the async queue got, it was defined by who\n  first set up the queue.\n\n- Let a time slice only begin, when the previous slice is completely\n  done. Previously we could be somewhat unfair to a new sync slice, if\n  the previous slice was async and had several ios queued. This might\n  need a little tweaking if throughput suffers a little due to this,\n  allowing perhaps an overlap of a single request or so.\n\n- Optimize the calling of kblockd_schedule_work() by doing it only when\n  it is strictly necessary (no requests in driver and work left to do).\n\n- Correct sync vs async logic. A \u0027normal\u0027 process can be purely async as\n  well, and a flusher can be purely sync as well. Sync or async is now a\n  property of the class defined and requests pending. Previously writers\n  could be considered sync, when they were really async.\n\n- Get rid of the bit fields in cfqq and crq, use flags instead.\n\n- Various other cleanups and fixes\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3d25f3566bb606720a67caef77b16190df10dd98",
      "tree": "b80225d86859487b6a8eb62126d9de31c7cbf26e",
      "parents": [
        "22e2c507c301c3dbbcf91b4948b88f78842ee6c9"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Jun 27 10:55:49 2005 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Mon Jun 27 14:33:29 2005 -0700"
      },
      "message": "[PATCH] Fix cfq_find_next_crq()\n\nIn cfq_find_next_crq(), cfq tries to find the next request by choosing\none of two requests before and after the current one.  Currently, when\nchoosing the next request, if there\u0027s no next request, the next\ncandidate is NULL, resulting in selection of the previous request.  This\nresults in weird scheduling.  Once we reach the end, we always seek\nbackward.\n\nThe correct behavior is using the first request as the next candidate.\ncfq_choose_req() already has logics for handling wrapped requests.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "22e2c507c301c3dbbcf91b4948b88f78842ee6c9",
      "tree": "9a97c91d1362e69703aa286021daffb8a5456f4c",
      "parents": [
        "020f46a39eb7b99a575b9f4d105fce2b142acdf1"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Jun 27 10:55:12 2005 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Mon Jun 27 14:33:29 2005 -0700"
      },
      "message": "[PATCH] Update cfq io scheduler to time sliced design\n\nThis updates the CFQ io scheduler to the new time sliced design (cfq\nv3).  It provides full process fairness, while giving excellent\naggregate system throughput even for many competing processes.  It\nsupports io priorities, either inherited from the cpu nice value or set\ndirectly with the ioprio_get/set syscalls.  The latter closely mimic\nset/getpriority.\n\nThis import is based on my latest from -mm.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6c1852a08e444a2e66367352a99c0e93c8bf3e97",
      "tree": "ffa075f75b7eb0e5b1399aeb8e34e6cf9a631a10",
      "parents": [
        "fc7e4828995d8c9e4c9597f8a19179e4ab53f73e"
      ],
      "author": {
        "name": "Dmitry Torokhov",
        "email": "dtor_core@ameritech.net",
        "time": "Fri Apr 29 01:26:06 2005 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 20 15:15:03 2005 -0700"
      },
      "message": "[PATCH] sysfs: (driver/block) if show/store is missing return -EIO\n\nsysfs: fix drivers/block so if an attribute doesn\u0027t implement\n       show or store method read/write will return -EIO\n       instead of 0 or -EINVAL.\n\nSigned-off-by: Dmitry Torokhov \u003cdtor@mail.ru\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "db3b5848ea6440968fcdd29b80514d0de044bb7c",
      "tree": "75d3356743362570b7e6f94696f37fd4b1c9ce2f",
      "parents": [
        "c374f127e4ff17a318b9ae95a5bf65f370c2d0b1"
      ],
      "author": {
        "name": "Kiyoshi Ueda ",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Fri Jun 17 16:15:10 2005 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Fri Jun 17 16:15:10 2005 +0200"
      },
      "message": "When cfq I/O scheduler is selected, get_request() in __make_request() calls\n__cfq_get_queue().  __cfq_get_queue() finds an existing queue (struct\ncfq_queue) of the current process for the device and returns it.  If it\u0027s not\nfound, __cfq_get_queue() creates and returns a new one if __cfq_get_queue() is\ncalled with __GFP_WAIT flag, or __cfq_get_queue() returns NULL (this means that\nget_request() fails) if no __GFP_WAIT flag.\n\nOn the other hand, in __make_request(), get_request() is called without\n__GFP_WAIT flag at the first time.  Thus, the get_request() fails when there is\nno existing queue, typically when it\u0027s called for the first I/O request of the\nprocess to the device.\n\nThough it will be followed by get_request_wait() for general case,\n__make_request() will just end the I/O with an error (EWOULDBLOCK) when the\nrequest was for read-ahead.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\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\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"
    }
  ]
}
