)]}'
{
  "log": [
    {
      "commit": "cc56f7de7f00d188c7c4da1e9861581853b9e92f",
      "tree": "4794c8e5b7c7aec176f695dfc9d723d4a73e3ba9",
      "parents": [
        "f21121cde6e617b90cd03ce083652ca543004dc2"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Wed Nov 04 09:09:52 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Nov 04 09:09:52 2009 +0100"
      },
      "message": "sendfile(): check f_op.splice_write() rather than f_op.sendpage()\n\nsendfile(2) was reworked with the splice infrastructure, but it still\nchecks f_op.sendpage() instead of f_op.splice_write() wrongly.  Although\nif f_op.sendpage() exists, f_op.splice_write() always exists at the same\ntime currently, the assumption will be broken in future silently.  This\npatch also brings a side effect: sendfile(2) can work with any output\nfile.  Some security checks related to f_op are added too.\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "355bbd8cb82e60a592f6cd86ce6dbe5677615cf4",
      "tree": "23678e50ad4687f1656edc972388ee8014e7b89d",
      "parents": [
        "39695224bd84dc4be29abad93a0ec232a16fc519",
        "746cd1e7e4a555ddaee53b19a46e05c9c61eaf09"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 14 17:55:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 14 17:55:15 2009 -0700"
      },
      "message": "Merge branch \u0027for-2.6.32\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.32\u0027 of git://git.kernel.dk/linux-2.6-block: (29 commits)\n  block: use blkdev_issue_discard in blk_ioctl_discard\n  Make DISCARD_BARRIER and DISCARD_NOBARRIER writes instead of reads\n  block: don\u0027t assume device has a request list backing in nr_requests store\n  block: Optimal I/O limit wrapper\n  cfq: choose a new next_req when a request is dispatched\n  Seperate read and write statistics of in_flight requests\n  aoe: end barrier bios with EOPNOTSUPP\n  block: trace bio queueing trial only when it occurs\n  block: enable rq CPU completion affinity by default\n  cfq: fix the log message after dispatched a request\n  block: use printk_once\n  cciss: memory leak in cciss_init_one()\n  splice: update mtime and atime on files\n  block: make blk_iopoll_prep_sched() follow normal 0/1 return convention\n  cfq-iosched: get rid of must_alloc flag\n  block: use interrupts disabled version of raise_softirq_irqoff()\n  block: fix comment in blk-iopoll.c\n  block: adjust default budget for blk-iopoll\n  block: fix long lines in block/blk-iopoll.c\n  block: add blk-iopoll, a NAPI like approach for block devices\n  ...\n"
    },
    {
      "commit": "148f948ba877f4d3cdef036b1ff6d9f68986706a",
      "tree": "c07963f08bf8c2119ec00df64e4293e2e60acaa1",
      "parents": [
        "eef99380679e20e7edc096aa4d8a98b875404d79"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Aug 17 19:52:36 2009 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Sep 14 17:08:15 2009 +0200"
      },
      "message": "vfs: Introduce new helpers for syncing after writing to O_SYNC file or IS_SYNC inode\n\nIntroduce new function for generic inode syncing (vfs_fsync_range) and use\nit from fsync() path. Introduce also new helper for syncing after a sync\nwrite (generic_write_sync) using the generic function.\n\nUse these new helpers for syncing from generic VFS functions. This makes\nO_SYNC writes to block devices acquire i_mutex for syncing. If we really\ncare about this, we can make block_fsync() drop the i_mutex and reacquire\nit before it returns.\n\nCC: Evgeniy Polyakov \u003czbr@ioremap.net\u003e\nCC: ocfs2-devel@oss.oracle.com\nCC: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCC: Felix Blyakher \u003cfelixb@sgi.com\u003e\nCC: xfs@oss.sgi.com\nCC: Anton Altaparmakov \u003caia21@cantab.net\u003e\nCC: linux-ntfs-dev@lists.sourceforge.net\nCC: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nCC: linux-ext4@vger.kernel.org\nCC: tytso@mit.edu\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "723590ed52d244b025f10a8e2f54c2f57ed02b4d",
      "tree": "eaf52e605a462beb9a167837a6cc31024eb42a40",
      "parents": [
        "d62f843b295393124970d29316344150c7de009b"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Sat Aug 15 08:43:22 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 14:34:33 2009 +0200"
      },
      "message": "splice: update mtime and atime on files\n\nSplice should update the modification and access times on regular\nfiles just like read and write. Not updating mtime will confuse\nbackup tools, etc...\n\nThis patch only adds the time updates for regular files.  For pipes\nand other special files that splice touches the need for updating the\ntimes is less clear.  Let\u0027s discuss and fix that separately.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b2858d7d1639c04ca3c54988d76c5f7300b76f1c",
      "tree": "87bd9ecead14418c44320e2944a0178af64af9ea",
      "parents": [
        "4fc981ef9e7c0953d5c4896ce088b19c50cb018f"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue May 19 11:37:46 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue May 19 11:37:46 2009 +0200"
      },
      "message": "splice: fix kmaps in default_file_splice_write()\n\nUnfortunately multiple kmap() within a single thread are deadlockable,\nso writing out multiple buffers with writev() isn\u0027t possible.\n\nChange the implementation so that it does a separate write() for each\nbuffer.  This actually simplifies the code a lot since the\nsplice_from_pipe() helper can be used.\n\nThis limitation is caused by HIGHMEM pages, and so only affects a\nsubset of architectures and configurations.  In the future it may be\nworth to implement default_file_splice_write() in a more efficient way\non configs that allow it.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "77f6bf57ba9d2c50173536dbfdacdab27cb867ca",
      "tree": "09cfb70eb20081d7fc5af21039e3fda7f0b95f84",
      "parents": [
        "4f23122858a27ba97444b9b37a066d83edebd4c8"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Thu May 14 09:49:44 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu May 14 09:49:44 2009 +0200"
      },
      "message": "splice: fix error return code\n\nfs/splice.c: In function \u0027default_file_splice_read\u0027:\nfs/splice.c:566: warning: \u0027error\u0027 may be used uninitialized in this function\n\nwhich is sort-of true.  The code will in fact return -ENOMEM instead of the\nkernel_readv() return value.\n\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "4f23122858a27ba97444b9b37a066d83edebd4c8",
      "tree": "7ccfea2b6d606318c9812f0dc9c3aa39411ac456",
      "parents": [
        "2b1ccc0ee918a653d0483fdad9dd6112ce8e9043"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed May 13 08:35:35 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed May 13 08:35:35 2009 +0200"
      },
      "message": "splice: fix repeated kmap()\u0027s in default_file_splice_read()\n\nWe cannot reliably map more than one page at the time, or we risk\ndeadlocking. Just allocate the pages from low mem instead.\n\nReported-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0b0a47f5c4a30b58432e20ae1706a27baea91a88",
      "tree": "294de65aae0eaf2b7865ff1db971226c8a77635b",
      "parents": [
        "6818173bd658439b83896a2a7586f64ab51bf29c"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Thu May 07 15:37:37 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 11 14:13:10 2009 +0200"
      },
      "message": "splice: implement default splice_write method\n\nIf f_op-\u003esplice_write() is not implemented, fall back to a plain write.\nUse vfs_writev() to write from the pipe buffers.\n\nThis will allow splice on all filesystems and file types.  This\nincludes \"direct_io\" files in fuse which bypass the page cache.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "6818173bd658439b83896a2a7586f64ab51bf29c",
      "tree": "17d25ee77485af18da1a80cb7f1d8ec581c6abfc",
      "parents": [
        "7c77f0b3f9208c339a4b40737bb2cb0f0319bb8d"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Thu May 07 15:37:36 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 11 14:13:10 2009 +0200"
      },
      "message": "splice: implement default splice_read method\n\nIf f_op-\u003esplice_read() is not implemented, fall back to a plain read.\nUse vfs_readv() to read into previously allocated pages.\n\nThis will allow splice and functions using splice, such as the loop\ndevice, to work on all filesystems.  This includes \"direct_io\" files\nin fuse which bypass the page cache.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "7c77f0b3f9208c339a4b40737bb2cb0f0319bb8d",
      "tree": "cf45bc6afaa4bab28275b5aefc903f0112545965",
      "parents": [
        "b1f744937f1be3e6d3009382a755679133cf782d"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Thu May 07 15:37:35 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 11 14:13:09 2009 +0200"
      },
      "message": "splice: implement pipe to pipe splicing\n\nAllow splice(2) to work when both the input and the output is a pipe.\n\nBased on the impementation of the tee(2) syscall, but instead of\nduplicating the buffer references move the buffers from the input pipe\nto the output pipe.\n\nMoving the whole buffer only succeeds if the full length of the buffer\nis spliced.  Otherwise duplicate the buffer, just like tee(2), set the\nlength of the output buffer and advance the offset on the input\nbuffer.\n\nSince splice is operating on two pipes, special care needs to be taken\nwith locking to prevent AN ABBA deadlock.  Again this is done\nsimilarly to the tee(2) syscall, first preparing the input and output\npipes so there\u0027s data to consume and space for that data, and then\ndoing the move operation while holding both locks.\n\nIf other processes are doing I/O on the same pipes parallel to the\nsplice, then by the time both inodes are locked there might be no\nbuffers left to move, or no space to move them to.  In this case retry\nthe whole operation, including the preparation phase.  This could lead\nto starvation, but I\u0027m not sure if that\u0027s serious enough to worry\nabout.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b80901bbf599553f483b9509f2dce416b938aae8",
      "tree": "62d3d2dcea9e2e112a86a4626667517cb72ebb45",
      "parents": [
        "9f76208c33984ab777eace5d07a4e36e88703e02"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Thu Apr 16 19:09:55 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 17 07:38:07 2009 -0700"
      },
      "message": "splice: fix new kernel-doc warnings\n\nsplice: fix kernel-doc warnings\n\n  Warning(fs/splice.c:617): bad line:\n  Warning(fs/splice.c:722): No description found for parameter \u0027sd\u0027\n  Warning(fs/splice.c:722): Excess function parameter \u0027pipe\u0027 description in \u0027splice_from_pipe_begin\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "61e0d47c33cc371f725bcda4a47ae0efe652dba8",
      "tree": "e00f99b506f1c1a16e3ba987e3390deda6bd2e03",
      "parents": [
        "f8cc774ce4844811a55e2352f1443055e3994e28"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Tue Apr 14 19:48:41 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 12:10:12 2009 +0200"
      },
      "message": "splice: add helpers for locking pipe inode\n\nThere are lots of sequences like this, especially in splice code:\n\n\tif (pipe-\u003einode)\n\t\tmutex_lock(\u0026pipe-\u003einode-\u003ei_mutex);\n\t/* do something */\n\tif (pipe-\u003einode)\n\t\tmutex_unlock(\u0026pipe-\u003einode-\u003ei_mutex);\n\nso introduce helpers which do the conditional locking and unlocking.\nAlso replace the inode_double_lock() call with a pipe_double_lock()\nhelper to avoid spreading the use of this functionality beyond the\npipe code.\n\nThis patch is just a cleanup, and should cause no behavioral changes.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "f8cc774ce4844811a55e2352f1443055e3994e28",
      "tree": "a9d95b3d23044ff6217b76135d0be1661ffbc5e7",
      "parents": [
        "328eaaba4e41a04c1dc4679d65bea3fee4349d86"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Tue Apr 14 19:48:40 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 12:10:12 2009 +0200"
      },
      "message": "splice: remove generic_file_splice_write_nolock()\n\nRemove the now unused generic_file_splice_write_nolock() function.\nIt\u0027s conceptually broken anyway, because splice may need to wait for\npipe events so holding locks across the whole operation is wrong.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "328eaaba4e41a04c1dc4679d65bea3fee4349d86",
      "tree": "171bf86b590a841729bab11feec874869bcab49e",
      "parents": [
        "eb443e5a25d43996deb62b9bcee1a4ce5dea2ead"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Tue Apr 14 19:48:39 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 12:10:12 2009 +0200"
      },
      "message": "ocfs2: fix i_mutex locking in ocfs2_splice_to_file()\n\nRearrange locking of i_mutex on destination and call to\nocfs2_rw_lock() so locks are only held while buffers are copied with\nthe pipe_to_file() actor, and not while waiting for more data on the\npipe.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "eb443e5a25d43996deb62b9bcee1a4ce5dea2ead",
      "tree": "7f63bb98302137e249904d608d5bb4b919a987ed",
      "parents": [
        "2933970b960223076d6affcf7a77e2bc546b8102"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Tue Apr 14 19:48:38 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 12:10:11 2009 +0200"
      },
      "message": "splice: fix i_mutex locking in generic_splice_write()\n\nRearrange locking of i_mutex on destination so it\u0027s only held while\nbuffers are copied with the pipe_to_file() actor, and not while\nwaiting for more data on the pipe.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "2933970b960223076d6affcf7a77e2bc546b8102",
      "tree": "1658b9692948b5118fc5fea29b83be4329c56b6e",
      "parents": [
        "b3c2d2ddd63944ef2a1e4a43077b602288107e01"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Tue Apr 14 19:48:37 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 12:10:11 2009 +0200"
      },
      "message": "splice: remove i_mutex locking in splice_from_pipe()\n\nsplice_from_pipe() is only called from two places:\n\n  - generic_splice_sendpage()\n  - splice_write_null()\n\nNeither of these require i_mutex to be taken on the destination inode.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b3c2d2ddd63944ef2a1e4a43077b602288107e01",
      "tree": "2264092a285ab6af01f5f86d2cf06d2068546d37",
      "parents": [
        "91e463c8f5f7a5b09d3d034c01a88567af60c504"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Tue Apr 14 19:48:36 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 12:10:11 2009 +0200"
      },
      "message": "splice: split up __splice_from_pipe()\n\nSplit up __splice_from_pipe() into four helper functions:\n\n  splice_from_pipe_begin()\n  splice_from_pipe_next()\n  splice_from_pipe_feed()\n  splice_from_pipe_end()\n\nsplice_from_pipe_next() will wait (if necessary) for more buffers to\nbe added to the pipe.  splice_from_pipe_feed() will feed the buffers\nto the supplied actor and return when there\u0027s no more data available\n(or if all of the requested data has been copied).\n\nThis is necessary so that implementations can do locking around the\nnon-waiting splice_from_pipe_feed().\n\nThis patch should not cause any change in behavior.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "7bfac9ecf0585962fe13584f5cf526d8c8e76f17",
      "tree": "7e7c98311bb0d4c26e514b337216bbc8ade8d078",
      "parents": [
        "612392307cb09e49051225092cbbd7049bd8db93"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Apr 06 17:41:00 2009 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 08:34:46 2009 -0700"
      },
      "message": "splice: fix deadlock in splicing to file\n\nThere\u0027s a possible deadlock in generic_file_splice_write(),\nsplice_from_pipe() and ocfs2_file_splice_write():\n\n - task A calls generic_file_splice_write()\n - this calls inode_double_lock(), which locks i_mutex on both\n   pipe-\u003einode and target inode\n - ordering depends on inode pointers, can happen that pipe-\u003einode is\n   locked first\n - __splice_from_pipe() needs more data, calls pipe_wait()\n - this releases lock on pipe-\u003einode, goes to interruptible sleep\n - task B calls generic_file_splice_write(), similarly to the first\n - this locks pipe-\u003einode, then tries to lock inode, but that is\n   already held by task A\n - task A is interrupted, it tries to lock pipe-\u003einode, but fails, as\n   it is already held by task B\n - ABBA deadlock\n\nFix this by explicitly ordering locks: the outer lock must be on\ntarget inode and the inner lock (which is later unlocked and relocked)\nmust be on pipe-\u003einode.  This is OK, pipe inodes and target inodes\nform two nonoverlapping sets, generic_file_splice_write() and friends\nare not called with a target which is a pipe.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "266cf658efcf6ac33541a46740f74f50c79d2b6b",
      "tree": "5c83b0879892d509e598dfd54be3ba3679ecd348",
      "parents": [
        "03fb3d2af96c2783c3a5bc03f3d984cf422f0e69"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:36 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:36 2009 +0100"
      },
      "message": "FS-Cache: Recruit a page flags for cache management\n\nRecruit a page flag to aid in cache management.  The following extra flag is\ndefined:\n\n (1) PG_fscache (PG_private_2)\n\n     The marked page is backed by a local cache and is pinning resources in the\n     cache driver.\n\nIf PG_fscache is set, then things that checked for PG_private will now also\ncheck for that.  This includes things like truncation and page invalidation.\nThe function page_has_private() had been added to make the checks for both\nPG_private and PG_private_2 at the same time.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Steve Dickson \u003csteved@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nTested-by: Daire Byrne \u003cDaire.Byrne@framestore.com\u003e\n"
    },
    {
      "commit": "836f92adf121f806e9beb5b6b88bd5c9c4ea3f24",
      "tree": "0deccad6d01b7761a8d96cbc12b8e9541317380e",
      "parents": [
        "6559eed8ca7db0531a207cd80be5e28cd6f213c5"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:14:33 2009 +0100"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:15:31 2009 +0100"
      },
      "message": "[CVE-2009-0029] System call wrappers part 31\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "08e552c69c6930d64722de3ec18c51844d06ee28",
      "tree": "a744d57ed4b23401115f1033dcaac9e85d550e09",
      "parents": [
        "8c7c6e34a1256a5082d38c8e9bd1474476912715"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:01 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:05 2009 -0800"
      },
      "message": "memcg: synchronized LRU\n\nA big patch for changing memcg\u0027s LRU semantics.\n\nNow,\n  - page_cgroup is linked to mem_cgroup\u0027s its own LRU (per zone).\n\n  - LRU of page_cgroup is not synchronous with global LRU.\n\n  - page and page_cgroup is one-to-one and statically allocated.\n\n  - To find page_cgroup is on what LRU, you have to check pc-\u003emem_cgroup as\n    - lru \u003d page_cgroup_zoneinfo(pc, nid_of_pc, zid_of_pc);\n\n  - SwapCache is handled.\n\nAnd, when we handle LRU list of page_cgroup, we do following.\n\n\tpc \u003d lookup_page_cgroup(page);\n\tlock_page_cgroup(pc); .....................(1)\n\tmz \u003d page_cgroup_zoneinfo(pc);\n\tspin_lock(\u0026mz-\u003elru_lock);\n\t.....add to LRU\n\tspin_unlock(\u0026mz-\u003elru_lock);\n\tunlock_page_cgroup(pc);\n\nBut (1) is spin_lock and we have to be afraid of dead-lock with zone-\u003elru_lock.\nSo, trylock() is used at (1), now. Without (1), we can\u0027t trust \"mz\" is correct.\n\nThis is a trial to remove this dirty nesting of locks.\nThis patch changes mz-\u003elru_lock to be zone-\u003elru_lock.\nThen, above sequence will be written as\n\n        spin_lock(\u0026zone-\u003elru_lock); # in vmscan.c or swap.c via global LRU\n\tmem_cgroup_add/remove/etc_lru() {\n\t\tpc \u003d lookup_page_cgroup(page);\n\t\tmz \u003d page_cgroup_zoneinfo(pc);\n\t\tif (PageCgroupUsed(pc)) {\n\t\t\t....add to LRU\n\t\t}\n        spin_lock(\u0026zone-\u003elru_lock); # in vmscan.c or swap.c via global LRU\n\nThis is much simpler.\n(*) We\u0027re safe even if we don\u0027t take lock_page_cgroup(pc). Because..\n    1. When pc-\u003emem_cgroup can be modified.\n       - at charge.\n       - at account_move().\n    2. at charge\n       the PCG_USED bit is not set before pc-\u003emem_cgroup is fixed.\n    3. at account_move()\n       the page is isolated and not on LRU.\n\nPros.\n  - easy for maintenance.\n  - memcg can make use of laziness of pagevec.\n  - we don\u0027t have to duplicated LRU/Active/Unevictable bit in page_cgroup.\n  - LRU status of memcg will be synchronized with global LRU\u0027s one.\n  - # of locks are reduced.\n  - account_move() is simplified very much.\nCons.\n  - may increase cost of LRU rotation.\n    (no impact if memcg is not configured.)\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4e02ed4b4a2fae34aae766a5bb93ae235f60adb8",
      "tree": "bddfb61b7cc4a4007ae176ccb1ace5740b61da8d",
      "parents": [
        "9b913735e53ab0da4a792bac0de8e178cc13dcfb"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Oct 29 14:00:55 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 30 11:38:45 2008 -0700"
      },
      "message": "fs: remove prepare_write/commit_write\n\nNothing uses prepare_write or commit_write. Remove them from the tree\ncompletely.\n\n[akpm@linux-foundation.org: schedule simple_prepare_write() for unexporting]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "efc968d450e013049a662d22727cf132618dcb2f",
      "tree": "22b603182650a341922de5a640d5cceff1107cbc",
      "parents": [
        "07f405541892bd9bab4cca6c12499091ef4dd556"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 09 14:04:54 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 09 14:26:38 2008 -0700"
      },
      "message": "Don\u0027t allow splice() to files opened with O_APPEND\n\nThis is debatable, but while we\u0027re debating it, let\u0027s disallow the\ncombination of splice and an O_APPEND destination.\n\nIt\u0027s not entirely clear what the semantics of O_APPEND should be, and\nPOSIX apparently expects pwrite() to ignore O_APPEND, for example.  So\nwe could make up any semantics we want, including the old ones.\n\nBut Miklos convinced me that we should at least give it some thought,\nand that accepting writes at arbitrary offsets is wrong at least for\nIS_APPEND() files (which always have O_APPEND set, even if the reverse\nisn\u0027t true: you can obviously have O_APPEND set on a regular file).\n\nSo disallow O_APPEND entirely for now.  I doubt anybody cares, and this\nway we have one less gray area to worry about.\n\nReported-and-argued-for-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nAcked-by: Jens Axboe \u003cens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "529ae9aaa08378cfe2a4350bded76f32cc8ff0ce",
      "tree": "d3ae998f9876c72a83a022805103a92111852b21",
      "parents": [
        "e9ba9698187ddbc0c5bfcf41de0349a662d23d02"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Aug 02 12:01:03 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 04 21:31:34 2008 -0700"
      },
      "message": "mm: rename page trylock\n\nConverting page lock to new locking bitops requires a change of page flag\noperation naming, so we might as well convert it to something nicer\n(!TestSetPageLocked_Lock \u003d\u003e trylock_page, SetPageLocked \u003d\u003e set_page_locked).\n\nThis also facilitates lockdeping of page lock.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2f1936b87783a3a56c9441b27b9ba7a747f11e8e",
      "tree": "024a0f3da74ba6365f209d03685133760146149b",
      "parents": [
        "c82e42da8a6b2f3a85dc4d4278cb8238702f8f64"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 24 16:50:14 2008 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 26 20:53:16 2008 -0400"
      },
      "message": "[patch 3/5] vfs: change remove_suid() to file_remove_suid()\n\nAll calls to remove_suid() are made with a file pointer, because\n(similarly to file_update_time) it is called when the file is written.\n\nClean up callers by passing in a file instead of a dentry.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "bc40d73c950146725e9e768e856a416ec8949065",
      "tree": "7d12351ddeb6a281ff7a9b5db543067c710d1859",
      "parents": [
        "f5dd33c494a427b1d1a3b574de5c9e511c888864"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Fri Jul 25 19:45:26 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:06 2008 -0700"
      },
      "message": "splice: use get_user_pages_fast\n\nUse get_user_pages_fast in splice.  This reverts some mmap_sem batching\nthere, however the biggest problem with mmap_sem tends to be hold times\nblocking out other threads rather than cacheline bouncing.  Further: on\narchitectures that implement get_user_pages_fast without locks, mmap_sem\ncan be avoided completely anyway.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Dave Kleikamp \u003cshaggy@austin.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Dave Kleikamp \u003cshaggy@austin.ibm.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nReviewed-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "32502b8413a77b54b9e19809404109590c32dfb7",
      "tree": "c84b87396be32d529b9902a7261b772b1d919e8b",
      "parents": [
        "8b3d3567f72aa61d5d6f4ce89d289b154e1ea866"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Jul 04 09:35:17 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jul 04 09:52:14 2008 +0200"
      },
      "message": "splice: fix generic_file_splice_read() race with page invalidation\n\nIf a page was invalidated during splicing from file to a pipe, then\ngeneric_file_splice_read() could return a short or zero count.\n\nThis manifested itself in rare I/O errors seen on nfs exported fuse\nfilesystems.  This is because nfsd uses splice_direct_to_actor() to read\nfiles, and fuse uses invalidate_inode_pages2() to invalidate stale data on\nopen.\n\nFix by redoing the page find/create if it was found to be truncated\n(invalidated).\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ca39d651d17df49b6d11f851d56c0ce0ce01ea1a",
      "tree": "4bb546d7c8897f028dba7a099799b777e3602cb4",
      "parents": [
        "a82c53a0e3f57f02782330372b7adad67b417645"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue May 20 21:27:41 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed May 28 14:49:27 2008 +0200"
      },
      "message": "splice: handle try_to_release_page() failure\n\nsplice currently assumes that try_to_release_page() always suceeds,\nbut it can return failure. If it does, we cannot steal the page.\n\nAcked-by: Mingming Cao \u003ccmm@us.ibm.com\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a82c53a0e3f57f02782330372b7adad67b417645",
      "tree": "3a4e65ab1a2420f8fc5d0091a6992d6f7e430ad8",
      "parents": [
        "1ec7d99c16e69a9ed8ffeaa6c1846025b84bebad"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "zanussi@comcast.net",
        "time": "Fri May 09 13:28:36 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed May 28 14:49:27 2008 +0200"
      },
      "message": "splice: fix sendfile() issue with relay\n\nSplice isn\u0027t always incrementing the ppos correctly, which broke\nrelay splice.\n\nSigned-off-by: Tom Zanussi \u003czanussi@comcast.net\u003e\nTested-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "75065ff619e42fe35178eda863cbcddd57776794",
      "tree": "e41d6e838cb2d2fcd62e5ea1980f720e98b57de7",
      "parents": [
        "ffee0259c9edcc4c0f06b60df51c461eeecad4c0"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu May 08 14:06:19 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu May 08 14:06:19 2008 +0200"
      },
      "message": "Revert \"relay: fix splice problem\"\n\nThis reverts commit c3270e577c18b3d0e984c3371493205a4807db9d.\n"
    },
    {
      "commit": "7f3d4ee108c184ab215036051087aaaaa8de7661",
      "tree": "373f4f928f0687ca84478964b43c26e3ec9cec70",
      "parents": [
        "07416d29bcf608257f1e5280642dcbe0021518a3"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed May 07 09:22:39 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed May 07 09:29:00 2008 +0200"
      },
      "message": "vfs: splice remove_suid() cleanup\n\ngeneric_file_splice_write() duplicates remove_suid() just because it\ndoesn\u0027t hold i_mutex.  But it grabs i_mutex inside splice_from_pipe()\nanyway, so this is rather pointless.\n\nMove locking to generic_file_splice_write() and call remove_suid() and\n__splice_from_pipe() instead.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c3270e577c18b3d0e984c3371493205a4807db9d",
      "tree": "4a9e418798f897a580da930a575747706d17b94b",
      "parents": [
        "a01e035ebb552223c03f2d9138ffc73f2d4d3965"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "zanussi@comcast.ne",
        "time": "Thu Apr 24 12:52:20 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 29 09:48:15 2008 +0200"
      },
      "message": "relay: fix splice problem\n\nSplice isn\u0027t always incrementing the ppos correctly, which broke\nrelay splice.\n\nSigned-off-by: Tom Zanussi \u003czanussi@comcast.net\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "8191ecd1d14c6914c660dfa007154860a7908857",
      "tree": "7a2c76742945e9659db502c16ed17d33a0644bfd",
      "parents": [
        "f4be31ec9690cfe6e94fcbed6ae60a6a38b3c3ed"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Apr 10 08:24:25 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Apr 10 08:24:25 2008 +0200"
      },
      "message": "splice: fix infinite loop in generic_file_splice_read()\n\nThere\u0027s a quirky loop in generic_file_splice_read() that could go\non indefinitely, if the file splice returns 0 permanently (and not\njust as a temporary condition). Get rid of the loop and pass\nback -EAGAIN correctly from __generic_file_splice_read(), so we\nhandle that condition properly as well.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "4cd13504652d28e16bf186c6bb2bbb3725369383",
      "tree": "2bc557b5a3c92954fabea3cb6217d1373bbedaa4",
      "parents": [
        "9597362d354f8655ece324b01d0c640a0e99c077"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Thu Apr 03 23:35:22 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 03 15:39:49 2008 -0700"
      },
      "message": "splice: use mapping_gfp_mask\n\nThe loop block driver is careful to mask __GFP_IO|__GFP_FS out of its\nmapping_gfp_mask, to avoid hangs under memory pressure.  But nowadays\nit uses splice, usually going through __generic_file_splice_read.  That\nmust use mapping_gfp_mask instead of GFP_KERNEL to avoid those hangs.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "02cf01aea5af7a4d1a38045712fe11bffcc206b0",
      "tree": "28a5817e0bb4aaf174c9d8a87f34a8aefd754aa6",
      "parents": [
        "5d87a052c7e5f245bbb3018721b4b0afe0afc252"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Feb 20 10:34:51 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.home.kernel.dk",
        "time": "Tue Mar 04 11:14:39 2008 +0100"
      },
      "message": "splice: only return -EAGAIN if there\u0027s hope of more data\n\nsys_tee() currently is a bit eager in returning -EAGAIN, it may do so\neven if we don\u0027t have a chance of anymore data becoming available. So\nimprove the logic and only return -EAGAIN if we have an attached writer\nto the input pipe.\n\nReported by Johann Felix Soden \u003cjohfel@gmx.de\u003e and\nPatrick McManus \u003cmcmanus@ducksong.com\u003e.\n\nTested-by: Johann Felix Soden \u003cjohfel@users.sourceforge.net\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "712a30e63c8066ed84385b12edbfb804f49cbc44",
      "tree": "0562431cf00ccb740547b13a41d79f6319254ca0",
      "parents": [
        "25f666300625d894ebe04bac2b4b3aadb907c861"
      ],
      "author": {
        "name": "Bastian Blank",
        "email": "bastian@waldi.eu.org",
        "time": "Sun Feb 10 16:47:57 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 10 10:27:21 2008 -0800"
      },
      "message": "splice: fix user pointer access in get_iovec_page_array()\n\nCommit 8811930dc74a503415b35c4a79d14fb0b408a361 (\"splice: missing user\npointer access verification\") added the proper access_ok() calls to\ncopy_from_user_mmap_sem() which ensures we can copy the struct iovecs\nfrom userspace to the kernel.\n\nBut we also must check whether we can access the actual memory region\npointed to by the struct iovec to fix the access checks properly.\n\nSigned-off-by: Bastian Blank \u003cwaldi@debian.org\u003e\nAcked-by: Oliver Pinter \u003coliver.pntr@gmail.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8811930dc74a503415b35c4a79d14fb0b408a361",
      "tree": "464a99a2be2f87b8e019fea231592ddf3ec38de7",
      "parents": [
        "66191dc622f5ff0a541524c4e96fdacfacfda206"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Feb 08 08:49:14 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:25:01 2008 -0800"
      },
      "message": "splice: missing user pointer access verification\n\nvmsplice_to_user() must always check the user pointer and length\nwith access_ok() before copying. Likewise, for the slow path of\ncopy_from_user_mmap_sem() we need to check that we may read from\nthe user region.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Wojciech Purczynski \u003ccliph@research.coseinc.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8084870854fe181996c4aa4f44cb2fabcebf164c",
      "tree": "6958333e62e8000f52ba6d6d9a559faa1248d3c5",
      "parents": [
        "13f09b95a82c46ed608d057b22e0dd18ebfff22a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Jan 30 12:24:48 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Feb 01 09:26:32 2008 +0100"
      },
      "message": "splice: always updated atime in direct splice\n\nAndre Majorel \u003caym-xunil@teaser.fr\u003e points out that if we only updated\nthe atime when we transfer some data, we deviate from the standard\nof always updating the atime. So change splice to always call\nfile_accessed() even if splice_direct_to_actor() didn\u0027t transfer\nany data.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "9e97198dbf318be7958b57900d05b37c7e09ad7c",
      "tree": "f74fdf942c1b4c09c59d7f2b8ac4a48e8a471a71",
      "parents": [
        "12f32bb31772e72d8cf52a29f961561bccc54c37"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jan 29 21:05:57 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jan 29 21:55:20 2008 +0100"
      },
      "message": "splice: fix problem with atime not being updated\n\nA bug report on nfsd that states that since it was switched to use\nsplice instead of sendfile, the atime was no longer being updated\non the input file. do_generic_mapping_read() does this when accessing\nthe file, make splice do it for the direct splice handler.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "bbdfc2f70610bebb841d0874dc901c648308e43a",
      "tree": "0f78843b93bb3338ccd6dd36bd7d3677a97083e5",
      "parents": [
        "d10f2150eab62f633aeae36cf4612d1f648a817e"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Nov 06 23:29:47 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:53:30 2008 -0800"
      },
      "message": "[SPLICE]: Don\u0027t assume regular pages in splice_to_pipe()\n\nAllow caller to pass in a release function, there might be\nother resources that need releasing as well. Needed for\nnetwork receive.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c43e259cc756ece387faae849af0058b56d78466",
      "tree": "1f1541560256b9fe2eeda5b07100baa14f39df59",
      "parents": [
        "bced95283e9434611cbad8f2ff903cd396eaea72"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Sat Jan 12 22:05:48 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Jan 25 11:29:52 2008 +1100"
      },
      "message": "security: call security_file_permission from rw_verify_area\n\nAll instances of rw_verify_area() are followed by a call to\nsecurity_file_permission(), so just call the latter from the former.\n\nAcked-by: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "b53767719b6cd8789392ea3e7e2eb7b8906898f0",
      "tree": "a0279dc93c79b94d3865b0f19f6b7b353e20608c",
      "parents": [
        "57c521ce6125e15e99e56c902cb8da96bee7b36d"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serue@us.ibm.com",
        "time": "Tue Oct 16 23:31:36 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:07 2007 -0700"
      },
      "message": "Implement file posix capabilities\n\nImplement file posix capabilities.  This allows programs to be given a\nsubset of root\u0027s powers regardless of who runs them, without having to use\nsetuid and giving the binary all of root\u0027s powers.\n\nThis version works with Kaigai Kohei\u0027s userspace tools, found at\nhttp://www.kaigai.gr.jp/index.php.  For more information on how to use this\npatch, Chris Friedhoff has posted a nice page at\nhttp://www.friedhoff.org/fscaps.html.\n\nChangelog:\n\tNov 27:\n\tIncorporate fixes from Andrew Morton\n\t(security-introduce-file-caps-tweaks and\n\tsecurity-introduce-file-caps-warning-fix)\n\tFix Kconfig dependency.\n\tFix change signaling behavior when file caps are not compiled in.\n\n\tNov 13:\n\tIntegrate comments from Alexey: Remove CONFIG_ ifdef from\n\tcapability.h, and use %zd for printing a size_t.\n\n\tNov 13:\n\tFix endianness warnings by sparse as suggested by Alexey\n\tDobriyan.\n\n\tNov 09:\n\tAddress warnings of unused variables at cap_bprm_set_security\n\twhen file capabilities are disabled, and simultaneously clean\n\tup the code a little, by pulling the new code into a helper\n\tfunction.\n\n\tNov 08:\n\tFor pointers to required userspace tools and how to use\n\tthem, see http://www.friedhoff.org/fscaps.html.\n\n\tNov 07:\n\tFix the calculation of the highest bit checked in\n\tcheck_cap_sanity().\n\n\tNov 07:\n\tAllow file caps to be enabled without CONFIG_SECURITY, since\n\tcapabilities are the default.\n\tHook cap_task_setscheduler when !CONFIG_SECURITY.\n\tMove capable(TASK_KILL) to end of cap_task_kill to reduce\n\taudit messages.\n\n\tNov 05:\n\tAdd secondary calls in selinux/hooks.c to task_setioprio and\n\ttask_setscheduler so that selinux and capabilities with file\n\tcap support can be stacked.\n\n\tSep 05:\n\tAs Seth Arnold points out, uid checks are out of place\n\tfor capability code.\n\n\tSep 01:\n\tDefine task_setscheduler, task_setioprio, cap_task_kill, and\n\ttask_setnice to make sure a user cannot affect a process in which\n\tthey called a program with some fscaps.\n\n\tOne remaining question is the note under task_setscheduler: are we\n\tok with CAP_SYS_NICE being sufficient to confine a process to a\n\tcpuset?\n\n\tIt is a semantic change, as without fsccaps, attach_task doesn\u0027t\n\tallow CAP_SYS_NICE to override the uid equivalence check.  But since\n\tit uses security_task_setscheduler, which elsewhere is used where\n\tCAP_SYS_NICE can be used to override the uid equivalence check,\n\tfixing it might be tough.\n\n\t     task_setscheduler\n\t\t note: this also controls cpuset:attach_task.  Are we ok with\n\t\t     CAP_SYS_NICE being used to confine to a cpuset?\n\t     task_setioprio\n\t     task_setnice\n\t\t sys_setpriority uses this (through set_one_prio) for another\n\t\t process.  Need same checks as setrlimit\n\n\tAug 21:\n\tUpdated secureexec implementation to reflect the fact that\n\teuid and uid might be the same and nonzero, but the process\n\tmight still have elevated caps.\n\n\tAug 15:\n\tHandle endianness of xattrs.\n\tEnforce capability version match between kernel and disk.\n\tEnforce that no bits beyond the known max capability are\n\tset, else return -EPERM.\n\tWith this extra processing, it may be worth reconsidering\n\tdoing all the work at bprm_set_security rather than\n\td_instantiate.\n\n\tAug 10:\n\tAlways call getxattr at bprm_set_security, rather than\n\tcaching it at d_instantiate.\n\n[morgan@kernel.org: file-caps clean up for linux/capability.h]\n[bunk@kernel.org: unexport cap_inode_killpriv]\nSigned-off-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nCc: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: Andrew Morgan \u003cmorgan@kernel.org\u003e\nSigned-off-by: Andrew Morgan \u003cmorgan@kernel.org\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "92d15c2ccbb3e31a3fc71ad28fdb55e1319383c0",
      "tree": "8d83c0dc3c6b935d8367e331872f242b742f0a8a",
      "parents": [
        "f20bf6125605acbbc7eb8c9420d7221c91aa83eb",
        "644bd2f048972d75eb1979b1fdca257d528ce687"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 10:09:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 10:09:16 2007 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/data/git/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/data/git/linux-2.6-block: (63 commits)\n  Fix memory leak in dm-crypt\n  SPARC64: sg chaining support\n  SPARC: sg chaining support\n  PPC: sg chaining support\n  PS3: sg chaining support\n  IA64: sg chaining support\n  x86-64: enable sg chaining\n  x86-64: update pci-gart iommu to sg helpers\n  x86-64: update nommu to sg helpers\n  x86-64: update calgary iommu to sg helpers\n  swiotlb: sg chaining support\n  i386: enable sg chaining\n  i386 dma_map_sg: convert to using sg helpers\n  mmc: need to zero sglist on init\n  Panic in blk_rq_map_sg() from CCISS driver\n  remove sglist_len\n  remove blk_queue_max_phys_segments in libata\n  revert sg segment size ifdefs\n  Fixup u14-34f ENABLE_SG_CHAINING\n  qla1280: enable use_sg_chaining option\n  ...\n"
    },
    {
      "commit": "afddba49d18f346e5cc2938b6ed7c512db18ca68",
      "tree": "4726e3d3b0e9e8e5b5d3b2b0cccb36446bbdf3ca",
      "parents": [
        "637aff46f94a754207c80c8c64bf1b74f24b967d"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Oct 16 01:25:01 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:55 2007 -0700"
      },
      "message": "fs: introduce write_begin, write_end, and perform_write aops\n\nThese are intended to replace prepare_write and commit_write with more\nflexible alternatives that are also able to avoid the buffered write\ndeadlock problems efficiently (which prepare_write is unable to do).\n\n[mark.fasheh@oracle.com: API design contributions, code review and fixes]\n[akpm@linux-foundation.org: various fixes]\n[dmonakhov@sw.ru: new aop block_write_begin fix]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nSigned-off-by: Dmitriy Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f4e6b498d6e06742d72706ef50593a9c4dd72214",
      "tree": "74a573302b2ea086c0d21907175be604f110f5b1",
      "parents": [
        "0bb7ba6b9c358c12084a3cbc6ac08c8d1e973937"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Tue Oct 16 01:24:33 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:52 2007 -0700"
      },
      "message": "readahead: combine file_ra_state.prev_index/prev_offset into prev_pos\n\nCombine the file_ra_state members\n\t\t\t\tunsigned long prev_index\n\t\t\t\tunsigned int prev_offset\ninto\n\t\t\t\tloff_t prev_pos\n\nIt is more consistent and better supports huge files.\n\nThanks to Peter for the nice proposal!\n\n[akpm@linux-foundation.org: fix shift overflow]\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6866bef40d06f7c2baac3a855b1917a8ca75456c",
      "tree": "d6f34589657d91d60e9b3ed847eeba4c7a3c8c5a",
      "parents": [
        "23c76983e23628c7762137a00651e3e371aa97d3"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Oct 16 10:01:29 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Oct 16 10:01:29 2007 +0200"
      },
      "message": "splice: fix double kunmap() in vmsplice copy path\n\nThe out label should not include the unmap, the only way to jump\nthere already has unmapped the source.\n\n00002000\n       f7c21a00 00000000 00000000 c0489036 00018e32 00000002 00000000\n00001000\nCall Trace:\n [\u003cc0487dd9\u003e] pipe_to_user+0xca/0xd3\n [\u003cc0488233\u003e] __splice_from_pipe+0x53/0x1bd\n [\u003cc0454947\u003e] ------------[ cut here ]------------\nfilemap_fault+0x221/0x380\n [\u003cc0487d0f\u003e] pipe_to_user+0x0/0xd3\n [\u003cc0489036\u003e] sys_vmsplice+0x3b7/0x422\n [\u003cc045ec3f\u003e] kernel BUG at mm/highmem.c:206!\nhandle_mm_fault+0x4d5/0x8eb\n [\u003cc041ed5b\u003e] kmap_atomic+0x1c/0x20\n [\u003cc045d33d\u003e] unmap_vmas+0x3d1/0x584\n [\u003cc045f717\u003e] free_pgtables+0x90/0xa0\n [\u003cc041d84b\u003e] pgd_dtor+0x0/0x1\n [\u003cc044d665\u003e] audit_syscall_exit+0x2aa/0x2c6\n [\u003cc0407817\u003e] do_syscall_trace+0x124/0x169\n [\u003cc0404df2\u003e] syscall_call+0x7/0xb\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nCode: 2d 00 d0 5b 00 25 00 00 e0 ff 29 invalid opcode: 0000 [#1]\nc2 89 d0 c1 e8 0c 8b 14 85 a0 6c 7c c0 4a 85 d2 89 14 85 a0 6c 7c c0 74 07\n31 c9 4a 75 15 eb 04 \u003c0f\u003e 0b eb fe 31 c9 81 3d 78 38 6d c0 78 38 6d c0 0f\n95 c1 b0 01\nEIP: [\u003cc045bbc3\u003e] kunmap_high+0x51/0x8e SS:ESP 0068:f5960df0\nSMP\nModules linked in: netconsole autofs4 hidp nfs lockd nfs_acl rfcomm l2cap\nbluetooth sunrpc ipv6 ib_iser rdma_cm ib_cm iw_cmib_sa ib_mad ib_core\nib_addr iscsi_tcp libiscsi scsi_transport_iscsi dm_mirror dm_multipath\ndm_mod video output sbs batteryac parport_pc lp parport sg i2c_piix4\ni2c_core floppy cfi_probe gen_probe scb2_flash mtd chipreg tg3 e1000 button\nide_cd serio_raw cdrom aic7xxx scsi_transport_spi sd_mod scsi_mod ext3 jbd\nehci_hcd ohci_hcd uhci_hcd\nCPU:    3\nEIP:    0060:[\u003cc045bbc3\u003e]    Not tainted VLI\nEFLAGS: 00010246   (2.6.23 #1)\nEIP is at kunmap_high+0x51/0x8e\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "75723957673bfa10c98b735259f891cc79cf0450",
      "tree": "7382ea8e4bbda6ddf8d6f29f708aa531e262cd36",
      "parents": [
        "e2cd68f7cd07cc898581bd736ebdd6f2c2323c2e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Oct 01 13:17:28 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Oct 01 13:17:28 2007 -0700"
      },
      "message": "Fix possible splice() mmap_sem deadlock\n\nNick Piggin points out that splice isn\u0027t being good about the mmap\nsemaphore: while two readers can nest inside each others, it does leave\na possible deadlock if a writer (ie a new mmap()) comes in during that\nnesting.\n\nOriginal \"just move the locking\" patch by Nick, replaced by one by me\nbased on an optimistic pagefault_disable().  And then Jens tested and\nupdated that patch.\n\nReported-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nTested-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "79685b8deea4541d18882d8c07d0e99e788292ab",
      "tree": "07ef3cd834115451598b5988ca2074c7618bc809",
      "parents": [
        "7c2ff389bbb33074e7fde7a744f59da199a74af5"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Fri Jul 27 08:08:51 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jul 27 08:08:51 2007 +0200"
      },
      "message": "docbook: add pipes, other fixes\n\nFix some typos in pipe.c and splice.c.\nAdd pipes API to kernel-api.tmpl.\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "6a860c979b35469e4d77da781a96bdb2ca05ae64",
      "tree": "3160a7a4c76743fa4ca9a9eb9ccb0d67bc363d9b",
      "parents": [
        "9d1ca6f13cfedfd127f3be7e447bd6d922806a65"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jul 20 15:18:12 2007 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jul 20 09:07:01 2007 -0700"
      },
      "message": "splice: fix bad unlock_page() in error case\n\nIf add_to_page_cache_lru() fails, the page will not be locked. But\nsplice jumps to an error path that does a page release and unlock,\ncausing a BUG() in unlock_page().\n\nFix this by adding one more label that just releases the page. This bug\nwas actually triggered on EL5 by gurudas pai \u003cgurudas.pai@oracle.com\u003e\nusing fio.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cf914a7d656e62b9dd3e0dffe4f62b953ae6048d",
      "tree": "baf7e79de006ca80eac426d2d1be4c52f5f19624",
      "parents": [
        "fe3cba17c49471e99d3421e675fc8b3deaaf0b70"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 19 01:48:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:44 2007 -0700"
      },
      "message": "readahead: split ondemand readahead interface into two functions\n\nSplit ondemand readahead interface into two functions.  I think this makes it\na little clearer for non-readahead experts (like Rusty).\n\nInternally they both call ondemand_readahead(), but the page argument is\nchanged to an obvious boolean flag.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d8983910a4045fa21022cfccf76ed13eb40fd7f5",
      "tree": "81902a5157ace03a94aa4b62599a20bc87f7a1c0",
      "parents": [
        "431a4820bfcdf7ff530e745230bafb06c9bf2d6d"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Thu Jul 19 01:48:06 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:44 2007 -0700"
      },
      "message": "readahead: pass real splice size\n\nPass real splice size to page_cache_readahead_ondemand().\n\nThe splice code works in chunks of 16 pages internally.  The readahead code\nshould be told of the overall splice size, instead of the internal chunk size.\n Otherwize bad things may happen.  Imagine some 17-page random splice reads.\nThe code before this patch will result in two readahead calls: readahead(16);\nreadahead(1); That leads to one 16-page I/O and one 32-page I/O: one extra I/O\nand 31 readahead miss pages.\n\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "431a4820bfcdf7ff530e745230bafb06c9bf2d6d",
      "tree": "0b2396609deec8da5697979bce4c8ee18af254e6",
      "parents": [
        "c743d96b6d2ff55a94df7b5ac7c74987bb9c343b"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Thu Jul 19 01:48:05 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:44 2007 -0700"
      },
      "message": "readahead: move synchronous readahead call out of splice loop\n\nMove synchronous page_cache_readahead_ondemand() call out of splice loop.\n\nThis avoids one pointless page allocation/insertion in case of non-zero\nra_pages, or many pointless readahead calls in case of zero ra_pages.\n\nNote that if a user sets ra_pages to less than PIPE_BUFFERS\u003d16 pages, he will\nnot get expected readahead behavior anyway.  The splice code works in batches\nof 16 pages, which can be taken as another form of synchronous readahead.\n\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a08a166fe77d9f9ad88ed6d06b97e73453661f89",
      "tree": "ea7e8aa2936e12ee4f81c7f0c6b8b130021ebe56",
      "parents": [
        "3ea89ee86a82e9fbde37018d9b9e92a552e5fd13"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Thu Jul 19 01:48:03 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:44 2007 -0700"
      },
      "message": "readahead: convert splice invocations\n\nConvert splice reads to use on-demand readahead.\n\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nCc: Steven Pratt \u003cslpratt@austin.ibm.com\u003e\nCc: Ram Pai \u003clinuxram@us.ibm.com\u003e\nCc: Jens Axboe \u003caxboe@suse.de\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bcd4f3acbaec102e2b8000c977ecc38dcd0fe367",
      "tree": "03134513c5f47540814ee2d86cbb31523f722efa",
      "parents": [
        "56a68a500fcab9e3a9a49ca7fbef14230ab7d144"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jul 16 14:41:49 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jul 16 15:02:48 2007 +0200"
      },
      "message": "splice: direct splicing updates ppos twice\n\nOGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e reported that he\u0027s noticed\nnfsd read corruption in recent kernels, and did the hard work of\ndiscovering that it\u0027s due to splice updating the file position twice.\nThis means that the next operation would start further ahead than it\nshould.\n\nnfsd_vfs_read()\n    splice_direct_to_actor()\n        while(len) {\n            do_splice_to()                     [update sd-\u003epos]\n                -\u003e generic_file_splice_read()  [read from sd-\u003epos]\n            nfsd_direct_splice_actor()\n                -\u003e __splice_from_pipe()        [update sd-\u003epos]\n\nThere\u0027s nothing wrong with the core splice code, but the direct\nsplicing is an addon that calls both input and output paths.\nSo it has to take care in locally caching offset so it remains correct.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "51a92c0f6ce8fa85fa0e18ecda1d847e606e8066",
      "tree": "b944b46d3856948931160c8a75ee27be3417c515",
      "parents": [
        "29ce20586be54ceba49c55ae049541398cd2c416"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jul 13 14:11:43 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jul 13 14:14:31 2007 +0200"
      },
      "message": "splice: fix offset mangling with direct splicing (sendfile)\n\nIf the output actor doesn\u0027t transfer the full amount of data, we will\nincrement ppos too much. Two related bugs in there:\n\n- We need to break out and return actor() retval if it is shorted than\n  what we spliced into the pipe.\n\n- Adjust ppos only according to actor() return.\n\nAlso fix loop problem in generic_file_splice_read(), it should not keep\ngoing when data has already been transferred.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "29ce20586be54ceba49c55ae049541398cd2c416",
      "tree": "5ac0ef4c9debefff4fdacfdebab481985eb7341a",
      "parents": [
        "d3f35d98b3b87d2506289320375687c6e9bc53ed"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Jul 13 11:44:32 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jul 13 14:14:29 2007 +0200"
      },
      "message": "security: revalidate rw permissions for sys_splice and sys_vmsplice\n\nRevalidate read/write permissions for splice(2) and vmslice(2), in case\nsecurity policy has changed since the files were opened.\n\nAcked-by: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0845718dafea3e16041d270c256e8516acf4e13d",
      "tree": "5b572e9bf4a13e05d0c3a9b8c36745ef06a92d58",
      "parents": [
        "cac36bb06efe4880234524e117e0e712b10b1f16"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jun 12 20:51:32 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jul 10 08:04:16 2007 +0200"
      },
      "message": "pipe: add documentation and comments\n\nAs per Andrew Mortons request, here\u0027s a set of documentation for\nthe generic pipe_buf_operations hooks, the pipe, and pipe_buffer\nstructures.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "cac36bb06efe4880234524e117e0e712b10b1f16",
      "tree": "5220c6f2185cee1c6934cf8048975beac5bc94bb",
      "parents": [
        "d96e6e71647846e0dab097efd9b8bf3a3a556dca"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jun 14 13:10:48 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jul 10 08:04:15 2007 +0200"
      },
      "message": "pipe: change the -\u003epin() operation to -\u003econfirm()\n\nThe name \u0027pin\u0027 was badly chosen, it doesn\u0027t pin a pipe buffer\nin the most commonly used sense in the kernel. So change the\nname to \u0027confirm\u0027, after debating this issue with Hugh\nDickins a bit.\n\nA good return from -\u003econfirm() means that the buffer is really\nthere, and that the contents are good.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "932cc6d4f7c35bbf70bce8cc865b6033ff49c9c0",
      "tree": "0f4f22ec4fc55f31460dc68a293efc18077a8c12",
      "parents": [
        "d6f517568f9f5c26e7404a336c7289d5b4b293ec"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jun 21 13:10:21 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jul 10 08:04:15 2007 +0200"
      },
      "message": "splice: completely document external interface with kerneldoc\n\nAlso add fs/splice.c as a kerneldoc target with a smaller blurb that\nshould be expanded to better explain the overview of splice.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "497f9625c2bbd6a8525fb2eedb22a382a6a8253c",
      "tree": "8637f882dbe2eea6a731a6df0317a276bf2cfec3",
      "parents": [
        "d6b29d7cee064f28ca097e906de7453541351095"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jun 11 12:00:45 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jul 10 08:04:14 2007 +0200"
      },
      "message": "pipe: allow passing around of ops private pointer\n\nrelay needs this for proper consumption handling, and the network\nreceive support needs it as well to lookup the sk_buff on pipe\nrelease.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "d6b29d7cee064f28ca097e906de7453541351095",
      "tree": "16775787df194cb45b4ac712da1c240f48cae96e",
      "parents": [
        "ebf9909343392c929d9943c04f421cd42e03b530"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jun 04 09:59:47 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jul 10 08:04:14 2007 +0200"
      },
      "message": "splice: divorce the splice structure/function definitions from the pipe header\n\nWe need to move even more stuff into the header so that folks can use\nthe splice_to_pipe() implementation instead of open-coding a lot of\npipe knowledge (see relay implementation), so move to our own header\nfile finally.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "6a14b90bb6bc7cd83e2a444bf457a2ea645cbfe7",
      "tree": "c6f2788cbafd29bdf520c0b2a232818f4d62ec9d",
      "parents": [
        "c66ab6fa705e1b2887a6d9246b798bdc526839e2"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jun 14 13:08:55 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jul 10 08:04:12 2007 +0200"
      },
      "message": "vmsplice: add vmsplice-to-user support\n\nA bit of a cheat, it actually just copies the data to userspace. But\nthis makes the interface nice and symmetric and enables people to build\non splice, with room for future improvement in performance.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c66ab6fa705e1b2887a6d9246b798bdc526839e2",
      "tree": "764ece0ee44f937012dfaa1657709da548ed5b16",
      "parents": [
        "71780f59e127bb281a9302d430495ca9586c14e7"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jun 12 21:17:17 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jul 10 08:04:12 2007 +0200"
      },
      "message": "splice: abstract out actor data\n\nFor direct splicing (or private splicing), the output may not be a file.\nSo abstract out the handling into a specified actor function and put\nthe data in the splice_desc structure earlier, so we can build on top\nof that.\n\nThis is the first step in better splice handling for drivers, and also\nfor implementing vmsplice _to_ user memory.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "02676e5aee271c1f20d7d44249d26741aef1e846",
      "tree": "72394b5bfaba6b9637488a3d5aa82d7668531d95",
      "parents": [
        "00de00bdad278783b3664ad2969954a707f5944a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jun 15 13:16:13 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jun 15 13:16:13 2007 +0200"
      },
      "message": "splice: only check do_wakeup in splice_to_pipe() for a real pipe\n\nWe only ever set do_wakeup to non-zero if the pipe has an inode\nbacking, so it\u0027s pointless to check outside the pipe-\u003einode\ncheck.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "00de00bdad278783b3664ad2969954a707f5944a",
      "tree": "d96e6dd310eb42e5f6c00dcc4ad8a22f6e0a92cd",
      "parents": [
        "17ee4f49ab2c802c7818fa71c4e7e351a7230b86"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jun 15 13:14:22 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jun 15 13:14:22 2007 +0200"
      },
      "message": "splice: fix leak of pages on short splice to pipe\n\nIf the destination pipe is full and we already transferred\ndata, we break out instead of waiting for more pipe room.\nThe exit logic looks at spd-\u003enr_pages to see if we moved\neverything inside the spd container, but we decrement that\nvariable in the loop to decide when spd has emptied.\n\nInstead we want to compare to the original page count in\nthe spd, so cache that in a local variable.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "17ee4f49ab2c802c7818fa71c4e7e351a7230b86",
      "tree": "0ef214dd76cf9f95aa023021aa2f2c0173a9b41d",
      "parents": [
        "22b1a9203ea634ac0ee5240e021613da3328275f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jun 15 13:10:37 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jun 15 13:10:37 2007 +0200"
      },
      "message": "splice: adjust balance_dirty_pages_ratelimited() call\n\nAs we have potentially dirtied more than 1 page, we should indicate as\nsuch to the dirty page balancing. So call\nbalance_dirty_pages_ratelimited_nr() and pass in the approximate number\nof pages we dirtied.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "620a324b744a7d66c3c45a83042f8e7fc9fc5a04",
      "tree": "07bf593206a2f38a28ba97811572d036c32b7927",
      "parents": [
        "475ecade683566b19ebb84972de864039ac5fce3"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jun 07 09:39:42 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jun 08 08:34:11 2007 +0200"
      },
      "message": "splice: __generic_file_splice_read: fix read/truncate race\n\nOriginal patch and description from Neil Brown \u003cneilb@suse.de\u003e,\nmerged and adapted to splice branch by me. Neils text follows:\n\n__generic_file_splice_read() currently samples the i_size at the start\nand doesn\u0027t do so again unless it needs to call -\u003ereadpage to load\na page.  After -\u003ereadpage it has to re-sample i_size as a truncate\nmay have caused that page to be filled with zeros, and the read()\ncall should not see these.\n\nHowever there are other activities that might cause -\u003ereadpage to be\ncalled on a page between the time that __generic_file_splice_read()\nsamples i_size and when it finds that it has an uptodate page. These\ninclude at least read-ahead and possibly another thread performing a\nread\n\nSo we must sample i_size *after* it has an uptodate page.  Thus the\ncurrent sampling at the start and after a read can be replaced with a\nsampling before page addition into spd.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "475ecade683566b19ebb84972de864039ac5fce3",
      "tree": "cd2043c6c951c440988be8057380dfaab1ceb481",
      "parents": [
        "20d698db67059a63d217030dfd02872cb5f88dfb"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Thu Jun 07 09:36:00 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jun 08 08:34:05 2007 +0200"
      },
      "message": "splice: __generic_file_splice_read: fix i_size_read() length checks\n\n__generic_file_splice_read\u0027s partial page check, at eof after readpage,\nnot only got its calculations wrong, but also reused the loff variable:\ncausing data corruption when splicing from a non-0 offset in the file\u0027s\nlast page (revealed by ext2 -b 1024 testing on a loop of a tmpfs file).\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "20d698db67059a63d217030dfd02872cb5f88dfb",
      "tree": "7bac40911367b11ac57c51345d09df8a78b46656",
      "parents": [
        "17374ff1aa9ce2a0597416a16729474b538af443"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jun 05 11:05:11 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jun 08 08:33:59 2007 +0200"
      },
      "message": "splice: move balance_dirty_pages_ratelimited() outside of splice actor\n\nI\u0027ve seen inode related deadlocks, so move this call outside of the\nactor itself, which may hold the inode lock.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "267adc3e66c3d3c2edb89dac9eddc20ac94d646b",
      "tree": "3b46e9dd25141abc639e43381102a654020077a5",
      "parents": [
        "d366d39885b4a56eb90c7670deb46d82501579ad"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jun 08 08:33:41 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jun 08 08:33:41 2007 +0200"
      },
      "message": "splice: remove do_splice_direct() symbol export\n\nIt\u0027s only supposed to be used by do_sendfile(), which is never\nmodular. So kill the export.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "d366d39885b4a56eb90c7670deb46d82501579ad",
      "tree": "1b12e45f308ef4f24cb90dda8bd679ec058dc980",
      "parents": [
        "85f6038f2170e3335dda09c3dfb0f83110e87019"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jun 01 14:54:11 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jun 08 08:32:38 2007 +0200"
      },
      "message": "splice: move inode size check into generic_file_splice_read()\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "86aa5ac53e478c94ee39a15b6eadde1ed1317be3",
      "tree": "192b65a582b38e51584519461112ba56f533519f",
      "parents": [
        "9ae9d68cbf3fe0ec17c17c9ecaa2188ffb854a66"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue May 08 08:46:19 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue May 08 08:46:19 2007 +0200"
      },
      "message": "[PATCH] splice: always call into page_cache_readahead()\n\nDon\u0027t try to guess what the read-ahead logic will do, allow it\nto make its own decisions.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "9ae9d68cbf3fe0ec17c17c9ecaa2188ffb854a66",
      "tree": "d29b5e56b7c18c06a1a08d6e27c8862205fa2d86",
      "parents": [
        "5b94f675f57e4ff16c8fda09088d7480a84dcd91"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "fengguang.wu@gmail.com",
        "time": "Tue May 08 08:44:36 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue May 08 08:44:36 2007 +0200"
      },
      "message": "[PATCH] splice(): fix interaction with readahead\n\nEric Dumazet, thank you for disclosing this bug.\n\nReadahead logic somehow fails to populate the page range with data.\nIt can be because\n\n1) the readahead routine is not always called in the following lines of\n\nfs/splice.c:\n        if (!loff || nr_pages \u003e 1)\n                page_cache_readahead(mapping, \u0026in-\u003ef_ra, in, index, nr_pages);\n\n2) even called, page_cache_readahead() wont guarantee the pages are there.\nIt wont submit readahead I/O for pages already in the radix tree, or when\n(ra_pages \u003d\u003d 0), or after 256 cache hits.\n\nIn your case, it should be because of the retried reads, which lead to\nexcessive cache hits, and disables readahead at some time.\n\nAnd that _one_ failure of readahead blocks the whole read process.\nThe application receives EAGAIN and retries the read, but\n__generic_file_splice_read() refuse to make progress:\n\n- in the previous invocation, it has allocated a blank page and inserted it\n  into the radix tree, but never has the chance to start I/O for it: the test\n  of SPLICE_F_NONBLOCK goes before that.\n\n- in the retried invocation, the readahead code will neither get out of the\n  cache hit mode, nor will it submit I/O for an already existing page.\n\nCc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "d9993c37ef87c758d4a6e63972395b1cf8a4cb7b",
      "tree": "0396a035c6905e71b038a24459edff73dcf8c53e",
      "parents": [
        "190a4408ecb577391ea5fbd1f90148a6992a5756"
      ],
      "author": {
        "name": "Dmitriy Monakhov",
        "email": "dmonakhov@sw.ru",
        "time": "Thu Mar 29 14:24:09 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Mar 29 14:26:42 2007 +0200"
      },
      "message": "[PATCH] splice: partial write fix\n\nCurrently if partial write has happened while -\u003ecommit_write() then page\nwasn\u0027t marked as accessed and rebalanced.\n\nSigned-off-by: Monakhov Dmitriy \u003cdmonakhov@openvz.org\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "40bee44eaef91b6030037c8bb47f909181fb1edc",
      "tree": "3a11cb3bdc0bd385fddd74bc3e5a871be22bfbf1",
      "parents": [
        "08c72591636829d40bd695d43ec6d2a8191b668b"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Wed Mar 21 13:11:02 2007 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Mar 27 08:55:47 2007 +0200"
      },
      "message": "Export __splice_from_pipe()\n\nOcfs2 wants to implement it\u0027s own splice write actor so that it can better\nmanage cluster / page locks. This lets us re-use the rest of splice write\nwhile only providing our own code where it\u0027s actually important.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "08c72591636829d40bd695d43ec6d2a8191b668b",
      "tree": "ded334291dfd9b3e72727fd4d71c8036bfd911f9",
      "parents": [
        "485ddb4b9741bafb70b22e5c1f9b4f37dc3e85bd"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Mar 27 08:55:39 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Mar 27 08:55:39 2007 +0200"
      },
      "message": "2/2 splice: dont readpage\n\nSplice does not need to readpage to bring the page uptodate before writing\nto it, because prepare_write will take care of that for us.\n\nSplice is also wrong to SetPageUptodate before the page is actually uptodate.\nThis results in the old uninitialised memory leak. This gets fixed as a\nmatter of course when removing the readpage logic.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "485ddb4b9741bafb70b22e5c1f9b4f37dc3e85bd",
      "tree": "9d666e849cdf9c495d446df242d87e798d4baec9",
      "parents": [
        "1ffb96c587fa2af0d690dc3548a4a781c477bfb7"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Mar 27 08:55:08 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Mar 27 08:55:08 2007 +0200"
      },
      "message": "1/2 splice: dont steal\n\nStealing pages with splice is problematic because we cannot just insert\nan uptodate page into the pagecache and hope the filesystem can take care\nof it later.\n\nWe also cannot just ClearPageUptodate, then hope prepare_write does not\nwrite anything into the page, because I don\u0027t think prepare_write gives\nthat guarantee.\n\nRemove support for SPLICE_F_MOVE for now. If we really want to bring it\nback, we might be able to do so with a the new filesystem buffered write\naops APIs I\u0027m working on. If we really don\u0027t want to bring it back, then\nwe should decide that sooner rather than later, and remove the flag and\nall the stealing infrastructure before anybody starts using it.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "d4c3cca941b64a938eaa9734585a93547c6be323",
      "tree": "48b78bda9d4da9c3bdfb30548cb65f0bc4015733",
      "parents": [
        "426d62e2158c2fd3aa1ed1fd62122afd2ccb89ae"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Wed Dec 13 00:34:04 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:47 2006 -0800"
      },
      "message": "[PATCH] constify pipe_buf_operations\n\n- pipe/splice should use const pipe_buf_operations and file_operations\n\n- struct pipe_inode_info has an unused field \"start\" : get rid of it.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0f7fc9e4d03987fe29f6dd4aa67e4c56eb7ecb05",
      "tree": "51763269e44eb9bf4d0f8c529577489902850cf9",
      "parents": [
        "b65d34fd465f19fbe2f32f2205a9a06ca7c2bdeb"
      ],
      "author": {
        "name": "Josef \"Jeff\" Sipek",
        "email": "jsipek@cs.sunysb.edu",
        "time": "Fri Dec 08 02:36:35 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:41 2006 -0800"
      },
      "message": "[PATCH] VFS: change struct file to use struct path\n\nThis patch changes struct file to use struct path instead of having\nindependent pointers to struct dentry and struct vfsmount, and converts all\nusers of f_{dentry,vfsmnt} in fs/ to use f_path.{dentry,mnt}.\n\nAdditionally, it adds two #define\u0027s to make the transition easier for users of\nthe f_dentry and f_vfsmnt.\n\nSigned-off-by: Josef \"Jeff\" Sipek \u003cjsipek@cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ddac0d39cf437d02fde9795ae57d9c4b4c146de9",
      "tree": "36766a2ff9e4872f06d9c4e4b269758647aa3cf6",
      "parents": [
        "aaa9b971398f62ab97c1da4f7c352667eb3452c9"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sat Nov 04 12:49:32 2006 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Nov 04 08:45:39 2006 -0800"
      },
      "message": "[PATCH] splice: fix problem introduced with inode diet\n\nAfter the inode slimming patch that unionised i_pipe/i_bdev/i_cdev, it\u0027s\nno longer enough to check for existance of -\u003ei_pipe to verify that this\nis a pipe.\n\nOriginal patch from Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nFinal solution suggested by Linus.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2ae88149a27cadf2840e0ab8155bef13be285c03",
      "tree": "e6873cc050973db6f2b01568a5e1faa6c981d139",
      "parents": [
        "858cbcdd4f7a235f609249b9ca681b7ec5d786a3"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Oct 28 10:38:23 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 28 11:30:50 2006 -0700"
      },
      "message": "[PATCH] mm: clean up pagecache allocation\n\n- Consolidate page_cache_alloc\n\n- Fix splice: only the pagecache pages and filesystem data need to use\n  mapping_gfp_mask.\n\n- Fix grab_cache_page_nowait: same as splice, also honour NUMA placement.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8c34e2d63231d4bf4852bac8521883944d770fe3",
      "tree": "13e3332384bd1c5844d7827066815ae0ae75f8aa",
      "parents": [
        "01de85e057328ecbef36e108673b1e81059d54c1"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Oct 17 19:43:22 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Thu Oct 19 20:53:09 2006 +0200"
      },
      "message": "[PATCH] Remove SUID when splicing into an inode\n\nOriginally from Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\n\ngeneric_file_splice_write() does not remove S_ISUID or S_ISGID. This is\ninconsistent with the way we generally write to files.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "6da61809822c22634a3de2dcb3c60283b836a88a",
      "tree": "80bc4105a4eabb221e5b1896b2c8b915a9c90d28",
      "parents": [
        "62752ee198dca9209b7dee504763e51b11e9e0ca"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Oct 17 18:43:07 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Thu Oct 19 20:53:08 2006 +0200"
      },
      "message": "[PATCH] Introduce generic_file_splice_write_nolock()\n\nThis allows file systems to manage their own i_mutex locking while\nstill re-using the generic_file_splice_write() logic.\n\nOCFS2 in particular wants this so that it can order cluster locks within\ni_mutex.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "62752ee198dca9209b7dee504763e51b11e9e0ca",
      "tree": "5e340a4c690851dadc3a8aa395e4c0d14b4837eb",
      "parents": [
        "ce9e3d9953c8cb67001719b5516da2928e956be4"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Oct 17 10:31:38 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Thu Oct 19 20:53:08 2006 +0200"
      },
      "message": "[PATCH] Take i_mutex in splice_from_pipe()\n\nThe splice_actor may be calling -\u003eprepare_write() and -\u003ecommit_write(). We\nwant i_mutex on the inode being written to before calling those so that we\ndon\u0027t race i_size changes.\n\nThe double locking behavior is done elsewhere in splice.c, and if we\neventually want _nolock variants of generic_file_splice_write(), fs modules\nmight have to replicate the nasty locking code. We introduce\ninode_double_lock() and inode_double_unlock() to consolidate the locking\nrules into one set of functions.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e6e80f294c2688302f41959c57acfee7e131e489",
      "tree": "e09562611ebd0060c7876093b6b2ce1296e6793f",
      "parents": [
        "a22b169df1b9f259391cf3b8ad8bfeea3d7be3f1"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Oct 11 10:03:09 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Thu Oct 12 15:08:51 2006 +0200"
      },
      "message": "[PATCH] splice: fix pipe_to_file() -\u003eprepare_write() error path\n\nDon\u0027t jump to the unlock+release path, we already did that.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0fe23479577124bd2687e6783e39fa0fa4c28005",
      "tree": "954ae8c079fd10cd52bf212ca5cd2530ec5c2315",
      "parents": [
        "50be345560f1ffdcb15cc0e146416b80529a2ef2"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Sep 04 15:41:16 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:52:34 2006 +0200"
      },
      "message": "[PATCH] Update axboe@suse.de email address\n\nAs people often look for the copyright in files to see who to mail,\nupdate the link to a neutral one.\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "aadd06e5c56b9ff5117ec77e59eada43dc46e2fc",
      "tree": "16da42148eab5ebcfc821fcedd0541f35a2c318b",
      "parents": [
        "b3cf257623fabd8f1ee6700a6d328cc1c5da5a1d"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Jul 10 11:00:01 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Jul 10 11:00:01 2006 +0200"
      },
      "message": "[PATCH] splice: fix problems with sys_tee()\n\nSeveral issues noticed/fixed:\n\n- We cannot reliably block in link_pipe() while holding both input and output\n  mutexes. So do preparatory checks before locking down both mutexes and doing\n  the link.\n\n- The ipipe-\u003enrbufs vs i check was bad, because we could have dropped the\n  ipipe lock in-between. This causes us to potentially look at unknown\n  buffers if we were racing with someone else reading this pipe.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "9e94cd4fd1812bab45237f998b3c6fa1b24023fd",
      "tree": "e196939ff1df56179387f0ec440cc9ce52cf1f55",
      "parents": [
        "fd61af0384014ca29428ace7c17a978b755aeddd"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Jun 20 15:01:12 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Fri Jun 23 17:10:39 2006 +0200"
      },
      "message": "[PATCH] splice: retrieve mapping after locking the page\n\nOtherwise we could be racing with truncate/mapping removal.\n\nProblem found/fixed by Nick Piggin \u003cnpiggin@suse.de\u003e, logic rewritten\nby me.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "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"
    }
  ],
  "next": "46e678c96bbd775abd05d3ddbe2fd334794f9157"
}
