)]}'
{
  "log": [
    {
      "commit": "dc327ed4cd320be689596365372a3683208c3ba0",
      "tree": "9393e6e22f5a3ece9ac0e739d93303f0cf1b9dc3",
      "parents": [
        "c57d1bc5e043dbb5ba82ded07003d71a8033d899"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun May 06 19:46:30 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 08 12:53:21 2012 -0400"
      },
      "message": "NFSv4: nfs_client_return_marked_delegations can\u0027t flush data\n\nSince even filemap_flush() needs to lock pages that are dirty, we\ncannot risk calling it from the state manager context. Therefore,\nwe need to move the call to filemap_flush() to\nnfs_async_inode_return_delegation().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c57d1bc5e043dbb5ba82ded07003d71a8033d899",
      "tree": "d56f455d3b2fbe8d7b52ac047f299bba67bef138",
      "parents": [
        "14546c337588370dced50dcaf43398939be9829e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun May 06 19:34:17 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 08 12:53:21 2012 -0400"
      },
      "message": "NFS: nfs_inode_return_delegation() should always flush dirty data\n\nThe assumption is that if you are in a situation where you need to\nreturn the delegation, then you should probably stop caching the\ndata anyway.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "17280175c587469b34757263c7cfc608f0ea2334",
      "tree": "34a3008bfd1055e9fdb0557ea563484b67433797",
      "parents": [
        "5ffaf8554163d9f3873988ce2f9977f6c6f408d2"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Mar 11 13:11:00 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Mar 11 15:14:16 2012 -0400"
      },
      "message": "NFS: Fix a number of sparse warnings\n\nFix a number of \"warning: symbol \u0027foo\u0027 was not declared. Should it be\nstatic?\" conditions.\n\nFix 2 cases of \"warning: Using plain integer as NULL pointer\"\n\nfs/nfs/delegation.c:263:31: warning: restricted fmode_t degrades to integer\n  - We want to allow upgrades to a WRITE delegation, but should otherwise\n    consider servers that hand out duplicate delegations to be borken.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ad1e3968292e3af1c49ccbd0fb7d2674010f8efc",
      "tree": "5eee458017d2deeff73c27740d1bddd742a05990",
      "parents": [
        "4fc8796d23819da814ec25b7793bde8f104f1a2a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 10 11:23:15 2012 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 10 11:54:36 2012 -0500"
      },
      "message": "NFSv4.0: Re-establish the callback channel on NFS4ERR_CB_PATHDOWN\n\nWhen the NFSv4.0 server tells us that it can no-longer talk to us\non the callback channel, we should attempt a new SETCLIENTID in\norder to re-transmit the callback channel information.\n\nNote that as long as we do not change the boot verifier, this is\na safe procedure; the server is required to keep our state.\n\nAlso move the function nfs_handle_cb_pathdown to fs/nfs/nfs4state.c,\nand change the name in order to mark it as being specific to NFSv4.0.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0032a7a749a49b2c044092a1d0af5cfd0077f35d",
      "tree": "b73ca09268f9b6f1c6b5c8bb9301b088a305830d",
      "parents": [
        "2dc317565b6fd264929b41aaa9674431d75178ef"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 08 17:16:12 2012 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 08 22:37:12 2012 -0500"
      },
      "message": "NFS: Don\u0027t copy read delegation stateids in setattr\n\nThe server will just return an NFS4ERR_OPENMODE anyway.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9cb8196839ab4ec87710526e9c43ac7f5dba69d3",
      "tree": "97ea8225d7ea1b7ba45785f25d042a18263eaf8e",
      "parents": [
        "4f1abd226d80ef763c50e3930b369b63dffbb312"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Wed Mar 07 10:49:41 2012 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 07 10:53:55 2012 -0500"
      },
      "message": "NFSv4.1 handle DS stateid errors\n\nHandle DS READ and WRITE stateid errors by recovering the stateid on the MDS.\n\nNFS4ERR_OLD_STATEID is ignored as the client always sends a\nstate sequenceid of zero for DS READ and WRITE stateids.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f597c53790f662662281b82b7692a22d2a4d4afa",
      "tree": "3567e1c7e232973fee14b7ddffa3545cd88392d0",
      "parents": [
        "1e3987c3052a48fbfc8f5d30214c825eff41192d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Mar 04 18:13:56 2012 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 06 10:32:46 2012 -0500"
      },
      "message": "NFSv4: Add helpers for basic copying of stateids\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "36281caa839f4441c793c81d2e3cc5ea44ad5aa2",
      "tree": "be5471741713d77681fcf1e161b0748343748977",
      "parents": [
        "8e663f0e5fabf57065aed1cfdaff5b13057dce23"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Mar 04 18:13:56 2012 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 06 10:32:44 2012 -0500"
      },
      "message": "NFSv4: Further clean-ups of delegation stateid validation\n\nChange the name to reflect what we\u0027re really doing: testing two\nstateids for whether or not they match according the the rules in\nRFC3530 and RFC5661.\nMove the code from callback_proc.c to nfs4proc.c\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8e663f0e5fabf57065aed1cfdaff5b13057dce23",
      "tree": "844f5568113fe1c43a6d4ac93e9dfd5452682e06",
      "parents": [
        "a1d0b5eebc4fd6e0edb02688b35f17f67f42aea5"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Mar 04 18:13:56 2012 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 06 10:32:44 2012 -0500"
      },
      "message": "NFSv4.1: Fix matching of the stateids when returning a delegation\n\nnfs41_validate_delegation_stateid is broken if we supply a stateid with\na non-zero sequence id. Instead of trying to match the sequence id,\nthe function assumes that we always want to error. While this is\ntrue for a delegation callback, it is not true in general.\n\nAlso fix a typo in nfs4_callback_recall.\n\nReported-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a1d0b5eebc4fd6e0edb02688b35f17f67f42aea5",
      "tree": "80d13543ee4f1928e0436919a19de40be2a3b12b",
      "parents": [
        "fa68a1ba1de349f0d1fcc54171b95236efe24148"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 05 19:56:44 2012 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 06 10:32:43 2012 -0500"
      },
      "message": "NFS: Properly handle the case where the delegation is revoked\n\nIf we know that the delegation stateid is bad or revoked, we need to\nremove that delegation as soon as possible, and then mark all the\nstateids that relied on that delegation for recovery. We cannot use\nthe delegation as part of the recovery process.\n\nAlso note that NFSv4.1 uses a different error code (NFS4ERR_DELEG_REVOKED)\nto indicate that the delegation was revoked.\n\nFinally, ensure that setlk() and setattr() can both recover safely from\na revoked delegation.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "a9a4a87a5942e9271523197a90aaa82349c818fb",
      "tree": "88001fc58944798ff41d36a08ccf2bdace2cda6e",
      "parents": [
        "919066d690541f4bd727b0e0fc2f7a20a7e3b3a7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 17 16:08:46 2011 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 18 09:14:34 2011 -0700"
      },
      "message": "NFS: Use the inode-\u003ei_version to cache NFSv4 change attribute information\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ed1e6211a0a134ff23592c6f057af982ad5dab52",
      "tree": "b3485dbf3c041e40ab485b8307fb53f7154330c6",
      "parents": [
        "73ca1001ed6881b476e8252adcd0eede1ea368ea"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 25 15:37:29 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 25 15:37:29 2011 -0400"
      },
      "message": "NFSv4: Don\u0027t use the delegation-\u003einode in nfs_mark_return_delegation()\n\nnfs_mark_return_delegation() is usually called without any locking, and\nso it is not safe to dereference delegation-\u003einode. Since the inode is\nonly used to discover the nfs_client anyway, it makes more sense to\nhave the callers pass a valid pointer to the nfs_server as a parameter.\n\nReported-by: Ian Kent \u003craven@themaw.net\u003e\nCc: stable@kernel.org\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "26f04dde681c6a48b2bacfc5fe01fef204419b0c",
      "tree": "b8a6f047b6e5743ab795076e3cc0d0a5a72840e6",
      "parents": [
        "4b8ee2b82e8b0b6e17ee33feb74fcdb5c6d8dbdd"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Sun May 01 06:21:54 2011 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 27 17:42:46 2011 -0400"
      },
      "message": "nfs,rcu: convert call_rcu(nfs_free_delegation_callback) to kfree_rcu()\n\nThe rcu callback nfs_free_delegation_callback() just calls a kfree(),\nso we use kfree_rcu() instead of the call_rcu(nfs_free_delegation_callback).\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e00b8a24041f37e56b4b8415ce4eba1cbc238065",
      "tree": "eb4fbb050e1d4afdd6d10b4b420420fa92ad92a8",
      "parents": [
        "c7a360b05b5430ac1d75dc7d53c586ada60a05cb"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 27 14:55:39 2011 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 28 13:37:09 2011 -0500"
      },
      "message": "NFS: Fix an NFS client lockdep issue\n\nThere is no reason to be freeing the delegation cred in the rcu callback,\nand doing so is resulting in a lockdep complaint that rpc_credcache_lock\nis being called from both softirq and non-softirq contexts.\n\nReported-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "d3978bb325510f0a26ebd92f211b36c5f98b2306",
      "tree": "5d376fef966d242cb61df1bcfaefeec1e71663d4",
      "parents": [
        "dda4b225623f316335052828c24a16e2da313f8f"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Dec 24 01:33:04 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 06 14:57:46 2011 -0500"
      },
      "message": "NFS: Move cl_delegations to the nfs_server struct\n\nDelegations are per-inode, not per-nfs_client.  When a server file\nsystem is migrated, delegations on the client must be moved from the\nsource to the destination nfs_server.  Make it easier to manage a\nmount point\u0027s delegation list across a migration event by moving the\nlist to the nfs_server struct.\n\nClean up: I added documenting comments to public functions I changed\nin this patch.  For consistency I added comments to all the other\npublic functions in fs/nfs/delegation.c.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "dda4b225623f316335052828c24a16e2da313f8f",
      "tree": "b894d4c0c53e13f30e2bc6f7836dfdcd7a6c0173",
      "parents": [
        "24d292b894273495f9664bb495e575f8cb7e8cac"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Dec 24 01:32:54 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 06 14:47:57 2011 -0500"
      },
      "message": "NFS: Introduce nfs_detach_delegations()\n\nClean up:  Refactor code that takes clp-\u003ecl_lock and calls\nnfs_detach_delegations_locked() into its own function.\n\nWhile we\u0027re changing the call sites, get rid of the second parameter\nand the logic in nfs_detach_delegations_locked() that uses it, since\ncallers always set that parameter of nfs_detach_delegations_locked()\nto NULL.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "451a3c24b0135bce54542009b5fde43846c7cf67",
      "tree": "f0fbbcc155aef2a1ffcb8aa593fe7a966d0e6900",
      "parents": [
        "55f6561c6941713ab5ae9180525b026dd40b7d14"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Nov 17 16:26:55 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 17 08:59:32 2010 -0800"
      },
      "message": "BKL: remove extraneous #include \u003csmp_lock.h\u003e\n\nThe big kernel lock has been removed from all these files at some point,\nleaving only the #include.\n\nRemove this too as a cleanup.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b89f432133851a01c0d28822f11cbdcc15781a75",
      "tree": "a3e9ba638a9b746985148f4525335d360ec7da56",
      "parents": [
        "2e54eb96e2c801f33d95b5dade15212ac4d6c4a5"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sat Sep 18 15:09:31 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Tue Oct 05 11:02:04 2010 +0200"
      },
      "message": "fs/locks.c: prepare for BKL removal\n\nThis prepares the removal of the big kernel lock from the\nfile locking code. We still use the BKL as long as fs/lockd\nuses it and ceph might sleep, but we can flip the definition\nto a private spinlock as soon as that\u0027s done.\nAll users outside of fs/lockd get converted to use\nlock_flocks() instead of lock_kernel() where appropriate.\n\nBased on an earlier patch to use a spinlock from Matthew\nWilcox, who has attempted this a few times before, the\nearliest patch from over 10 years ago turned it into\na semaphore, which ended up being slower than the BKL\nand was subsequently reverted.\n\nSomeone should do some serious performance testing when\nthis becomes a spinlock, since this has caused problems\nbefore. Using a spinlock should be at least as good\nas the BKL in theory, but who knows...\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: John Kacur \u003cjkacur@redhat.com\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nCc: linux-kernel@vger.kernel.org\nCc: linux-fsdevel@vger.kernel.org\n"
    },
    {
      "commit": "1b924e5f878e3cd62a20bd8dbf3b911a40185a99",
      "tree": "a24a76be037ee49900611eb9b3883adf22410236",
      "parents": [
        "af7fa16506bf9b6323e862a61e14c20555152bb3"
      ],
      "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:40 2010 -0400"
      },
      "message": "NFS: Clean up the callers of nfs_wb_all()\n\nThere is no need to flush out writes before calling nfs_wb_all().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e047a10c1293ee0ab20258154e7f3ebf8ad502d6",
      "tree": "7dacba9544d57462b136893903398ce08b3a8435",
      "parents": [
        "c48f4f3541e67881c9eb7c46e052f5ece48ef530"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 16 09:52:27 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jun 22 13:24:02 2010 -0400"
      },
      "message": "NFSv41: Fix nfs_async_inode_return_delegation() ugliness\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8535b2be5181fc3019e4150567ef53210fe3b04f",
      "tree": "ba366f5304f12876f1e45d3c2b423d12f9ec0c90",
      "parents": [
        "712a4338669d7d57f952244abb608e6ac07e39da"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 13 12:51:01 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:33 2010 -0400"
      },
      "message": "NFSv4: Don\u0027t use GFP_KERNEL allocations in state recovery\n\nWe do not want to have the state recovery thread kick off and wait for a\nmemory reclaim, since that may deadlock when the writebacks end up\nwaiting for the state recovery thread to complete.\n\nThe safe thing is therefore to use GFP_NOFS in all open, close,\ndelegation return, lock, etc. operations that may be called by the\nstate recovery thread.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "17d2c0a0c4d4e074f0a2a5c0090ff6d88f5e1d44",
      "tree": "f658bdd3a88849f76dcbab16129321eacd604a5d",
      "parents": [
        "8f649c376254755f2261a693b3d48d09126218dc"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat May 01 12:37:18 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 01 12:37:18 2010 -0400"
      },
      "message": "NFS: Fix RCU issues in the NFSv4 delegation code\n\nFix a number of RCU issues in the NFSv4 delegation code.\n\n (1) delegation-\u003ecred doesn\u0027t need to be RCU protected as it\u0027s essentially an\n     invariant refcounted structure.\n\n     By the time we get to nfs_free_delegation(), the delegation is being\n     released, so no one else should be attempting to use the saved\n     credentials, and they can be cleared.\n\n     However, since the list of delegations could still be under traversal at\n     this point by such as nfs_client_return_marked_delegations(), the cred\n     should be released in nfs_do_free_delegation() rather than in\n     nfs_free_delegation().  Simply using rcu_assign_pointer() to clear it is\n     insufficient as that doesn\u0027t stop the cred from being destroyed, and nor\n     does calling put_rpccred() after call_rcu(), given that the latter is\n     asynchronous.\n\n (2) nfs_detach_delegation_locked() and nfs_inode_set_delegation() should use\n     rcu_derefence_protected() because they can only be called if\n     nfs_client::cl_lock is held, and that guards against anyone changing\n     nfsi-\u003edelegation under it.  Furthermore, the barrier imposed by\n     rcu_dereference() is superfluous, given that the spin_lock() is also a\n     barrier.\n\n (3) nfs_detach_delegation_locked() is now passed a pointer to the nfs_client\n     struct so that it can issue lockdep advice based on clp-\u003ecl_lock for (2).\n\n (4) nfs_inode_return_delegation_noreclaim() and nfs_inode_return_delegation()\n     should use rcu_access_pointer() outside the spinlocked region as they\n     merely examine the pointer and don\u0027t follow it, thus rendering unnecessary\n     the need to impose a partial ordering over the one item of interest.\n\n     These result in an RCU warning like the following:\n\n[ INFO: suspicious rcu_dereference_check() usage. ]\n---------------------------------------------------\nfs/nfs/delegation.c:332 invoked rcu_dereference_check() without protection!\n\nother info that might help us debug this:\n\nrcu_scheduler_active \u003d 1, debug_locks \u003d 0\n2 locks held by mount.nfs4/2281:\n #0:  (\u0026type-\u003es_umount_key#34){+.+...}, at: [\u003cffffffff810b25b4\u003e] deactivate_super+0x60/0x80\n #1:  (iprune_sem){+.+...}, at: [\u003cffffffff810c332a\u003e] invalidate_inodes+0x39/0x13a\n\nstack backtrace:\nPid: 2281, comm: mount.nfs4 Not tainted 2.6.34-rc1-cachefs #110\nCall Trace:\n [\u003cffffffff8105149f\u003e] lockdep_rcu_dereference+0xaa/0xb2\n [\u003cffffffffa00b4591\u003e] nfs_inode_return_delegation_noreclaim+0x5b/0xa0 [nfs]\n [\u003cffffffffa0095d63\u003e] nfs4_clear_inode+0x11/0x1e [nfs]\n [\u003cffffffff810c2d92\u003e] clear_inode+0x9e/0xf8\n [\u003cffffffff810c3028\u003e] dispose_list+0x67/0x10e\n [\u003cffffffff810c340d\u003e] invalidate_inodes+0x11c/0x13a\n [\u003cffffffff810b1dc1\u003e] generic_shutdown_super+0x42/0xf4\n [\u003cffffffff810b1ebe\u003e] kill_anon_super+0x11/0x4f\n [\u003cffffffffa009893c\u003e] nfs4_kill_super+0x3f/0x72 [nfs]\n [\u003cffffffff810b25bc\u003e] deactivate_super+0x68/0x80\n [\u003cffffffff810c6744\u003e] mntput_no_expire+0xbb/0xf8\n [\u003cffffffff810c681b\u003e] release_mounts+0x9a/0xb0\n [\u003cffffffff810c689b\u003e] put_mnt_ns+0x6a/0x79\n [\u003cffffffffa00983a1\u003e] nfs_follow_remote_path+0x5a/0x146 [nfs]\n [\u003cffffffffa0098334\u003e] ? nfs_do_root_mount+0x82/0x95 [nfs]\n [\u003cffffffffa00985a9\u003e] nfs4_try_mount+0x75/0xaf [nfs]\n [\u003cffffffffa0098874\u003e] nfs4_get_sb+0x291/0x31a [nfs]\n [\u003cffffffff810b2059\u003e] vfs_kern_mount+0xb8/0x177\n [\u003cffffffff810b2176\u003e] do_kern_mount+0x48/0xe8\n [\u003cffffffff810c810b\u003e] do_mount+0x782/0x7f9\n [\u003cffffffff810c8205\u003e] sys_mount+0x83/0xbe\n [\u003cffffffff81001eeb\u003e] system_call_fastpath+0x16/0x1b\n\nAlso on:\n\nfs/nfs/delegation.c:215 invoked rcu_dereference_check() without protection!\n [\u003cffffffff8105149f\u003e] lockdep_rcu_dereference+0xaa/0xb2\n [\u003cffffffffa00b4223\u003e] nfs_inode_set_delegation+0xfe/0x219 [nfs]\n [\u003cffffffffa00a9c6f\u003e] nfs4_opendata_to_nfs4_state+0x2c2/0x30d [nfs]\n [\u003cffffffffa00aa15d\u003e] nfs4_do_open+0x2a6/0x3a6 [nfs]\n ...\n\nAnd:\n\nfs/nfs/delegation.c:40 invoked rcu_dereference_check() without protection!\n [\u003cffffffff8105149f\u003e] lockdep_rcu_dereference+0xaa/0xb2\n [\u003cffffffffa00b3bef\u003e] nfs_free_delegation+0x3d/0x6e [nfs]\n [\u003cffffffffa00b3e71\u003e] nfs_do_return_delegation+0x26/0x30 [nfs]\n [\u003cffffffffa00b406a\u003e] __nfs_inode_return_delegation+0x1ef/0x1fe [nfs]\n [\u003cffffffffa00b448a\u003e] nfs_client_return_marked_delegations+0xc9/0x124 [nfs]\n ...\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8f649c376254755f2261a693b3d48d09126218dc",
      "tree": "818338eca6dea5c7e022a3a6df51c3b2aa9e54b7",
      "parents": [
        "be1066bbcd443a65df312fdecea7e4959adedb45"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 01 12:36:18 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 01 12:36:18 2010 -0400"
      },
      "message": "NFSv4: Fix the locking in nfs_inode_reclaim_delegation()\n\nEnsure that we correctly rcu-dereference the delegation itself, and that we\nprotect against removal while we\u0027re changing the contents.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "2597641deae82c9a95e255518da189ab557da0af",
      "tree": "0b2dc7c46f2a0398ecefd6bb63a657710cf921fa",
      "parents": [
        "0629e370dd5819efa5cf8d418a8e6729efe388ef"
      ],
      "author": {
        "name": "Alexandros Batsakis",
        "email": "batsakis@netapp.com",
        "time": "Sat Dec 05 13:48:55 2009 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Dec 05 13:48:55 2009 -0500"
      },
      "message": "nfs41: v2 fix cb_recall bug\n\nin NFSv4.1 the seqid part of a stateid in CB_RECALL must be 0\n\nSigned-off-by: Alexandros Batsakis \u003cbatsakis@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "31f0960778c78198957cf02cc970d92b72b929e4",
      "tree": "b5d061437c4a952e0fe78006a2ad9186c2e6ecc9",
      "parents": [
        "c79571a508801e055a0be583d6dc70bddad7bb64"
      ],
      "author": {
        "name": "Alexandros Batsakis",
        "email": "batsakis@netapp.com",
        "time": "Sat Dec 05 13:27:02 2009 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Dec 05 13:27:02 2009 -0500"
      },
      "message": "nfs41: V2 initial support for CB_RECALL_ANY\n\nFor now the clients returns _all_ the delegations of the specificed type\nit holds\n\nSigned-off-by: Alexandros Batsakis \u003cbatsakis@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c79571a508801e055a0be583d6dc70bddad7bb64",
      "tree": "a5000c191610376a01f12ac54c08d3c1adcf5bea",
      "parents": [
        "b4a6f4966efc7e70dc8d8a9e60744de6845b14bf"
      ],
      "author": {
        "name": "Alexandros Batsakis",
        "email": "batsakis@netapp.com",
        "time": "Sat Dec 05 13:20:52 2009 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Dec 05 13:20:52 2009 -0500"
      },
      "message": "nfs4: V2 return/expire delegations depending on their type\n\nSigned-off-by: Alexandros Batsakis \u003cbatsakis@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b4a6f4966efc7e70dc8d8a9e60744de6845b14bf",
      "tree": "72a2b2687975bc3629dd02efca6bc879fa2bcbfe",
      "parents": [
        "07bccc2dd4e8745859f0fa7d120ea39320fbcdbf"
      ],
      "author": {
        "name": "Alexandros Batsakis",
        "email": "batsakis@netapp.com",
        "time": "Sat Dec 05 13:19:11 2009 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Dec 05 13:19:11 2009 -0500"
      },
      "message": "nfs4: minor delegation cleaning\n\nSigned-off-by: Alexandros Batsakis \u003cbatsakis@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d18cc1fda25295416a2855d44c2936db01df9eec",
      "tree": "962ec82ffff2fb49691779039c76976be7d964f0",
      "parents": [
        "d327cf7449e6fd5cbac784c641770e9366faa386"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 03 08:10:17 2009 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 03 08:10:17 2009 -0500"
      },
      "message": "NFSv4: Fix a potential state manager deadlock when returning delegations\n\nThe nfsv4 state manager could potentially deadlock inside\n__nfs_inode_return_delegation() if the server reboots, so that the calls to\nnfs_msync_inode() end up waiting on state recovery to complete.\n\nAlso ensure that if a server reboot or network partition causes us to have\nto stop returning delegations, that NFS4CLNT_DELEGRETURN is set so that\nthe state manager can resume any outstanding delegation returns after it\nhas dealt with the state recovery situation.\n\nFinally, ensure that the state manager doesn\u0027t wait for the DELEGRETURN\ncall to complete. It doesn\u0027t need to, and that too can cause a deadlock.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "405f55712dfe464b3240d7816cc4fe4174831be2",
      "tree": "96c425ea7fa8b31058b8f83a433c5e5265c8ebc7",
      "parents": [
        "f9fabcb58a6d26d6efde842d1703ac7cfa9427b6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Jul 11 22:08:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 12 12:22:34 2009 -0700"
      },
      "message": "headers: smp_lock.h redux\n\n* Remove smp_lock.h from files which don\u0027t need it (including some headers!)\n* Add smp_lock.h to files which do need it\n* Make smp_lock.h include conditional in hardirq.h\n  It\u0027s needed only for one kernel_locked() usage which is under CONFIG_PREEMPT\n\n  This will make hardirq.h inclusion cheaper for every PREEMPT\u003dn config\n  (which includes allmodconfig/allyesconfig, BTW)\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3f09df70e3a33590ae5a97b8a15486d3711c7065",
      "tree": "18f5c9115aa79dd2cab5f87d7024bea5460ca0af",
      "parents": [
        "965b5d679146c9f69bc0325388bb9ed357863c4f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 17 13:23:00 2009 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 17 13:23:00 2009 -0700"
      },
      "message": "NFS: Ensure we always hold the BKL when dereferencing inode-\u003ei_flock\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d5122201a7f90b2aa73092f158b84d1d74f1134d",
      "tree": "7d2c55cd74dd31b5977861d0bc71b31424dc68ed",
      "parents": [
        "01c3f05228ce7fc19baa103e4e4bf6c1b5062a53"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 17 13:22:58 2009 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 17 13:22:58 2009 -0700"
      },
      "message": "NFSv4: Move error handling out of the delegation generic code\n\nThe NFSv4 delegation recovery code is required by the protocol to handle\nmore errors. Rather than add NFSv4.0 specific errors into \u0027generic\u0027\ndelegation code, we should move the error handling into the NFSv4 layer.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bd7bf9d540c001055fba796ebf146d90e4dd2eb2",
      "tree": "29f49d2244d390055126280903e9d647e10cdbd8",
      "parents": [
        "9082a5cc1e33d081f091f54e6ed69a0628a4bdcc"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:53 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:53 2008 -0500"
      },
      "message": "NFSv4: Convert delegation-\u003etype field to fmode_t\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b7391f44f26b17ad25c7183a3d6ad50f0a9305ff",
      "tree": "8e09a5714587a8bde2a805819501d10bae4787b7",
      "parents": [
        "6411bd4a471893ab2af103d96253ba97c92d4777"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:52 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:52 2008 -0500"
      },
      "message": "NFSv4: Return unreferenced delegations more promptly\n\nIf the client is not using a delegation, the right thing to do is to return\nit as soon as possible. This helps reduce the amount of state the server\nhas to track, as well as reducing the potential for conflicts with other\nclients.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6411bd4a471893ab2af103d96253ba97c92d4777",
      "tree": "573c6a571d1dd500a98f51f3341d031354a17013",
      "parents": [
        "b0d3ded1a21dc3057daff5a488469d9e6aa1b567"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:51 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:51 2008 -0500"
      },
      "message": "NFSv4: Clean up the asynchronous delegation return\n\nReuse the state management thread in order to return delegations when we\nget a callback.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b0d3ded1a21dc3057daff5a488469d9e6aa1b567",
      "tree": "1e30c75402d091e19219d73850879317bb345b87",
      "parents": [
        "0d62f85a81216f30a0ba1479b93e84103a5d535b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:50 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:50 2008 -0500"
      },
      "message": "NFSv4: Clean up nfs_expire_all_delegations()\n\nLet the actual delegreturn stuff be run in the state manager thread rather\nthan allocating a separate kthread.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e005e8041c132af9f70862e1387a222198f95e7f",
      "tree": "2e151e4d7e4e76dd889a0212aaa07460aec6e0a6",
      "parents": [
        "707fb4b324371f1b4bea5eb29e39d265c66086ae"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:48 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:48 2008 -0500"
      },
      "message": "NFSv4: Rename the state reclaimer thread\n\nIt is really a more general purpose state management thread at this point.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "707fb4b324371f1b4bea5eb29e39d265c66086ae",
      "tree": "fdd11b731073e0eda3966390c263e31af9ef5a5d",
      "parents": [
        "515d86117724abe39d7d57d7ccc7cc5c44480529"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:47 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:47 2008 -0500"
      },
      "message": "NFSv4: Clean up NFS4ERR_CB_PATH_DOWN error management...\n\nAdd a delegation cleanup phase to the state management loop, and do the\nNFS4ERR_CB_PATH_DOWN recovery there.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "515d86117724abe39d7d57d7ccc7cc5c44480529",
      "tree": "dce297acebc94355217219893a5c6a81ca281ff7",
      "parents": [
        "9e33bed55239bdcee1746c31a11177d239bac1b5"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:46 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:46 2008 -0500"
      },
      "message": "NFSv4: Clean up the support for returning multiple delegations\n\nAdd a flag to mark delegations as requiring return, then run a garbage\ncollector. In the future, this will allow for more flexible delegation\nmanagement, where delegations may be marked for return if it turns out\nthat they are not being referenced.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "95d35cb4c473c754824967c0b069bbeb7efa4847",
      "tree": "bd46a5b0e4d35f9256cf44ca2706493fc3dd2819",
      "parents": [
        "19e03c570e6099ffaf24e5628d4fe1a8acbe820d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:45 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:45 2008 -0500"
      },
      "message": "NFSv4: Remove nfs_client-\u003ecl_sem\n\nNow that we\u0027re using the flags to indicate state that needs to be\nrecovered, as well as having implemented proper refcounting and spinlocking\non the state and open_owners, we can get rid of nfs_client-\u003ecl_sem. The\nonly remaining case that was dubious was the file locking, and that case is\nnow covered by the nfsi-\u003erwsem.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "15c831bf1a3f8cab9812a96228145200726fea33",
      "tree": "6133811e099f223d17aaa46c9672bfb367435b26",
      "parents": [
        "86e894899820f2b3094d5557124fc22743ae0fc7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:39 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:39 2008 -0500"
      },
      "message": "NFS: Use atomic bitops when changing struct nfs_delegation-\u003eflags\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "86e894899820f2b3094d5557124fc22743ae0fc7",
      "tree": "7cca2c88701f8e5480a364e838fa3c66dcc6a707",
      "parents": [
        "343104308a33c4f1e23c8e841ede95e97b870842"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:39 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:39 2008 -0500"
      },
      "message": "NFSv4: Fix up the dereferencing of delegation-\u003einode\n\nWithout an extra lock, we cannot just assume that the delegation-\u003einode is\nvalid when we\u0027re traversing the rcu-protected nfs_client lists. Use the\ndelegation-\u003elock to ensure that it is truly valid.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "343104308a33c4f1e23c8e841ede95e97b870842",
      "tree": "e7772538627a0a2176bd23cd3b2f1acbacd24592",
      "parents": [
        "0cb2659b818eca99235e17c04291cfa9985c14f7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:38 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:38 2008 -0500"
      },
      "message": "NFSv4: Fix up another delegation related race\n\nWhen we can update_open_stateid(), we need to be certain that we don\u0027t\nrace with a delegation return. While we could do this by grabbing the\nnfs_client-\u003ecl_lock, a dedicated spin lock in the delegation structure\nwill scale better.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3110ff8048fb757b36112b044b384aea9c44d6e4",
      "tree": "5260f4973bd0848ddef3fb3c111386e59616abbc",
      "parents": [
        "46c8ac74250a396aca855e494f49a960797a6b5e"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Fri May 02 13:42:44 2008 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 16 09:43:29 2008 -0700"
      },
      "message": "nfs: replace remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc-specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "90dc7d2796edf94a9eaa838321a9734c8513e717",
      "tree": "818c8899555efa3f5598f1ee9aa1fd5a5264c6c4",
      "parents": [
        "1227a74e2e0217a4ca155d1677bdbf5f69e32bed"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Wed Feb 20 13:03:05 2008 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Feb 20 16:15:44 2008 -0500"
      },
      "message": "nfs: fix sparse warnings\n\nfs/nfs/nfs4state.c:788:34: warning: Using plain integer as NULL pointer\nfs/nfs/delegation.c:52:34: warning: Using plain integer as NULL pointer\nfs/nfs/idmap.c:312:12: warning: Using plain integer as NULL pointer\nfs/nfs/callback_xdr.c:257:6: warning: Using plain integer as NULL pointer\nfs/nfs/callback_xdr.c:270:6: warning: Using plain integer as NULL pointer\nfs/nfs/callback_xdr.c:281:6: warning: Using plain integer as NULL pointer\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "57bfa89171e50cddf51a4f62c90e47c6259857b4",
      "tree": "2c3f6d45a61b4f888544d492d78fedd797001bc8",
      "parents": [
        "6f23e3872cff238589f9bf39c71db2ea880c9a26"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 25 16:38:18 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:06:12 2008 -0500"
      },
      "message": "NFSv4: Deal more correctly with duplicate delegations\n\nIf a (broken?) server hands out two different delegations for the same\nfile, then we should return one of them.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e6f810759505bc86c009854b82cc495ffd8eb020",
      "tree": "1590631fe3b222d49015dd53b421a5547e13e4dc",
      "parents": [
        "99fadcd76465842c014c88b8c9c19b457e9debc0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 24 18:14:34 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:06:12 2008 -0500"
      },
      "message": "NFS: Add an asynchronous delegreturn operation for use in nfs_clear_inode\n\nOtherwise, there is a potential deadlock if the last dput() from an NFSv4\nclose() or other asynchronous operation leads to nfs_clear_inode calling\nthe synchronous delegreturn.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5d8515caeb99940f5ed56d22a03aba20bbe7fdcb",
      "tree": "b17ec1fc7bf34a73f65bf8c4b9f837beb54a64f9",
      "parents": [
        "d4d3c507493afd3c9d19fbe9762f44e790909dbe"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Dec 10 14:57:16 2007 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:52 2008 -0500"
      },
      "message": "NFS: eliminate NIPQUAD(clp-\u003ecl_addr.sin_addr)\n\nTo ensure the NFS client displays IPv6 addresses properly, replace\naddress family-specific NIPQUAD() invocations with a call to the RPC\nclient to get a formatted string representing the remote peer\u0027s\naddress.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nCc: Aurelien Charbon \u003caurelien.charbon@ext.bull.net\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "603c83da19cf42d0f94022ac2fa389a431e32b84",
      "tree": "7d1d62169ecdde00b7a83e9fab6480b29099b840",
      "parents": [
        "a49c3c7736a2e77931dabc5bc4a83fb4b2da013e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 18 19:59:20 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Oct 19 17:19:30 2007 -0400"
      },
      "message": "NFSv4: Fix an rpc_cred reference leakage in fs/nfs/delegation.c\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "05c88babab957dfd63bd351b25042d80bd854dd0",
      "tree": "2d491ca1e3a9ce141fd367750726049eca3f01f1",
      "parents": [
        "f43bf0bebed7c33b698a8a25f95812f9e87c3843"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 11 15:11:51 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 11 15:11:51 2007 -0400"
      },
      "message": "NFSv4: Fix a typo in nfs_inode_reclaim_delegation\n\nWe were intending to put the previous instance of delegation-\u003ecred\nbefore setting a new one.\n\nThanks to David Howells for spotting this.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cd3758e37ddea66fccca7d93c4b601e8a2e51926",
      "tree": "07566d3ee457524a97b534a4f214b9178b1278c8",
      "parents": [
        "c03025d55540bd648f2546659090140ecc835572"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Aug 10 17:44:32 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:31 2007 -0400"
      },
      "message": "NFS: Replace file-\u003eprivate_data with calls to nfs_file_open_context()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "905f8d16e32fd48499e3f8b9a2d9f746af3e0949",
      "tree": "425b4fa10b788fa7f4e820890c4fac1861408340",
      "parents": [
        "45328c354e8ae16b67cb3adb72ab57459f9e5fd6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Aug 06 12:18:34 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 07 15:15:57 2007 -0400"
      },
      "message": "NFSv4: Don\u0027t call put_rpccred() from an rcu callback\n\nDoing so would require us to introduce bh-safe locks into put_rpccred().\nThis patch fixes the lockdep complaint reported by Marc Dietrich:\n\ninconsistent {softirq-on-W} -\u003e {in-softirq-W} usage.\nswapper/0 [HC0[0]:SC1[1]:HE1:SE0] takes:\n (rpc_credcache_lock){-+..}, at: [\u003cc01dc487\u003e]\n_atomic_dec_and_lock+0x17/0x60\n{softirq-on-W} state was registered at:\n  [\u003cc013e870\u003e] __lock_acquire+0x650/0x1030\n  [\u003cc013f2b1\u003e] lock_acquire+0x61/0x80\n  [\u003cc02db9ac\u003e] _spin_lock+0x2c/0x40\n  [\u003cc01dc487\u003e] _atomic_dec_and_lock+0x17/0x60\n  [\u003cdced55fd\u003e] put_rpccred+0x5d/0x100 [sunrpc]\n  [\u003cdced56c1\u003e] rpcauth_unbindcred+0x21/0x60 [sunrpc]\n  [\u003cdced3fd4\u003e] a0 [sunrpc]\n  [\u003cdcecefe0\u003e] rpc_call_sync+0x30/0x40 [sunrpc]\n  [\u003cdcedc73b\u003e] rpcb_register+0xdb/0x180 [sunrpc]\n  [\u003cdced65b3\u003e] svc_register+0x93/0x160 [sunrpc]\n  [\u003cdced6ebe\u003e] __svc_create+0x1ee/0x220 [sunrpc]\n  [\u003cdced7053\u003e] svc_create+0x13/0x20 [sunrpc]\n  [\u003cdcf6d722\u003e] nfs_callback_up+0x82/0x120 [nfs]\n  [\u003cdcf48f36\u003e] nfs_get_client+0x176/0x390 [nfs]\n  [\u003cdcf49181\u003e] nfs4_set_client+0x31/0x190 [nfs]\n  [\u003cdcf49983\u003e] nfs4_create_server+0x63/0x3b0 [nfs]\n  [\u003cdcf52426\u003e] nfs4_get_sb+0x346/0x5b0 [nfs]\n  [\u003cc017b444\u003e] vfs_kern_mount+0x94/0x110\n  [\u003cc0190a62\u003e] do_mount+0x1f2/0x7d0\n  [\u003cc01910a6\u003e] sys_mount+0x66/0xa0\n  [\u003cc0104046\u003e] syscall_call+0x7/0xb\n  [\u003cffffffff\u003e] 0xffffffff\nirq event stamp: 5277830\nhardirqs last  enabled at (5277830): [\u003cc017530a\u003e] kmem_cache_free+0x8a/0xc0\nhardirqs last disabled at (5277829): [\u003cc01752d2\u003e] kmem_cache_free+0x52/0xc0\nsoftirqs last  enabled at (5277798): [\u003cc0124173\u003e] __do_softirq+0xa3/0xc0\nsoftirqs last disabled at (5277817): [\u003cc01241d7\u003e] do_softirq+0x47/0x50\n\nother info that might help us debug this:\nno locks held by swapper/0.\n\nstack backtrace:\n [\u003cc0104fda\u003e] show_trace_log_lvl+0x1a/0x30\n [\u003cc0105c02\u003e] show_trace+0x12/0x20\n [\u003cc0105d15\u003e] dump_stack+0x15/0x20\n [\u003cc013ccc3\u003e] print_usage_bug+0x153/0x160\n [\u003cc013d8b9\u003e] mark_lock+0x449/0x620\n [\u003cc013e824\u003e] __lock_acquire+0x604/0x1030\n [\u003cc013f2b1\u003e] lock_acquire+0x61/0x80\n [\u003cc02db9ac\u003e] _spin_lock+0x2c/0x40\n [\u003cc01dc487\u003e] _atomic_dec_and_lock+0x17/0x60\n [\u003cdced55fd\u003e] put_rpccred+0x5d/0x100 [sunrpc]\n [\u003cdcf6bf83\u003e] nfs_free_delegation_callback+0x13/0x20 [nfs]\n [\u003cc012f9ea\u003e] __rcu_process_callbacks+0x6a/0x1c0\n [\u003cc012fb52\u003e] rcu_process_callbacks+0x12/0x30\n [\u003cc0124218\u003e] tasklet_action+0x38/0x80\n [\u003cc0124125\u003e] __do_softirq+0x55/0xc0\n [\u003cc01241d7\u003e] do_softirq+0x47/0x50\n [\u003cc0124605\u003e] irq_exit+0x35/0x40\n [\u003cc0112463\u003e] smp_apic_timer_interrupt+0x43/0x80\n [\u003cc0104a77\u003e] apic_timer_interrupt+0x33/0x38\n [\u003cc02690df\u003e] cpuidle_idle_call+0x6f/0x90\n [\u003cc01023c3\u003e] cpu_idle+0x43/0x70\n [\u003cc02d8c27\u003e] rest_init+0x47/0x50\n [\u003cc03bcb6a\u003e] start_kernel+0x22a/0x2b0\n [\u003c00000000\u003e] 0x0\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "412c77cee6d6e73fbe1dc3d67f52163efed33fc4",
      "tree": "f7ea21158a76f8b3fd6450ee66dcc053f94b3fbd",
      "parents": [
        "8383e4602c89857ef926f29ca61ac0a83a614443"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 03 16:10:55 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:41 2007 -0400"
      },
      "message": "NFSv4: Defer inode revalidation when setting up a delegation\n\nCurrently we force a synchronous call to __nfs_revalidate_inode() in\nnfs_inode_set_delegation(). This not only ensures that we cannot call\nnfs_inode_set_delegation from an asynchronous context, but it also slows\ndown any call to open().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8383e4602c89857ef926f29ca61ac0a83a614443",
      "tree": "c60d44dbbfccfa6976d61fb7b10f9f97cc6cda06",
      "parents": [
        "13437e12fb43cb7e285ff59248f781c91578eafe"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jul 06 15:12:04 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:41 2007 -0400"
      },
      "message": "NFSv4: Use RCU to protect delegations\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "13437e12fb43cb7e285ff59248f781c91578eafe",
      "tree": "450c618a4655161b4c534d700b9111cf7c349e6f",
      "parents": [
        "901630278469c0d7610554227f39ed2d02d0d270"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jul 06 15:10:43 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:41 2007 -0400"
      },
      "message": "NFSv4: Support recalling delegations by stateid part 2\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "901630278469c0d7610554227f39ed2d02d0d270",
      "tree": "b530f50e5838943826a215d402b1de770d970bde",
      "parents": [
        "2ced46c27058710a6d731d6eca77f1dd14ccde75"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 05 14:55:18 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:40 2007 -0400"
      },
      "message": "NFSv4: Support recalling delegations by stateid\n\nThere appear to be some rogue servers out there that issue multiple\ndelegations with different stateids for the same file. Ensure that when we\nreturn delegations, we do so on a per-stateid basis rather than a per-file\nbasis.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "539cd03a5708c9861a3e738e6f363ad743c85ddf",
      "tree": "3d786675f645621b9a04c7b7aad2bbbca9cc5241",
      "parents": [
        "88be9f990fe70f0f177ef44a16a477599e91f825"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jun 05 11:46:42 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:24 2007 -0400"
      },
      "message": "NFSv4: Cleanup: pass the nfs_open_context to open recovery code\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "88be9f990fe70f0f177ef44a16a477599e91f825",
      "tree": "d48ed0c934fc20dc3f7cacfc3b1eca3058246b65",
      "parents": [
        "de05a0cc2a2ae16eb8d8dbf88fe728ace45beb9a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jun 05 10:42:27 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:23 2007 -0400"
      },
      "message": "NFS: Replace vfsmount and dentry in nfs_open_context with struct path\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "10afec9081fee7e48995fa396fba22c7de4b99d4",
      "tree": "edf1e3abf62d95eeef178dc8060cf033cc7940df",
      "parents": [
        "9c9cc93ad2a5d9972672e03685af20e8cea1e5a4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 17:16:04 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 19:33:46 2007 -0400"
      },
      "message": "NFS: Fix some \u0027sparse\u0027 warnings...\n\n - fs/nfs/dir.c:610:8: warning: symbol \u0027nfs_llseek_dir\u0027 was not declared.\n   Should it be static?\n - fs/nfs/dir.c:636:5: warning: symbol \u0027nfs_fsync_dir\u0027 was not declared.\n   Should it be static?\n - fs/nfs/write.c:925:19: warning: symbol \u0027req\u0027 shadows an earlier one\n - fs/nfs/write.c:61:6: warning: symbol \u0027nfs_commit_rcu_free\u0027 was not\n   declared. Should it be static?\n - fs/nfs/nfs4proc.c:793:5: warning: symbol \u0027nfs4_recover_expired_lease\u0027\n   was not declared. Should it be static?\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f52720ca5f48574e347dff35ffe6b389ace61537",
      "tree": "7efc8ec6bad32b98e406a5c553149d57e46bd07e",
      "parents": [
        "f8314dc60ccba7e41f425048c4160dc7f63377d5"
      ],
      "author": {
        "name": "Panagiotis Issaris",
        "email": "takis@issaris.org",
        "time": "Wed Sep 27 01:49:39 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:10 2006 -0700"
      },
      "message": "[PATCH] fs: Removing useless casts\n\n* Removing useless casts\n* Removing useless wrapper\n* Conversion from kmalloc+memset to kzalloc\n\nSigned-off-by: Panagiotis Issaris \u003ctakis@issaris.org\u003e\nAcked-by: Dave Kleikamp \u003cshaggy@austin.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "24c8dbbb5f777187d660393599641ab3307b4b97",
      "tree": "9d50fdd57c7593d925a21e4bb049095a4e4ead6f",
      "parents": [
        "e9326dcab413848e70ab746c7c5363da13e5f801"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:10 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:33 2006 -0400"
      },
      "message": "NFS: Generalise the nfs_client structure\n\nGeneralise the nfs_client structure by:\n\n (1) Moving nfs_client to a more general place (nfs_fs_sb.h).\n\n (2) Renaming its maintenance routines to be non-NFS4 specific.\n\n (3) Move those maintenance routines to a new non-NFS4 specific file (client.c)\n     and move the declarations to internal.h.\n\n (4) Make nfs_find/get_client() take a full sockaddr_in to include the port\n     number (will be required for NFS2/3).\n\n (5) Make nfs_find/get_client() take the NFS protocol version (again will be\n     required to differentiate NFS2, 3 \u0026 4 client records).\n\nAlso:\n\n (6) Make nfs_client construction proceed akin to inodes, marking them as under\n     construction and providing a function to indicate completion.\n\n (7) Make nfs_get_client() wait interruptibly if it finds a client that it can\n     share, but that client is currently being constructed.\n\n (8) Make nfs4_create_client() use (6) and (7) instead of locking cl_sem.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7539bbab8062aadc1db95a22b377146843cfa88f",
      "tree": "697983ea016cbe378e4f2128846edebd78e468b9",
      "parents": [
        "adfa6f980bd46974e6b32b22dd0c45e3f52063f4"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:09 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:32 2006 -0400"
      },
      "message": "NFS: Rename nfs_server::nfs4_state\n\nRename nfs_server::nfs4_state to nfs_client as it will be used to represent the\nclient state for NFS2 and NFS3 also.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "adfa6f980bd46974e6b32b22dd0c45e3f52063f4",
      "tree": "7dbc86985faa0fce0e73103979262c1593ea3a3b",
      "parents": [
        "5ae1fbce142b67bf59e15fb1af96e88a96abde7b"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:08 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:31 2006 -0400"
      },
      "message": "NFS: Rename struct nfs4_client to struct nfs_client\n\nRename struct nfs4_client to struct nfs_client so that it can become the basis\nfor a general client record for NFS2 and NFS3 in addition to NFS4.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6ab3d5624e172c553004ecc862bfeac16d9d68b7",
      "tree": "6d98881fe91fd9583c109208d5c27131b93fa248",
      "parents": [
        "e02169b682bc448ccdc819dc8639ed34a23cedd8"
      ],
      "author": {
        "name": "Jörn Engel",
        "email": "joern@wohnheim.fh-wedel.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "message": "Remove obsolete #include \u003clinux/config.h\u003e\n\nSigned-off-by: Jörn Engel \u003cjoern@wohnheim.fh-wedel.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "3e4f6290ca4df7464ee066123f2bca4298c2dab4",
      "tree": "a8a2b32348be0df1a886ca0960112d23e1458572",
      "parents": [
        "f25bc34967d76610d17bc70769d7c220976eeeb1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:46 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:46 2006 -0500"
      },
      "message": "NFSv4: Send the delegation stateid for SETATTR calls\n\nIn the case where we hold a delegation stateid, use that in for inside\nSETATTR calls.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "26c78e156b1d1b2387ec33b5f2fb62d6e0a186a3",
      "tree": "fdbcdc6baa25af41d6935eebd537997fa24bf495",
      "parents": [
        "58df095b732529ade8f4051b41d7c29731afecd6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:58 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:58 2006 -0500"
      },
      "message": "NFSv4: Fix an Oops in nfs_do_expire_all_delegations\n\n If the loop errors, we need to exit.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fa178f29c0f8a0dce748181a5351f4a92fd4f455",
      "tree": "07de5ced8d16d832ebed98c58a2c0498affa12db",
      "parents": [
        "beb2a5ec386e5ce6891ebd1c06b913da04354b40"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:38 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:51 2006 -0500"
      },
      "message": "NFSv4: Ensure DELEGRETURN returns attributes\n\n Upon return of a write delegation, the server will almost always bump the\n change attribute. Ensure that we pick up that change so that we don\u0027t\n invalidate our data cache unnecessarily.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "beb2a5ec386e5ce6891ebd1c06b913da04354b40",
      "tree": "370e0065936e5739de638389af6c85ee960a6b28",
      "parents": [
        "969b7f2522c90dfed5d0d2553a91522bda2c3bf3"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:37 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:51 2006 -0500"
      },
      "message": "NFSv4: Ensure change attribute returned by GETATTR callback conforms to spec\n\n According to RFC3530 we\u0027re supposed to cache the change attribute\n at the time the client receives a write delegation.\n If the inode is clean, a CB_GETATTR callback by the server to the\n client is supposed to return the cached change attribute.\n If, OTOH, the inode is dirty, the client should bump the cached\n change attribute by 1.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "58d9714a44a79bba9b414da3ffbf3c753dc5915f",
      "tree": "623141f0a40a470c0c81c2edcd8c45c6b0daf4f9",
      "parents": [
        "5043e900f5404c01864fbeb5826aa7de3981bbc1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:24 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:46 2006 -0500"
      },
      "message": "NFSv4: Send RENEW requests to the server only when we\u0027re holding state\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f99d49adf527fa6f7a9c42257fa76bca6b8df1e3",
      "tree": "41dddbc336016f9dc9557cdb15300de5e599dac1",
      "parents": [
        "6044ec8882c726e325017bd948aa0cd94ad33abc"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jesper.juhl@gmail.com",
        "time": "Mon Nov 07 01:01:34 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 07 07:54:06 2005 -0800"
      },
      "message": "[PATCH] kfree cleanup: fs\n\nThis is the fs/ part of the big kfree cleanup patch.\n\nRemove pointless checks for NULL prior to calling kfree() in fs/.\n\nSigned-off-by: Jesper Juhl \u003cjesper.juhl@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "888e694c167975709f17526dbbed2d98f84e8f85",
      "tree": "11dbbdf2591946f490d4cb28194a80fd3cec4094",
      "parents": [
        "43b2a33aa868054bd477ab2c1cd20f1ba1af2c3e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Nov 04 15:38:11 2005 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Nov 04 15:38:11 2005 -0500"
      },
      "message": "NFSv4: Recover locks too when returning a delegation\n\n Delegations allow us to cache posix and BSD locks, however when the\n delegation is recalled, we need to \"flush the cache\" and send\n the cached LOCK requests to the server.\n\n This patch sets up the mechanism for doing so.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cae7a073a4c5484cc5713eab606bf54b46724ab3",
      "tree": "e5cdcf0376da5b04bca9bbbf8f226abe13f33275",
      "parents": [
        "cdce5d6b94b6182f6d8a5b7b52923933e98cbc92"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 18 14:20:19 2005 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 18 14:20:19 2005 -0700"
      },
      "message": "NFSv4: Return delegation upon rename or removal of file.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b3c52da33ce95747b1bff86cce716d4f1397f14a",
      "tree": "7958a929e5b9486bf0b5358776078c1bc71faf88",
      "parents": [
        "13b58ee51802a45d2b8853ffe0003d9fa768195c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "trond.myklebust@fys.uio.no",
        "time": "Mon Oct 17 06:02:00 2005 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 17 14:47:16 2005 -0700"
      },
      "message": "[PATCH] NFS: Fix cache consistency races\n\nIf the data cache has been marked as potentially invalid by nfs_refresh_inode,\nwe should invalidate it rather than assume that changes are due to our own\nactivity.\n\nAlso ensure that we always start with a valid cache before declaring it\nto be protected by a delegation.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4ce79717ce32a9f88c1ddce4b9658556cb59d37a",
      "tree": "7f0c5e4bdbc2ee15b8e902b951d1be200b35411f",
      "parents": [
        "9085bbcb76421a90bea28f4d3d03fa9977319c49"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 17:16:21 2005 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 16:07:06 2005 -0400"
      },
      "message": "[PATCH] NFS: Header file cleanup...\n\n - Move NFSv4 state definitions into a private header file.\n - Clean up gunk in nfs_fs.h\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
