)]}'
{
  "log": [
    {
      "commit": "a0548871ed267ae12eb1c860c5aaebd9e466b34e",
      "tree": "457aff209cd9a2a1c3c2678b639268dfa482f3d1",
      "parents": [
        "76ad4d11105ccd40a536db1057083f28326019fd"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed May 03 10:58:22 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Thu May 04 06:55:12 2006 +0200"
      },
      "message": "[PATCH] splice: redo page lookup if add_to_page_cache() returns -EEXIST\n\nThis can happen quite easily, if several processes are trying to splice\nthe same file at the same time. It\u0027s not a failure, it just means someone\nraced with us in allocating this file page. So just dump the allocated\npage and relookup the original.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "76ad4d11105ccd40a536db1057083f28326019fd",
      "tree": "dea71a387ca8821c47a00da5496d4b6edbab9d5e",
      "parents": [
        "1432873af7ae29d4bb3c56114c05b539d078ca62"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed May 03 10:41:33 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Thu May 04 06:55:12 2006 +0200"
      },
      "message": "[PATCH] splice: rename remaining info variables to pipe\n\nSame thing was done in fs/pipe.c and most of fs/splice.c, but we had\na few missing still.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "1432873af7ae29d4bb3c56114c05b539d078ca62",
      "tree": "cf4f72608d2e10f7ff786b9d60067963f1ab4ca9",
      "parents": [
        "bfc4ee39fdbb2deb8864785d5e5bc5cdd3b31a69"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed May 03 10:35:26 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Thu May 04 06:55:12 2006 +0200"
      },
      "message": "[PATCH] splice: LRU fixups\n\nNick says that the current construct isn\u0027t safe. This goes back to the\noriginal, but sets PIPE_BUF_FLAG_LRU on user pages as well as they all\nseem to be on the LRU in the first place.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "bfc4ee39fdbb2deb8864785d5e5bc5cdd3b31a69",
      "tree": "6f5f678cd07a4c65c1e7ea78f911fdd0932b0c7e",
      "parents": [
        "5dea5176e5c32ef9f0d1a41d28427b3bf6881b3a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed May 03 10:35:10 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Thu May 04 06:55:12 2006 +0200"
      },
      "message": "[PATCH] splice: fix unlocking of page on error -\u003eprepare_write()\n\nLooking at generic_file_buffered_write(), we need to unlock_page() if\nprepare write fails and it isn\u0027t due to racing with truncate().\n\nAlso trim the size if -\u003eprepare_write() fails, if we have to.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "330ab71619bacc4d4494227a6cfc9b7f5500403d",
      "tree": "43a9045011116f1afa506b80de1ede9872f45935",
      "parents": [
        "a893b99be71f1d669b74f840e3a683dd077d007b"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue May 02 15:29:57 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue May 02 15:29:57 2006 +0200"
      },
      "message": "[PATCH] vmsplice: restrict stealing a little more\n\nApply the same rules as the anon pipe pages, only allow stealing\nif no one else is using the page.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "a893b99be71f1d669b74f840e3a683dd077d007b",
      "tree": "79591f70b57ef4504dc5c9584b7d8fcaa04faede",
      "parents": [
        "7591489a8fbee83f19bacc75756989a6a4d0389c"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue May 02 15:03:27 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue May 02 15:03:27 2006 +0200"
      },
      "message": "[PATCH] splice: fix page LRU accounting\n\nCurrently we rely on the PIPE_BUF_FLAG_LRU flag being set correctly\nto know whether we need to fiddle with page LRU state after stealing it,\nhowever for some origins we just don\u0027t know if the page is on the LRU\nlist or not.\n\nSo remove PIPE_BUF_FLAG_LRU and do this check/add manually in pipe_to_file()\ninstead.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "7591489a8fbee83f19bacc75756989a6a4d0389c",
      "tree": "ec185e3788e3c3f123ff3ee00b18441467eb4486",
      "parents": [
        "532f57da408c5a5710075d17047e2d97bdfd22f3"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue May 02 12:57:18 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue May 02 12:57:18 2006 +0200"
      },
      "message": "[PATCH] vmsplice: fix badly placed end paranthesis\n\nWe need to use the minium of {len, PAGE_SIZE-off}, not {len, PAGE_SIZE}-off.\nThe latter doesn\u0027t make any sense, and could cause us to attempt negative\nlength transfers...\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "7afa6fd037e51e95d322990cb127bb2b1217251a",
      "tree": "dbe4052947bff32a6ada378576b8d7669c581cf4",
      "parents": [
        "f6762b7ad8edd6abc802542ce845d3bc8adcb92f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon May 01 20:02:33 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon May 01 20:02:33 2006 +0200"
      },
      "message": "[PATCH] vmsplice: allow user to pass in gift pages\n\nIf SPLICE_F_GIFT is set, the user is basically giving this pages away to\nthe kernel. That means we can steal them for eg page cache uses instead\nof copying it.\n\nThe data must be properly page aligned and also a multiple of the page size\nin length.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "f6762b7ad8edd6abc802542ce845d3bc8adcb92f",
      "tree": "c941aaf7295f8efecaf42aa86112649b9b6f23a9",
      "parents": [
        "e27dedd84c119e2f7af54fcde3293be5ad812103"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon May 01 20:02:05 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon May 01 20:02:05 2006 +0200"
      },
      "message": "[PATCH] pipe: enable atomic copying of pipe data to/from user space\n\nThe pipe -\u003emap() method uses kmap() to virtually map the pages, which\nis both slow and has known scalability issues on SMP. This patch enables\natomic copying of pipe pages, by pre-faulting data and using kmap_atomic()\ninstead.\n\nlmbench bw_pipe and lat_pipe measurements agree this is a Good Thing. Here\nare results from that on a UP machine with highmem (1.5GiB of RAM), running\nfirst a UP kernel, SMP kernel, and SMP kernel patched.\n\nVanilla-UP:\nPipe bandwidth: 1622.28 MB/sec\nPipe bandwidth: 1610.59 MB/sec\nPipe bandwidth: 1608.30 MB/sec\nPipe latency: 7.3275 microseconds\nPipe latency: 7.2995 microseconds\nPipe latency: 7.3097 microseconds\n\nVanilla-SMP:\nPipe bandwidth: 1382.19 MB/sec\nPipe bandwidth: 1317.27 MB/sec\nPipe bandwidth: 1355.61 MB/sec\nPipe latency: 9.6402 microseconds\nPipe latency: 9.6696 microseconds\nPipe latency: 9.6153 microseconds\n\nPatched-SMP:\nPipe bandwidth: 1578.70 MB/sec\nPipe bandwidth: 1579.95 MB/sec\nPipe bandwidth: 1578.63 MB/sec\nPipe latency: 9.1654 microseconds\nPipe latency: 9.2266 microseconds\nPipe latency: 9.1527 microseconds\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "e27dedd84c119e2f7af54fcde3293be5ad812103",
      "tree": "b388be80b04dd3f04c07ec12955e62f8ccb58bbc",
      "parents": [
        "7f9c51f0d9783c78db5c2aa16806d0c256ac667f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon May 01 19:59:54 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon May 01 19:59:54 2006 +0200"
      },
      "message": "[PATCH] splice: call handle_ra_miss() on failure to lookup page\n\nNotify the readahead logic of the missing page. Suggested by\nOleg Nesterov.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "f84d751994441292593523c7069ed147176f6cab",
      "tree": "a1a0c4836289df86bb62e7eae5c80c66fca1643a",
      "parents": [
        "0568b409c74f7a125d92a09a3f386785700ef688"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon May 01 19:59:03 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon May 01 19:59:03 2006 +0200"
      },
      "message": "[PATCH] pipe: introduce -\u003epin() buffer operation\n\nThe -\u003emap() function is really expensive on highmem machines right now,\nsince it has to use the slower kmap() instead of kmap_atomic(). Splice\nrarely needs to access the virtual address of a page, so it\u0027s a waste\nof time doing it.\n\nIntroduce -\u003epin() to take over the responsibility of making sure the\npage data is valid. -\u003emap() is then reduced to just kmap(). That way we\ncan also share a most of the pipe buffer ops between pipe.c and splice.c\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "0568b409c74f7a125d92a09a3f386785700ef688",
      "tree": "79125b2f4755e98949f0d941a0092e5d3367bbff",
      "parents": [
        "46e678c96bbd775abd05d3ddbe2fd334794f9157"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon May 01 19:50:48 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon May 01 19:50:48 2006 +0200"
      },
      "message": "[PATCH] splice: fix bugs in pipe_to_file()\n\nFound by Oleg Nesterov \u003coleg@tv-sign.ru\u003e, fixed by me.\n\n- Only allow full pages to go to the page cache.\n- Check page !\u003d buf-\u003epage instead of using PIPE_BUF_FLAG_STOLEN.\n- Remember to clear \u0027stolen\u0027 if add_to_page_cache() fails.\n\nAnd as a cleanup on that:\n\n- Make the bottom fall-through logic a little less convoluted. Also make\n  the steal path hold an extra reference to the page, so we don\u0027t have\n  to differentiate between stolen and non-stolen at the end.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "46e678c96bbd775abd05d3ddbe2fd334794f9157",
      "tree": "f82b77d9f2fd5d4eb5e66bc2bb8ff5df63db3c7f",
      "parents": [
        "e0a515bc6a2188f02916e976f419a8640312e32a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sun Apr 30 16:36:32 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sun Apr 30 16:36:32 2006 +0200"
      },
      "message": "[PATCH] splice: fix bugs with stealing regular pipe pages\n\n- Check that page has suitable count for stealing in the regular pipes.\n- pipe_to_file() assumes that the page is locked on succesful steal, so\n  do that in the pipe steal hook\n- Missing unlock_page() in add_to_page_cache() failure.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "eb20796bf6fdb95ccf51440ba2a827149bdc037f",
      "tree": "9443923cbd83f03e797891d12e18bb0e2d51927b",
      "parents": [
        "ebf43500ef148a380bd132743c3fc530111ac620"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu Apr 27 11:05:22 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu Apr 27 11:05:22 2006 +0200"
      },
      "message": "[PATCH] splice: make the read-side do batched page lookups\n\nUse the new find_get_pages_contig() to potentially look up the entire\nsplice range in one single call. This speeds up generic_file_splice_read()\nquite a bit.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "eb645a24de82496434cc81171d7f350edb327399",
      "tree": "1cb104eb1123d42b001290c0480a9ad55af07051",
      "parents": [
        "2be4d50295e2b6f62c07b614e1b103e280dddb84"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu Apr 27 08:44:27 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Thu Apr 27 08:59:48 2006 +0200"
      },
      "message": "[PATCH] splice: switch to using page_cache_readahead()\n\nAvoids doing useless work, when the file is fully cached.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "00522fb41a2a9bf0f98a007c0e2b516a3873148c",
      "tree": "18bcbfb598f0ad0a4745aaee25dab6dccc6449a1",
      "parents": [
        "912d35f86781e64d73be1ef358f703c08905ac37"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed Apr 26 14:39:29 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed Apr 26 14:39:29 2006 +0200"
      },
      "message": "[PATCH] splice: rearrange moving to/from pipe helpers\n\nWe need these for people writing their own -\u003esplice_read/write hooks.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "912d35f86781e64d73be1ef358f703c08905ac37",
      "tree": "5863ad70f5cdccba0c1cd28f83d173deaf71fb83",
      "parents": [
        "016b661e2f717168e600f3c85f29e1a49f88e004"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed Apr 26 10:59:21 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed Apr 26 10:59:21 2006 +0200"
      },
      "message": "[PATCH] Add support for the sys_vmsplice syscall\n\nsys_splice() moves data to/from pipes with a file input/output. sys_vmsplice()\nmoves data to a pipe, with the input being a user address range instead.\n\nThis uses an approach suggested by Linus, where we can hold partial ranges\ninside the pages[] map. Hopefully this will be useful for network\nreceive support as well.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "016b661e2f717168e600f3c85f29e1a49f88e004",
      "tree": "3ddf0f8a49c752cdd1187b5633c04400fcf42619",
      "parents": [
        "ba5f5d90c45a30e4e9a1bd136acf1b3973c905c8"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 25 15:42:00 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Wed Apr 26 10:33:34 2006 +0200"
      },
      "message": "[PATCH] splice: fix offset problems\n\nMake the move_from_pipe() actors return number of bytes processed, then\nmove_from_pipe() can decide more cleverly when to move on to the next\nbuffer.\n\nThis fixes problems with pipe offset and differing file offset.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "ba5f5d90c45a30e4e9a1bd136acf1b3973c905c8",
      "tree": "5f4d3b830e401af51fd91afec3242067d0d88035",
      "parents": [
        "4d5c34ec7b007cfb0771a36996b009f194acbb2f"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Tue Apr 25 15:33:34 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Wed Apr 26 10:33:34 2006 +0200"
      },
      "message": "[PATCH] splice: fix min() warning\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "82aa5d6183667aa2a5f3c61e390934b0273d2ad7",
      "tree": "81fa617b8a970173cc7114acf1acc0e676caa1c5",
      "parents": [
        "a0aa7f68afeeb92f6274b395177c20e617c8ed2d"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu Apr 20 13:05:48 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu Apr 20 13:05:48 2006 +0200"
      },
      "message": "[PATCH] splice: fix smaller sized splice reads\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "9e0267c26e237f84f608a68e579bf4eb89dad819",
      "tree": "9ea854e8e97113afbf33dfb787171950cfb53df6",
      "parents": [
        "a4514ebd8e12c63c09ab02be518db545bd1d24af"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed Apr 19 15:57:31 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed Apr 19 15:57:31 2006 +0200"
      },
      "message": "[PATCH] splice: fixup writeout path after -\u003emap changes\n\nSince -\u003emap() no longer locks the page, we need to adjust the handling\nof those pages (and stealing) a little. This now passes full regressions\nagain.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "a4514ebd8e12c63c09ab02be518db545bd1d24af",
      "tree": "ec7bcaed8d4594bd9d763659686e9318158da3aa",
      "parents": [
        "2a27250e6cf47ca1ea3bea0a55e4b7889c097627"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed Apr 19 15:57:05 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed Apr 19 15:57:05 2006 +0200"
      },
      "message": "[PATCH] splice: offset fixes\n\n- We need to adjust *ppos for writes as well.\n- Copy back modified offset value if one was passed in, similar to\n  what sendfile does.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "2a27250e6cf47ca1ea3bea0a55e4b7889c097627",
      "tree": "3dbd4747df21e72420ab6fb91fc174173903c803",
      "parents": [
        "c4f895cbe1e95aab633207fb19c650b7c984c01a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed Apr 19 15:56:40 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed Apr 19 15:56:40 2006 +0200"
      },
      "message": "[PATCH] tee: link_pipe() must be careful when dropping one of the pipe locks\n\nWe need to ensure that we only drop a lock that is ordered last, to avoid\nABBA deadlocks with competing processes.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "c4f895cbe1e95aab633207fb19c650b7c984c01a",
      "tree": "3f8fa236d737da19bd9d7c38ab01079caf7d5f56",
      "parents": [
        "91ad66ef4469cb631ec0ccd131b07f16770773f7"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed Apr 19 15:56:12 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed Apr 19 15:56:12 2006 +0200"
      },
      "message": "[PATCH] splice: cleanup the SPLICE_F_NONBLOCK handling\n\n- generic_file_splice_read() more readable and correct\n- Don\u0027t bail on page allocation with NONBLOCK set, just don\u0027t allow\n  direct blocking on IO (eg lock_page).\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "91ad66ef4469cb631ec0ccd131b07f16770773f7",
      "tree": "89db609ce4d9673ad1f586abe87c76d6f38ab0d0",
      "parents": [
        "8bbde0e6d52265158ee9625f383500c1a7d09ba9"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed Apr 19 15:55:10 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed Apr 19 15:55:10 2006 +0200"
      },
      "message": "[PATCH] splice: close i_size truncate races on read\n\nWe need to check i_size after doing a blocking readpage.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "70524490ee2ea1bbf6cee6c106597b3ac25a3fc2",
      "tree": "c61dd500035bc3e0dea364777de1b7a58b41a75c",
      "parents": [
        "cbb7e577e732f576b9f399bc2600bdc0626c68dc"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 11 15:51:17 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 11 15:51:17 2006 +0200"
      },
      "message": "[PATCH] splice: add support for sys_tee()\n\nBasically an in-kernel implementation of tee, which uses splice and the\npipe buffers as an intelligent way to pass data around by reference.\n\nWhere the user space tee consumes the input and produces a stdout and\nfile output, this syscall merely duplicates the data inside a pipe to\nanother pipe. No data is copied, the output just grabs a reference to the\ninput pipe data.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "cbb7e577e732f576b9f399bc2600bdc0626c68dc",
      "tree": "55e3d65c9d9fb5b0ee25d0ccabf951de6da2db7b",
      "parents": [
        "2514395ef88b46e895726a8d40966cb83de7940c"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 11 14:57:50 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Tue Apr 11 15:47:07 2006 +0200"
      },
      "message": "[PATCH] splice: pass offset around for -\u003esplice_read() and -\u003esplice_write()\n\nWe need not use -\u003ef_pos as the offset for the file input/output. If the\nuser passed an offset pointer in through sys_splice(), just use that and\nleave -\u003ef_pos alone.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "73d62d83ec3627782ba6f55defc76f3ffbef46ee",
      "tree": "732cf9ded2fc5ce37175df809394d384cd0ce693",
      "parents": [
        "c2058e0611c2fb4a00e63db61ef3a638cf760a98"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 11 13:57:21 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 11 13:57:21 2006 +0200"
      },
      "message": "[PATCH] splice: comment styles\n\n - capitalize consistently\n - end sentences in one way or another\n - update comment text to match the implementation\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "c2058e0611c2fb4a00e63db61ef3a638cf760a98",
      "tree": "7f157bdb85a2a0c37c732487d5b2d18b8014fcbf",
      "parents": [
        "49570e9b29a3d78950b5eba6b73bdcca955f0877"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 11 13:56:34 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 11 13:56:34 2006 +0200"
      },
      "message": "[PATCH] splice: add Ingo as addition copyright holder\n\nThe comment is also somewhat out of date, correct that as well.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "49570e9b29a3d78950b5eba6b73bdcca955f0877",
      "tree": "65ffdeb8062824b3370abbca5572782f440501e8",
      "parents": [
        "6f767b0425f5902e4817648632230b512e81c963"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 11 13:56:09 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 11 13:56:09 2006 +0200"
      },
      "message": "[PATCH] splice: unlikely() optimizations\n\nAlso corrects a few comments. Patch mainly from Ingo, changes by me.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "6f767b0425f5902e4817648632230b512e81c963",
      "tree": "2a8177c31617b4994a9ae5173b10653fb547e218",
      "parents": [
        "923f4f23940d2361e8d5c4245982163a8e9d1c91"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 11 13:53:56 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 11 13:53:56 2006 +0200"
      },
      "message": "[PATCH] splice: speedups and optimizations\n\n- Kill the local variables that cache -\u003enrbufs, they just take up space.\n\n- Only set do_wakeup for a real pipe. This is a big win for direct splicing.\n\n- Kill i_mutex lock around -\u003ef_pos update, regular io paths don\u0027t do this\n  either.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "7480a90435673b4c717b6caf1350ec577d5f1adf",
      "tree": "16470986faf89380450da76a928c7856e5a850a1",
      "parents": [
        "b92ce55893745e011edae70830b8bc863be881f9"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 11 13:52:47 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 11 13:52:47 2006 +0200"
      },
      "message": "[PATCH] splice: speedup __generic_file_splice_read\n\nUsing find_get_page() is a lot faster than find_or_create_page(). This\ngets splice a lot closer to sendfile() for fd -\u003e socket transfers.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "b92ce55893745e011edae70830b8bc863be881f9",
      "tree": "e2afd62d2e63d74157905140f5907d07bdfe31b9",
      "parents": [
        "529565dcb1581c9a1e3f6df1c1763ca3e0f0d512"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 11 13:52:07 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 11 13:52:07 2006 +0200"
      },
      "message": "[PATCH] splice: add direct fd \u003c-\u003e fd splicing support\n\nIt\u0027s more efficient for sendfile() emulation. Basically we cache an\ninternal private pipe and just use that as the intermediate area for\npages. Direct splicing is not available from sys_splice(), it is only\nmeant to be used for sendfile() emulation.\n\nAdditional patch from Ingo Molnar to avoid the PIPE_BUFFERS loop at\nexit for the normal fast path.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "529565dcb1581c9a1e3f6df1c1763ca3e0f0d512",
      "tree": "e8069cc17f887ad86f8dee0d96640a2f19bf4112",
      "parents": [
        "3a326a2ce88e71d00ac0d133e314a3342a7709f8"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Apr 10 15:18:58 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Apr 10 15:18:58 2006 +0200"
      },
      "message": "[PATCH] splice: add optional input and output offsets\n\nadd optional input and output offsets to sys_splice(), for seekable file\ndescriptors:\n\n asmlinkage long sys_splice(int fd_in, loff_t __user *off_in,\n                            int fd_out, loff_t __user *off_out,\n                            size_t len, unsigned int flags);\n\nsemantics are straightforward: f_pos will be updated with the offset\nprovided by user-space, before the splice transfer is about to begin.\nProviding a NULL offset pointer means the existing f_pos will be used\n(and updated in situ).  Providing an offset for a pipe results in\n-ESPIPE. Providing an invalid offset pointer results in -EFAULT.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "3a326a2ce88e71d00ac0d133e314a3342a7709f8",
      "tree": "3a3cf55be19311c04d195e37baec9f49c4015b18",
      "parents": [
        "0b749ce3802428007a37870eb51ba3c0bdf90857"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Apr 10 15:18:35 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Apr 10 15:18:35 2006 +0200"
      },
      "message": "[PATCH] introduce a \"kernel-internal pipe object\" abstraction\n\nseparate out the \u0027internal pipe object\u0027 abstraction, and make it\nusable to splice. This cleans up and fixes several aspects of the\ninternal splice APIs and the pipe code:\n\n - pipes: the allocation and freeing of pipe_inode_info is now more symmetric\n   and more streamlined with existing kernel practices.\n\n - splice: small micro-optimization: less pointer dereferencing in splice\n   methods\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n\nUpdate XFS for the -\u003esplice_read/-\u003esplice_write changes.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "0b749ce3802428007a37870eb51ba3c0bdf90857",
      "tree": "8e3a2278fab3dae95310570ea54d0dfee1af9fe5",
      "parents": [
        "49d0b21be21efc07526d637e0ae935019667e532"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Apr 10 09:05:04 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Apr 10 09:05:04 2006 +0200"
      },
      "message": "[PATCH] splice: be smarter about calling do_page_cache_readahead()\n\nWe don\u0027t want to call into the read-ahead logic unless we are at the\nstart of a page, _or_ we have multiple pages to read.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "49d0b21be21efc07526d637e0ae935019667e532",
      "tree": "04b200920e3e628a1a38939c580b5d63ff56bf0a",
      "parents": [
        "16c523ddabcce5d3d817f4a2491d628f84dfaaa1"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Apr 10 09:04:41 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Apr 10 09:04:41 2006 +0200"
      },
      "message": "[PATCH] splice: optimize the splice buffer mapping\n\nWe don\u0027t really need to lock down the pages, just make sure they\nare uptodate.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "16c523ddabcce5d3d817f4a2491d628f84dfaaa1",
      "tree": "61b26e8d6b774a956fb069efdc62eb275b849c97",
      "parents": [
        "c0bd1f650bd06a43435808d44f1e9520ea806206"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Apr 10 09:03:58 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Apr 10 09:03:58 2006 +0200"
      },
      "message": "[PATCH] splice: cleanup __generic_file_splice_read()\n\nThe whole shadow/pages logic got overly complex, and this simpler\napproach is actually faster in testing.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "c0bd1f650bd06a43435808d44f1e9520ea806206",
      "tree": "e2f4480a1bc08d9044f66c44174273abea7e0c58",
      "parents": [
        "9aefe431f5a000884db7ae74ac208de814fe5913"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Apr 10 09:03:32 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Apr 10 09:03:32 2006 +0200"
      },
      "message": "[PATCH] splice: only call wake_up_interruptible() when we really have to\n\n__wake_up_common() is pretty heavy in the kernel profiles, this brings\nit down to a more acceptable level.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "9aefe431f5a000884db7ae74ac208de814fe5913",
      "tree": "2a5a5469f0a56529c78ca067d798fff0363207a3",
      "parents": [
        "c7f21e4f5a3d4e378e4d453b2be209dcfd1bb964"
      ],
      "author": {
        "name": "Dave Jones",
        "email": "davej@redhat.com",
        "time": "Mon Apr 10 09:02:40 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Apr 10 09:02:40 2006 +0200"
      },
      "message": "[PATCH] splice: potential !page dereference\n\nWe can get to out: with a NULL page, which we probably\ndon\u0027t want to be calling page_cache_release() on.\n\nSigned-off-by: Dave Jones \u003cdavej@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "c7f21e4f5a3d4e378e4d453b2be209dcfd1bb964",
      "tree": "2a8ee86b13c328a3df94ea3176e1691f411bdafb",
      "parents": [
        "67644726317a8274be4a3d0ef85b9ccebaa90304"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Apr 10 09:01:01 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Apr 10 09:01:01 2006 +0200"
      },
      "message": "[PATCH] splice: mark the io page as accessed\n\nWe should do that, since we do the LRU manipulation ourselves now. Suggested\nby Nick Piggin.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "3e7ee3e7b36fa4e2d88d8fb0a2577be95fc4636d",
      "tree": "46e972e78122f8a719dafc87572bffb25716e745",
      "parents": [
        "ad8d6f0a783ffa2ff9b0cf09910b889715772201"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sun Apr 02 23:11:04 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sun Apr 02 23:11:04 2006 +0200"
      },
      "message": "[PATCH] splice: fix page stealing LRU handling.\n\nOriginally from Nick Piggin, just adapted to the newer branch.\n\nYou can\u0027t check PageLRU without holding zone-\u003elru_lock.  The page\nrelease code can get away with it only because the page refcount is 0 at\nthat point. Also, you can\u0027t reliably remove pages from the LRU unless\nthe refcount is 0. Ever.\n\nSigned-off-by: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "ad8d6f0a783ffa2ff9b0cf09910b889715772201",
      "tree": "0af4adf5026a9f8d7d3bf4abf9a3d0563a4b03db",
      "parents": [
        "059a8f3734a66cb2c41731083b0cbf836721485b"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sun Apr 02 23:10:32 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sun Apr 02 23:10:32 2006 +0200"
      },
      "message": "[PATCH] splice: page stealing needs to wait_on_page_writeback()\n\nThanks to Andrew for the good explanation of why this is so. akpm writes:\n\nIf a page is under writeback and we remove it from pagecache, it\u0027s still\ngoing to get written to disk.  But the VFS no longer knows about that page,\nnor that this page is about to modify disk blocks.\n\nSo there might be scenarios in which those\nblocks-which-are-about-to-be-written-to get reused for something else.\nWhen writeback completes, it\u0027ll scribble on those blocks.\n\nThis won\u0027t happen in ext2/ext3-style filesystems in normal mode because the\npage has buffers and try_to_release_page() will fail.\n\nBut ext2 in nobh mode doesn\u0027t attach buffers at all - it just sticks the\npage in a BIO, finds some new blocks, points the BIO at those blocks and\nlets it rip.\n\nWhile that write IO\u0027s in flight, someone could truncate the file.  Truncate\nwon\u0027t block on the writeout because the page isn\u0027t in pagecache any more.\nSo truncate will the free the blocks from the file under the page\u0027s feet.\nThen something else can reallocate those blocks.  Then write data to them.\n\nNow, the original write completes, corrupting the filesystem.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "059a8f3734a66cb2c41731083b0cbf836721485b",
      "tree": "6f6b61d3350b57fb062f26e828dbd218f62caad7",
      "parents": [
        "b2b39fa478db6db89b7ccafb0649973845b0eb75"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sun Apr 02 23:06:05 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sun Apr 02 23:06:05 2006 +0200"
      },
      "message": "[PATCH] splice: export generic_splice_sendpage\n\nForgot that one, thanks Jeff. Also move the other EXPORT_SYMBOL\nto right below the functions.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "b2b39fa478db6db89b7ccafb0649973845b0eb75",
      "tree": "784d85b94fb634e3b33dfd3f1153c98580cfac15",
      "parents": [
        "83f9135bddffded9f1716519b6c147bcf046c87e"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sun Apr 02 23:05:41 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sun Apr 02 23:05:41 2006 +0200"
      },
      "message": "[PATCH] splice: add a SPLICE_F_MORE flag\n\nThis lets userspace indicate whether more data will be coming in a\nsubsequent splice call.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "83f9135bddffded9f1716519b6c147bcf046c87e",
      "tree": "24ed3b7e21cda62ff2a1947d04a1333066a5bc65",
      "parents": [
        "4f6f0bd2ffa4e31c3524f5e65c84a29b6ab73307"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sun Apr 02 23:05:09 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sun Apr 02 23:05:09 2006 +0200"
      },
      "message": "[PATCH] splice: add comments documenting more of the code\n\nHopefully this will make Andrew a little more happy.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "4f6f0bd2ffa4e31c3524f5e65c84a29b6ab73307",
      "tree": "682ab1b41c3ee799d37bfa1874c79ae92b3755fd",
      "parents": [
        "53cd9ae886273d6c2b8ba4aa63d6cd6b1217b57f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sun Apr 02 23:04:46 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sun Apr 02 23:04:46 2006 +0200"
      },
      "message": "[PATCH] splice: improve writeback and clean up page stealing\n\nBy cleaning up the writeback logic (killing write_one_page() and the manual\nset_page_dirty()), we can get rid of -\u003estolen inside the pipe_buffer and\njust keep it local in pipe_to_file().\n\nThis also adds dirty page balancing logic and O_SYNC handling.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "53cd9ae886273d6c2b8ba4aa63d6cd6b1217b57f",
      "tree": "859162c3086f7d636ed376d4cb57522f52a8fd82",
      "parents": [
        "b043b673dc8a73daa233d5d92cf70b32e7351314"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sun Apr 02 23:04:21 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sun Apr 02 23:04:21 2006 +0200"
      },
      "message": "[PATCH] splice: fix shadow[] filling logic\n\nClear the entire range, and don\u0027t increment pidx or we keep filling\nthe same position again and again.\n\nThanks to KAMEZAWA Hiroyuki.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "29e350944fdc2dfca102500790d8ad6d6ff4f69d",
      "tree": "7630809d75149b0053dcc45ad34e95d5506e88b3",
      "parents": [
        "b45e516f701e0fc81fb3dbd1ba9db35f991a4465"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Apr 02 12:46:35 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Apr 02 12:46:35 2006 -0700"
      },
      "message": "splice: add SPLICE_F_NONBLOCK flag\n\nIt doesn\u0027t make the splice itself necessarily nonblocking (because the\nactual file descriptors that are spliced from/to may block unless they\nhave the O_NONBLOCK flag set), but it makes the splice pipe operations\nnonblocking.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a0f067802576d4eb4c65d40b8ee7d6ea3c81dd61",
      "tree": "c0172bf5d2a25e5658ba882cbf5d11468d6bdf53",
      "parents": [
        "ce362c009250340358a7221f3cdb7954cbf19c01"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Thu Mar 30 23:06:13 2006 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Mar 30 22:16:24 2006 -0800"
      },
      "message": "[PATCH] splice exports\n\nWoe be unto he who builds their filesystems as modules.\n\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n[ Obscure quote from the infamous geek bible? ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5abc97aa25b2c41413b3a520faee83f2282d9f18",
      "tree": "4ba13ae0e91f15d02986df7cdca5e9455212d7d4",
      "parents": [
        "5274f052e7b3dbd81935772eb551dfd0325dfa9d"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu Mar 30 15:16:46 2006 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Mar 30 12:28:18 2006 -0800"
      },
      "message": "[PATCH] splice: add support for SPLICE_F_MOVE flag\n\nThis enables the caller to migrate pages from one address space page\ncache to another.  In buzz word marketing, you can do zero-copy file\ncopies!\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5274f052e7b3dbd81935772eb551dfd0325dfa9d",
      "tree": "c79f813ec513660edb6f1e4a75cb366c6b84f53f",
      "parents": [
        "5d4fe2c1ce83c3e967ccc1ba3d580c1a5603a866"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu Mar 30 15:15:30 2006 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Mar 30 12:28:18 2006 -0800"
      },
      "message": "[PATCH] Introduce sys_splice() system call\n\nThis adds support for the sys_splice system call. Using a pipe as a\ntransport, it can connect to files or sockets (latter as output only).\n\nFrom the splice.c comments:\n\n   \"splice\": joining two ropes together by interweaving their strands.\n\n   This is the \"extended pipe\" functionality, where a pipe is used as\n   an arbitrary in-memory buffer. Think of a pipe as a small kernel\n   buffer that you can use to transfer data from one end to the other.\n\n   The traditional unix read/write is extended with a \"splice()\" operation\n   that transfers data buffers to or from a pipe buffer.\n\n   Named by Larry McVoy, original implementation from Linus, extended by\n   Jens to support splicing to files and fixing the initial implementation\n   bugs.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    }
  ]
}
