)]}'
{
  "log": [
    {
      "commit": "003386fff3e02e51cea882e60f7d28290113964c",
      "tree": "253001a9a0fc609b757362708edc2dcaab9e2a14",
      "parents": [
        "092405cdb66f060918160ae730640b449ed7b827",
        "51921cb746f56983db5a373ca68deb2b0d3ddf01"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 30 09:16:14 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 30 09:16:14 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:\n  mm: export generic_pipe_buf_*() to modules\n  fuse: support splice() reading from fuse device\n  fuse: allow splice to move pages\n  mm: export remove_from_page_cache() to modules\n  mm: export lru_cache_add_*() to modules\n  fuse: support splice() writing to fuse device\n  fuse: get page reference for readpages\n  fuse: use get_user_pages_fast()\n  fuse: remove unneeded variable\n"
    },
    {
      "commit": "cc967be54710d97c05229b2e5ba2d00df84ddd64",
      "tree": "f2b5f79ee07f16abe92f27c6663dea4339d2f437",
      "parents": [
        "ea635c64e007061f6468ece5cc9cc62d41d4ecf2"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Wed May 26 17:54:39 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 27 22:03:09 2010 -0400"
      },
      "message": "fs: Add missing mutex_unlock\n\nAdd a mutex_unlock missing on the error path.  At other exists from the\nfunction that return an error flag, the mutex is unlocked, so do the same\nhere.\n\nThe semantic match that finds this problem is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@\nexpression E1;\n@@\n\n* mutex_lock(E1,...);\n  \u003c+... when !\u003d E1\n  if (...) {\n    ... when !\u003d E1\n*   return ...;\n  }\n  ...+\u003e\n* mutex_unlock(E1,...);\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "51921cb746f56983db5a373ca68deb2b0d3ddf01",
      "tree": "7ccd1100f18d9a17fd3feafc6346d5e5c58203b9",
      "parents": [
        "c3021629a0d820247ee12b6c5192a1d5380e21c6"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed May 26 08:44:22 2010 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed May 26 08:44:22 2010 +0200"
      },
      "message": "mm: export generic_pipe_buf_*() to modules\n\nThis is needed by fuse device code which wants to create pipe buffers.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "b492e95be0ae672922f4734acf3f5d35c30be948",
      "tree": "a8a1e7f035903796e6b8f626add8d269bf989a35",
      "parents": [
        "35f3d14dbbc58447c61e38a162ea10add6b31dc7"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed May 19 21:03:16 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 21 21:12:52 2010 +0200"
      },
      "message": "pipe: set lower and upper limit on max pages in the pipe page array\n\nWe need at least two to guarantee proper POSIX behaviour, so\nnever allow a smaller limit than that.\n\nAlso expose a /proc/sys/fs/pipe-max-pages sysctl file that allows\nroot to define a sane upper limit. Make it default to 16 times the\ndefault size, which is 16 pages.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "35f3d14dbbc58447c61e38a162ea10add6b31dc7",
      "tree": "3e03cd540b7dcdac82195c4e76862c0ce6daaaf0",
      "parents": [
        "3d42b3612891baecf709d93f28655a6882a65d41"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu May 20 10:43:18 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 21 21:12:40 2010 +0200"
      },
      "message": "pipe: add support for shrinking and growing pipes\n\nThis patch adds F_GETPIPE_SZ and F_SETPIPE_SZ fcntl() actions for\ngrowing and shrinking the size of a pipe and adjusts pipe.c and splice.c\n(and relay and network splice) usage to work with these larger (or smaller)\npipes.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a3a065e3f13da8a3470ed09c7f38aad256083726",
      "tree": "03e36f66709fe3d1679b0f0036f2ad3449d92dee",
      "parents": [
        "b9aff027b2c1d6019d237382c78fd396f9de2ea5"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Nov 18 05:30:19 2009 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 17 10:51:40 2009 -0500"
      },
      "message": "fs: no games with DCACHE_UNHASHED\n\nFilesystems outside the regular namespace do not have to clear DCACHE_UNHASHED\nin order to have a working /proc/$pid/fd/XXX. Nothing in proc prevents the\nfd link from being used if its dentry is not in the hash.\n\nAlso, it does not get put into the dcache hash if DCACHE_UNHASHED is clear;\nthat depends on the filesystem calling d_add or d_rehash.\n\nSo delete the misleading comments and needless code.\n\nAcked-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d231412db66355e72d606f8403ee8b6bd8ad4f9a",
      "tree": "d27282bbe879c2b0d0977594990c8e0701509df1",
      "parents": [
        "2c48b9c45579a9b5e3e74694eebf3d2451f3dbd3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Aug 09 01:01:37 2009 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 12:16:43 2009 -0500"
      },
      "message": "switch create_read_pipe() to alloc_file()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2c48b9c45579a9b5e3e74694eebf3d2451f3dbd3",
      "tree": "cecbf786ae0650368a8136bdd90910e05d9b95c3",
      "parents": [
        "a95161aaa801c18c52b2e7cf3d6b4b141c00a20a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Aug 09 00:52:35 2009 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 12:16:42 2009 -0500"
      },
      "message": "switch alloc_file() to passing struct path\n\n... and have the caller grab both mnt and dentry; kill\nleak in infiniband, while we are at it.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ad3960243e55320d74195fb85c975e0a8cc4466c",
      "tree": "e17b79f2bc7a2fd76d8598fb0075f8c78cd5714a",
      "parents": [
        "2fdc246aaf9a7fa088451ad2a72e9119b5f7f029"
      ],
      "author": {
        "name": "Earl Chew",
        "email": "earl_chew@agilent.com",
        "time": "Mon Oct 19 15:55:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 22 08:11:44 2009 +0900"
      },
      "message": "fs: pipe.c null pointer dereference\n\nThis patch fixes a null pointer exception in pipe_rdwr_open() which\ngenerates the stack trace:\n\n\u003e Unable to handle kernel NULL pointer dereference at 0000000000000028 RIP:\n\u003e  [\u003cffffffff802899a5\u003e] pipe_rdwr_open+0x35/0x70\n\u003e  [\u003cffffffff8028125c\u003e] __dentry_open+0x13c/0x230\n\u003e  [\u003cffffffff8028143d\u003e] do_filp_open+0x2d/0x40\n\u003e  [\u003cffffffff802814aa\u003e] do_sys_open+0x5a/0x100\n\u003e  [\u003cffffffff8021faf3\u003e] sysenter_do_call+0x1b/0x67\n\nThe failure mode is triggered by an attempt to open an anonymous\npipe via /proc/pid/fd/* as exemplified by this script:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nwhile : ; do\n   { echo y ; sleep 1 ; } | { while read ; do echo z$REPLY; done ; } \u0026\n   PID\u003d$!\n   OUT\u003d$(ps -efl | grep \u0027sleep 1\u0027 | grep -v grep |\n        { read PID REST ; echo $PID; } )\n   OUT\u003d\"${OUT%% *}\"\n   DELAY\u003d$((RANDOM * 1000 / 32768))\n   usleep $((DELAY * 1000 + RANDOM % 1000 ))\n   echo n \u003e /proc/$OUT/fd/1                 # Trigger defect\ndone\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nNote that the failure window is quite small and I could only\nreliably reproduce the defect by inserting a small delay\nin pipe_rdwr_open(). For example:\n\n static int\n pipe_rdwr_open(struct inode *inode, struct file *filp)\n {\n       msleep(100);\n       mutex_lock(\u0026inode-\u003ei_mutex);\n\nAlthough the defect was observed in pipe_rdwr_open(), I think it\nmakes sense to replicate the change through all the pipe_*_open()\nfunctions.\n\nThe core of the change is to verify that inode-\u003ei_pipe has not\nbeen released before attempting to manipulate it. If inode-\u003ei_pipe\nis no longer present, return ENOENT to indicate so.\n\nThe comment about potentially using atomic_t for i_pipe-\u003ereaders\nand i_pipe-\u003ewriters has also been removed because it is no longer\nrelevant in this context. The inode-\u003ei_mutex lock must be used so\nthat inode-\u003ei_pipe can be dealt with correctly.\n\nSigned-off-by: Earl Chew \u003cearl_chew@agilent.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "023d43c7b5a23a81fe8afa9f37296f8ed4be11fb",
      "tree": "a817c4765d17c5d7facb66ae43cbc2b04c28c05b",
      "parents": [
        "aea1f7964ae6cba5eb419a958956deb9016b3341"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Tue Jul 21 10:09:23 2009 +0200"
      },
      "committer": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Jul 22 21:14:14 2009 +0200"
      },
      "message": "lockdep: Fix lockdep annotation for pipe_double_lock()\n\nThe presumed use of the pipe_double_lock() routine is to lock 2 locks in\na deadlock free way by ordering the locks by their address. However it\nfails to keep the specified lock classes in order and explicitly\nannotates a deadlock.\n\nRectify this.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nLKML-Reference: \u003c1248163763.15751.11098.camel@twins\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": "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": "3ae5080f4c2e293229508dabe7c8a90af4e4c460",
      "tree": "9cb11f26905a82b7fac9d3b8f9d61d58bc5c94b0",
      "parents": [
        "2c9e15a011c55ff96b2b8d2b126d1b9a96abba20",
        "aabb8fdb41128705fd1627f56fdd571e45fdbcdb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 27 16:23:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 27 16:23:12 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (37 commits)\n  fs: avoid I_NEW inodes\n  Merge code for single and multiple-instance mounts\n  Remove get_init_pts_sb()\n  Move common mknod_ptmx() calls into caller\n  Parse mount options just once and copy them to super block\n  Unroll essentials of do_remount_sb() into devpts\n  vfs: simple_set_mnt() should return void\n  fs: move bdev code out of buffer.c\n  constify dentry_operations: rest\n  constify dentry_operations: configfs\n  constify dentry_operations: sysfs\n  constify dentry_operations: JFS\n  constify dentry_operations: OCFS2\n  constify dentry_operations: GFS2\n  constify dentry_operations: FAT\n  constify dentry_operations: FUSE\n  constify dentry_operations: procfs\n  constify dentry_operations: ecryptfs\n  constify dentry_operations: CIFS\n  constify dentry_operations: AFS\n  ...\n"
    },
    {
      "commit": "3ba13d179e8c24c68eac32b93593a6b10fcd1572",
      "tree": "732162ba9ddfe66c8e892a25765cb30f0807cf31",
      "parents": [
        "296c2d86635bd6ecd8f282dfff18bb68fb4fc512"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 20 06:02:22 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:03 2009 -0400"
      },
      "message": "constify dentry_operations: rest\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "10f303ae1e5e77a9f7cb053e6329906afb132c67",
      "tree": "720e7d57a46da824f217ab0dc5b2682814aadfa4",
      "parents": [
        "723be1f30046a46471b00106ebef9d8c832f12e9"
      ],
      "author": {
        "name": "Cheng Renquan",
        "email": "crquan@gmail.com",
        "time": "Wed Jan 14 17:01:33 2009 +0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:43:58 2009 -0400"
      },
      "message": "do_pipe cleanup: drop its last user in arch/alpha/\n\nThe last user of do_pipe is in arch/alpha/, after replacing it with\ndo_pipe_flags, the do_pipe can be totally dropped.\n\nSigned-off-by: Cheng Renquan \u003ccrquan@gmail.com\u003e\nAcked-by: Richard Henderson \u003crth@twiddle.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "60aa49243d09afc873f082567d2e3c16634ced84",
      "tree": "bb7c8d9668b35a3aa4e90d0a62500ac9d3e67f7f",
      "parents": [
        "76398425bb06b07cc3a3b1ce169c67dc9d6874ed"
      ],
      "author": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Sun Feb 01 14:52:56 2009 -0700"
      },
      "committer": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Mon Mar 16 08:34:35 2009 -0600"
      },
      "message": "Rationalize fasync return values\n\nMost fasync implementations do something like:\n\n     return fasync_helper(...);\n\nBut fasync_helper() will return a positive value at times - a feature used\nin at least one place.  Thus, a number of other drivers do:\n\n     err \u003d fasync_helper(...);\n     if (err \u003c 0)\n             return err;\n     return 0;\n\nIn the interests of consistency and more concise code, it makes sense to\nmap positive return values onto zero where -\u003efasync() is called.\n\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nSigned-off-by: Jonathan Corbet \u003ccorbet@lwn.net\u003e\n"
    },
    {
      "commit": "e5bc49ba7439b9726006d031d440cba96819f0f8",
      "tree": "103c02a297e4c7ba3ba1fd3c90a6bd2d6687f511",
      "parents": [
        "8d0df7a3d1ecbaf5d5602a59055c8ca993855bed"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Mar 12 14:31:28 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:20:23 2009 -0700"
      },
      "message": "pipe_rdwr_fasync: fix the error handling to prevent the leak/crash\n\nIf the second fasync_helper() fails, pipe_rdwr_fasync() returns the error\nbut leaves the file on -\u003efasync_readers.\n\nThis was always wrong, but since 233e70f4228e78eb2f80dc6650f65d3ae3dbf17c\n\"saner FASYNC handling on file close\" we have the new problem.  Because in\nthis case setfl() doesn\u0027t set FASYNC bit, __fput() will not do\n-\u003efasync(0), and we leak fasync_struct with -\u003efa_file pointing to the\nfreed file.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Jonathan Corbet \u003ccorbet@lwn.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2b66421995d2e93c9d1a0111acf2581f8529c6e5",
      "tree": "6e22e752ab4e24b9b1c6b1ddfd2b30a3c9e58893",
      "parents": [
        "d4e82042c4cfa87a7d51710b71f568fe80132551"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:14:35 2009 +0100"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:15:32 2009 +0100"
      },
      "message": "[CVE-2009-0029] System call wrappers part 33\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "d4e82042c4cfa87a7d51710b71f568fe80132551",
      "tree": "202c311b52f4e4db9fbbbd80607744e2aa2e5885",
      "parents": [
        "836f92adf121f806e9beb5b6b88bd5c9c4ea3f24"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:14:34 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 32\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "1134723e96f6e2abcf8bfd7a2d1c96fcc323ef35",
      "tree": "7a056eb6845609e298568190603b71801f7e7e8f",
      "parents": [
        "e55380edf68796d75bf41391a781c68ee678587d"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:13:56 2009 +0100"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:15:15 2009 +0100"
      },
      "message": "[CVE-2009-0029] Remove __attribute__((weak)) from sys_pipe/sys_pipe2\n\nRemove __attribute__((weak)) from common code sys_pipe implemantation.\nIA64, ALPHA, SUPERH (32bit) and SPARC (32bit) have own implemantations\nwith the same name. Just rename them.\nFor sys_pipe2 there is no architecture specific implementation.\n\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "157cf649a735a2f7e8dba0ed08e6e38b6c30d886",
      "tree": "85895367c24023d363d5ee7b5ed2fb16eaf08721",
      "parents": [
        "564f6993ffef656aebaf46cf2f1f6cb4f5c97207"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Dec 14 04:57:47 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 04 15:14:41 2009 -0500"
      },
      "message": "sanitize audit_fd_pair()\n\n* no allocations\n* return void\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "da9592edebceeba1b9301beafe80ec8b9c2db0ce",
      "tree": "00c110cd8ff6d211d76ab4868b6175096a38aad5",
      "parents": [
        "82ab8deda7fef36f067ccdeacc3b3caefc970f89"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:05 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:05 2008 +1100"
      },
      "message": "CRED: Wrap task credential accesses in the filesystem subsystem\n\nWrap access to task credentials so that they can be separated more easily from\nthe task_struct during the introduction of COW creds.\n\nChange most current-\u003e(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id().\n\nChange some task-\u003ee?[ug]id to task_e?[ug]id().  In some places it makes more\nsense to use RCU directly rather than a convenient wrapper; these will be\naddressed by later patches.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "233e70f4228e78eb2f80dc6650f65d3ae3dbf17c",
      "tree": "4e18fbe1851e6d2161b7f18265cb21f8a61e3ce7",
      "parents": [
        "3318a386e4ca68c76e0294363d29bdc46fcad670"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Fri Oct 31 23:28:30 2008 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Nov 01 09:49:46 2008 -0700"
      },
      "message": "saner FASYNC handling on file close\n\nAs it is, all instances of -\u003erelease() for files that have -\u003efasync()\nneed to remember to evict file from fasync lists; forgetting that\ncreates a hole and we actually have a bunch that *does* forget.\n\nSo let\u0027s keep our lives simple - let __fput() check FASYNC in\nfile-\u003ef_flags and call -\u003efasync() there if it\u0027s been set.  And lose that\ncrap in -\u003erelease() instances - leaving it there is still valid, but we\ndon\u0027t have to bother anymore.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d2d9648ec6858e19d16a0b16da62534e85888653",
      "tree": "ba3d66e3ed90ef56ec58e699beeb487db930375b",
      "parents": [
        "d70b67c8bc72ee23b55381bd6a884f4796692f77"
      ],
      "author": {
        "name": "Denys Vlasenko",
        "email": "vda.linux@googlemail.com",
        "time": "Tue Jul 01 14:16:09 2008 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 26 20:53:06 2008 -0400"
      },
      "message": "[PATCH] reuse xxx_fifo_fops for xxx_pipe_fops\n\nMerge fifo and pipe file_operations.\n\nSigned-off-by: Denys Vlasenko \u003cvda.linux@googlemail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "be61a86d7237dd80510615f38ae21d6e1e98660c",
      "tree": "3dfe6c8275c724533f88525970a4065ae795f6e3",
      "parents": [
        "6b1ef0e60d42f2fdaec26baee8327eb156347b4f"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Wed Jul 23 21:29:40 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:29 2008 -0700"
      },
      "message": "flag parameters: NONBLOCK in pipe\n\nThis patch adds O_NONBLOCK support to pipe2.  It is minimally more involved\nthan the patches for eventfd et.al but still trivial.  The interfaces of the\ncreate_write_pipe and create_read_pipe helper functions were changed and the\none other caller as well.\n\nThe following test must be adjusted for architectures other than x86 and\nx86-64 and in case the syscall numbers changed.\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n#include \u003cfcntl.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003csys/syscall.h\u003e\n\n#ifndef __NR_pipe2\n# ifdef __x86_64__\n#  define __NR_pipe2 293\n# elif defined __i386__\n#  define __NR_pipe2 331\n# else\n#  error \"need __NR_pipe2\"\n# endif\n#endif\n\nint\nmain (void)\n{\n  int fds[2];\n  if (syscall (__NR_pipe2, fds, 0) \u003d\u003d -1)\n    {\n      puts (\"pipe2(0) failed\");\n      return 1;\n    }\n  for (int i \u003d 0; i \u003c 2; ++i)\n    {\n      int fl \u003d fcntl (fds[i], F_GETFL);\n      if (fl \u003d\u003d -1)\n        {\n          puts (\"fcntl failed\");\n          return 1;\n        }\n      if (fl \u0026 O_NONBLOCK)\n        {\n          printf (\"pipe2(0) set non-blocking mode for fds[%d]\\n\", i);\n          return 1;\n        }\n      close (fds[i]);\n    }\n\n  if (syscall (__NR_pipe2, fds, O_NONBLOCK) \u003d\u003d -1)\n    {\n      puts (\"pipe2(O_NONBLOCK) failed\");\n      return 1;\n    }\n  for (int i \u003d 0; i \u003c 2; ++i)\n    {\n      int fl \u003d fcntl (fds[i], F_GETFL);\n      if (fl \u003d\u003d -1)\n        {\n          puts (\"fcntl failed\");\n          return 1;\n        }\n      if ((fl \u0026 O_NONBLOCK) \u003d\u003d 0)\n        {\n          printf (\"pipe2(O_NONBLOCK) does not set non-blocking mode for fds[%d]\\n\", i);\n          return 1;\n        }\n      close (fds[i]);\n    }\n\n  puts (\"OK\");\n\n  return 0;\n}\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ed8cae8ba01348bfd83333f4648dd807b04d7f08",
      "tree": "c71a1c8e771c1c55728bb7c40612fbdcefbc858a",
      "parents": [
        "336dd1f70ff62d7dd8655228caed4c5bfc818c56"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Wed Jul 23 21:29:30 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:28 2008 -0700"
      },
      "message": "flag parameters: pipe\n\nThis patch introduces the new syscall pipe2 which is like pipe but it also\ntakes an additional parameter which takes a flag value.  This patch implements\nthe handling of O_CLOEXEC for the flag.  I did not add support for the new\nsyscall for the architectures which have a special sys_pipe implementation.  I\nthink the maintainers of those archs have the chance to go with the unified\nimplementation but that\u0027s up to them.\n\nThe implementation introduces do_pipe_flags.  I did that instead of changing\nall callers of do_pipe because some of the callers are written in assembler.\nI would probably screw up changing the assembly code.  To avoid breaking code\ndo_pipe is now a small wrapper around do_pipe_flags.  Once all callers are\nchanged over to do_pipe_flags the old do_pipe function can be removed.\n\nThe following test must be adjusted for architectures other than x86 and\nx86-64 and in case the syscall numbers changed.\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n#include \u003cfcntl.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003csys/syscall.h\u003e\n\n#ifndef __NR_pipe2\n# ifdef __x86_64__\n#  define __NR_pipe2 293\n# elif defined __i386__\n#  define __NR_pipe2 331\n# else\n#  error \"need __NR_pipe2\"\n# endif\n#endif\n\nint\nmain (void)\n{\n  int fd[2];\n  if (syscall (__NR_pipe2, fd, 0) !\u003d 0)\n    {\n      puts (\"pipe2(0) failed\");\n      return 1;\n    }\n  for (int i \u003d 0; i \u003c 2; ++i)\n    {\n      int coe \u003d fcntl (fd[i], F_GETFD);\n      if (coe \u003d\u003d -1)\n        {\n          puts (\"fcntl failed\");\n          return 1;\n        }\n      if (coe \u0026 FD_CLOEXEC)\n        {\n          printf (\"pipe2(0) set close-on-exit for fd[%d]\\n\", i);\n          return 1;\n        }\n    }\n  close (fd[0]);\n  close (fd[1]);\n\n  if (syscall (__NR_pipe2, fd, O_CLOEXEC) !\u003d 0)\n    {\n      puts (\"pipe2(O_CLOEXEC) failed\");\n      return 1;\n    }\n  for (int i \u003d 0; i \u003c 2; ++i)\n    {\n      int coe \u003d fcntl (fd[i], F_GETFD);\n      if (coe \u003d\u003d -1)\n        {\n          puts (\"fcntl failed\");\n          return 1;\n        }\n      if ((coe \u0026 FD_CLOEXEC) \u003d\u003d 0)\n        {\n          printf (\"pipe2(O_CLOEXEC) does not set close-on-exit for fd[%d]\\n\", i);\n          return 1;\n        }\n    }\n  close (fd[0]);\n  close (fd[1]);\n\n  puts (\"OK\");\n\n  return 0;\n}\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nCc: \u003clinux-arch@vger.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": "c8e7f449b225ee6c87454ac069f0a041035c5140",
      "tree": "9f89ed29958a58fb6010ca60d7ce1f9d7a747b3c",
      "parents": [
        "c70f84417429f41519be0197a1092a53c2201f47"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Mon Jun 09 16:40:35 2008 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 23 11:52:29 2008 -0400"
      },
      "message": "[patch 1/4] vfs: path_{get,put}() cleanups\n\nHere are some more places where path_{get,put}() can be used instead of\ndput()/mntput() pair.\n\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ba719baeabbff5476eeb91c223e6921ba29e1490",
      "tree": "f3023d34b9ca087412839f6b5937478d49e567ec",
      "parents": [
        "c1236d31a1b9fc018b85e15a3e58e3601ddc90ae"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Tue May 06 20:42:38 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 08 10:46:56 2008 -0700"
      },
      "message": "sys_pipe(): fix file descriptor leaks\n\nRemember to close the files if copy_to_user() failed.\n\nSpotted by dm.n9107@gmail.com.\n\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nCc: DM \u003cdm.n9107@gmail.com\u003e\nCc: \u003cstable@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": "d35c7b0e54a596c5a8134d75999b7f391a9c6550",
      "tree": "697bb89dbeccae28eb928b2589f500d747ed38ec",
      "parents": [
        "2ddcca36c8bcfa251724fe342c8327451988be0d"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Sat May 03 15:10:37 2008 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 03 13:50:33 2008 -0700"
      },
      "message": "unified (weak) sys_pipe implementation\n\nThis replaces the duplicated arch-specific versions of \"sys_pipe()\" with\none unified implementation.  This removes almost 250 lines of duplicated\ncode.\n\nIt\u0027s marked __weak, so that *if* an architecture wants to override the\ndefault implementation it can do so by simply having its own replacement\nversion, since many architectures use alternate calling conventions for\nthe \u0027pipe()\u0027 system call for legacy reasons (ie traditional UNIX\nimplementations often return the two file descriptors in registers)\n\nI still haven\u0027t changed the cris version even though Linus says the BKL\nisn\u0027t needed.  The arch maintainer can easily do it if there are really\nno obstacles.\n\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ed1524371716466e9c762808b02601d0d0276a92",
      "tree": "73a9f836f54164f70649a318fe775638c79417b8",
      "parents": [
        "521b5d0c40386f4a9805cdec7bd979fc96a86aeb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Apr 22 19:51:27 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Apr 22 19:54:57 2008 -0400"
      },
      "message": "[PATCH] double-free of inode on alloc_file() failure exit in create_write_pipe()\n\nDuh...  Fortunately, the bug is quite recent (post-2.6.25) and, embarrassingly,\nmine ;-/\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "430e285e0817e3e18aadd814bc078d50d8af0cbf",
      "tree": "cbd008864e18e76a7e2984bfd1898028762fd19a",
      "parents": [
        "322ee5b36eac42e762526b0df7fa432beba6e7a0"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Fri Feb 15 14:37:26 2008 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 19 06:54:05 2008 -0400"
      },
      "message": "[PATCH] fix up new filp allocators\n\nSome new uses of get_empty_filp() have crept in; switched\nto alloc_file() to make sure that pieces of initialization\nwon\u0027t be missing.\n\nWe really need to kill get_empty_filp().\n\n[AV] fixed dentry leak on failure exit in anon_inode_getfd()\n\nCc: Erez Zadok \u003cezk@cs.sunysb.edu\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J Bruce Fields\" \u003cbfields@fieldses.org\u003e\nAcked-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b51d63c6d3078f47c26bcf7584b5c3ebea2defd0",
      "tree": "b5f0fc442b8e566854bd91264d2a7560c991ccde",
      "parents": [
        "55265b00ad423898bb743bce515f073c3f290bdb"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Wed Feb 13 15:03:22 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 13 16:21:19 2008 -0800"
      },
      "message": "kernel-doc: fix fs/pipe.c notation\n\nFix several kernel-doc notation errors in fs/pipe.c.\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d59d0b1b88c5b0f9cec219d236758d8882a59d6b",
      "tree": "e8af344ea9a75e25f583e2c90eb98469b8dcfaca",
      "parents": [
        "de5c9edee7a3cfdc6dd1a31c4794dc41ef3c70f9"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Fri Feb 08 04:21:23 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:38 2008 -0800"
      },
      "message": "BKL-Removal: convert pipe to use unlocked_ioctl too\n\nNo BKL needed in pipe_ioctl\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "71e20f1873d46e138c26ce83f8fe54b7221f572f",
      "tree": "3b5c5083d3ffcf7c9d7ddad81acf30c09197ef99",
      "parents": [
        "d172fcd3ae1ca7ac27ec8904242fd61e0e11d332"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 15 17:00:19 2007 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 15 17:00:19 2007 +0200"
      },
      "message": "sched: affine sync wakeups\n\nmake sync wakeups affine for cache-cold tasks: if a cache-cold task\nis woken up by a sync wakeup then use the opportunity to migrate it\nstraight away. (the two tasks are \u0027related\u0027 because they communicate)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "af92723262f3e0c431083f668b605a1dcdbe8f3d",
      "tree": "872eb5c473fabdbe0b67b309805e3f705c759d93",
      "parents": [
        "a2a2d680735ad7c3b5250704b3863abf54ff4020"
      ],
      "author": {
        "name": "Mike Galbraith",
        "email": "efault@gmx.de",
        "time": "Mon Oct 15 17:00:13 2007 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 15 17:00:13 2007 +0200"
      },
      "message": "sched: cleanup, remove the TASK_NONINTERACTIVE flag\n\nHere\u0027s another piece of low hanging obsolete fruit.\n\nRemove obsolete TASK_NONINTERACTIVE.\n\nSigned-off-by: Mike Galbraith \u003cefault@gmx.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\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": "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": "c23fbb6bcb3eb9cdf39a103edadf57bde8ce309c",
      "tree": "d79ab2278774de2c1a8061aa948ed068902e87b4",
      "parents": [
        "2793274298c4423d79701e9a8190f2940bf3c785"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Tue May 08 00:26:18 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:03 2007 -0700"
      },
      "message": "VFS: delay the dentry name generation on sockets and pipes\n\n1) Introduces a new method in \u0027struct dentry_operations\u0027.  This method\n   called d_dname() might be called from d_path() to build a pathname for\n   special filesystems.  It is called without locks.\n\n   Future patches (if we succeed in having one common dentry for all\n   pipes/sockets) may need to change prototype of this method, but we now\n   use : char *d_dname(struct dentry *dentry, char *buffer, int buflen);\n\n2) Adds a dynamic_dname() helper function that eases d_dname() implementations\n\n3) Defines d_dname method for sockets : No more sprintf() at socket\n   creation.  This is delayed up to the moment someone does an access to\n   /proc/pid/fd/...\n\n4) Defines d_dname method for pipes : No more sprintf() at pipe\n   creation.  This is delayed up to the moment someone does an access to\n   /proc/pid/fd/...\n\nA benchmark consisting of 1.000.000 calls to pipe()/close()/close() gives a\n*nice* speedup on my Pentium(M) 1.6 Ghz :\n\n3.090 s instead of 3.450 s\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "db3495099d3d52854b13874905af6e40a91f4721",
      "tree": "5a832081d70dd9dabda3498baf40b7d6ced47f24",
      "parents": [
        "6a01b07fae482f9b34491b317056c89d3b96ca2e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Feb 07 01:48:00 2007 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Feb 17 21:30:15 2007 -0500"
      },
      "message": "[PATCH] AUDIT_FD_PAIR\n\nProvide an audit record of the descriptor pair returned by pipe() and\nsocketpair().  Rewritten from the original posted to linux-audit by\nJohn D. Ramsdell \u003cramsdell@mitre.org\u003e\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5ccac88eeb5659c716af8e695e2943509c80d172",
      "tree": "396ef0d405c27e7c22f993c69af752ef3142a125",
      "parents": [
        "ba6d8b1eba88665d12edd53385d3e26fce5613a3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Mon Dec 18 13:31:18 2006 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 21 00:16:03 2006 -0800"
      },
      "message": "[PATCH] fix leaks on pipe(2) failure exits\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\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": "d18de5a2721f84ffd6a5d637915746ed47becc1c",
      "tree": "85fa93f5a2003746792931463ed41b7a19cc8632",
      "parents": [
        "1c69d921ed9cc6593ad4f60c0f9951cb0d62b0b4"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Wed Dec 06 20:38:45 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:41 2006 -0800"
      },
      "message": "[PATCH] don\u0027t insert pipe dentries into dentry_hashtable.\n\nWe currently insert pipe dentries into the global dentry hashtable.  This\nis suboptimal because there is currently no way these entries can be used\nfor a lookup().  (/proc/xxx/fd/xxx uses a different mechanism).  Inserting\nthem in dentry hashtable slows dcache lookups.\n\nTo let __dpath() still work correctly (ie not adding a \" (deleted)\") after\ndentry name, we do :\n\n - Right after d_alloc(), pretend they are hashed by clearing the\n   DCACHE_UNHASHED bit.\n\n - Call d_instantiate() instead of d_add() : dentry is not inserted in\n   hash table.\n\n__dpath() \u0026 friends work as intended during dentry lifetime.\n\n - At dismantle time, once dput() must clear the dentry, setting again\n   DCACHE_UNHASHED bit inside the custom d_delete() function provided by\n   pipe code, so that dput() can just kill_it.\n\nThis patch, combined with (avoid RCU for never hashed dentries) reduced\ntime of { pipe(p); close(p[0]); close(p[1]);} on my UP machine (1.6GHz\nPentium-M) from 3.23 us to 2.86 us (But this patch does not depend on other\npatches, only bench results)\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nAcked-by: David Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d6cbd281d189977b38eac7eb2a4678de19b6b483",
      "tree": "f853d303687275cd4328bfac53780b7c7c2c67ef",
      "parents": [
        "65da4d81f48e092f71feaf04bf2ccd096b5a5171"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Sat Sep 30 23:29:26 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:33 2006 -0700"
      },
      "message": "[PATCH] Some cleanup in the pipe code\n\nSplit the big and hard to read do_pipe function into smaller pieces.\n\nThis creates new create_write_pipe/free_write_pipe/create_read_pipe\nfunctions.  These functions are made global so that they can be used by\nother parts of the kernel.\n\nThe resulting code is more generic and easier to read and has cleaner error\nhandling and less gotos.\n\n[akpm@osdl.org: cleanup]\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ee0b3e671baff681d69fbf0db33b47603c0a8280",
      "tree": "3202ff815b2196c6c353bc5b28d7a2800df273ec",
      "parents": [
        "027445c37282bc1ed26add45e573ad2d3e4860a5"
      ],
      "author": {
        "name": "Badari Pulavarty",
        "email": "pbadari@us.ibm.com",
        "time": "Sat Sep 30 23:28:47 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:28 2006 -0700"
      },
      "message": "[PATCH] Remove readv/writev methods and use aio_read/aio_write instead\n\nThis patch removes readv() and writev() methods and replaces them with\naio_read()/aio_write() methods.\n\nSigned-off-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ba52de123d454b57369f291348266d86f4b35070",
      "tree": "3973f3f3c853b5857b6b64a027cadd4fe954e3b9",
      "parents": [
        "577c4eb09d1034d0739e3135fd2cff50588024be"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 27 01:50:49 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:18 2006 -0700"
      },
      "message": "[PATCH] inode-diet: Eliminate i_blksize from the inode structure\n\nThis eliminates the i_blksize field from struct inode.  Filesystems that want\nto provide a per-inode st_blksize can do so by providing their own getattr\nroutine instead of using the generic_fillattr() function.\n\nNote that some filesystems were providing pretty much random (and incorrect)\nvalues for i_blksize.\n\n[bunk@stusta.de: cleanup]\n[akpm@osdl.org: generic_fillattr() fix]\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "454e2398be9b9fa30433fccc548db34d19aa9958",
      "tree": "1f61cb0c3716a33b661cfc8977e9beeb480a322c",
      "parents": [
        "1ad5544098a69d7dc1fa508cbb17e13a7a952fd8"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jun 23 02:02:57 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:45 2006 -0700"
      },
      "message": "[PATCH] VFS: Permit filesystem to override root dentry on mount\n\nExtend the get_sb() filesystem operation to take an extra argument that\npermits the VFS to pass in the target vfsmount that defines the mountpoint.\n\nThe filesystem is then required to manually set the superblock and root dentry\npointers.  For most filesystems, this should be done with simple_set_mnt()\nwhich will set the superblock pointer and then set the root dentry to the\nsuperblock\u0027s s_root (as per the old default behaviour).\n\nThe get_sb() op now returns an integer as there\u0027s now no need to return the\nsuperblock pointer.\n\nThis patch permits a superblock to be implicitly shared amongst several mount\npoints, such as can be done with NFS to avoid potential inode aliasing.  In\nsuch a case, simple_set_mnt() would not be called, and instead the mnt_root\nand mnt_sb would be set directly.\n\nThe patch also makes the following changes:\n\n (*) the get_sb_*() convenience functions in the core kernel now take a vfsmount\n     pointer argument and return an integer, so most filesystems have to change\n     very little.\n\n (*) If one of the convenience function is not used, then get_sb() should\n     normally call simple_set_mnt() to instantiate the vfsmount. This will\n     always return 0, and so can be tail-called from get_sb().\n\n (*) generic_shutdown_super() now calls shrink_dcache_sb() to clean up the\n     dcache upon superblock destruction rather than shrink_dcache_anon().\n\n     This is required because the superblock may now have multiple trees that\n     aren\u0027t actually bound to s_root, but that still need to be cleaned up. The\n     currently called functions assume that the whole tree is rooted at s_root,\n     and that anonymous dentries are not the roots of trees which results in\n     dentries being left unculled.\n\n     However, with the way NFS superblock sharing are currently set to be\n     implemented, these assumptions are violated: the root of the filesystem is\n     simply a dummy dentry and inode (the real inode for \u0027/\u0027 may well be\n     inaccessible), and all the vfsmounts are rooted on anonymous[*] dentries\n     with child trees.\n\n     [*] Anonymous until discovered from another tree.\n\n (*) The documentation has been adjusted, including the additional bit of\n     changing ext2_* into foo_* in the documentation.\n\n[akpm@osdl.org: convert ipath_fs, do other stuff]\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Nathan Scott \u003cnathans@sgi.com\u003e\nCc: Roland Dreier \u003crolandd@cisco.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\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": "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": "f84d751994441292593523c7069ed147176f6cab",
      "tree": "a1a0c4836289df86bb62e7eae5c80c66fca1643a",
      "parents": [
        "0568b409c74f7a125d92a09a3f386785700ef688"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon May 01 19:59:03 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon May 01 19:59:03 2006 +0200"
      },
      "message": "[PATCH] pipe: introduce -\u003epin() buffer operation\n\nThe -\u003emap() function is really expensive on highmem machines right now,\nsince it has to use the slower kmap() instead of kmap_atomic(). Splice\nrarely needs to access the virtual address of a page, so it\u0027s a waste\nof time doing it.\n\nIntroduce -\u003epin() to take over the responsibility of making sure the\npage data is valid. -\u003emap() is then reduced to just kmap(). That way we\ncan also share a most of the pipe buffer ops between pipe.c and splice.c\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "0568b409c74f7a125d92a09a3f386785700ef688",
      "tree": "79125b2f4755e98949f0d941a0092e5d3367bbff",
      "parents": [
        "46e678c96bbd775abd05d3ddbe2fd334794f9157"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon May 01 19:50:48 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon May 01 19:50:48 2006 +0200"
      },
      "message": "[PATCH] splice: fix bugs in pipe_to_file()\n\nFound by Oleg Nesterov \u003coleg@tv-sign.ru\u003e, fixed by me.\n\n- Only allow full pages to go to the page cache.\n- Check page !\u003d buf-\u003epage instead of using PIPE_BUF_FLAG_STOLEN.\n- Remember to clear \u0027stolen\u0027 if add_to_page_cache() fails.\n\nAnd as a cleanup on that:\n\n- Make the bottom fall-through logic a little less convoluted. Also make\n  the steal path hold an extra reference to the page, so we don\u0027t have\n  to differentiate between stolen and non-stolen at the end.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "46e678c96bbd775abd05d3ddbe2fd334794f9157",
      "tree": "f82b77d9f2fd5d4eb5e66bc2bb8ff5df63db3c7f",
      "parents": [
        "e0a515bc6a2188f02916e976f419a8640312e32a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sun Apr 30 16:36:32 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sun Apr 30 16:36:32 2006 +0200"
      },
      "message": "[PATCH] splice: fix bugs with stealing regular pipe pages\n\n- Check that page has suitable count for stealing in the regular pipes.\n- pipe_to_file() assumes that the page is locked on succesful steal, so\n  do that in the pipe steal hook\n- Missing unlock_page() in add_to_page_cache() failure.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "70524490ee2ea1bbf6cee6c106597b3ac25a3fc2",
      "tree": "c61dd500035bc3e0dea364777de1b7a58b41a75c",
      "parents": [
        "cbb7e577e732f576b9f399bc2600bdc0626c68dc"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 11 15:51:17 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 11 15:51:17 2006 +0200"
      },
      "message": "[PATCH] splice: add support for sys_tee()\n\nBasically an in-kernel implementation of tee, which uses splice and the\npipe buffers as an intelligent way to pass data around by reference.\n\nWhere the user space tee consumes the input and produces a stdout and\nfile output, this syscall merely duplicates the data inside a pipe to\nanother pipe. No data is copied, the output just grabs a reference to the\ninput pipe data.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "341b446bc5aa36d1d5b8159c1e66716b5d89024d",
      "tree": "6ccd0b90df84a94a4b7b4f8a6622d11786d74714",
      "parents": [
        "73d62d83ec3627782ba6f55defc76f3ffbef46ee"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 11 13:57:45 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 11 13:57:45 2006 +0200"
      },
      "message": "[PATCH] another round of fs/pipe.c cleanups\n\nmake pipe.c a bit more readable and hackable.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "923f4f23940d2361e8d5c4245982163a8e9d1c91",
      "tree": "05d24681cadfd731a083b0fa3b22b6e7a6622555",
      "parents": [
        "9aeedfc4712ed58d9f7ae41596185c72b8dc97e8"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 11 13:53:33 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 11 13:53:33 2006 +0200"
      },
      "message": "[PATCH] pipe.c/fifo.c code cleanups\n\nmore code cleanups after the macro conversion:\n\n - standardize on \u0027struct pipe_inode_info *pipe\u0027 variable names\n - introduce \u0027pipe\u0027 temporaries to reduce mass inode-\u003ei_pipe dereferencing\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "9aeedfc4712ed58d9f7ae41596185c72b8dc97e8",
      "tree": "b055bab09a86cfc6cb13506d2f25da6abd12e3c1",
      "parents": [
        "7480a90435673b4c717b6caf1350ec577d5f1adf"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 11 13:53:10 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 11 13:53:10 2006 +0200"
      },
      "message": "[PATCH] get rid of the PIPE_*() macros\n\nget rid of the PIPE_*() macros. Scripted transformation.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "b92ce55893745e011edae70830b8bc863be881f9",
      "tree": "e2afd62d2e63d74157905140f5907d07bdfe31b9",
      "parents": [
        "529565dcb1581c9a1e3f6df1c1763ca3e0f0d512"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 11 13:52:07 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 11 13:52:07 2006 +0200"
      },
      "message": "[PATCH] splice: add direct fd \u003c-\u003e fd splicing support\n\nIt\u0027s more efficient for sendfile() emulation. Basically we cache an\ninternal private pipe and just use that as the intermediate area for\npages. Direct splicing is not available from sys_splice(), it is only\nmeant to be used for sendfile() emulation.\n\nAdditional patch from Ingo Molnar to avoid the PIPE_BUFFERS loop at\nexit for the normal fast path.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "3a326a2ce88e71d00ac0d133e314a3342a7709f8",
      "tree": "3a3cf55be19311c04d195e37baec9f49c4015b18",
      "parents": [
        "0b749ce3802428007a37870eb51ba3c0bdf90857"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Apr 10 15:18:35 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Apr 10 15:18:35 2006 +0200"
      },
      "message": "[PATCH] introduce a \"kernel-internal pipe object\" abstraction\n\nseparate out the \u0027internal pipe object\u0027 abstraction, and make it\nusable to splice. This cleans up and fixes several aspects of the\ninternal splice APIs and the pipe code:\n\n - pipes: the allocation and freeing of pipe_inode_info is now more symmetric\n   and more streamlined with existing kernel practices.\n\n - splice: small micro-optimization: less pointer dereferencing in splice\n   methods\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n\nUpdate XFS for the -\u003esplice_read/-\u003esplice_write changes.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "3e7ee3e7b36fa4e2d88d8fb0a2577be95fc4636d",
      "tree": "46e972e78122f8a719dafc87572bffb25716e745",
      "parents": [
        "ad8d6f0a783ffa2ff9b0cf09910b889715772201"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sun Apr 02 23:11:04 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sun Apr 02 23:11:04 2006 +0200"
      },
      "message": "[PATCH] splice: fix page stealing LRU handling.\n\nOriginally from Nick Piggin, just adapted to the newer branch.\n\nYou can\u0027t check PageLRU without holding zone-\u003elru_lock.  The page\nrelease code can get away with it only because the page refcount is 0 at\nthat point. Also, you can\u0027t reliably remove pages from the LRU unless\nthe refcount is 0. Ever.\n\nSigned-off-by: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "4f6f0bd2ffa4e31c3524f5e65c84a29b6ab73307",
      "tree": "682ab1b41c3ee799d37bfa1874c79ae92b3755fd",
      "parents": [
        "53cd9ae886273d6c2b8ba4aa63d6cd6b1217b57f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sun Apr 02 23:04:46 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sun Apr 02 23:04:46 2006 +0200"
      },
      "message": "[PATCH] splice: improve writeback and clean up page stealing\n\nBy cleaning up the writeback logic (killing write_one_page() and the manual\nset_page_dirty()), we can get rid of -\u003estolen inside the pipe_buffer and\njust keep it local in pipe_to_file().\n\nThis also adds dirty page balancing logic and O_SYNC handling.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "5abc97aa25b2c41413b3a520faee83f2282d9f18",
      "tree": "4ba13ae0e91f15d02986df7cdca5e9455212d7d4",
      "parents": [
        "5274f052e7b3dbd81935772eb551dfd0325dfa9d"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu Mar 30 15:16:46 2006 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Mar 30 12:28:18 2006 -0800"
      },
      "message": "[PATCH] splice: add support for SPLICE_F_MOVE flag\n\nThis enables the caller to migrate pages from one address space page\ncache to another.  In buzz word marketing, you can do zero-copy file\ncopies!\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5274f052e7b3dbd81935772eb551dfd0325dfa9d",
      "tree": "c79f813ec513660edb6f1e4a75cb366c6b84f53f",
      "parents": [
        "5d4fe2c1ce83c3e967ccc1ba3d580c1a5603a866"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu Mar 30 15:15:30 2006 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Mar 30 12:28:18 2006 -0800"
      },
      "message": "[PATCH] Introduce sys_splice() system call\n\nThis adds support for the sys_splice system call. Using a pipe as a\ntransport, it can connect to files or sockets (latter as output only).\n\nFrom the splice.c comments:\n\n   \"splice\": joining two ropes together by interweaving their strands.\n\n   This is the \"extended pipe\" functionality, where a pipe is used as\n   an arbitrary in-memory buffer. Think of a pipe as a small kernel\n   buffer that you can use to transfer data from one end to the other.\n\n   The traditional unix read/write is extended with a \"splice()\" operation\n   that transfers data buffers to or from a pipe buffer.\n\n   Named by Larry McVoy, original implementation from Linus, extended by\n   Jens to support splicing to files and fixing the initial implementation\n   bugs.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4b6f5d20b04dcbc3d888555522b90ba6d36c4106",
      "tree": "420f271eaef7d3def7d4433b151c3cb6d7a54770",
      "parents": [
        "99ac48f54a91d02140c497edc31dc57d4bc5c85d"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Tue Mar 28 01:56:42 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 09:16:06 2006 -0800"
      },
      "message": "[PATCH] Make most file operations structs in fs/ const\n\nThis is a conversion to make the various file_operations structs in fs/\nconst.  Basically a regexp job, with a few manual fixups\n\nThe goal is both to increase correctness (harder to accidentally write to\nshared datastructures) and reducing the false sharing of cachelines with\nthings that get dirty in .data (while .rodata is nicely read only and thus\ncache clean)\n\nSigned-off-by: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fa3536cc144c1298f2ed9416c33f3b77fa2cd37a",
      "tree": "5484541319b86ae7dac0def4db7925f7cc7008e7",
      "parents": [
        "878a9f30d7b13015f3aa4534d7877d985f150183"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Sun Mar 26 01:37:24 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Mar 26 08:56:56 2006 -0800"
      },
      "message": "[PATCH] Use __read_mostly on some hot fs variables\n\nI discovered on oprofile hunting on a SMP platform that dentry lookups were\nslowed down because d_hash_mask, d_hash_shift and dentry_hashtable were in\na cache line that contained inodes_stat.  So each time inodes_stats is\nchanged by a cpu, other cpus have to refill their cache line.\n\nThis patch moves some variables to the __read_mostly section, in order to\navoid false sharing.  RCU dentry lookups can go full speed.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "11b0b5abb2097a63c1081d9b7e825b987b227972",
      "tree": "162c828c8d807a1b30869acbe11682dc9222dc16",
      "parents": [
        "656bde5728b824ca23fcab8bc5800b309ea48d64"
      ],
      "author": {
        "name": "Oliver Neukum",
        "email": "neukum@fachschaft.cup.uni-muenchen.de",
        "time": "Sat Mar 25 03:08:13 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Mar 25 08:23:00 2006 -0800"
      },
      "message": "[PATCH] use kzalloc and kcalloc in core fs code\n\nSigned-off-by: Oliver Neukum \u003coliver@neukum.name\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a19cbd4bf258840ade3b6ee9e9256006d0644e09",
      "tree": "b532fe78c5ecbe5c8e6aca8b7d6f704a24a52129",
      "parents": [
        "432e7c0dfe884b6ab1c32fd3f17c64c31d8fa7e2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 08 14:03:09 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 08 14:03:09 2006 -0800"
      },
      "message": "Mark the pipe file operations static\n\nThey aren\u0027t used (nor even really usable) outside of pipe.c anyway\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "858119e159384308a5dde67776691a2ebf70df0f",
      "tree": "f360768f999d51edc0863917ce0bf79e88c0ec4c",
      "parents": [
        "b0a9499c3dd50d333e2aedb7e894873c58da3785"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Sat Jan 14 13:20:43 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Jan 14 18:27:06 2006 -0800"
      },
      "message": "[PATCH] Unlinline a bunch of other functions\n\nRemove the \"inline\" keyword from a bunch of big functions in the kernel with\nthe goal of shrinking it by 30kb to 40kb\n\nSigned-off-by: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Jeff Garzik \u003cjgarzik@pobox.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "870f481793b585323fbda3e87c54efc116f46351",
      "tree": "08dce269f14c18ae1b1682d3cb0f149b938d40bb",
      "parents": [
        "3542c6e18f6470bad2bde1e94331e4f488a8d3f1"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Jan 09 20:52:01 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jan 10 08:01:30 2006 -0800"
      },
      "message": "[PATCH] replace inode_update_time with file_update_time\n\nTo allow various options to work per-mount instead of per-sb we need a\nstruct vfsmount when updating ctime and mtime.  This preparation patch\nreplaces the inode_update_time routine with a file_update_atime routine so\nwe can easily get at the vfsmount.  (and the file makes more sense in this\ncontext anyway).  Also get rid of the unused second argument - we always\nwant to update the ctime when calling this routine.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@ftp.linux.org.uk\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1b1dcc1b57a49136f118a0f16367256ff9994a69",
      "tree": "b0b36d4f41d28c9d6514fb309d33c1a084d6309b",
      "parents": [
        "794ee1baee1c26be40410233e6c20bceb2b03c08"
      ],
      "author": {
        "name": "Jes Sorensen",
        "email": "jes@sgi.com",
        "time": "Mon Jan 09 15:59:24 2006 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@hera.kernel.org",
        "time": "Mon Jan 09 15:59:24 2006 -0800"
      },
      "message": "[PATCH] mutex subsystem, semaphore to mutex: VFS, -\u003ei_sem\n\nThis patch converts the inode semaphore to a mutex. I have tested it on\nXFS and compiled as much as one can consider on an ia64. Anyway your\nluck with it might be different.\n\nModified-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n\n(finished the conversion)\n\nSigned-off-by: Jes Sorensen \u003cjes@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d79fc0fc6645b0cf5cd980da76942ca6d6300fa4",
      "tree": "e74aca1df1d37dbd7af66636a4e39a3f7e1af479",
      "parents": [
        "95cdf3b799a481969a48d69a1a52916ad5da6694"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Sep 10 00:26:12 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Sep 10 10:06:22 2005 -0700"
      },
      "message": "[PATCH] sched: TASK_NONINTERACTIVE\n\nThis patch implements a task state bit (TASK_NONINTERACTIVE), which can be\nused by blocking points to mark the task\u0027s wait as \"non-interactive\".  This\ndoes not mean the task will be considered a CPU-hog - the wait will simply\nnot have an effect on the waiting task\u0027s priority - positive or negative\nalike.  Right now only pipe_wait() will make use of it, because it\u0027s a\ncommon source of not-so-interactive waits (kernel compilation jobs, etc.).\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5e5d7a22292613e55da8e91d75bcc062fd861f41",
      "tree": "052ad4b7bfcc8fcd21a94acca58393a963bd3b06",
      "parents": [
        "9c45817f41af987277353e463c78a1c6beb37da2"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Tue Sep 06 15:17:48 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 07 16:57:35 2005 -0700"
      },
      "message": "[PATCH] pipe: remove redundant fifo_poll abstraction\n\nRemove a redundant fifo_poll() abstraction from fs/pipe.c and adds a big\nfat comment stating we set POLLERR for FIFOs too on Linux unlike most\nUnices.\n\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
