)]}'
{
  "log": [
    {
      "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"
    }
  ]
}
