)]}'
{
  "log": [
    {
      "commit": "0ef97dcfce4179a2eba046b855ee2f91d6f1b414",
      "tree": "d5a29275a427dafd8fce0131b58f215c6252d3e2",
      "parents": [
        "16b1c1cd71176ab0a76b26818fbf12db9183ed57"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon May 21 17:30:20 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 01 12:12:02 2012 -0400"
      },
      "message": "nfs: don\u0027t open in -\u003ed_revalidate\n\nNFSv4 can\u0027t do reliable opens in d_revalidate, since it cannot know whether a\nmount needs to be followed or not.  It does check d_mountpoint() on the dentry,\nwhich can result in a weird error if the VFS found that the mount does not in\nfact need to be followed, e.g.:\n\n  # mount --bind /mnt/nfs /mnt/nfs-clone\n  # echo something \u003e /mnt/nfs/tmp/bar\n  # echo x \u003e /tmp/file\n  # mount --bind /tmp/file /mnt/nfs-clone/tmp/bar\n  # cat  /mnt/nfs/tmp/bar\n  cat: /mnt/nfs/tmp/bar: Not a directory\n\nWhich should, by any sane filesystem, result in \"something\" being printed.\n\nSo instead do the open in f_op-\u003eopen() and in the unlikely case that the cached\ndentry turned out to be invalid, drop the dentry and return EOPENSTALE to let\nthe VFS retry.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "53f2c4a8fd882009a2a75c5b72d6898c0808616e",
      "tree": "922293a1056c0c2358203cdab832f0e0891e628a",
      "parents": [
        "8f6576ad476b2a22d05ddafd2ddaee102577a4ed",
        "cc0a98436820b161b595b8cc1d2329bcf7328107"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 10:43:51 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 10:43:51 2012 -0700"
      },
      "message": "Merge tag \u0027nfs-for-3.5-1\u0027 of git://git.linux-nfs.org/projects/trondmy/linux-nfs\n\nPull NFS client updates from Trond Myklebust:\n \"New features include:\n   - Rewrite the O_DIRECT code so that it can share the same coalescing\n     and pNFS functionality as the page cache code.\n   - Allow the server to provide hints as to when we should use pNFS,\n     and when it is more efficient to read and write through the\n     metadata server.\n   - NFS cache consistency updates:\n     * Use the ctime to emulate a change attribute for NFSv2/v3 so that\n       all NFS versions can share the same cache management code.\n     * New cache management code will only look at the change attribute\n       and size attribute when deciding whether or not our cached data\n       is still valid or not.\n     * Don\u0027t request NFSv4 post-op attributes on writes in cases such as\n       O_DIRECT, where we don\u0027t care about data cache consistency, or\n       when we have a write delegation, and know that our cache is still\n       consistent.\n     * Don\u0027t request NFSv4 post-op attributes on operations such as\n       COMMIT, where there are no expected metadata updates.\n     * Don\u0027t request NFSv4 directory post-op attributes in cases where\n       the operations themselves already return change attribute\n       updates: i.e. operations such as OPEN, CREATE, REMOVE, LINK and\n       RENAME.\n   - Speed up \u0027ls\u0027 and friends by using READDIR rather than READDIRPLUS\n     if we detect no attempts to lookup filenames.\n   - Improve the code sharing between NFSv2/v3 and v4 mounts\n   - NFSv4.1 state management efficiency improvements\n   - More patches in preparation for NFSv4/v4.1 migration functionality.\"\n\nFix trivial conflict in fs/nfs/nfs4proc.c that was due to the dcache\nqstr name initialization changes (that made the length/hash a 64-bit\nunion)\n\n* tag \u0027nfs-for-3.5-1\u0027 of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (146 commits)\n  NFSv4: Add debugging printks to state manager\n  NFSv4: Map NFS4ERR_SHARE_DENIED into an EACCES error instead of EIO\n  NFSv4: update_changeattr does not need to set NFS_INO_REVAL_PAGECACHE\n  NFSv4.1: nfs4_reset_session should use nfs4_handle_reclaim_lease_error\n  NFSv4.1: Handle other occurrences of NFS4ERR_CONN_NOT_BOUND_TO_SESSION\n  NFSv4.1: Handle NFS4ERR_CONN_NOT_BOUND_TO_SESSION in the state manager\n  NFSv4.1: Handle errors in nfs4_bind_conn_to_session\n  NFSv4.1: nfs4_bind_conn_to_session should drain the session\n  NFSv4.1: Don\u0027t clobber the seqid if exchange_id returns a confirmed clientid\n  NFSv4.1: Add DESTROY_CLIENTID\n  NFSv4.1: Ensure we use the correct credentials for bind_conn_to_session\n  NFSv4.1: Ensure we use the correct credentials for session create/destroy\n  NFSv4.1: Move NFSPROC4_CLNT_BIND_CONN_TO_SESSION to the end of the operations\n  NFSv4.1: Handle NFS4ERR_SEQ_MISORDERED when confirming the lease\n  NFSv4: When purging the lease, we must clear NFS4CLNT_LEASE_CONFIRM\n  NFSv4: Clean up the error handling for nfs4_reclaim_lease\n  NFSv4.1: Exchange ID must use GFP_NOFS allocation mode\n  nfs41: Use BIND_CONN_TO_SESSION for CB_PATH_DOWN*\n  nfs4.1: add BIND_CONN_TO_SESSION operation\n  NFSv4.1 test the mdsthreshold hint parameters\n  ...\n"
    },
    {
      "commit": "26fe575028703948880fce4355a210c76bb0536e",
      "tree": "0a7d04289e1eb1f1739659ebc9498d40f2add5da",
      "parents": [
        "ee983e89670704b2a05e897b161f2674a42d1508"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 10 13:14:12 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 10 19:54:35 2012 -0700"
      },
      "message": "vfs: make it possible to access the dentry hash/len as one 64-bit entry\n\nThis allows comparing hash and len in one operation on 64-bit\narchitectures.  Right now only __d_lookup_rcu() takes advantage of this,\nsince that is the case we care most about.\n\nThe use of anonymous struct/unions hides the alternate 64-bit approach\nfrom most users, the exception being a few cases where we initialize a\n\u0027struct qstr\u0027 with a static initializer.  This makes the problematic\ncases use a new QSTR_INIT() helper function for that (but initializing\njust the name pointer with a \"{ .name \u003d xyzzy }\" initializer remains\nvalid, as does just copying another qstr structure).\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d69ee9b85541a69a1092f5da675bd23256dc62af",
      "tree": "5f890def2d1d4bca93a5acaf073fa4cbe5f16a44",
      "parents": [
        "8582715e733d08bc98fe629db0601360d70de4dc"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 01 17:37:59 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 01 19:16:43 2012 -0400"
      },
      "message": "NFS: Adapt readdirplus to application usage patterns\n\nWhile the use of READDIRPLUS is significantly more efficient than\nREADDIR followed by many LOOKUP calls, it is still less efficient\nthan just READDIR if the attributes are not required.\n\nThis patch tracks when lookups are attempted on the directory,\nand uses that information to selectively disable READDIRPLUS\non that directory.\nThe first \u0027readdir\u0027 call is always served using READDIRPLUS.\nSubsequent calls only use READDIRPLUS if there was a successful\nlookup or revalidation on a child in the mean time.\n\nCredit for the original idea should go to Neil Brown. See:\n      http://www.spinics.net/lists/linux-nfs/msg19996.html\nHowever, the implementation in this patch differs from Neil\u0027s\nin that it focuses on tracking lookups rather than calls to\nstat().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "80a16b21a81eb639f0b726549f4c46c0e9aff92e",
      "tree": "5095cb05498d16e64976b03c38b3fcdaa83e4ecb",
      "parents": [
        "281cad46b34db4dbb1d1e603f7b9cfe25d1ae7c9"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Fri Apr 27 13:27:46 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 27 14:10:39 2012 -0400"
      },
      "message": "NFS: Remove extra rpc_clnt argument to proc_lookup\n\nNow that I\u0027m doing secinfo automatically in the v4 code this extra\nargument isn\u0027t needed.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "451146be933e26e21277852b5e40c6a52266ef96",
      "tree": "207795769b9e1b18952f67fda9db5c7259fb9d63",
      "parents": [
        "55725513b5ef9d462aa3e18527658a0362aaae83"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Apr 18 16:29:11 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Apr 19 13:23:09 2012 -0400"
      },
      "message": "NFSv4: Fix open(O_TRUNC) and ftruncate() error handling\n\nIf the file wasn\u0027t opened for writing, then truncate and ftruncate\nneed to report the appropriate errors.\n\nReported-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "f63d395d47f37a4fe771e6d4b1db9d2cdae5ffc5",
      "tree": "3448a14ae965802adb963762cadeb9989ce4caa2",
      "parents": [
        "643ac9fc5429e85b8b7f534544b80bcc4f34c367",
        "5a7c9eec9fde1da0e3adf0a4ddb64ff2a324a492"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 23 08:53:47 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 23 08:53:47 2012 -0700"
      },
      "message": "Merge tag \u0027nfs-for-3.4-1\u0027 of git://git.linux-nfs.org/projects/trondmy/linux-nfs\n\nPull NFS client updates for Linux 3.4 from Trond Myklebust:\n \"New features include:\n   - Add NFS client support for containers.\n\n     This should enable most of the necessary functionality, including\n     lockd support, and support for rpc.statd, NFSv4 idmapper and\n     RPCSEC_GSS upcalls into the correct network namespace from which\n     the mount system call was issued.\n\n   - NFSv4 idmapper scalability improvements\n\n     Base the idmapper cache on the keyring interface to allow\n     concurrent access to idmapper entries.  Start the process of\n     migrating users from the single-threaded daemon-based approach to\n     the multi-threaded request-key based approach.\n\n   - NFSv4.1 implementation id.\n\n     Allows the NFSv4.1 client and server to mutually identify each\n     other for logging and debugging purposes.\n\n   - Support the \u0027vers\u003d4.1\u0027 mount option for mounting NFSv4.1 instead of\n     having to use the more counterintuitive \u0027vers\u003d4,minorversion\u003d1\u0027.\n\n   - SUNRPC tracepoints.\n\n     Start the process of adding tracepoints in order to improve\n     debugging of the RPC layer.\n\n   - pNFS object layout support for autologin.\n\n  Important bugfixes include:\n\n   - Fix a bug in rpc_wake_up/rpc_wake_up_status that caused them to\n     fail to wake up all tasks when applied to priority waitqueues.\n\n   - Ensure that we handle read delegations correctly, when we try to\n     truncate a file.\n\n   - A number of fixes for NFSv4 state manager loops (mostly to do with\n     delegation recovery).\"\n\n* tag \u0027nfs-for-3.4-1\u0027 of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (224 commits)\n  NFS: fix sb-\u003es_id in nfs debug prints\n  xprtrdma: Remove assumption that each segment is \u003c\u003d PAGE_SIZE\n  xprtrdma: The transport should not bug-check when a dup reply is received\n  pnfs-obj: autologin: Add support for protocol autologin\n  NFS: Remove nfs4_setup_sequence from generic rename code\n  NFS: Remove nfs4_setup_sequence from generic unlink code\n  NFS: Remove nfs4_setup_sequence from generic read code\n  NFS: Remove nfs4_setup_sequence from generic write code\n  NFS: Fix more NFS debug related build warnings\n  SUNRPC/LOCKD: Fix build warnings when CONFIG_SUNRPC_DEBUG is undefined\n  nfs: non void functions must return a value\n  SUNRPC: Kill compiler warning when RPC_DEBUG is unset\n  SUNRPC/NFS: Add Kbuild dependencies for NFS_DEBUG/RPC_DEBUG\n  NFS: Use cond_resched_lock() to reduce latencies in the commit scans\n  NFSv4: It is not safe to dereference lsp-\u003els_state in release_lockowner\n  NFS: ncommit count is being double decremented\n  SUNRPC: We must not use list_for_each_entry_safe() in rpc_wake_up()\n  Try using machine credentials for RENEW calls\n  NFSv4.1: Fix a few issues in filelayout_commit_pagelist\n  NFSv4.1: Clean ups and bugfixes for the pNFS read/writeback/commit code\n  ...\n"
    },
    {
      "commit": "2b86ce2db3349f5c2af81769c2596ee0d5a63a47",
      "tree": "41d9a8973b50bb96929f3cbd6d9faf49cb2cc3dd",
      "parents": [
        "27a6d5c742ceff68b09396bb99cd6344afa85330"
      ],
      "author": {
        "name": "Cong Wang",
        "email": "amwang@redhat.com",
        "time": "Fri Nov 25 23:14:33 2011 +0800"
      },
      "committer": {
        "name": "Cong Wang",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Tue Mar 20 21:48:24 2012 +0800"
      },
      "message": "nfs: remove the second argument of k[un]map_atomic()\n\nSigned-off-by: Cong Wang \u003camwang@redhat.com\u003e\n"
    },
    {
      "commit": "88b8e133c46792d264c991065c2c395d0b3b5482",
      "tree": "b1830fe3f798160a9bf430e19e9f6f7405d20717",
      "parents": [
        "3862279a5fcf44d0c68fa54a507a5bcd2ab4f0b7"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Mar 01 17:00:23 2012 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 02 15:36:13 2012 -0500"
      },
      "message": "NFS: Make nfs_cache_array.size a signed integer\n\nEliminate a number of implicit type casts in comparisons, and these\ncompiler warnings:\n\nfs/nfs/dir.c: In function ‘nfs_readdir_clear_array’:\nfs/nfs/dir.c:264:16: warning: comparison between signed and unsigned\n\t\tinteger expressions [-Wsign-compare]\nfs/nfs/dir.c: In function ‘nfs_readdir_search_for_cookie’:\nfs/nfs/dir.c:352:16: warning: comparison between signed and unsigned\n\t\tinteger expressions [-Wsign-compare]\nfs/nfs/dir.c: In function ‘nfs_do_filldir’:\nfs/nfs/dir.c:769:38: warning: comparison between signed and unsigned\n\t\tinteger expressions [-Wsign-compare]\nfs/nfs/dir.c:780:9: warning: comparison between signed and unsigned\n\t\tinteger expressions [-Wsign-compare]\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "536e43d12b9517bbbf6114cd1a12be27857a4d7a",
      "tree": "a40424a430fd651fe7b35232717f2201c608059a",
      "parents": [
        "48c22eb21071a3524f8b6e587371be35b5e86969"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 17 22:04:26 2012 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 31 19:28:07 2012 -0500"
      },
      "message": "NFS: Optimise away unnecessary setattrs for open(O_TRUNC);\n\nCurrently, we will correctly optimise away a truncate that doesn\u0027t\nchange the file size. However, in the case of open(O_TRUNC), we\nalso want to optimise away the time changes.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1a67aafb5f72a436ca044293309fa7e6351d6a35",
      "tree": "d9e58600148de9d41b478cf815773b746647d15b",
      "parents": [
        "4acdaf27ebe2034c342f3be57ef49aed1ad885ef"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 01:52:52 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:54 2012 -0500"
      },
      "message": "switch -\u003emknod() to umode_t\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4acdaf27ebe2034c342f3be57ef49aed1ad885ef",
      "tree": "d89a876ee19cd88609a587f8aa6c464a52ee6d98",
      "parents": [
        "18bb1db3e7607e4a997d50991a6f9fa5b0f8722c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 01:42:34 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:53 2012 -0500"
      },
      "message": "switch -\u003ecreate() to umode_t\n\nvfs_create() ignores everything outside of 16bit subset of its\nmode argument; switching it to umode_t is obviously equivalent\nand it\u0027s the only caller of the method\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "18bb1db3e7607e4a997d50991a6f9fa5b0f8722c",
      "tree": "4ee4e584bc9a67f3ec14ce159d2d7d4a27e68d4a",
      "parents": [
        "8208a22bb8bd3c52ef634b4ff194f14892ab1713"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 01:41:39 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:53 2012 -0500"
      },
      "message": "switch vfs_mkdir() and -\u003emkdir() to umode_t\n\nvfs_mkdir() gets int, but immediately drops everything that might not\nfit into umode_t and that\u0027s the only caller of -\u003emkdir()...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5ede7b1cfa8201418fb35e12f770e9e7c2559a4d",
      "tree": "c26d99fbbed708a6db116e57daca68f2b3c672ac",
      "parents": [
        "157e8bf8b4823bfcdefa6c1548002374b61f61df"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Oct 23 18:49:54 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:52:34 2012 -0500"
      },
      "message": "pull manipulations of rpc_cred inside alloc_nfs_open_context()\n\nNo need to duplicate them in both callers; make it return\nERR_PTR(-ENOMEM) on allocation failure instead of NULL and\nit\u0027ll be able to report rpc_lookup_cred() failures just\nfine.  Callers are much happier that way...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1788ea6e3b2a58cf4fb00206e362d9caff8d86a7",
      "tree": "24846fddf8b55f516f365a735defd79b6ea6d28a",
      "parents": [
        "1583171492eb514e267c7b51e96846b38de0f544"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Fri Nov 04 13:31:21 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Nov 04 16:39:04 2011 -0400"
      },
      "message": "nfs: when attempting to open a directory, fall back on normal lookup (try #5)\n\ncommit d953126 changed how nfs_atomic_lookup handles an -EISDIR return\nfrom an OPEN call. Prior to that patch, that caused the client to fall\nback to doing a normal lookup. When that patch went in, the code began\nreturning that error to userspace. The d_revalidate codepath however\nnever had the corresponding change, so it was still possible to end up\nwith a NULL ctx-\u003estate pointer after that.\n\nThat patch caused a regression. When we attempt to open a directory that\ndoes not have a cached dentry, that open now errors out with EISDIR. If\nyou attempt the same open with a cached dentry, it will succeed.\n\nFix this by reverting the change in nfs_atomic_lookup and allowing\nattempts to open directories to fall back to a normal lookup\n\nAlso, add a NFSv4-specific f_ops-\u003eopen routine that just returns\n-ENOTDIR. This should never be called if things are working properly,\nbut if it ever is, then the dprintk may help in debugging.\n\nTo facilitate this, a new file_operations field is also added to the\nnfs_rpc_ops struct.\n\nCc: stable@kernel.org\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "374e4e3ec347d4f70e1417ce3e1c454f133dab72",
      "tree": "9309b00af4c76c2f24854a15ce9e3d3f14741862",
      "parents": [
        "0c0308066ca53fdf1423895f3a42838b67b3a5a8"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Fri Jul 29 11:49:06 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 30 14:37:14 2011 -0400"
      },
      "message": "Additional readdir cookie loop information\n\nPrint out the name of the file that triggers the cookie loop  message to\nmake it slightly easier to track down the cause.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0c0308066ca53fdf1423895f3a42838b67b3a5a8",
      "tree": "4c6f0d852456581a7ca17286601d18d7bb030632",
      "parents": [
        "ed1e6211a0a134ff23592c6f057af982ad5dab52"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 30 12:45:35 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 30 14:34:50 2011 -0400"
      },
      "message": "NFS: Fix spurious readdir cookie loop messages\n\nIf the directory contents change, then we have to accept that the\nfile-\u003ef_pos value may shrink if we do a \u0027search-by-cookie\u0027. In that\ncase, we should turn off the loop detection and let the NFS client\ntry to recover.\n\nThe patch also fixes a second loop detection bug by ensuring\nthat after turning on the ctx-\u003eduped flag, we read at least one new\ncookie into ctx-\u003edir_cookie before attempting to match with\nctx-\u003edup_cookie.\n\nReported-by: Petr Vandrovec \u003cpetr@vandrovec.name\u003e\nCc: stable@kernel.org [2.6.39+]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "02c24a82187d5a628c68edfe71ae60dc135cd178",
      "tree": "c8dbaba4d82e2b20ed4335910a564a1f7d90fcf6",
      "parents": [
        "22735068d53c7115e384bc88dea95b17e76a6839"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Sat Jul 16 20:44:56 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:59 2011 -0400"
      },
      "message": "fs: push i_mutex and filemap_write_and_wait down into -\u003efsync() handlers\n\nBtrfs needs to be able to control how filemap_write_and_wait_range() is called\nin fsync to make it less of a painful operation, so push down taking i_mutex and\nthe calling of filemap_write_and_wait() down into the -\u003efsync() handlers.  Some\nfile systems can drop taking the i_mutex altogether it seems, like ext3 and\nocfs2.  For correctness sake I just pushed everything down in all cases to make\nsure that we keep the current behavior the same for everybody, and then each\nindividual fs maintainer can make up their mind about what to do from there.\nThanks,\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8aeb376ca0fe61038166c3b8243c678addb80abf",
      "tree": "daae94f5aebe5decd67ad37dc642090ebaa9dba5",
      "parents": [
        "4352780386139ff33d2203868b392e6535deff61"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 25 21:48:43 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:02 2011 -0400"
      },
      "message": "nfs: LOOKUP_{OPEN,CREATE,EXCL} is set only on the last step\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "dd7dd556e45133ef13f2c4bddc0e0b1ac23bc0e4",
      "tree": "4884b6af570a2a0cb01d11f39a38a3a9c73e49ba",
      "parents": [
        "bf6c7f6c7bd0ea779757d35b5fdc9f9157f056b3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 25 21:17:17 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:56 2011 -0400"
      },
      "message": "no need to check for LOOKUP_OPEN in -\u003ecreate() instances\n\n... it will be set in nd-\u003eflag for all cases with non-NULL nd\n(i.e. when called from do_last()).\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8a5e929dd2e05ab4d3d89f58c5e8fca596af8f3a",
      "tree": "8cbed05fcd99d24e881e5ea12d8a954865e31085",
      "parents": [
        "554a8b9f54cd7ca2b89f5dc227df08be082fae0d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 25 19:15:54 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:52 2011 -0400"
      },
      "message": "don\u0027t transliterate lower bits of -\u003eintent.open.flags to FMODE_...\n\n-\u003ecreate() instances are much happier that way...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f7c85868fcacc331dd3454a4f08f006d7942521f",
      "tree": "03e01b3f96684911c353ce22c1cc757a36616977",
      "parents": [
        "511415980ace0ceecd71088dbe1c7ce4ca7c79fe"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 22 18:53:18 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:46 2011 -0400"
      },
      "message": "fix mknod() on nfs4 (hopefully)\n\na) check the right flags in -\u003ecreate() (LOOKUP_OPEN, not LOOKUP_CREATE)\nb) default (!LOOKUP_OPEN) open_flags is O_CREAT|O_EXCL|FMODE_READ, not 0\nc) lookup_instantiate_filp() should be done only with LOOKUP_OPEN;\notherwise we need to issue CLOSE, lest we leak stateid on server.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "511415980ace0ceecd71088dbe1c7ce4ca7c79fe",
      "tree": "153510403c8053f3287d304c02609c17d07801d3",
      "parents": [
        "3d4ff43d895c50319af45eb4bf04a4618eccdf76"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 22 18:47:28 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:45 2011 -0400"
      },
      "message": "nameidata_to_nfs_open_context() doesn\u0027t need nameidata, actually...\n\njust open flags; switched to passing just those and\nrenamed to create_nfs_open_context()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3d4ff43d895c50319af45eb4bf04a4618eccdf76",
      "tree": "b412cd076920a903a854a20bceed4a0ce511fd13",
      "parents": [
        "82a2c1b77ada3b81911deeb871719ec5ff77f83c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 22 18:40:12 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:44 2011 -0400"
      },
      "message": "nfs_open_context doesn\u0027t need struct path either\n\njust dentry, please...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "10556cb21a0d0b24d95f00ea6df16f599a3345b2",
      "tree": "3d7d8dfba807805a55c154f1850717bf3b49f343",
      "parents": [
        "2830ba7f34ebb27c4e5b8b6ef408cd6d74860890"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:28:19 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:24 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to -\u003epermission()\n\nnot used by the instances anymore.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2830ba7f34ebb27c4e5b8b6ef408cd6d74860890",
      "tree": "bbcebc14bffd000f1dfcbf37e64f56d2f49581ac",
      "parents": [
        "7e40145eb111a5192e6d819f764db9d6828d1abb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:16:29 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:22 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to generic_permission()\n\nredundant; all callers get it duplicated in mask \u0026 MAY_NOT_BLOCK and none of\nthem removes that bit.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "178ea73521d64ba41d7aa5488fb9f549c6d4507d",
      "tree": "7fb6bfb6483577752e307a5bb2e3905658d44294",
      "parents": [
        "07b8ce1ee87d291ff564c02cf878fae973317a52"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 11:31:30 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:16 2011 -0400"
      },
      "message": "kill check_acl callback of generic_permission()\n\nits value depends only on inode and does not change; we might as\nwell store it in -\u003ei_op-\u003echeck_acl and be done with that.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "cd1acdf1723d71b28175f95b04305f1cc74ce363",
      "tree": "7ab58883eccd314be3d8efafd59a124d4ffbb861",
      "parents": [
        "fac04863cef53a69830590b2e1c54345068a9747",
        "9342077011d54f42fa1b88b7bc1f7008dcf5fff9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 29 14:10:13 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 29 14:10:13 2011 -0700"
      },
      "message": "Merge branch \u0027pnfs-submit\u0027 of git://git.open-osd.org/linux-open-osd\n\n* \u0027pnfs-submit\u0027 of git://git.open-osd.org/linux-open-osd: (32 commits)\n  pnfs-obj: pg_test check for max_io_size\n  NFSv4.1: define nfs_generic_pg_test\n  NFSv4.1: use pnfs_generic_pg_test directly by layout driver\n  NFSv4.1: change pg_test return type to bool\n  NFSv4.1: unify pnfs_pageio_init functions\n  pnfs-obj: objlayout_encode_layoutcommit implementation\n  pnfs: encode_layoutcommit\n  pnfs-obj: report errors and .encode_layoutreturn Implementation.\n  pnfs: encode_layoutreturn\n  pnfs: layoutret_on_setattr\n  pnfs: layoutreturn\n  pnfs-obj: osd raid engine read/write implementation\n  pnfs: support for non-rpc layout drivers\n  pnfs-obj: define per-inode private structure\n  pnfs: alloc and free layout_hdr layoutdriver methods\n  pnfs-obj: objio_osd device information retrieval and caching\n  pnfs-obj: decode layout, alloc/free lseg\n  pnfs-obj: pnfs_osd XDR client implementation\n  pnfs-obj: pnfs_osd XDR definitions\n  pnfs-obj: objlayoutdriver module skeleton\n  ...\n"
    },
    {
      "commit": "f7da7a129d57bfe0f74573dc03531c63e1360fae",
      "tree": "6efcd0fbdde9bb816ebc70731f1c47b8335ccfe3",
      "parents": [
        "35c8bb543c9e83197e6375142d1d1c2ee3cf017d"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Thu May 19 14:16:47 2011 -0400"
      },
      "committer": {
        "name": "Boaz Harrosh",
        "email": "bharrosh@panasas.com",
        "time": "Sun May 29 20:52:32 2011 +0300"
      },
      "message": "SUNRPC: introduce xdr_init_decode_pages\n\nInitialize xdr_stream and xdr_buf using an array of page pointers\nand length of buffer.\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n"
    },
    {
      "commit": "1495f230fa7750479c79e3656286b9183d662077",
      "tree": "e5e233bb9fe1916ccc7281e7dcc71b1572fb22c5",
      "parents": [
        "a09ed5e00084448453c8bada4dcd31e5fbfc2f21"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Tue May 24 17:12:27 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:26 2011 -0700"
      },
      "message": "vmscan: change shrinker API by passing shrink_control struct\n\nChange each shrinker\u0027s API by consolidating the existing parameters into\nshrink_control struct.  This will simplify any further features added w/o\ntouching each file of shrinker.\n\n[akpm@linux-foundation.org: fix build]\n[akpm@linux-foundation.org: fix warning]\n[kosaki.motohiro@jp.fujitsu.com: fix up new shrinker API]\n[akpm@linux-foundation.org: fix xfs warning]\n[akpm@linux-foundation.org: update gfs2]\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0acd2201920d0968919f4f5797d63f7b6f2b19d4",
      "tree": "9b241d264f42eff3ff4eeffb67616fca0490e460",
      "parents": [
        "8f70e95f9f4159184f557a1db60c909d7c1bd2e3",
        "35124a0994fc02545b14b9fa3aad000b3331f1c0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 17:03:14 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 17:03:14 2011 -0400"
      },
      "message": "Merge branch \u0027nfs-for-2.6.39\u0027 into nfs-for-next\n"
    },
    {
      "commit": "7c5130588d691a3b34d02312f1bd1b6d56fe0100",
      "tree": "154ccea3a837ca1aae2c5676e0946b79fb4bb671",
      "parents": [
        "e73b83f270828630a9ce33728f6ef61c37a82340"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Mar 24 17:12:24 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 13:52:41 2011 -0400"
      },
      "message": "NFS: lookup supports alternate client\n\nA later patch will need to perform a lookup using an\nalternate client with a different security flavor.\nThis patch adds support for doing that on NFS v4.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8ef2ce3e16d9bec6cf015207c1c82a5b864046ac",
      "tree": "35441fd695c4f5215ab0061d8df26b4cfd9a44f5",
      "parents": [
        "480c2006ebb44ae03165695db7b3e38c04e0d102"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Wed Mar 23 15:04:31 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:14:27 2011 -0400"
      },
      "message": "NFS: Detect loops in a readdir due to bad cookies\n\nSome filesystems (such as ext4) can return the same cookie value for\nmultiple files.  If we try to start a readdir with one of these cookies,\nthe server will return the first file found with a cookie of the same\nvalue.  This can cause the client to enter an infinite loop.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "480c2006ebb44ae03165695db7b3e38c04e0d102",
      "tree": "20bb22ea6db986e91017734f6c0390e1211b1765",
      "parents": [
        "e47c085afb3d16cbc6a4bfb10a3b074bb7c58998"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Wed Mar 23 14:48:29 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:13:11 2011 -0400"
      },
      "message": "NFS: Create nfs_open_dir_context\n\nnfs_opendir() created a context that held much more information than we\nneed for a readdir.  This patch introduces a slimmed-down\nnfs_open_dir_context that contains only the cookie and the cred used for\nRPC operations.  The new context will eventually be used to help detect\nreaddir loops.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e47c085afb3d16cbc6a4bfb10a3b074bb7c58998",
      "tree": "67472d29b894b285bc6cc3bb7802b57c3d295bca",
      "parents": [
        "51e816564db151f7f08c739ad69b9d1dbd166663"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 08:43:09 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:12:12 2011 -0400"
      },
      "message": "NFS: Ensure that we update the readdir filp-\u003ef_pos correctly\n\nIf we\u0027re doing a search by readdir cookie, we need to ensure that the\nresulting f_pos is updated. To do so, we need to update the\ndesc-\u003ecurrent_index, in the same way that we do in the search by\nfile offset case.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b1942c5f8cf3bea3a3c88a7498ae4c4361f31afe",
      "tree": "0ff98cbdf75b23104df97344dcd6a35a86bbe9ec",
      "parents": [
        "0d5839ad05acd0fe2a84a39f33ac5efdf634a5a5"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 05:44:14 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 16:44:24 2011 -0400"
      },
      "message": "nfs: store devname at disconnected NFS roots\n\npart 2: make sure that disconnected roots have corresponding mnt_devname\nvalues stashed into them.\n\nHave nfs*_get_root() stuff a copy of devname into -\u003ed_fsdata of the\nfound root, provided that it is disconnected.\n\nHave -\u003ed_release() free it when dentry goes away.\n\nHave the places where NFS uses -\u003ed_fsdata for sillyrename (and that\ncan *never* happen to a disconnected root - dentry will be attached\nto its parent) free old devname copies if they find those.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "36d43a43761b004ad1879ac21471d8fc5f3157ec",
      "tree": "6cb6c6d978f4e58de7f9bf901707d6929f098345",
      "parents": [
        "d18610b0ce9eb48c60649d8fcbf68374c84349d3"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jan 14 18:45:42 2011 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 15 20:07:34 2011 -0500"
      },
      "message": "NFS: Use d_automount() rather than abusing follow_link()\n\nMake NFS use the new d_automount() dentry operation rather than abusing\nfollow_link() on directories.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "db9effe99adc67c53e6aedadadd2aa9a02342e48",
      "tree": "efe7ebfe951972568189ef2548130f0abd515210",
      "parents": [
        "9c4bc1c2befbbdce4b9fd526e67a7a2ea143ffa2",
        "f20877d94a74557b7c28b4ed8920d834c31e0ea5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 20:14:13 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 20:14:13 2011 -0800"
      },
      "message": "Merge branch \u0027vfs-scale-working\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/npiggin/linux-npiggin\n\n* \u0027vfs-scale-working\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/npiggin/linux-npiggin:\n  fs: fix do_last error case when need_reval_dot\n  nfs: add missing rcu-walk check\n  fs: hlist UP debug fixup\n  fs: fix dropping of rcu-walk from force_reval_path\n  fs: force_reval_path drop rcu-walk before d_invalidate\n  fs: small rcu-walk documentation fixes\n\nFixed up trivial conflicts in Documentation/filesystems/porting\n"
    },
    {
      "commit": "657e94b673a805b427903c5628e95348235fad06",
      "tree": "0c174e387cb5d3fd3a2b55e154219cc67b644637",
      "parents": [
        "2c6755988afc003a0332406a134fb6a1626f9b28"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 14 02:48:39 2011 +0000"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 14 02:48:39 2011 +0000"
      },
      "message": "nfs: add missing rcu-walk check\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "8a0eebf66e3b1deae036553ba641a9c2bdbae678",
      "tree": "642d4367dd30a55f78244891479cc08f2983eb7e",
      "parents": [
        "581548db3b3c0f6e25b500329eb02e3c72e7acbe"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 13 14:15:50 2011 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 12:06:29 2011 -0800"
      },
      "message": "NFS: Fix NFSv3 exclusive open semantics\n\nCommit c0204fd2b8fe047b18b67e07e1bf2a03691240cd (NFS: Clean up\nnfs4_proc_create()) broke NFSv3 exclusive open by removing the code\nthat passes the O_EXCL flag down to nfs3_proc_create(). This patch\nreverts that offending hunk from the original commit.\n\nReported-by: Nick Bowler \u003cnbowler@elliptictech.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@kernel.org    [2.6.37]\nTested-by: Nick Bowler \u003cnbowler@elliptictech.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8b244ff2fa58f81f84aa03c82c2c23307a778ce7",
      "tree": "39c913ed4e529084a856c9c80cab9d173d251863",
      "parents": [
        "96e1391414f80a8a3bae74ddf58d3c2870e304f0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Dec 18 11:29:39 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 12 20:02:45 2011 -0500"
      },
      "message": "switch nfs to -\u003es_d_op\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b9d919a4ac6cf031b8e065f82ad8f1b0c9ed74b1",
      "tree": "3139b066396956fd3794df0cb1aa74dcc9f1cb28",
      "parents": [
        "7c955fca3e1d8132982148267d9efcafae849bb6",
        "357f54d6b38252737116a6d631f6ac28ded018ed"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 11 15:11:56 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 11 15:11:56 2011 -0800"
      },
      "message": "Merge branch \u0027nfs-for-2.6.38\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6\n\n* \u0027nfs-for-2.6.38\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (89 commits)\n  NFS fix the setting of exchange id flag\n  NFS: Don\u0027t use vm_map_ram() in readdir\n  NFSv4: Ensure continued open and lockowner name uniqueness\n  NFS: Move cl_delegations to the nfs_server struct\n  NFS: Introduce nfs_detach_delegations()\n  NFS: Move cl_state_owners and related fields to the nfs_server struct\n  NFS: Allow walking nfs_client.cl_superblocks list outside client.c\n  pnfs: layout roc code\n  pnfs: update nfs4_callback_recallany to handle layouts\n  pnfs: add CB_LAYOUTRECALL handling\n  pnfs: CB_LAYOUTRECALL xdr code\n  pnfs: change lo refcounting to atomic_t\n  pnfs: check that partial LAYOUTGET return is ignored\n  pnfs: add layout to client list before sending rpc\n  pnfs: serialize LAYOUTGET(openstateid)\n  pnfs: layoutget rpc code cleanup\n  pnfs: change how lsegs are removed from layout list\n  pnfs: change layout state seqlock to a spinlock\n  pnfs: add prefix to struct pnfs_layout_hdr fields\n  pnfs: add prefix to struct pnfs_layout_segment fields\n  ...\n"
    },
    {
      "commit": "68c404b18f6fba404b2753622d0459c68ee128ae",
      "tree": "c1ec0bb12f19d91071b461cc2831d9d3dd4c74f3",
      "parents": [
        "d035c36c58dd9183ad6aa7875dea89893faedb55",
        "6650239a4b01077e80d5a4468562756d77afaa59"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jan 10 14:48:02 2011 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jan 10 14:48:02 2011 -0500"
      },
      "message": "Merge branch \u0027bugfixes\u0027 into nfs-for-2.6.38\n\nConflicts:\n\tfs/nfs/nfs2xdr.c\n\tfs/nfs/nfs3xdr.c\n\tfs/nfs/nfs4xdr.c\n"
    },
    {
      "commit": "6650239a4b01077e80d5a4468562756d77afaa59",
      "tree": "505c9a1dc26c26608ce6a5981093a6357d4f3638",
      "parents": [
        "3c0eee3fe6a3a1c745379547c7e7c904aa64f6d5"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jan 08 17:45:38 2011 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jan 10 14:45:01 2011 -0500"
      },
      "message": "NFS: Don\u0027t use vm_map_ram() in readdir\n\nvm_map_ram() is not available on NOMMU platforms, and causes trouble\non incoherrent architectures such as ARM when we access the page data\nthrough both the direct and the virtual mapping.\n\nThe alternative is to use the direct mapping to access page data\nfor the case when we are not crossing a page boundary, but to copy\nthe data into a linear scratch buffer when we are accessing data\nthat spans page boundaries.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nTested-by: Marc Kleine-Budde \u003cmkl@pengutronix.de\u003e\nCc: stable@kernel.org  [2.6.37]\n"
    },
    {
      "commit": "b74c79e99389cd79b31fcc08f82c24e492e63c7e",
      "tree": "763c6b412517306670bc625e90035f2d16bb739f",
      "parents": [
        "34286d6662308d82aed891852d04c7c3a2649b16"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:58 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: provide rcu-walk aware permission i_ops\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "34286d6662308d82aed891852d04c7c3a2649b16",
      "tree": "c4b7311404d302e7cb94df7a4690298e1059910a",
      "parents": [
        "44a7d7a878c9cbb74f236ea755b25b6b2e26a9a9"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:57 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: rcu-walk aware d_revalidate method\n\nRequire filesystems be aware of .d_revalidate being called in rcu-walk\nmode (nd-\u003eflags \u0026 LOOKUP_RCU). For now do a simple push down, returning\n-ECHILD from all implementations.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fb045adb99d9b7c562dc7fef834857f78249daa1",
      "tree": "1fd6a4024fffeec568abe100d730589bfdb81c38",
      "parents": [
        "5f57cbcc02cf18f6b22ef4066bb10afeb8f930ff"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:55 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:28 2011 +1100"
      },
      "message": "fs: dcache reduce branches in lookup path\n\nReduce some branches and memory accesses in dcache lookup by adding dentry\nflags to indicate common d_ops are set, rather than having to check them.\nThis saves a pointer memory access (dentry-\u003ed_op) in common path lookup\nsituations, and saves another pointer load and branch in cases where we\nhave d_op but not the particular operation.\n\nPatched with:\n\ngit grep -E \u0027[.\u003e]([[:space:]])*d_op([[:space:]])*\u003d\u0027 | xargs sed -e \u0027s/\\([^\\t ]*\\)-\u003ed_op \u003d \\(.*\\);/d_set_d_op(\\1, \\2);/\u0027 -e \u0027s/\\([^\\t ]*\\)\\.d_op \u003d \\(.*\\);/d_set_d_op(\\\u0026\\1, \\2);/\u0027 -i\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b5c84bf6f6fa3a7dfdcb556023a62953574b60ee",
      "tree": "7a2c299a180713e21d5cb653cb933121adf53c31",
      "parents": [
        "949854d02455080d20cd3e1db28a3a18daf7599d"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:38 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:23 2011 +1100"
      },
      "message": "fs: dcache remove dcache_lock\n\ndcache_lock no longer protects anything. remove it.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b7ab39f631f505edc2bbdb86620d5493f995c9da",
      "tree": "62be97ebc7fc69ceb601f23312d335ebb8038ee7",
      "parents": [
        "2304450783dfde7b0b94ae234edd0dbffa865073"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:32 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:21 2011 +1100"
      },
      "message": "fs: dcache scale dentry refcount\n\nMake d_count non-atomic and protect it with d_lock. This allows us to ensure a\n0 refcount dentry remains 0 without dcache_lock. It is also fairly natural when\nwe start protecting many other dentry members with d_lock.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fe15ce446beb3a33583af81ffe6c9d01a75314ed",
      "tree": "bc8af66b6dd2d0f21a2a3f48a19975ae2cdbae4e",
      "parents": [
        "5eef7fa905c814826f518aca2d414ca77508ce30"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:23 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:18 2011 +1100"
      },
      "message": "fs: change d_delete semantics\n\nChange d_delete from a dentry deletion notification to a dentry caching\nadvise, more like -\u003edrop_inode. Require it to be constant and idempotent,\nand not take d_lock. This is how all existing filesystems use the callback\nanyway.\n\nThis makes fine grained dentry locking of dput and dentry lru scanning\nmuch simpler.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "64c2ce8b72eceec4030b04bca32d098b3d1431bb",
      "tree": "d296c9282da04017457e44d36cf1bbda3451e2ac",
      "parents": [
        "a8a5da996df7d2d91b5aef2752da9adcefea4bc6"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Thu Dec 09 11:35:25 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 04 13:10:41 2011 -0500"
      },
      "message": "nfsv4: Switch to generic xattr handling code\n\nThis patch make nfsv4 use the generic xattr handling code\nto get the nfsv4 acl. This will help us to add richacl\nsupport to nfsv4 in later patches\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a8a5da996df7d2d91b5aef2752da9adcefea4bc6",
      "tree": "605be5f4af59d5cc324ae11c18a8b34db7ab3c6a",
      "parents": [
        "bf0c84f1614bffc59565d04f09b9ac6b1aa269a9"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Thu Dec 09 11:35:14 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 04 13:10:40 2011 -0500"
      },
      "message": "nfs: Set MS_POSIXACL always\n\nWe want to skip VFS applying mode for NFS. So set MS_POSIXACL always\nand selectively use umask. Ideally we would want to use umask only\nwhen we don\u0027t have inheritable ACEs set. But NFS currently don\u0027t\nallow to send umask to the server. So this is best what we can do\nand this is consistent with NFSv3\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bf0c84f1614bffc59565d04f09b9ac6b1aa269a9",
      "tree": "cf310f5baaa323fe902320047f32e0d0c4a8f2a9",
      "parents": [
        "5f3e97c9ee6290befb5a2e78baf95ff951a8a34a"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Dec 28 17:02:46 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 04 13:10:39 2011 -0500"
      },
      "message": "NFS: use ERR_CAST()\n\nUse ERR_CAST() intead of wierd-looking cast.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "573c4e1ef53a6b891b73cc2257e1604da754a2e4",
      "tree": "b1e01ca46472ac6c936c4a144c3a160d8e1595bb",
      "parents": [
        "8111f373600cd43b3198b48b9238e3ad2fd9908d"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 14 14:58:11 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 16 12:37:24 2010 -0500"
      },
      "message": "NFS: Simplify -\u003edecode_dirent() calling sequence\n\nClean up.\n\nThe pointer returned by -\u003edecode_dirent() is no longer used as a\npointer.  The only call site (xdr_decode() in fs/nfs/dir.c) simply\nextracts the errno value encoded in the pointer.  Replace the\nreturned pointer with a standard integer errno return value.\n\nAlso, pass the \"server\" argument as part of the nfs_entry instead of\nas a separate parameter.  It\u0027s faster to derive \"server\" in\nnfs_readdir_xdr_to_array() since we already have the directory\u0027s inode\nhandy.  \"server\" ought to be invariant for a set of entries in the\nsame directory, right?\n\nThe legacy versions of decode_dirent() don\u0027t use \"server\" anyway, so\nit\u0027s wasted work for them to derive and pass \"server\" for each entry.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nTested-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "47c716cbf638a16583441d78be3fc24345eab636",
      "tree": "ee06a3e432e9fdc12438423745674442acbbeb0f",
      "parents": [
        "18fb5fe40ce7f789b5cfc3aa81ff1e6175b0a5be"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 07 12:44:56 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 07 14:09:02 2010 -0500"
      },
      "message": "NFS: Readdir cleanups\n\nNo functional changes, but clarify the code.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "18fb5fe40ce7f789b5cfc3aa81ff1e6175b0a5be",
      "tree": "e7d191c921142ecb1cb2eba0634cb0c6ba89459d",
      "parents": [
        "11de3b11e08cac26d59e88efaf4e316701883552"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 07 12:41:58 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 07 12:41:58 2010 -0500"
      },
      "message": "NFS: nfs_readdir_search_for_cookie() don\u0027t mark as eof if cookie not found\n\nIf we\u0027re searching for a specific cookie, and it isn\u0027t found in the page\ncache, we should try an uncached_readdir(). To do so, we return EBADCOOKIE,\nbut we don\u0027t set desc-\u003eeof.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "11de3b11e08cac26d59e88efaf4e316701883552",
      "tree": "e4cc282e692560897c42c5fbc8df227d5da669d4",
      "parents": [
        "6072d13c429373c5d63b69dadbbef40a9b035552"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 01 14:17:06 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 02 09:58:00 2010 -0500"
      },
      "message": "NFS: Fix a memory leak in nfs_readdir\n\nWe need to ensure that the entries in the nfs_cache_array get cleared\nwhen the page is removed from the page cache. To do so, we use the\nfreepage address_space operation.\n\nChange nfs_readdir_clear_array to use kmap_atomic(), so that the\nfunction can be safely called from all contexts.\n\nFinally, modify the cache_page_release helper to call\nnfs_readdir_clear_array directly, when dealing with an anonymous\npage from \u0027uncached_readdir\u0027.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0aded708d125a3ff7e5abaea9c2d9c6d7ebbfdcd",
      "tree": "124bb3e0e1cd8104f9310f7df224ca00301c10c7",
      "parents": [
        "22a5b566c8c442b0b35b3b106795e2f2b3578096"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Nov 30 21:56:32 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 01 08:16:16 2010 -0500"
      },
      "message": "NFS: Ensure we use the correct cookie in nfs_readdir_xdr_filler\n\nWe need to use the cookie from the previous array entry, not the\nactual cookie that we are searching for (except for the case of\nuncached_readdir).\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "37a09f07459753e7c98d4e21f1c61e8756923f81",
      "tree": "eecab05dc4b4c2de61f4b31f51d301fdcf210737",
      "parents": [
        "e8a7e48bb248a1196484d3f8afa53bded2b24e71"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Nov 30 12:42:34 2010 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 30 10:18:49 2010 -0800"
      },
      "message": "NFS: Fix a readdirplus bug\n\nWhen comparing filehandles in the helper nfs_same_file(), we should not be\nusing \u0027strncmp()\u0027: filehandles are not null terminated strings.\n\nInstead, we should just use the existing helper nfs_compare_fh().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0b26a0bf6ff398185546432420bb772bcfdf8d94",
      "tree": "705b94c8662cf18cf8cd18c6b8c68d751d87acb7",
      "parents": [
        "3020093f578fb6c9acc6914dfd887a1ebd1db659"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Nov 20 14:26:44 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 22 13:24:48 2010 -0500"
      },
      "message": "NFS: Ensure we return the dirent-\u003ed_type when it is known\n\nStore the dirent-\u003ed_type in the struct nfs_cache_array_entry so that we\ncan use it in getdents() calls.\n\nThis fixes a regression with the new readdir code.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3020093f578fb6c9acc6914dfd887a1ebd1db659",
      "tree": "473af4f139dcb3975b20bcd9d2e04fb1cadc97b3",
      "parents": [
        "ece0b4233b6b915d1f63add2bd9f2733aec6317a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Nov 20 15:18:22 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 22 13:24:47 2010 -0500"
      },
      "message": "NFS: Correct the array bound calculation in nfs_readdir_add_to_array\n\nIt looks as if the array size calculation in MAX_READDIR_ARRAY does not\ntake the alignment of struct nfs_cache_array_entry into account.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ece0b4233b6b915d1f63add2bd9f2733aec6317a",
      "tree": "f0f9a2ec50079ccd0c95ddce082648ab25923cfe",
      "parents": [
        "85f8607e163f8d281fb407357279cb4ac6df12e6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Nov 20 13:55:33 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 22 13:24:47 2010 -0500"
      },
      "message": "NFS: Don\u0027t ignore errors from nfs_do_filldir()\n\nWe should ignore the errors from the filldir callback, and just interpret\nthem as meaning we should exit, however we should definitely pass back\nENOMEM errors.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "85f8607e163f8d281fb407357279cb4ac6df12e6",
      "tree": "abfa44658e17b4c3522aac999c7736f5d4782ff6",
      "parents": [
        "7a8e1dc34f52fd2927dbf7e520d7cd8eadc51336"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Nov 20 13:24:49 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 22 13:24:46 2010 -0500"
      },
      "message": "NFS: Fix the error handling in \"uncached_readdir()\"\n\nCurrently, uncached_readdir() is broken because if fails to handle\nthe results from nfs_readdir_xdr_to_array() correctly.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7a8e1dc34f52fd2927dbf7e520d7cd8eadc51336",
      "tree": "de5e01e628e0fec4a20e335ef5a3163e307ba3fa",
      "parents": [
        "e7c58e974a0318fcca5368e7b3570e10e9ae9028"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Nov 20 13:24:46 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 22 13:24:45 2010 -0500"
      },
      "message": "NFS: Fix a page leak in uncached_readdir()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e7c58e974a0318fcca5368e7b3570e10e9ae9028",
      "tree": "de7c5bf4d565ce0365af6fe1d82bd035deb37024",
      "parents": [
        "5c346854d8ce6ca91931f8fc9177934257a667d0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Nov 20 13:22:24 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 22 13:24:44 2010 -0500"
      },
      "message": "NFS: Fix a page leak in nfs_do_filldir()\n\nnfs_do_filldir() must always free desc-\u003epage when it is done, otherwise\nwe end up leaking the page.\n\nAlso remove unused variable \u0027dentry\u0027.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5c346854d8ce6ca91931f8fc9177934257a667d0",
      "tree": "de10054f20a2bc3a2fc58ca394854d40aebc8654",
      "parents": [
        "463a376eae1c92a66c912af539bfd4bbefa37673"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Nov 20 12:43:45 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 22 13:24:44 2010 -0500"
      },
      "message": "NFS: Assume eof if the server returns no readdir records\n\nSome servers are known to be buggy w.r.t. this. Deal with them...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "04e4bd1c67f941d81bff78a3b6b94194f081b7df",
      "tree": "7f6cd633219bc19d7a716a0c2af4eaae2b5170ba",
      "parents": [
        "94f58df8e545657f0b2d16eca1ac7a4ec39ed6be"
      ],
      "author": {
        "name": "Catalin Marinas",
        "email": "catalin.marinas@arm.com",
        "time": "Thu Nov 11 12:53:47 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Nov 16 12:03:14 2010 -0500"
      },
      "message": "nfs: Ignore kmemleak false positive in nfs_readdir_make_qstr\n\nStrings allocated via kmemdup() in nfs_readdir_make_qstr() are\nreferenced from the nfs_cache_array which is stored in a page cache\npage. Kmemleak does not scan such pages and it reports several false\npositives. This patch annotates the string-\u003ename pointer so that\nkmemleak does not consider it a real leak.\n\nSigned-off-by: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nCc: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ac39612824e1fad8baf82c2841e42b2142af3445",
      "tree": "12a841ca751a50f324dc97963579002943d0c3c9",
      "parents": [
        "8cd51a0ccd1beda4482507769887c0be9d70f8c1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 15 20:26:22 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 15 20:44:29 2010 -0500"
      },
      "message": "NFS: readdir shouldn\u0027t read beyond the reply returned by the server\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8cd51a0ccd1beda4482507769887c0be9d70f8c1",
      "tree": "3fe5c05dcc6e532641d1be4e797ab869c71c36ad",
      "parents": [
        "23ebbd9acf5756b6eb783df84403e3ab668a6bce"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 15 20:26:22 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 15 20:44:28 2010 -0500"
      },
      "message": "NFS: Fix a couple of regressions in readdir.\n\nFix up the issue that array-\u003eeof_index needs to be able to be set\neven if array-\u003esize \u003d\u003d 0.\n\nEnsure that we catch all important memory allocation error conditions\nand/or kmap() failures.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "23ebbd9acf5756b6eb783df84403e3ab668a6bce",
      "tree": "11f632c35ccd0569b70811ad7b78c14831697041",
      "parents": [
        "1e657bd51f313d87fbbb22d1edf625dba87ef353"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Nov 03 10:24:16 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 15 20:44:27 2010 -0500"
      },
      "message": "Revert \"NFSv4: Fall back to ordinary lookup if nfs4_atomic_open() returns EISDIR\"\n\nThis reverts commit 80e60639f1b7c121a7fea53920c5a4b94009361a.\n\nThis change requires further fixes to ensure that the open doesn\u0027t\nsucceed if the lookup later results in a regular file being created.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "426e1f5cec4821945642230218876b0e89aafab1",
      "tree": "2728ace018d0698886989da586210ef1543a7098",
      "parents": [
        "9e5fca251f44832cb996961048ea977f80faf6ea",
        "63997e98a3be68d7cec806d22bf9b02b2e1daabb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -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: (52 commits)\n  split invalidate_inodes()\n  fs: skip I_FREEING inodes in writeback_sb_inodes\n  fs: fold invalidate_list into invalidate_inodes\n  fs: do not drop inode_lock in dispose_list\n  fs: inode split IO and LRU lists\n  fs: switch bdev inode bdi\u0027s correctly\n  fs: fix buffer invalidation in invalidate_list\n  fsnotify: use dget_parent\n  smbfs: use dget_parent\n  exportfs: use dget_parent\n  fs: use RCU read side protection in d_validate\n  fs: clean up dentry lru modification\n  fs: split __shrink_dcache_sb\n  fs: improve DCACHE_REFERENCED usage\n  fs: use percpu counter for nr_dentry and nr_dentry_unused\n  fs: simplify __d_free\n  fs: take dcache_lock inside __d_path\n  fs: do not assign default i_ino in new_inode\n  fs: introduce a per-cpu last_ino allocator\n  new helper: ihold()\n  ...\n"
    },
    {
      "commit": "7de9c6ee3ecffd99e1628e81a5ea5468f7581a1f",
      "tree": "88787e77ba8a253d0a26aeda4bd5e58532d592e0",
      "parents": [
        "646ec4615cd05972581c9c5342ed7a1e77df17bb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Oct 23 11:11:40 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "new helper: ihold()\n\nClones an existing reference to inode; caller must already hold one.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4a201d6e3f4253f918555cc7c27c418f8ac1bb65",
      "tree": "9424a999b43f8c4d397f513a32258a64f3bed61a",
      "parents": [
        "82f2e5472e2304e531c2fa85e457f4a71070044e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 14:53:23 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:38 2010 -0400"
      },
      "message": "NFS: Ensure we check all allocation return values in new readdir code\n\nAlso some clean ups.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "82f2e5472e2304e531c2fa85e457f4a71070044e",
      "tree": "45e170b0ec64bcc07e51ae36919ca6cba1163703",
      "parents": [
        "ae42c70a60fe330d9c2af7c4b92ce78484308e37"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Oct 21 16:33:18 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:37 2010 -0400"
      },
      "message": "NFS: Readdir plus in v4\n\nBy requsting more attributes during a readdir, we can mimic the readdir plus\noperation that was in NFSv3.\n\nTo test, I ran the command `ls -lU --color\u003dnone` on directories with various\nnumbers of files.  Without readdir plus, I see this:\n\nn files |    100    |   1,000   |  10,000   |  100,000  | 1,000,000\n--------+-----------+-----------+-----------+-----------+----------\nreal    | 0m00.153s | 0m00.589s | 0m05.601s | 0m56.691s | 9m59.128s\nuser    | 0m00.007s | 0m00.007s | 0m00.077s | 0m00.703s | 0m06.800s\nsys     | 0m00.010s | 0m00.070s | 0m00.633s | 0m06.423s | 1m10.005s\naccess  | 3         | 1         | 1         | 4         | 31\ngetattr | 2         | 1         | 1         | 1         | 1\nlookup  | 104       | 1,003     | 10,003    | 100,003   | 1,000,003\nreaddir | 2         | 16        | 158       | 1,575     | 15,749\ntotal   | 111       | 1,021     | 10,163    | 101,583   | 1,015,784\n\nWith readdir plus enabled, I see this:\n\nn files |    100    |   1,000   |  10,000   |  100,000  | 1,000,000\n--------+-----------+-----------+-----------+-----------+----------\nreal    | 0m00.115s | 0m00.206s | 0m01.079s | 0m12.521s | 2m07.528s\nuser    | 0m00.003s | 0m00.003s | 0m00.040s | 0m00.290s | 0m03.296s\nsys     | 0m00.007s | 0m00.020s | 0m00.120s | 0m01.357s | 0m17.556s\naccess  | 3         | 1         | 1         | 1         | 7\ngetattr | 2         | 1         | 1         | 1         | 1\nlookup  | 4         | 3         | 3         | 3         | 3\nreaddir | 6         | 62        | 630       | 6,300     | 62,993\ntotal   | 15        | 67        | 635       | 6,305     | 63,004\n\nReaddir plus disabled has about a 16x increase in the number of rpc calls and\nis 4 - 5 times slower on large directories.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9942438089d5c0e3adecdcb7bc360b8fe0ce7e62",
      "tree": "6c6fa331811f6c8e5217193276602bd353613061",
      "parents": [
        "3c8a1aeed8fd7f89bd0400fad72cbc1ac3460217"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Oct 21 16:33:16 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:36 2010 -0400"
      },
      "message": "NFS: check xdr_decode for errors\n\nCheck if the decoded entry has the eof bit set when returning from xdr_decode\nwith an error.  If it does, we should set the eof bits in the array before\nreturning.  This should keep us from looping when we expect more data but the\nserver doesn\u0027t give us anything new.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3c8a1aeed8fd7f89bd0400fad72cbc1ac3460217",
      "tree": "7483a41703dafcbc8526c112e3e625c3a881fc99",
      "parents": [
        "56e4ebf877b6043c289bda32a5a7385b80c17dee"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Oct 21 16:33:16 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:35 2010 -0400"
      },
      "message": "NFS: nfs_readdir_filler catch all errors\n\nCheck for all errors, not a specific one.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "56e4ebf877b6043c289bda32a5a7385b80c17dee",
      "tree": "160ae8d5b5ee3871d02a9f5283187430c9ec5ffe",
      "parents": [
        "afa8ccc978c24d8ab22e3b3b8cbd1054c84c070b"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Wed Oct 20 15:44:37 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:35 2010 -0400"
      },
      "message": "NFS: readdir with vmapped pages\n\nWe can use vmapped pages to read more information from the network at once.\nThis will reduce the number of calls needed to complete a readdir.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\n[trondmy: Added #include for linux/vmalloc.h\u003e in fs/nfs/dir.c]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "babddc72a9468884ce1a23db3c3d54b0afa299f0",
      "tree": "b176e5795b47c73c47543acdc546da0c38619ddc",
      "parents": [
        "ba8e452a4fe64a51b74d43761e14d99f0666cc45"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Wed Oct 20 15:44:29 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:33 2010 -0400"
      },
      "message": "NFS: decode_dirent should use an xdr_stream\n\nConvert nfs*xdr.c to use an xdr stream in decode_dirent.  This will prevent a\nkernel oops that has been occuring when reading a vmapped page.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d39ab9de3b80da5835049b1c3b49da4e84e01c07",
      "tree": "8ffd7947d927f94bc467fd509c64d563b6f0110d",
      "parents": [
        "baf57a09e9d87b14be5e2788828169394a2525ab"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Fri Sep 24 18:50:01 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:31 2010 -0400"
      },
      "message": "NFS: re-add readdir plus\n\nThis patch adds readdir plus support to the cache array.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "baf57a09e9d87b14be5e2788828169394a2525ab",
      "tree": "77b35fe3ef7868f3c642093a4a8c01ed6be584cd",
      "parents": [
        "d1bacf9eb2fd0e7ef870acf84b9e3b157dcfa7dc"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 24 18:49:43 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:30 2010 -0400"
      },
      "message": "NFS: Optimise the readdir searches\n\nIf we\u0027re going through the loop in nfs_readdir() more than once, we usually\ndo not want to restart searching from the beginning of the pages cache.\n\nWe only want to do that if the previous search failed...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d1bacf9eb2fd0e7ef870acf84b9e3b157dcfa7dc",
      "tree": "8b6746ade07c71f0d40c29b76dbe65e999c038f7",
      "parents": [
        "8c7597f6ce212bbc8ca05090e21820ffe9792b3d"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Fri Sep 24 14:48:42 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:30 2010 -0400"
      },
      "message": "NFS: add readdir cache array\n\nThis patch adds the readdir cache array and functions to retreive the array\nstored on a cache page, clear the array by freeing allocated memory, add an\nentry to the array, and search the array for a given cookie.\n\nIt then modifies readdir to make use of the new cache array.\nWith the new cache array method, we no longer need some of this code.\n\nFinally, nfs_llseek_dir() will set file-\u003ef_pos to a value greater than 0 and\ndesc-\u003edir_cookie to zero.  When we see this, readdir needs to find the file\nat position file-\u003ef_pos from the start of the directory.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "898f635c4297e91ceac675d83c4a460f26118342",
      "tree": "1e6e1d3fb179fffa8f78a094a0db1e31e841ad19",
      "parents": [
        "6eaa61496fb3b93cceface7a296415fc4c030bce"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 11:24:25 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:17 2010 -0400"
      },
      "message": "NFSv4: Don\u0027t ignore the error return codes from nfs_intent_set_file\n\nIf nfs_intent_set_file() returns an error, we usually want to pass that\nback up the stack.\n\nAlso ensure that nfs_open_revalidate() returns \u00271\u0027 on success.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "aa510da5bfe1dfe263215fd0e05dac96e738a782",
      "tree": "23653cea38532e688f593e36295c312158558a79",
      "parents": [
        "a00dd6c03dd97a777c291a8af8682be4b5fadf8d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Sep 29 15:11:56 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Sep 29 15:16:25 2010 -0400"
      },
      "message": "NFS: We must use list_for_each_entry_safe in nfs_access_cache_shrinker\n\nWe may end up removing the current entry from nfs_access_lru_list.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "779c51795bfb35c2403c924b9de90ca9356bc693",
      "tree": "6bdd2e6896425b58df4ec457c583a15af21cb0c4",
      "parents": [
        "e8582a8b96f329083b4da29aa87bc43cc0d80dd1"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Fri Sep 17 17:31:30 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 17:31:30 2010 -0400"
      },
      "message": "nfs: move nfs_sillyrename to unlink.c\n\n...since that\u0027s where most of the sillyrenaming code lives. A comment\nblock is added to the beginning as well to clarify how sillyrenaming\nworks. Also, make nfs_async_unlink static as nfs_sillyrename is the only\ncaller.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nReviewed-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2b484297e48c3fbb1846fc6ea10036d9465273e7",
      "tree": "bfd8f5cfba73b597d5277ba48e02fd2c13ece9b3",
      "parents": [
        "c0204fd2b8fe047b18b67e07e1bf2a03691240cd"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "message": "NFS: Add an \u0027open_context\u0027 element to struct nfs_rpc_ops\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c0204fd2b8fe047b18b67e07e1bf2a03691240cd",
      "tree": "d6cf75bc11d08f190c0757ba98b5ae6baef49402",
      "parents": [
        "535918f14176396646b5547b7d1353c932f24f5e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "message": "NFS: Clean up nfs4_proc_create()\n\nRemove all remaining references to the struct nameidata from the low level\nNFS layers. Again pass down a partially initialised struct nfs_open_context\nwhen we want to do atomic open+create.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "535918f14176396646b5547b7d1353c932f24f5e",
      "tree": "0736137c736ac8c35cfbdd99a1de68eb556e4b4a",
      "parents": [
        "b8d4caddd871758ffa156be51b4c8be82fea470d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "message": "NFSv4: Further cleanups for nfs4_open_revalidate()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b8d4caddd871758ffa156be51b4c8be82fea470d",
      "tree": "c388304ca2f1163b2737409ccc4cbc2d29ad3f41",
      "parents": [
        "f46e0bd34ec002d0727761da52b8fd47f06d4440"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "message": "NFSv4: Clean up nfs4_open_revalidate\n\nRemove references to \u0027struct nameidata\u0027 from the low-level open_revalidate\ncode, and replace them with a struct nfs_open_context which will be\ncorrectly initialised upon success.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f46e0bd34ec002d0727761da52b8fd47f06d4440",
      "tree": "bb4ce4d00a9857b370765abf6faf89a09f4c4ff4",
      "parents": [
        "cd9a1c0e5ac681871d64804f82291649e2a0accb"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:50 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:50 2010 -0400"
      },
      "message": "NFSv4: Further minor cleanups for nfs4_atomic_open()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cd9a1c0e5ac681871d64804f82291649e2a0accb",
      "tree": "900c2bf6ba75c2a02af07091afcf4ba4cfdb2396",
      "parents": [
        "859d5024f450686ad0a42ed3c06f2fa20295c9e6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:50 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:50 2010 -0400"
      },
      "message": "NFSv4: Clean up nfs4_atomic_open\n\nStart moving the \u0027struct nameidata\u0027 dependent code out of the lower level\nNFS code in preparation for the removal of open intents.\n\nInstead of the struct nameidata, we pass down a partially initialised\nstruct nfs_open_context that will be fully initialised by the atomic open\nupon success.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0a377cff9428af2da2b293d11e07bc4dbf064ee5",
      "tree": "af97cd65f7e662bef87866b6a876831416f60a1f",
      "parents": [
        "df486a25900f4dba9cdc3886c4ac871951c6aef3"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Aug 18 09:25:42 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Aug 18 09:25:42 2010 -0400"
      },
      "message": "NFS: Fix an Oops in the NFSv4 atomic open code\n\nAdam Lackorzynski reports:\n\nwith 2.6.35.2 I\u0027m getting this reproducible Oops:\n\n[  110.825396] BUG: unable to handle kernel NULL pointer dereference at\n(null)\n[  110.828638] IP: [\u003cffffffff811247b7\u003e] encode_attrs+0x1a/0x2a4\n[  110.828638] PGD be89f067 PUD bf18f067 PMD 0\n[  110.828638] Oops: 0000 [#1] SMP\n[  110.828638] last sysfs file: /sys/class/net/lo/operstate\n[  110.828638] CPU 2\n[  110.828638] Modules linked in: rtc_cmos rtc_core rtc_lib amd64_edac_mod\ni2c_amd756 edac_core i2c_core dm_mirror dm_region_hash dm_log dm_snapshot\nsg sr_mod usb_storage ohci_hcd mptspi tg3 mptscsih mptbase usbcore nls_base\n[last unloaded: scsi_wait_scan]\n[  110.828638]\n[  110.828638] Pid: 11264, comm: setchecksum Not tainted 2.6.35.2 #1\n[  110.828638] RIP: 0010:[\u003cffffffff811247b7\u003e]  [\u003cffffffff811247b7\u003e]\nencode_attrs+0x1a/0x2a4\n[  110.828638] RSP: 0000:ffff88003bf5b878  EFLAGS: 00010296\n[  110.828638] RAX: ffff8800bddb48a8 RBX: ffff88003bf5bb18 RCX:\n0000000000000000\n[  110.828638] RDX: ffff8800be258800 RSI: 0000000000000000 RDI:\nffff88003bf5b9f8\n[  110.828638] RBP: 0000000000000000 R08: ffff8800bddb48a8 R09:\n0000000000000004\n[  110.828638] R10: 0000000000000003 R11: ffff8800be779000 R12:\nffff8800be258800\n[  110.828638] R13: ffff88003bf5b9f8 R14: ffff88003bf5bb20 R15:\nffff8800be258800\n[  110.828638] FS:  0000000000000000(0000) GS:ffff880041e00000(0063)\nknlGS:00000000556bd6b0\n[  110.828638] CS:  0010 DS: 002b ES: 002b CR0: 000000008005003b\n[  110.828638] CR2: 0000000000000000 CR3: 00000000be8ef000 CR4:\n00000000000006e0\n[  110.828638] DR0: 0000000000000000 DR1: 0000000000000000 DR2:\n0000000000000000\n[  110.828638] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7:\n0000000000000400\n[  110.828638] Process setchecksum (pid: 11264, threadinfo\nffff88003bf5a000, task ffff88003f232210)\n[  110.828638] Stack:\n[  110.828638]  0000000000000000 ffff8800bfbcf920 0000000000000000\n0000000000000ffe\n[  110.828638] \u003c0\u003e 0000000000000000 0000000000000000 0000000000000000\n0000000000000000\n[  110.828638] \u003c0\u003e 0000000000000000 0000000000000000 0000000000000000\n0000000000000000\n[  110.828638] Call Trace:\n[  110.828638]  [\u003cffffffff81124c1f\u003e] ? nfs4_xdr_enc_setattr+0x90/0xb4\n[  110.828638]  [\u003cffffffff81371161\u003e] ? call_transmit+0x1c3/0x24a\n[  110.828638]  [\u003cffffffff813774d9\u003e] ? __rpc_execute+0x78/0x22a\n[  110.828638]  [\u003cffffffff81371a91\u003e] ? rpc_run_task+0x21/0x2b\n[  110.828638]  [\u003cffffffff81371b7e\u003e] ? rpc_call_sync+0x3d/0x5d\n[  110.828638]  [\u003cffffffff8111e284\u003e] ? _nfs4_do_setattr+0x11b/0x147\n[  110.828638]  [\u003cffffffff81109466\u003e] ? nfs_init_locked+0x0/0x32\n[  110.828638]  [\u003cffffffff810ac521\u003e] ? ifind+0x4e/0x90\n[  110.828638]  [\u003cffffffff8111e2fb\u003e] ? nfs4_do_setattr+0x4b/0x6e\n[  110.828638]  [\u003cffffffff8111e634\u003e] ? nfs4_do_open+0x291/0x3a6\n[  110.828638]  [\u003cffffffff8111ed81\u003e] ? nfs4_open_revalidate+0x63/0x14a\n[  110.828638]  [\u003cffffffff811056c4\u003e] ? nfs_open_revalidate+0xd7/0x161\n[  110.828638]  [\u003cffffffff810a2de4\u003e] ? do_lookup+0x1a4/0x201\n[  110.828638]  [\u003cffffffff810a4733\u003e] ? link_path_walk+0x6a/0x9d5\n[  110.828638]  [\u003cffffffff810a42b6\u003e] ? do_last+0x17b/0x58e\n[  110.828638]  [\u003cffffffff810a5fbe\u003e] ? do_filp_open+0x1bd/0x56e\n[  110.828638]  [\u003cffffffff811cd5e0\u003e] ? _atomic_dec_and_lock+0x30/0x48\n[  110.828638]  [\u003cffffffff810a9b1b\u003e] ? dput+0x37/0x152\n[  110.828638]  [\u003cffffffff810ae063\u003e] ? alloc_fd+0x69/0x10a\n[  110.828638]  [\u003cffffffff81099f39\u003e] ? do_sys_open+0x56/0x100\n[  110.828638]  [\u003cffffffff81027a22\u003e] ? ia32_sysret+0x0/0x5\n[  110.828638] Code: 83 f1 01 e8 f5 ca ff ff 48 83 c4 50 5b 5d 41 5c c3 41\n57 41 56 41 55 49 89 fd 41 54 49 89 d4 55 48 89 f5 53 48 81 ec 18 01 00 00\n\u003c8b\u003e 06 89 c2 83 e2 08 83 fa 01 19 db 83 e3 f8 83 c3 18 a8 01 8d\n[  110.828638] RIP  [\u003cffffffff811247b7\u003e] encode_attrs+0x1a/0x2a4\n[  110.828638]  RSP \u003cffff88003bf5b878\u003e\n[  110.828638] CR2: 0000000000000000\n[  112.840396] ---[ end trace 95282e83fd77358f ]---\n\nWe need to ensure that the O_EXCL flag is turned off if the user doesn\u0027t\nset O_CREAT.\n\nCc: stable@kernel.org\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f5a73672d1811f2fb1dcb62ca90ceb12b2050ae7",
      "tree": "f9d8798abbcbb6df399dea3d718ded7b2b2b5270",
      "parents": [
        "669502ff31d7dba1849aec7ee2450a3c61f57d39"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 10 10:20:05 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 10 10:20:05 2010 -0400"
      },
      "message": "NFS: allow close-to-open cache semantics to apply to root of NFS filesystem\n\n\n\nTo obey NFS cache semantics, the client must verify the cached\nattributes when a file is opened.  In most cases this is done by a call to\nd_validate as one of the last steps in path_walk.\n\nHowever for the root of a filesystem, d_validate is only ever called\non the mounted-on filesystem (except when the path ends \u0027.\u0027 or \u0027..\u0027).\nSo NFS has no chance to validate the attributes.\n\nSo, in nfs_opendir, we revalidate the attributes if the opened\ndirectory is the mountpoint.  This may cause double-validation for \".\"\nand \"..\" lookups, but that is better than missing regular /path/name\nlookups completely.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5df6b8e65ad0f2eaee202ff002ac00d1ac605315",
      "tree": "2eff6606f8e39dc1fd7eb8a05feb2a9927151805",
      "parents": [
        "fe21ea18c742ab0eb8f6f8ebc543374839a02a87",
        "3dce9a5c3a39a664e372886ea86c42ae7ae33dfc"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 13:19:36 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 13:19:36 2010 -0700"
      },
      "message": "Merge branch \u0027nfs-for-2.6.36\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6\n\n* \u0027nfs-for-2.6.36\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (42 commits)\n  NFS: NFSv4.1 is no longer a \"developer only\" feature\n  NFS: NFS_V4 is no longer an EXPERIMENTAL feature\n  NFS: Fix /proc/mount for legacy binary interface\n  NFS: Fix the locking in nfs4_callback_getattr\n  SUNRPC: Defer deleting the security context until gss_do_free_ctx()\n  SUNRPC: prevent task_cleanup running on freed xprt\n  SUNRPC: Reduce asynchronous RPC task stack usage\n  SUNRPC: Move the bound cred to struct rpc_rqst\n  SUNRPC: Clean up of rpc_bindcred()\n  SUNRPC: Move remaining RPC client related task initialisation into clnt.c\n  SUNRPC: Ensure that rpc_exit() always wakes up a sleeping task\n  SUNRPC: Make the credential cache hashtable size configurable\n  SUNRPC: Store the hashtable size in struct rpc_cred_cache\n  NFS: Ensure the AUTH_UNIX credcache is allocated dynamically\n  NFS: Fix the NFS users of rpc_restart_call()\n  SUNRPC: The function rpc_restart_call() should return success/failure\n  NFSv4: Get rid of the bogus RPC_ASSASSINATED(task) checks\n  NFSv4: Clean up the process of renewing the NFSv4 lease\n  NFSv4.1: Handle NFS4ERR_DELAY on SEQUENCE correctly\n  NFS: nfs_rename() should not have to flush out writebacks\n  ...\n"
    },
    {
      "commit": "0a8ebba943dd89bdd57c5dab5a66932f690847d9",
      "tree": "b7ef484c9ecb62ebae09c6739fe016d9954cf243",
      "parents": [
        "1b924e5f878e3cd62a20bd8dbf3b911a40185a99"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 31 14:29:06 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 03 22:06:41 2010 -0400"
      },
      "message": "NFS: nfs_rename() should not have to flush out writebacks\n\nWe don\u0027t really support nfs servers that invalidate the file handle after a\nrename, so precautions such as flushing out dirty data before renaming the\nfile are superfluous.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9cfcac810e8993fa7a5bfd24b1a21f1dbbb03a7b",
      "tree": "86fae80c744e46b15b8eb9aa23fead7e63a64159",
      "parents": [
        "692a8a231b212dfc68f612956d63f34abf098e0f"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Fri Jul 23 11:43:51 2010 -0400"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Mon Aug 02 15:35:06 2010 +1000"
      },
      "message": "vfs: re-introduce MAY_CHDIR\n\nCurrently MAY_ACCESS means that filesystems must check the permissions\nright then and not rely on cached results or the results of future\noperations on the object.  This can be because of a call to sys_access() or\nbecause of a call to chdir() which needs to check search without relying on\nany future operations inside that dir.  I plan to use MAY_ACCESS for other\npurposes in the security system, so I split the MAY_ACCESS and the\nMAY_CHDIR cases.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nAcked-by:  Stephen D. Smalley \u003csds@tycho.nsa.gov\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "7f8275d0d660c146de6ee3017e1e2e594c49e820",
      "tree": "884db927118b44102750b5168ee36ef4b8b5cb4e",
      "parents": [
        "d0c6f6258478e1dba532bf7c28e2cd6e1047d3a4"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Jul 19 14:56:17 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Mon Jul 19 14:56:17 2010 +1000"
      },
      "message": "mm: add context argument to shrinker callback\n\nThe current shrinker implementation requires the registered callback\nto have global state to work from. This makes it difficult to shrink\ncaches that are not global (e.g. per-filesystem caches). Pass the shrinker\nstructure to the callback so that users can embed the shrinker structure\nin the context the shrinker needs to operate on and get back to it in the\ncallback via container_of().\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "7ea8085910ef3dd4f3cad6845aaa2b580d39b115",
      "tree": "d9c1edb5906f943f7d70bfb4b65106e29772d379",
      "parents": [
        "cc967be54710d97c05229b2e5ba2d00df84ddd64"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed May 26 17:53:25 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 27 22:05:02 2010 -0400"
      },
      "message": "drop unused dentry argument to -\u003efsync\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "59844a9bd73e084b0ffefc0e13226098e28c71ad",
      "tree": "7b897c2530fe7083d57755df684d1d808fb18f8b",
      "parents": [
        "0a68b0bed08eeb7ec62e0125f17856b1ccb1ea4b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 26 08:42:24 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 26 08:43:51 2010 -0400"
      },
      "message": "NFS: Fix a lock imbalance typo in nfs_access_cache_shrinker\n\nCommit 9c7e7e23371e629dbb3b341610a418cdf1c19d91 (NFS: Don\u0027t call iput() in\nnfs_access_cache_shrinker) unintentionally removed the spin unlock for the\ninode-\u003ei_lock.\n\nReported-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9c7e7e23371e629dbb3b341610a418cdf1c19d91",
      "tree": "c211183b99860d232500bf99d12775e47c4f0f9c",
      "parents": [
        "1a81bb8a1fa62ccb9b2411ac10ce702ca4ed302a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 13 12:51:06 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:36 2010 -0400"
      },
      "message": "NFS: Don\u0027t call iput() in nfs_access_cache_shrinker\n\niput() can potentially attempt to allocate memory, so we should avoid\ncalling it in a memory shrinker. Instead, rely on the fact that iput() will\ncall nfs_access_zap_cache().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1a81bb8a1fa62ccb9b2411ac10ce702ca4ed302a",
      "tree": "7a4d29a36c2646b8cdd67d50f3b7778636e1dfbe",
      "parents": [
        "61d5eb2985b3b1d69fd53d7dc9789037c27f8d91"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 13 12:51:06 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:35 2010 -0400"
      },
      "message": "NFS: Clean up nfs_access_zap_cache()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    }
  ],
  "next": "61d5eb2985b3b1d69fd53d7dc9789037c27f8d91"
}
