)]}'
{
  "log": [
    {
      "commit": "60ccd4ec4170c9487e3792322626acd160197bce",
      "tree": "b35353518bd7945a40e39edfa543ce80aaa3f8b4",
      "parents": [
        "80eb209def76d375677840800eb838abce1e6639"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 29 17:48:19 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:53 2007 -0400"
      },
      "message": "NFS: Remove nfs_begin_data_update/nfs_end_data_update\n\nThe lower level routines in fs/nfs/proc.c, fs/nfs/nfs3proc.c and\nfs/nfs/nfs4proc.c should already be dealing with the revalidation issues.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cd3758e37ddea66fccca7d93c4b601e8a2e51926",
      "tree": "07566d3ee457524a97b534a4f214b9178b1278c8",
      "parents": [
        "c03025d55540bd648f2546659090140ecc835572"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Aug 10 17:44:32 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:31 2007 -0400"
      },
      "message": "NFS: Replace file-\u003eprivate_data with calls to nfs_file_open_context()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "20c2df83d25c6a95affe6157a4c9cac4cf5ffaac",
      "tree": "415c4453d2b17a50abe7a3e515177e1fa337bd67",
      "parents": [
        "64fb98fc40738ae1a98bcea9ca3145b89fb71524"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "message": "mm: Remove slab destructors from kmem_cache_create().\n\nSlab destructors were no longer supported after Christoph\u0027s\nc59def9f222d44bb7e2f0a559f2906191a0862d7 change. They\u0027ve been\nBUGs for both slab and slub, and slob never supported them\neither.\n\nThis rips out support for the dtor pointer from kmem_cache_create()\ncompletely and fixes up every single callsite in the kernel (there were\nabout 224, not including the slab allocator definitions themselves,\nor the documentation references).\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    },
    {
      "commit": "88be9f990fe70f0f177ef44a16a477599e91f825",
      "tree": "d48ed0c934fc20dc3f7cacfc3b1eca3058246b65",
      "parents": [
        "de05a0cc2a2ae16eb8d8dbf88fe728ace45beb9a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jun 05 10:42:27 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:23 2007 -0400"
      },
      "message": "NFS: Replace vfsmount and dentry in nfs_open_context with struct path\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d9df8d6b38228afab519094048aa2c082b0b2cf4",
      "tree": "7bbe92c2ac8e3eab2179cd194dccc8f30bf63df5",
      "parents": [
        "070ea60214c1894c9eec86ca9aa5dff57a5ab525"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 22 10:22:20 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:23 2007 -0400"
      },
      "message": "NFS: Don\u0027t fail an O_DIRECT read/write if get_user_pages() returns pages\n\nThere is no need to fail the entire O_DIRECT read/write just because\nget_user_pages() returned fewer pages than we requested.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "070ea60214c1894c9eec86ca9aa5dff57a5ab525",
      "tree": "ee77da93e0faa6a893d8ad6dacaf1943de7ffbae",
      "parents": [
        "4eb6bf6bfb580afaf1e1a1d30cba17a078530cf4"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Sat May 19 17:22:52 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:23 2007 -0400"
      },
      "message": "NFS: Clean ups in fs/nfs/direct.c\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b4946ffb1860597b187d78d61ac6504177eb0ff8",
      "tree": "56e5df1992aa478b806e5a768eda668543a5bb89",
      "parents": [
        "7a74fc4925067c2102175baef73f9b07ab519b71"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 30 12:58:00 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 30 16:26:01 2007 -0400"
      },
      "message": "NFS: Fix a refcount leakage in O_DIRECT\n\nThe current code is leaking a reference to dreq-\u003ekref when the calls to\nnfs_direct_read_schedule() and nfs_direct_write_schedule() return an\nerror.\nThis patch moves the call to kref_put() from nfs_direct_wait() back into\nnfs_direct_read() and nfs_direct_write() (which are the functions that\nactually took the reference in the first place) fixing the leak.\n\nThanks to Denis V. Lunev for spotting the bug and proposing the original\nfix.\n\nAcked-by: Denis V. Lunev \u003cdlunev@gmail.com\u003e\nAcked-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d4a8f3677fe2c2fc86443254fe42825e244c194d",
      "tree": "7b3b31104103208c852ad30616667aeb5256f34e",
      "parents": [
        "749e146e01cf87ce3c1d6f6077b877471b04df5b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 22 10:22:27 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 24 11:18:18 2007 -0400"
      },
      "message": "NFS: Fix nfs_direct_dirty_pages()\n\nWe only need to dirty the pages that were actually read in.\n\nAlso convert nfs_direct_dirty_pages() to call set_page_dirty() instead of\nset_page_dirty_lock(). A call to lock_page() is unacceptable in an rpciod\ncallback function.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "749e146e01cf87ce3c1d6f6077b877471b04df5b",
      "tree": "86c694a9c6dd990e445eb7be38de43255d0336ed",
      "parents": [
        "7fe7f8487ae742239dd8c66596e2311c30d057d1"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Sat May 19 17:22:46 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 24 10:44:20 2007 -0400"
      },
      "message": "NFS: Fix handful of compiler warnings in direct.c\n\nThis patch fixes a couple of signage issues that were causing an Oops\nwhen running the LTP diotest4 test. get_user_pages() returns a signed\nerror, hence we need to be careful when comparing with the unsigned\nnumber of pages from data-\u003enpages.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e63340ae6b6205fef26b40a75673d1c9c0c8bb90",
      "tree": "8d3212705515edec73c3936bb9e23c71d34a7b41",
      "parents": [
        "04c9167f91e309c9c4ea982992aa08e83b2eb42e"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Tue May 08 00:28:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:07 2007 -0700"
      },
      "message": "header cleaning: don\u0027t include smp_lock.h when not used\n\nRemove includes of \u003clinux/smp_lock.h\u003e where it is not used/needed.\nSuggested by Al Viro.\n\nBuilds cleanly on x86_64, i386, alpha, ia64, powerpc, sparc,\nsparc64, and arm (all 59 defconfigs).\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@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": "8d5658c949e6d89edc579a1f112aeee3bc232a8e",
      "tree": "f206d3f6809eeb0ca23c1999cf79aa294968b113",
      "parents": [
        "c63c7b051395368573779c8309aa5c990dcf2f96"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Apr 10 09:26:35 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 30 22:17:07 2007 -0700"
      },
      "message": "NFS: Fix a buffer overflow in the allocation of struct nfs_read/writedata\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "60fa3f769f7651a60125a0f44e3ffe3246d7cf39",
      "tree": "1acbd0749726d8bddafab619e173874af0153c84",
      "parents": [
        "e1552e199857109d4b25b9163eff4646726eee3d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Apr 14 19:11:52 2007 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Apr 14 21:46:48 2007 -0700"
      },
      "message": "NFS: Fix two bugs in the O_DIRECT write code\n\nDo not flag an error if the COMMIT call fails and we decide to resend the\nwrites. Let the resend flag the error if it fails.\n\nIf a write has failed, then nfs_direct_write_result should not attempt to\nsend a commit. It should just exit asap and return the error to the user.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a3f565b1e530a756472401835107d08fd291f242",
      "tree": "84a15e4810f63689e3f85bbbc6497ee41934705e",
      "parents": [
        "4dc2eaecd4cf0687727e418540bccf956a62ebcf"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jan 31 12:14:01 2007 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Feb 03 15:35:09 2007 -0800"
      },
      "message": "NFS: fix print format for tk_pid\n\nThe tk_pid field is an unsigned short.  The proper print format specifier for\nthat type is %5u, not %4d.\n\nAlso clean up some miscellaneous print formatting nits.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "01cce933d8b524d9312f5098c70fa1b6ac190572",
      "tree": "7601e02e874a6eb44faca3cdf06664c7377ac687",
      "parents": [
        "2485822d51f8b338d289abe00eb7ce5249794a08"
      ],
      "author": {
        "name": "Josef \"Jeff\" Sipek",
        "email": "jsipek@cs.sunysb.edu",
        "time": "Fri Dec 08 02:36:40 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:41 2006 -0800"
      },
      "message": "[PATCH] nfs: change uses of f_{dentry,vfsmnt} to use f_path\n\nChange all the uses of f_{dentry,vfsmnt} to f_path.{dentry,mnt} in the nfs\nclient code.\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": "21b4e736922f546e0f1aa7b9d6c442f309a2444a",
      "tree": "e1be8645297f8ebe87445251743ebcc52081a20d",
      "parents": [
        "34161db6b14d984fb9b06c735b7b42f8803f6851",
        "68380b581383c028830f79ec2670f4a193854aa6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 07 16:35:17 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 07 16:35:17 2006 -0500"
      },
      "message": "Merge branch \u0027master\u0027 of /home/trondmy/kernel/linux-2.6/ into merge_linus\n"
    },
    {
      "commit": "e18b890bb0881bbab6f4f1a6cd20d9c60d66b003",
      "tree": "4828be07e1c24781c264b42c5a75bcd968223c3f",
      "parents": [
        "441e143e95f5aa1e04026cb0aa71c801ba53982f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:20 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:25 2006 -0800"
      },
      "message": "[PATCH] slab: remove kmem_cache_t\n\nReplace all uses of kmem_cache_t with struct kmem_cache.\n\nThe patch was generated using the following script:\n\n\t#!/bin/sh\n\t#\n\t# Replace one string by another in all the kernel sources.\n\t#\n\n\tset -e\n\n\tfor file in `find * -name \"*.c\" -o -name \"*.h\"|xargs grep -l $1`; do\n\t\tquilt add $file\n\t\tsed -e \"1,\\$s/$1/$2/g\" $file \u003e/tmp/$$\n\t\tmv /tmp/$$ $file\n\t\tquilt refresh\n\tdone\n\nThe script was run like this\n\n\tsh replace kmem_cache_t \"struct kmem_cache\"\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e94b1766097d53e6f3ccfb36c8baa562ffeda3fc",
      "tree": "93fa0a8ab84976d4e89c50768ca8b8878d642a0d",
      "parents": [
        "54e6ecb23951b195d02433a741c7f7cb0b796c78"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:17 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:24 2006 -0800"
      },
      "message": "[PATCH] slab: remove SLAB_KERNEL\n\nSLAB_KERNEL is an alias of GFP_KERNEL.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a99b71c9c43499bf2312c64f5c1d367aaf559dc4",
      "tree": "a9fa03a8dcee03c6f05bd286be368396176b13db",
      "parents": [
        "6d5fcb5a52bfd00eab3ba2c7ca890823388436ae"
      ],
      "author": {
        "name": "Frank Filz",
        "email": "ffilzlnx@us.ibm.com",
        "time": "Tue Oct 17 10:24:36 2006 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:30 2006 -0500"
      },
      "message": "NFS: Remove use of the Big Kernel Lock around calls to rpc_execute.\n\nRemove use of the Big Kernel Lock around calls to rpc_execute.\n\nSigned-off-by: Frank Filz \u003cffilz@us.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cd9ae2b6a75bb1fa0d370929c2d7a7da1ed719d9",
      "tree": "1bf943b54f47bfbf5198b08b930bd09099ff99b7",
      "parents": [
        "13bbc06af8a5f65df0f888b442e557c617cadba7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 19 23:28:40 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 20 10:26:39 2006 -0700"
      },
      "message": "[PATCH] NFS: Deal with failure of invalidate_inode_pages2()\n\nIf invalidate_inode_pages2() fails, then it should in principle just be\nbecause the current process was signalled.  In that case, we just want to\nensure that the inode\u0027s page cache remains marked as invalid.\n\nAlso add a helper to allow the O_DIRECT code to simply mark the page cache as\ninvalid once it is finished writing, instead of calling\ninvalidate_inode_pages2() itself.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "eda3cef8dd2b83875affe82595db9d0c278879b2",
      "tree": "8243651c72751fc2204c8423f8a372c0dddba8a4",
      "parents": [
        "b6dff26a08189932eeb0fa4261e09e733b0fc540"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 19 23:28:38 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 20 10:26:38 2006 -0700"
      },
      "message": "[PATCH] NFS: Fix error handling in nfs_direct_write_result()\n\nIf the RPC call tanked, we should not be checking the return value\nof data-\u003eres.verf-\u003ecommitted, since it is unlikely to even be\ninitialised.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "027445c37282bc1ed26add45e573ad2d3e4860a5",
      "tree": "93eab101a938ffebaea64703033c8649df4d73f0",
      "parents": [
        "9ea0f9499d15c49df23e7aac4332d830c40e12d0"
      ],
      "author": {
        "name": "Badari Pulavarty",
        "email": "pbadari@us.ibm.com",
        "time": "Sat Sep 30 23:28:46 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:28 2006 -0700"
      },
      "message": "[PATCH] Vectorize aio_read/aio_write fileop methods\n\nThis patch vectorizes aio_read() and aio_write() methods to prepare for\ncollapsing all aio \u0026 vectored operations into one interface - which is\naio_read()/aio_write().\n\nSigned-off-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Michael Holzheu \u003cHOLZHEU@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1a1d92c10dd24bbdc28b3d6e2d03ec199dd3a65b",
      "tree": "fade83955f75e718e39153d6f81d221403338bed",
      "parents": [
        "f52720ca5f48574e347dff35ffe6b389ace61537"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Sep 27 01:49:40 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:10 2006 -0700"
      },
      "message": "[PATCH] Really ignore kmem_cache_destroy return value\n\n* Rougly half of callers already do it by not checking return value\n* Code in drivers/acpi/osl.c does the following to be sure:\n\n\t(void)kmem_cache_destroy(cache);\n\n* Those who check it printk something, however, slab_error already printed\n  the name of failed cache.\n* XFS BUGs on failed kmem_cache_destroy which is not the decision\n  low-level filesystem driver should make. Converted to ignore.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e9f7bee1df223dcf83743b46cb06c08d95497ec0",
      "tree": "67beae4733ef0286645112a52623c81c8f8a19a9",
      "parents": [
        "016eb4a0ed06a3677d67a584da901f0e9a63c666"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 08 09:48:54 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 08 10:22:51 2006 -0700"
      },
      "message": "[PATCH] NFS: large non-page-aligned direct I/O clobbers memory\n\nThe logic in nfs_direct_read_schedule and nfs_direct_write_schedule can\nallow data-\u003enpages to be one larger than rpages.  This causes a page\npointer to be written beyond the end of the pagevec in nfs_read_data (or\nnfs_write_data).\n\nFix this by making nfs_(read|write)_alloc() calculate the size of the\npagevec array, and initialise data-\u003enpages.\n\nAlso get rid of the redundant argument to nfs_commit_alloc().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "026477c1141b67e98e3bd8bdedb7d4b88a3ecd09",
      "tree": "2624a44924c625c367f3cebf937853b9da2de282",
      "parents": [
        "9f2fa466383ce100b90fe52cb4489d7a26bf72a9",
        "29454dde27d8e340bb1987bad9aa504af7081eba"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 03 13:49:45 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 03 13:49:45 2006 -0400"
      },
      "message": "Merge branch \u0027master\u0027 of /home/trondmy/kernel/linux-2.6/\n"
    },
    {
      "commit": "6ab3d5624e172c553004ecc862bfeac16d9d68b7",
      "tree": "6d98881fe91fd9583c109208d5c27131b93fa248",
      "parents": [
        "e02169b682bc448ccdc819dc8639ed34a23cedd8"
      ],
      "author": {
        "name": "Jörn Engel",
        "email": "joern@wohnheim.fh-wedel.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "message": "Remove obsolete #include \u003clinux/config.h\u003e\n\nSigned-off-by: Jörn Engel \u003cjoern@wohnheim.fh-wedel.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "607f31e80b6f982d7c0dd7a5045377fc368fe507",
      "tree": "caa7087b1aa90fe620f8a7a564bf07d94f8c1b69",
      "parents": [
        "79bc79b07c9c6f8ae9290704e9e503a9327fcbb2"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 28 16:52:45 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 28 16:52:45 2006 -0400"
      },
      "message": "Revert \"Merge branch \u0027odirect\u0027\"\n\nThis reverts ccf01ef7aa9c6c293a1c64c27331a2ce227916ec commit.\n\nNo idea how git managed this one: when I asked it to merge the odirect\ntopic branch it actually generated a patch which reverted the change.\n\nReverting the \u0027merge\u0027 will once again reveal Chuck\u0027s recent NFS/O_DIRECT\nwork to the world.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "266bee88699ddbde42ab303bbc426a105cc49809",
      "tree": "2d2b57f869321e177caf173af8d43b5d88c4a79d",
      "parents": [
        "e7374e48009a15a680d53bd1f9828b9b79a8aac9"
      ],
      "author": {
        "name": "David Brownell",
        "email": "david-b@pacbell.net",
        "time": "Tue Jun 27 12:59:15 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jun 27 14:07:19 2006 -0700"
      },
      "message": "[PATCH] fix static linking of NFS\n\nBuilds on ARM report link problems with common configurations like\nstatically linked NFS (for nfsroot).  The symptom is that __init\nsection code references __exit section code; that won\u0027t work since\nthe exit sections are discarded (since they can never be called).\n\nThe best fix for these particular cases would be an \"__init_or_exit\"\nsection annotation.\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nAcked-by: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ccf01ef7aa9c6c293a1c64c27331a2ce227916ec",
      "tree": "421fa29aedff988e392f92780637553e275d37a0",
      "parents": [
        "82b145c5a572f7fa7211dffe2097234dc91bcecc"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jun 25 06:27:31 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jun 25 06:27:31 2006 -0400"
      },
      "message": "Merge branch \u0027odirect\u0027\n"
    },
    {
      "commit": "82b145c5a572f7fa7211dffe2097234dc91bcecc",
      "tree": "35689aa653d29f17681f13d89d592c88e7c112e5",
      "parents": [
        "06cf6f2ed0b19629700794727d86ed57b9c0583e"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Tue Jun 20 12:57:03 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jun 24 13:11:39 2006 -0400"
      },
      "message": "NFS: alloc nfs_read/write_data as direct I/O is scheduled\n\nRe-arrange the logic in the NFS direct I/O path so that nfs_read/write_data\nstructs are allocated just before they are scheduled, rather than\nallocating them all at once before we start scheduling requests.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "06cf6f2ed0b19629700794727d86ed57b9c0583e",
      "tree": "20630465974dc9391af486d8609aae077701b596",
      "parents": [
        "9c93ab7dff5eb22027ab15010557bb73f9b44c99"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Tue Jun 20 12:56:49 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jun 24 13:11:39 2006 -0400"
      },
      "message": "NFS: Eliminate nfs_get_user_pages()\n\nNeil Brown observed that the kmalloc() in nfs_get_user_pages() is more\nlikely to fail if the I/O is large enough to require the allocation of more\nthan a single page to keep track of all the pinned pages in the user\u0027s\nbuffer.\n\nInstead of tracking one large page array per dreq/iocb, track pages per\nnfs_read/write_data, just like the cached I/O path does.  An array for\npages is already allocated for us by nfs_readdata_alloc() (and the write\nand commit equivalents).\n\nThis is also required for adding support for vectored I/O to the NFS direct\nI/O path.\n\nThe original reason to pin the user buffer and allocate all the NFS data\nstructures before trying to schedule I/O was to ensure all needed resources\nare allocated on the client before starting to send requests.  This reduces\nthe chance that resource exhaustion on the client will cause a short read\nor write.\n\nOn the other hand, for an application making very large application I/O\nrequests, this means that it will be nearly impossible for the application\nto make forward progress on a resource-limited client.\n\nThus, moving the buffer pinning functionality into the I/O scheduling\nloops should be good for scalability.  The next patch will do the same for\nNFS data structure allocation.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9c93ab7dff5eb22027ab15010557bb73f9b44c99",
      "tree": "654a010c2aa161d0f9f49d7137410aaca1ebd2ba",
      "parents": [
        "51a7bc6caec94bab256b272bffd24d00ea81c698"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Tue Jun 20 12:56:31 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jun 24 13:11:39 2006 -0400"
      },
      "message": "NFS: refactor nfs_direct_free_user_pages\n\nClean-up and fix a minor bug: the logic was dirtying page cache pages on\nboth read and write operations.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "51a7bc6caec94bab256b272bffd24d00ea81c698",
      "tree": "29e19b93449e6affb53a737b73ddec847e21cc50",
      "parents": [
        "fedb595c66e1fbd5acafe0d43b7e95c13c936d61"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Tue Jun 20 12:56:16 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jun 24 13:11:39 2006 -0400"
      },
      "message": "NFS: remove user_addr, user_count, and pos from nfs_direct_req\n\nMake the user_addr, user_count, and pos parameters explicit to the\nscheduler routines, and remove the fields from nfs_direct_req.  The\niovec API will be passing in a series of these, not just one set.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fedb595c66e1fbd5acafe0d43b7e95c13c936d61",
      "tree": "e865ecc2399c09b7164c2f2c13a2c5c10c8d4de1",
      "parents": [
        "b1c5921c5b715c207d7fe77cd7aaafbb322f09f5"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Tue Jun 20 12:55:45 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jun 24 13:11:38 2006 -0400"
      },
      "message": "NFS: \"open code\" the NFS direct write rescheduler\n\nAn NFSv3/v4 client must reschedule on-the-wire writes if the writes are\nUNSTABLE, and the server reboots before the client can complete a\nsubsequent COMMIT request.\n\nTo support direct asynchronous scatter-gather writes, the write\nrescheduler in fs/nfs/direct.c must not depend on the I/O parameters\nin the controlling nfs_direct_req structure.  iovecs can be somewhat\narbitrarily complex, so there could be an unbounded amount of information\nto save for a rarely encountered requirement.\n\nRefactor the direct write rescheduler so it uses information from each\nnfs_write_data structure to reschedule writes, instead of caching that\ninformation in the controlling nfs_direct_req structure.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b1c5921c5b715c207d7fe77cd7aaafbb322f09f5",
      "tree": "c8a56c56740efa728b7d3b935b6cb09330a4817f",
      "parents": [
        "816724e65c72a90a44fbad0ef0b59b186c85fa90"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Tue Jun 20 12:55:19 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jun 24 13:11:38 2006 -0400"
      },
      "message": "NFS: Separate functions for counting outstanding NFS direct I/Os\n\nFactor out the logic that increments and decrements the outstanding I/O\ncount.  This will be a commonly used bit of code in upcoming patches.\nAlso make this an atomic_t again, since it will be very often manipulated\noutside dreq-\u003espin lock.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f7b422b17ee5ee4920e8ae24a6ad04bf3481ce72",
      "tree": "4ae8372762efc092ceb4f884b57cad1efe6594de",
      "parents": [
        "4e5ccf60c5aa79d325c123f47d288a068166f389"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jun 09 09:34:33 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:33 2006 -0400"
      },
      "message": "NFS: Split fs/nfs/inode.c\n\nAs fs/nfs/inode.c is rather large, heterogenous and unwieldy, the attached\npatch splits it up into a number of files:\n\n (*) fs/nfs/inode.c\n\n     Strictly inode specific functions.\n\n (*) fs/nfs/super.c\n\n     Superblock management functions for NFS and NFS4, normal access, clones\n     and referrals.  The NFS4 superblock functions _could_ move out into a\n     separate conditionally compiled file, but it\u0027s probably not worth it as\n     there\u0027re so many common bits.\n\n (*) fs/nfs/namespace.c\n\n     Some namespace-specific functions have been moved here.\n\n (*) fs/nfs/nfs4namespace.c\n\n     NFS4-specific namespace functions (this could be merged into the previous\n     file).  This file is conditionally compiled.\n\n (*) fs/nfs/internal.h\n\n     Inter-file declarations, plus a few simple utility functions moved from\n     fs/nfs/inode.c.\n\n     Additionally, all the in-.c-file externs have been moved here, and those\n     files they were moved from now includes this file.\n\nFor the most part, the functions have not been changed, only some multiplexor\nfunctions have changed significantly.\n\nI\u0027ve also:\n\n (*) Added some extra banner comments above some functions.\n\n (*) Rearranged the function order within the files to be more logical and\n     better grouped (IMO), though someone may prefer a different order.\n\n (*) Reduced the number of #ifdefs in .c files.\n\n (*) Added missing __init and __exit directives.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "e99170ff3b799a9fd43d538932a9231fac1de9d4",
      "tree": "b5926023a010c4f8b3993ff6d06cfd51a9462613",
      "parents": [
        "7866babad542bb5e1dc95deb5800b577abef58dd"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Apr 18 13:21:42 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Apr 19 12:43:47 2006 -0400"
      },
      "message": "NFS,SUNRPC: Fix compiler warnings if CONFIG_PROC_FS \u0026 CONFIG_SYSCTL are unset\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "53846a21c1766326bb14ce8ab6e997a0c120675d",
      "tree": "37b04485e29844b4e734479181276a2f4d2447e4",
      "parents": [
        "2e9abdd9bad485970b37cd53a82f92702054984c",
        "1ebbe2b20091d306453a5cf480a87e6cd28ae76f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Mar 25 09:18:27 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Mar 25 09:18:27 2006 -0800"
      },
      "message": "Merge git://git.linux-nfs.org/pub/linux/nfs-2.6\n\n* git://git.linux-nfs.org/pub/linux/nfs-2.6: (103 commits)\n  SUNRPC,RPCSEC_GSS: spkm3--fix config dependencies\n  SUNRPC,RPCSEC_GSS: spkm3: import contexts using NID_cast5_cbc\n  LOCKD: Make nlmsvc_traverse_shares return void\n  LOCKD: nlmsvc_traverse_blocks return is unused\n  SUNRPC,RPCSEC_GSS: fix krb5 sequence numbers.\n  NFSv4: Dont list system.nfs4_acl for filesystems that don\u0027t support it.\n  SUNRPC,RPCSEC_GSS: remove unnecessary kmalloc of a checksum\n  SUNRPC: Ensure rpc_call_async() always calls tk_ops-\u003erpc_release()\n  SUNRPC: Fix memory barriers for req-\u003erq_received\n  NFS: Fix a race in nfs_sync_inode()\n  NFS: Clean up nfs_flush_list()\n  NFS: Fix a race with PG_private and nfs_release_page()\n  NFSv4: Ensure the callback daemon flushes signals\n  SUNRPC: Fix a \u0027Busy inodes\u0027 error in rpc_pipefs\n  NFS, NLM: Allow blocking locks to respect signals\n  NFS: Make nfs_fhget() return appropriate error values\n  NFSv4: Fix an oops in nfs4_fill_super\n  lockd: blocks should hold a reference to the nlm_file\n  NFSv4: SETCLIENTID_CONFIRM should handle NFS4ERR_DELAY/NFS4ERR_RESOURCE\n  NFSv4: Send the delegation stateid for SETATTR calls\n  ...\n"
    },
    {
      "commit": "fffb60f93ce5880aade88e01d7133b52a4879710",
      "tree": "7882f0550af8580c0646306f6d391fe610f7ef8c",
      "parents": [
        "4b6a9316fab51af611dc8671f296734089f6a22a"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Fri Mar 24 03:16:06 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 24 07:33:23 2006 -0800"
      },
      "message": "[PATCH] cpuset memory spread: slab cache format\n\nRewrap the overly long source code lines resulting from the previous\npatch\u0027s addition of the slab cache flag SLAB_MEM_SPREAD.  This patch\ncontains only formatting changes, and no function change.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4b6a9316fab51af611dc8671f296734089f6a22a",
      "tree": "078f8f0f01a206af529bef137d5b71515c39053d",
      "parents": [
        "44110fe385af23ca5eee8a6ad4ff55d50339097a"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Fri Mar 24 03:16:05 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 24 07:33:23 2006 -0800"
      },
      "message": "[PATCH] cpuset memory spread: slab cache filesystems\n\nMark file system inode and similar slab caches subject to SLAB_MEM_SPREAD\nmemory spreading.\n\nIf a slab cache is marked SLAB_MEM_SPREAD, then anytime that a task that\u0027s\nin a cpuset with the \u0027memory_spread_slab\u0027 option enabled goes to allocate\nfrom such a slab cache, the allocations are spread evenly over all the\nmemory nodes (task-\u003emems_allowed) allowed to that task, instead of favoring\nallocation on the node local to the current cpu.\n\nThe following inode and similar caches are marked SLAB_MEM_SPREAD:\n\n    file                               cache\n    \u003d\u003d\u003d\u003d                               \u003d\u003d\u003d\u003d\u003d\n    fs/adfs/super.c                    adfs_inode_cache\n    fs/affs/super.c                    affs_inode_cache\n    fs/befs/linuxvfs.c                 befs_inode_cache\n    fs/bfs/inode.c                     bfs_inode_cache\n    fs/block_dev.c                     bdev_cache\n    fs/cifs/cifsfs.c                   cifs_inode_cache\n    fs/coda/inode.c                    coda_inode_cache\n    fs/dquot.c                         dquot\n    fs/efs/super.c                     efs_inode_cache\n    fs/ext2/super.c                    ext2_inode_cache\n    fs/ext2/xattr.c (fs/mbcache.c)     ext2_xattr\n    fs/ext3/super.c                    ext3_inode_cache\n    fs/ext3/xattr.c (fs/mbcache.c)     ext3_xattr\n    fs/fat/cache.c                     fat_cache\n    fs/fat/inode.c                     fat_inode_cache\n    fs/freevxfs/vxfs_super.c           vxfs_inode\n    fs/hpfs/super.c                    hpfs_inode_cache\n    fs/isofs/inode.c                   isofs_inode_cache\n    fs/jffs/inode-v23.c                jffs_fm\n    fs/jffs2/super.c                   jffs2_i\n    fs/jfs/super.c                     jfs_ip\n    fs/minix/inode.c                   minix_inode_cache\n    fs/ncpfs/inode.c                   ncp_inode_cache\n    fs/nfs/direct.c                    nfs_direct_cache\n    fs/nfs/inode.c                     nfs_inode_cache\n    fs/ntfs/super.c                    ntfs_big_inode_cache_name\n    fs/ntfs/super.c                    ntfs_inode_cache\n    fs/ocfs2/dlm/dlmfs.c               dlmfs_inode_cache\n    fs/ocfs2/super.c                   ocfs2_inode_cache\n    fs/proc/inode.c                    proc_inode_cache\n    fs/qnx4/inode.c                    qnx4_inode_cache\n    fs/reiserfs/super.c                reiser_inode_cache\n    fs/romfs/inode.c                   romfs_inode_cache\n    fs/smbfs/inode.c                   smb_inode_cache\n    fs/sysv/inode.c                    sysv_inode_cache\n    fs/udf/super.c                     udf_inode_cache\n    fs/ufs/super.c                     ufs_inode_cache\n    net/socket.c                       sock_inode_cache\n    net/sunrpc/rpc_pipe.c              rpc_inode_cache\n\nThe choice of which slab caches to so mark was quite simple.  I marked\nthose already marked SLAB_RECLAIM_ACCOUNT, except for fs/xfs, dentry_cache,\ninode_cache, and buffer_head, which were marked in a previous patch.  Even\nthough SLAB_RECLAIM_ACCOUNT is for a different purpose, it marks the same\npotentially large file system i/o related slab caches as we need for memory\nspreading.\n\nGiven that the rule now becomes \"wherever you would have used a\nSLAB_RECLAIM_ACCOUNT slab cache flag before (usually the inode cache), use\nthe SLAB_MEM_SPREAD flag too\", this should be easy enough to maintain.\nFuture file system writers will just copy one of the existing file system\nslab cache setups and tend to get it right without thinking.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d72b7a6b26b9009b7a05117fe2e04b3a73ae4a5c",
      "tree": "dcdbc9386b19e4976cf156baf35985016c1d28f4",
      "parents": [
        "6b45d858ed6821dd687efd3b68929de2e4954fec"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:43 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:43 2006 -0500"
      },
      "message": "NFS: O_DIRECT needs to use a completion\n\nNow that we have aio writes, it is possible for dreq-\u003eoutstanding to be\nzero, but for the I/O not to have completed. Convert struct nfs_direct_req\nto use a completion to signal when the I/O is done.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6b45d858ed6821dd687efd3b68929de2e4954fec",
      "tree": "fcc25885f02133177e2bc093f8cd09879cbd05cf",
      "parents": [
        "606bbba06b11ebcbdf3a4fcd8cce4507c5bd7a4b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:43 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:43 2006 -0500"
      },
      "message": "NFS: Clean up nfs_get_user_pages\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "606bbba06b11ebcbdf3a4fcd8cce4507c5bd7a4b",
      "tree": "b2cb6a1210aa45da2856c0846ad3e835b41629d4",
      "parents": [
        "5eb53f41d11c04aa4ddb9f168b6bbb27b9790348"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Mon Mar 20 13:44:42 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:42 2006 -0500"
      },
      "message": "NFS: fix compiler warnings on 64-bit platforms\n\nIntroduced by NFS aio+dio patches.\n\nTest plan:\nCompile kernel with CONFIG_NFS enabled on 64-bit hardware.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5db3a7b2cabe8f0957683f798c4f8fa8605f9ebb",
      "tree": "969aa2e7561796b3b8796a2f6645693f7ebe8d20",
      "parents": [
        "a8881f5a5c723f82da84b786d3ca83a0df9e0c33"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:37 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:37 2006 -0500"
      },
      "message": "NFS: Debugging code for nfs_direct_(read|write)_schedule()\n\nMake sure that we\u0027re doing our list accounting correctly.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a8881f5a5c723f82da84b786d3ca83a0df9e0c33",
      "tree": "50e01d4a0d3b803a5103e427e94a316d7ec92c81",
      "parents": [
        "fad61490419b3e494f300e9b2579810ef3bcda31"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:36 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:36 2006 -0500"
      },
      "message": "NFS: O_DIRECT async IO may lose context\n\nThe struct nfs_direct_req currently keeps a pointer to the file descriptor\nwithout referencing it. This may cause problems if the parent process is\nkilled.\n\nThe nfs_open_context should normally have all the information that we\u0027re\ncurrently using the filp for, and unlike fput(), is safe to release from\nan rpciod process context.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fad61490419b3e494f300e9b2579810ef3bcda31",
      "tree": "1bca68921a83d4dc0219aa8d46c3c8e8313965c2",
      "parents": [
        "e17b1fc4b35399935f00a635206e183d9292fe4f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:36 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:36 2006 -0500"
      },
      "message": "nfs: Use UNSTABLE + COMMIT for NFS O_DIRECT writes\n\nCurrently NFS O_DIRECT writes use FILE_SYNC so that a COMMIT is not\nnecessary.  This simplifies the internal logic, but this could be a\ndifficult workload for some servers.\n\nInstead, let\u0027s send UNSTABLE writes, and after they all complete, send a\nCOMMIT for the dirty range.  After the COMMIT returns successfully, then do\nthe wake_up or fire off aio_complete().\n\nTest plan:\nAsync direct I/O tests against Solaris (or any server that requires\ncommitted unstable writes).  Reboot server during test.\n\nBased on an earlier patch by Chuck Lever \u003ccel@netapp.com\u003e\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a37ec012d7fd352648c8455d3396ea24001efcd3",
      "tree": "778182e20ada2cf1ce3a5507ab1eec96c16633b2",
      "parents": [
        "15ce4a0c1ce0d5e288398cb9e5493fd4e55e2025"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Mon Mar 20 13:44:35 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:35 2006 -0500"
      },
      "message": "NFS: fix data_update accounting in NFS direct I/O path\n\n^C against \"iozone -I\" is hitting the assertion in nfs_clear_inode().\n\nTest plan:\n\"iozone -i0 -I -a -c\" against a slow server, then control C.  This should\nnot cause an oops.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "15ce4a0c1ce0d5e288398cb9e5493fd4e55e2025",
      "tree": "b40b3096bbbed8b0aa2a29e9374240dd7eaa47a0",
      "parents": [
        "88467055f7654302c12df74e5fe4d12516656a39"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Mon Mar 20 13:44:34 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:34 2006 -0500"
      },
      "message": "NFS: Replace atomic_t variables in nfs_direct_req with a single spin lock\n\nThree atomic_t variables cause a lot of bus locking.  Because they are all\nused in the same places in the code, just use a single spin lock.\n\nNow that the atomic_t variables are gone, we can remove the request size\nlimitation since the code no longer depends on the limited width of atomic_t\non some platforms.\n\nTest plan:\nCompile with CONFIG_NFS and CONFIG_NFS_DIRECTIO enabled.  Millions of fsx\noperations, iozone, OraSim.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "88467055f7654302c12df74e5fe4d12516656a39",
      "tree": "cf1ccdc6a933bcd93665fcea4947e0f7f59d5241",
      "parents": [
        "9eafa8cc521b489f205bf7b0634c99e34e046606"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Mon Mar 20 13:44:34 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:34 2006 -0500"
      },
      "message": "NFS: clean up comments and tab damage in direct.c\n\nClean up tab damage and comments.  Replace \"file_offset\" with more commonly\nused \"pos\".\n\nTest plan:\nCompile with CONFIG_NFS and CONFIG_NFS_DIRECTIO enabled.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9eafa8cc521b489f205bf7b0634c99e34e046606",
      "tree": "5afa96efb2dcd0a211402603977b2ce0428a9741",
      "parents": [
        "c89f2ee5f9223b864725f7344f24a037dfa76568"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Mon Mar 20 13:44:33 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:33 2006 -0500"
      },
      "message": "NFS: support EIOCBQUEUED return in direct write path\n\nFor async iocb\u0027s, the NFS direct write path now returns EIOCBQUEUED,\nand calls aio_complete when all the requested writes are finished.  The\nsynchronous part of the NFS direct write path behaves exactly as it\nwas before.\n\nShared mapped NFS files will have some coherency difficulties when\naccessed concurrently with aio+dio.  Will need to explore how this\nis handled in the local file system case.\n\nTest plan:\naio-stress with \"-O\". OraSim.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c89f2ee5f9223b864725f7344f24a037dfa76568",
      "tree": "b83235bfd96c4a81697609f61b2ce4e3de54e49b",
      "parents": [
        "47989d7454398827500d0e73766270986a3b488f"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Mon Mar 20 13:44:33 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:33 2006 -0500"
      },
      "message": "NFS: make iocb available everywhere in direct write path\n\nPass the iocb argument all the way down to the direct write request\nscheduler, and make it available in nfs_direct_write_result.\n\nTest plan:\nCompile the kernel with CONFIG_NFS and CONFIG_NFS_DIRECTIO enabled.\nMillions of fsx-odirect ops.  OraSim.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "47989d7454398827500d0e73766270986a3b488f",
      "tree": "ca7c3ce3ec47d6f16fa1b42be7c468266ed3fce9",
      "parents": [
        "462d5b3296b56289efec426499a83faad4c08d9e"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Mon Mar 20 13:44:32 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:32 2006 -0500"
      },
      "message": "NFS: remove support for multi-segment iovs in the direct write path\n\nEliminate the persistent use of automatic storage in all parts of the\nNFS client\u0027s direct write path to pave the way for introducing support\nfor aio against files opened with the O_DIRECT flag.\n\nTest plan:\nCompile the kernel with CONFIG_NFS and CONFIG_NFS_DIRECTIO enabled.\nMillions of fsx-odirect ops.  OraSim.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "462d5b3296b56289efec426499a83faad4c08d9e",
      "tree": "eb4f9a0418e1190958603360cf9bcea0cbb67727",
      "parents": [
        "63ab46abc70b01cb0711301f5ddb08c1c0bb9b1c"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Mon Mar 20 13:44:32 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:32 2006 -0500"
      },
      "message": "NFS: make direct write path generate write requests concurrently\n\nDuplicate infrastructure from direct read path that will allow write\npath to generate multiple write requests concurrently.  This will\nenable us to add support for aio in this path.\n\nTemporarily we will lose the ability to do UNSTABLE writes followed by\na COMMIT in the direct write path.  However, all applications I am\naware of that use NFS O_DIRECT currently write in relatively small\nchunks, so this should not be inconvenient in any way.\n\nTest plan:\nMillions of fsx-odirect ops. OraSim.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "63ab46abc70b01cb0711301f5ddb08c1c0bb9b1c",
      "tree": "4d1d03a95f1468d240c3c7e0cd207fc14aa54023",
      "parents": [
        "93619e5989173614bef0013b0bb8a3fe3dbd5a95"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Mon Mar 20 13:44:31 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:31 2006 -0500"
      },
      "message": "NFS: create common routine for handling direct I/O completion\n\nFactor out the common piece of completing an NFS direct I/O request.\n\nTest plan:\nCompile kernel with CONFIG_NFS and CONFIG_NFS_DIRECTIO enabled.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "93619e5989173614bef0013b0bb8a3fe3dbd5a95",
      "tree": "2172226a57bae4db4943d271e5250fd0606a74d1",
      "parents": [
        "bc0fb201b34b12e2d16e8cbd5bb078c1db936304"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Mon Mar 20 13:44:31 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:31 2006 -0500"
      },
      "message": "NFS: create common routine for allocating nfs_direct_req\n\nFactor out a small common piece of the path that allocate nfs_direct_req\nstructures.\n\nTest plan:\nCompile kernel with CONFIG_NFS and CONFIG_NFS_DIRECTIO enabled.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bc0fb201b34b12e2d16e8cbd5bb078c1db936304",
      "tree": "58a9aa8bee2de7e42f81c522115cd10078a6a5ef",
      "parents": [
        "487b83723ed4d4eaafd5109f36560da4f15c6578"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Mon Mar 20 13:44:31 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:31 2006 -0500"
      },
      "message": "NFS: create common routine for waiting for direct I/O to complete\n\nWe\u0027re about to add asynchrony to the NFS direct write path.  Begin by\nabstracting out the common pieces in the read path.\n\nThe first piece is nfs_direct_read_wait, which works the same whether the\nprocess is waiting for a read or a write.\n\nTest plan:\nCompile kernel with CONFIG_NFS and CONFIG_NFS_DIRECTIO enabled.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "487b83723ed4d4eaafd5109f36560da4f15c6578",
      "tree": "8c869604c0b934f5b207c89e90aea9977c5d8ade",
      "parents": [
        "99514f8fdda2beef1ca922b7f9d89c1a2c57fec0"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Mon Mar 20 13:44:30 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:30 2006 -0500"
      },
      "message": "NFS: support EIOCBQUEUED return in direct read path\n\nFor async iocb\u0027s, the NFS direct read path should return EIOCBQUEUED and\ncall aio_complete when all the requested reads are finished.  The\nsynchronous part of the NFS direct read path behaves exactly as it was\nbefore.\n\nTest plan:\naio-stress with \"-O\".  OraSim.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "99514f8fdda2beef1ca922b7f9d89c1a2c57fec0",
      "tree": "74a96ad19ed705775d9cd87b79c28aafe0286dee",
      "parents": [
        "0cdd80d07fb0f558dfdb30f6e0b9905f5e5475f1"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Mon Mar 20 13:44:30 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:30 2006 -0500"
      },
      "message": "NFS: make iocb available everywhere in direct read path\n\nPass the iocb argument all the way down to the direct read request\nscheduler, and make it available in nfs_direct_read_result.\n\nTest plan:\nCompile the kernel with CONFIG_NFS and CONFIG_NFS_DIRECTIO enabled.\nMillions of fsx-odirect ops.  OraSim.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0cdd80d07fb0f558dfdb30f6e0b9905f5e5475f1",
      "tree": "c25fe5e4bdb4196039bf5b098c1c9f58e98af2e2",
      "parents": [
        "5dd602f20688e08c85ac91e0451c4e6321ed25d7"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Mon Mar 20 13:44:29 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:29 2006 -0500"
      },
      "message": "NFS: remove support for multi-segment iovs in the direct read path\n\nEliminate the persistent use of automatic storage in all parts of the NFS\nclient\u0027s direct read path to pave the way for introducing support for aio\nagainst files opened with the O_DIRECT flag.\n\nTest plan:\nCompile the kernel with CONFIG_NFS and CONFIG_NFS_DIRECTIO enabled.\nMillions of fsx-odirect ops.  OraSim.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5dd602f20688e08c85ac91e0451c4e6321ed25d7",
      "tree": "e89a89d68ec0fcdc6fd18570c0df9daa15e23902",
      "parents": [
        "d4cc948ba97980c55a308eab167a695109796456"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Mon Mar 20 13:44:29 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:29 2006 -0500"
      },
      "message": "NFS: use size_t type for holding rsize bytes in NFS O_DIRECT read path\n\nsize_t is used for holding byte counts, so use it for variables storing rsize.\nNote that the write path will be updated as we add support for async\nO_DIRECT writes.\n\nTest plan:\nNeed to verify that existing comparisons against new size_t variables behave\ncorrectly.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d4cc948ba97980c55a308eab167a695109796456",
      "tree": "fbf3b293b8ac129019723fe53dca0329c7552c13",
      "parents": [
        "b8a32e2b8b7fefff994c89d398b6ac920a195b43"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Mon Mar 20 13:44:28 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:28 2006 -0500"
      },
      "message": "NFS: update comments and function definitions in fs/nfs/direct.c\n\nUpdate to latest coding style standards.  Remove block comments on\nstatically defined functions, and place function definitions all on\none line.\n\nTest plan:\nCompile kernel with CONFIG_NFS and CONFIG_NFS_DIRECTIO.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b8a32e2b8b7fefff994c89d398b6ac920a195b43",
      "tree": "20f0c2610eddb104a8cbf1d7981b34fc962a92ea",
      "parents": [
        "ec06c096edec0755534c7126f4caded69de131c2"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Mon Mar 20 13:44:28 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:28 2006 -0500"
      },
      "message": "NFS: clean up NFS client\u0027s a_ops-\u003edirect_IO method\n\nThe NFS client\u0027s a_ops-\u003edirect_IO method, nfs_direct_IO, is required to\nbe present to allow NFS files to be opened with O_DIRECT, but is never\ncalled because the NFS client shunts reads and writes to files opened\nwith O_DIRECT directly to its own routines.\n\nGut the nfs_direct_IO function.  This eliminates the only part of the\nNFS client\u0027s direct I/O path that requires support for multi-segment\niovs, allowing further simplification in subsequent patches.\n\nTest plan:\nCompile the kernel with CONFIG_NFS and CONFIG_NFS_DIRECTIO enabled.  Millions\nof fsx-odirect ops.  OraSim.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ec06c096edec0755534c7126f4caded69de131c2",
      "tree": "1f5b219c09dea1d9886cefe3ea3f7cef560a5e9a",
      "parents": [
        "788e7a89a03e364855583c0ab4649b94925efbb9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:27 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:27 2006 -0500"
      },
      "message": "NFS: Cleanup of NFS read code\n\nSame callback hierarchy inversion as for the NFS write calls. This patch is\nnot strictly speaking needed by the O_DIRECT code, but avoids confusing\ndifferences between the asynchronous read and write code.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "91d5b47023b608227d605d1e916b29dd0215bff7",
      "tree": "31dbb285639ea68db3abc0c4129988f02d50f11a",
      "parents": [
        "d9ef5a8c26aab09762afce43df64736720b4860e"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Mon Mar 20 13:44:14 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:14 2006 -0500"
      },
      "message": "NFS: add I/O performance counters\n\nInvoke the byte and event counter macros where we want to count bytes and\nevents.\n\nClean-up: fix a possible NULL dereference in nfs_lock, and simplify\nnfs_file_open.\n\nTest-plan:\nfsx and iozone on UP and SMP systems, with and without pre-emption.  Watch\nfor memory overwrite bugs, and performance loss (significantly more CPU\nrequired per op).\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "143f412eb4c7cc48b9eb4381f9133b7d36c68075",
      "tree": "383c140bf7879c77781d4aa113e517a92f16991d",
      "parents": [
        "f9a3879abf2f1a27c39915e6074b8ff15a24cb55"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 13 21:20:46 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 14 07:57:17 2006 -0800"
      },
      "message": "[PATCH] NFS: Fix a potential panic in O_DIRECT\n\nBased on an original patch by Mike O\u0027Connor and Greg Banks of SGI.\n\nMike states:\n\nA normal user can panic an NFS client and cause a local DoS with\n\u0027judicious\u0027(?) use of O_DIRECT.  Any O_DIRECT write to an NFS file where the\nuser buffer starts with a valid mapped page and contains an unmapped page,\nwill crash in this way.  I haven\u0027t followed the code, but O_DIRECT reads with\nsimilar user buffers will probably also crash albeit in different ways.\n\nDetails: when nfs_get_user_pages() calls get_user_pages(), it detects and\ncorrectly handles get_user_pages() returning an error, which happens if the\nfirst page covered by the user buffer\u0027s address range is unmapped.  However,\nif the first page is mapped but some subsequent page isn\u0027t, get_user_pages()\nwill return a positive number which is less than the number of pages requested\n(this behaviour is sort of analagous to a short write() call and appears to be\nintentional).  nfs_get_user_pages() doesn\u0027t detect this and hands off the\narray of pages (whose last few elements are random rubbish from the newly\nallocated array memory) to it\u0027s caller, whence they go to\nnfs_direct_write_seg(), which then totally ignores the nr_pages it\u0027s given,\nand calculates its own idea of how many pages are in the array from the user\nbuffer length.  Needless to say, when it comes to transmit those uninitialised\npage* pointers, we see a crash in the network stack.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1935245655996ca4d14e687c3a100d2e2bbdc78d",
      "tree": "9b5d286f8c72ce08b3b723ef4f9af76db430894a",
      "parents": [
        "fba3bad488a2eec2d76c067edb7a5ff92ef42431"
      ],
      "author": {
        "name": "Dirk Mueller",
        "email": "dmueller@suse.com",
        "time": "Wed Feb 01 12:19:47 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Feb 01 12:52:25 2006 -0500"
      },
      "message": "NFSv3: fix sync_retry in direct i/o NFS\n\n Only do a sync_retry if the memcmp failed.\n\n Signed-off-by: Dirk Mueller \u003cdmueller@suse.com\u003e\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "566dd6064e89b15ff2dec666a421bebf0f98f26c",
      "tree": "45ccdc3084c56557ba5baeae771be7c1e0564ae5",
      "parents": [
        "70b9ecbdb9c5fdc731f8780bffd45d9519020c4a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:35 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:50 2006 -0500"
      },
      "message": "NFS: Make directIO aware of compound pages...\n\n ...and avoid calling set_page_dirty on them\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "40859d7ee64ed6bfad8a4e93f9bb5c1074afadff",
      "tree": "ed4069423c3d6551035d5b6116f50452cdac4103",
      "parents": [
        "325cfed9ae901320e9234b18c21434b783dbe342"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Wed Nov 30 18:09:02 2005 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:49 2006 -0500"
      },
      "message": "NFS: support large reads and writes on the wire\n\n Most NFS server implementations allow up to 64KB reads and writes on the\n wire.  The Solaris NFS server allows up to a megabyte, for instance.\n\n Now the Linux NFS client supports transfer sizes up to 1MB, too.  This will\n help reduce protocol and context switch overhead on read/write intensive NFS\n workloads, and support larger atomic read and write operations on servers\n that support them.\n\n Test-plan:\n Connectathon and iozone on mount point with wsize\u003drsize\u003e32768 over TCP.\n Tests with NFS over UDP to verify the maximum RPC payload size cap.\n\n Signed-off-by: Chuck Lever \u003ccel@netapp.com\u003e\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ce1a8e6796150233f5098100f70217521dc7c08f",
      "tree": "439d2abd246e051c43d1cdb7ee3b77b8864fd2b3",
      "parents": [
        "286d7d6a0cb38d3d4316a1dfea9b0c0fc5a6455b"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Wed Nov 30 18:08:17 2005 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:47 2006 -0500"
      },
      "message": "NFS: use generic_write_checks() to sanity check direct writes\n\n Replace ad hoc write parameter sanity checking in nfs_file_direct_write()\n with a call to generic_write_checks().  This should make the proper checks\n modulo the O_LARGEFILE flag, and should catch NFSv2-specific limitations by\n virtue of i_sb-\u003es_maxbytes.\n\n Test plan:\n Posix compliance testing with both NFSv2 and NFSv3.\n\n Signed-off-by: Chuck Lever \u003ccel@netapp.com\u003e\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "44c288732fdbd7e38460d156a40d29590bf93bce",
      "tree": "d4239fe37529b4799e85443f803db754ef66f874",
      "parents": [
        "4ce70ada1ff1d0b80916ec9ec5764ce44a50a54f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:06 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:40 2006 -0500"
      },
      "message": "NFSv4: stateful NFSv4 RPC call interface\n\n The NFSv4 model requires us to complete all RPC calls that might\n establish state on the server whether or not the user wants to\n interrupt it. We may also need to schedule new work (including\n new RPC calls) in order to cancel the new state.\n\n The asynchronous RPC model will allow us to ensure that RPC calls\n always complete, but in order to allow for \"synchronous\" RPC, we\n want to add the ability to wait for completion.\n The waits are, of course, interruptible.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "963d8fe53339128ee46a7701f2e36305f0ccff8c",
      "tree": "426736c70a8e05cb1d945d5c7f44ea6475edd113",
      "parents": [
        "abbcf28f23d53e8ec56a91f3528743913fa2694a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:04 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:39 2006 -0500"
      },
      "message": "RPC: Clean up RPC task structure\n\n Shrink the RPC task structure. Instead of storing separate pointers\n for task-\u003etk_exit and task-\u003etk_release, put them in a structure.\n\n Also pass the user data pointer as a parameter instead of passing it via\n task-\u003etk_calldata. This enables us to nest callbacks.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "29884df0d89c1df0dec3449405bc41569bb44800",
      "tree": "b836dc3ece80a901d1b7a9e946bf0d51ec0c8c4f",
      "parents": [
        "b079fa7baa86b47579f3f60f86d03d21c76159b8"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 13 16:13:54 2005 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Dec 19 23:12:09 2005 -0500"
      },
      "message": "NFS: Fix another O_DIRECT race\n\n Ensure we call unmap_mapping_range() and sync dirty pages to disk before\n doing an NFS direct write.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0bbacc402e67abca8794a8401c1621dc0c0202e9",
      "tree": "a0969978295b806b35c943eb16af34b1eacfa47a",
      "parents": [
        "c556b754967afd0878d65de2cfe0675577b0f62f"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Tue Nov 01 16:53:32 2005 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Nov 04 15:39:48 2005 -0500"
      },
      "message": "NFS,SUNRPC,NLM: fix unused variable warnings when CONFIG_SYSCTL is disabled\n\n Fix some dprintk\u0027s so that NLM, NFS client, and RPC client compile\n cleanly if CONFIG_SYSCTL is disabled.\n\n Test plan:\n Compile kernel with CONFIG_NFS enabled and CONFIG_SYSCTL disabled.\n\n Signed-off-by: Chuck Lever \u003ccel@netapp.com\u003e\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "45778ca819accab1a4a3378b3566cab0f189164f",
      "tree": "9214491346c8d2d91eb1a11cb6c2e6a9387e4290",
      "parents": [
        "280dedb8d64ccfe1166ae03d3b254fc3b65de6a5"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "christoph@graphe.net",
        "time": "Thu Jun 23 00:10:17 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:33 2005 -0700"
      },
      "message": "[PATCH] Remove f_error field from struct file\n\nThe following patch removes the f_error field and all checks of f_error.\n\nTrond said:\n\n  f_error was introduced for NFS, and made sense when we were guaranteed\n  always to have a file pointer around when write errors occurred.  Since\n  then, we have (for various reasons) had to introduce the nfs_open_context in\n  order to track the file read/write state, and it made sense to move our\n  f_error tracking there too.\n\nSigned-off-by: Christoph Lameter \u003cchristoph@lameter.com\u003e\nAcked-by: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "951a143b3fcf15cfa9d38250b7462f821db241db",
      "tree": "6e4ea13c5f48cc3e1ac1c8649dd0f9f20c502e20",
      "parents": [
        "08e9eac42edab63bce14b5c8419771f3c92aa3f4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 17:16:30 2005 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 16:07:36 2005 -0400"
      },
      "message": "[PATCH] NFS: Fix the file size revalidation\n\n Instead of looking at whether or not the file is open for writes before\n we accept to update the length using the server value, we should rather\n be looking at whether or not we are currently caching any writes.\n\n Failure to do so means in particular that we\u0027re not updating the file\n length correctly after obtaining a POSIX or BSD lock.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
