)]}'
{
  "log": [
    {
      "commit": "e4eff1a622edd6ab7b73acd5d8763aa2fa3fee49",
      "tree": "257d6675733d4af122a77054281e1d7d5062d904",
      "parents": [
        "4fdc17b2a7f4d9db5b08e0f963d0027f714e4104"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 14 15:39:58 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 19 15:21:39 2007 -0400"
      },
      "message": "SUNRPC: Clean up the sillyrename code\n\nFix a couple of bugs:\n - Don\u0027t rely on the parent dentry still being valid when the call completes.\n   Fixes a race with shrink_dcache_for_umount_subtree()\n\n - Don\u0027t remove the file if the filehandle has been labelled as stale.\n\nFix a couple of inefficiencies\n - Remove the global list of sillyrenamed files. Instead we can cache the\n   sillyrename information in the dentry-\u003ed_fsdata\n - Move common code from unlink_setup/unlink_done into fs/nfs/unlink.c\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4fdc17b2a7f4d9db5b08e0f963d0027f714e4104",
      "tree": "502aacc94e06962c2f3352b6ced1146245158be1",
      "parents": [
        "3062c532ad410fe0e8320566fe2879a396be6701"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 14 15:39:57 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 19 15:21:39 2007 -0400"
      },
      "message": "NFS: Introduce struct nfs_removeargs+nfs_removeres\n\nWe need a common structure for setting up an unlink() rpc call in order to\nfix the asynchronous unlink code.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9936781d0147e13cbc6df02f5265e0b9999ce3cf",
      "tree": "a24b01b576cd04f5eb6b9f61da5cfed650d50603",
      "parents": [
        "56659e9926ef5996398924c799ecac39ca8b6223"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 17 21:52:41 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 19 15:09:03 2007 -0400"
      },
      "message": "NFSv4: Try to recover from getfh failures in nfs4_xdr_dec_open\n\nTry harder to recover the open state if the server failed to return a\nfilehandle.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "56659e9926ef5996398924c799ecac39ca8b6223",
      "tree": "747690cbe44d8859090dedc6ba26d326d4ecac8d",
      "parents": [
        "365c8f589afbc27d8cf42d396475017bc1c462fd"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 17 21:52:39 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 19 15:09:03 2007 -0400"
      },
      "message": "NFSv4: \u0027constify\u0027 lookup arguments.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6f220ed5a84d87645a84ae22105dc565f3f248b5",
      "tree": "f7a9cc2a178da84c656f794248e1a55c6f5e09d3",
      "parents": [
        "8cd69e1bc7970bfb032b425043cc0d4e4345c74c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 17 21:50:45 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 19 15:09:03 2007 -0400"
      },
      "message": "NFSv4: Fix open state recovery\n\nEnsure that opendata-\u003estate is always initialised when we do state\nrecovery.\n\nEnsure that we set the filehandle in the case where we\u0027re doing an\n\"OPEN_CLAIM_PREVIOUS\" call due to a server reboot.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "137d6acaa64afa4cf3d977417424e731ea04705a",
      "tree": "ffafcc606d8b76c07873abd87ec176b75d79b870",
      "parents": [
        "c98451bdb2f3e6d6cc1e03adad641e9497512b49"
      ],
      "author": {
        "name": "Frank Filz",
        "email": "ffilzlnx@us.ibm.com",
        "time": "Mon Jul 09 15:32:29 2007 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:49 2007 -0400"
      },
      "message": "NFSv4: Make sure unlock is really an unlock when cancelling a lock\n\nI ran into a curious issue when a lock is being canceled. The\ncancellation results in a lock request to the vfs layer instead of an\nunlock request. This is particularly insidious when the process that\nowns the lock is exiting. In that case, sometimes the erroneous lock is\napplied AFTER the process has entered zombie state, preventing the lock\nfrom ever being released. Eventually other processes block on the lock\ncausing a slow degredation of the system. In the 2.6.16 kernel this was\ninvestigated on, the problem is compounded by the fact that the cl_sem\nis held while blocking on the vfs lock, which results in most processes\naccessing the nfs file system in question hanging.\n\nIn more detail, here is how the situation occurs:\n\nfirst _nfs4_do_setlk():\n\nstatic int _nfs4_do_setlk(struct nfs4_state *state, int cmd, struct file_lock *fl, int reclaim)\n...\n        ret \u003d nfs4_wait_for_completion_rpc_task(task);\n        if (ret \u003d\u003d 0) {\n...\n        } else\n                data-\u003ecancelled \u003d 1;\n\nthen nfs4_lock_release():\n\nstatic void nfs4_lock_release(void *calldata)\n...\n        if (data-\u003ecancelled !\u003d 0) {\n                struct rpc_task *task;\n                task \u003d nfs4_do_unlck(\u0026data-\u003efl, data-\u003ectx, data-\u003elsp,\n                                data-\u003earg.lock_seqid);\n\nThe problem is the same file_lock that was passed in to _nfs4_do_setlk()\ngets passed to nfs4_do_unlck() from nfs4_lock_release(). So the type is\nstill F_RDLCK or FWRLCK, not F_UNLCK. At some point, when cancelling the\nlock, the type needs to be changed to F_UNLCK. It seemed easiest to do\nthat in nfs4_do_unlck(), but it could be done in nfs4_lock_release().\nThe concern I had with doing it there was if something still needed the\noriginal file_lock, though it turns out the original file_lock still\nneeds to be modified by nfs4_do_unlck() because nfs4_do_unlck() uses the\noriginal file_lock to pass to the vfs layer, and a copy of the original\nfile_lock for the RPC request.\n\nIt seems like the simplest solution is to force all situations where\nnfs4_do_unlck() is being used to result in an unlock, so with that in\nmind, I made the following change:\n\nSigned-off-by: Frank Filz \u003cffilzlnx@us.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8bda4e4c98d14566fc1a354c62fb59d70cc49b97",
      "tree": "d137e784db33d1347a6b03d22044e9a41e10967f",
      "parents": [
        "1ac7e2fd35905f3d44df06568bca5f9d140369b3"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 09 10:45:42 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:43 2007 -0400"
      },
      "message": "NFSv4: Fix up stateid locking...\n\nWe really don\u0027t need to grab both the state-\u003eso_owner and the\ninode-\u003ei_lock.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1ac7e2fd35905f3d44df06568bca5f9d140369b3",
      "tree": "86b80e5d17169f801f19427563d68728b8e3385e",
      "parents": [
        "6ee412689027dc7954453aed392ab5c7599c0f73"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jul 08 21:04:15 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:43 2007 -0400"
      },
      "message": "NFSv4: Clean up the callers of nfs4_open_recover_helper()\n\nRely on nfs4_try_open_cached() when appropriate.\n\nAlso fix an RCU violation in _nfs4_do_open_reclaim()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6ee412689027dc7954453aed392ab5c7599c0f73",
      "tree": "71f09219acaf905e779f9cecf2d0256ba34d6526",
      "parents": [
        "aac00a8d0a53097063da532cbdf0b8775a4dcd53"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jul 08 14:11:36 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:43 2007 -0400"
      },
      "message": "NFSv4: Don\u0027t call OPEN if we already have an open stateid for a file\n\nIf we already have a stateid with the correct open mode for a given file,\nthen we can reuse that stateid instead of re-issuing an OPEN call without\nviolating the close-to-open caching semantics.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "aac00a8d0a53097063da532cbdf0b8775a4dcd53",
      "tree": "4a83d1a25dd23d63cbcb0fe5c40b2f857ebcc19e",
      "parents": [
        "3e309914a15333a5493058e4927e979c7434ae44"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 05 19:02:21 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:43 2007 -0400"
      },
      "message": "NFSv4: Check for the existence of a delegation in nfs4_open_prepare()\n\nWe should not be calling open() on an inode that has a delegation unless\nwe\u0027re doing a reclaim.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3e309914a15333a5493058e4927e979c7434ae44",
      "tree": "c9f5a86c7088313cf2c0648e313e4e918b4189d1",
      "parents": [
        "1b370bc28f90955bccda8be5e7d7047ad1381da7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 07 13:19:59 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:42 2007 -0400"
      },
      "message": "NFSv4: Clean up _nfs4_proc_open()\n\nUse a flag instead of the \u0027data-\u003erpc_status \u003d -ENOMEM hack.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1b370bc28f90955bccda8be5e7d7047ad1381da7",
      "tree": "a63507ba14abd869a6645fc604e62f854a39af54",
      "parents": [
        "6f43ddccb31b5bd2297878f6f3735d45fd4dfce3"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 07 08:04:47 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:42 2007 -0400"
      },
      "message": "NFSv4: Allow nfs4_opendata_to_nfs4_state to return errors.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6f43ddccb31b5bd2297878f6f3735d45fd4dfce3",
      "tree": "2b21ec002ca6868df0d7d39a1044fff5ff97df87",
      "parents": [
        "003707c7225dbd4bf879b6c204743554de0a08d6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jul 08 16:49:11 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:42 2007 -0400"
      },
      "message": "NFSv4: Improve the debugging of bad sequence id errors...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "003707c7225dbd4bf879b6c204743554de0a08d6",
      "tree": "b5ca79744badf011d15111d819f629cfc69452ba",
      "parents": [
        "0f9f95e0ad1f9d07d77832c5b60f7d30440602ee"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 05 18:07:55 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:41 2007 -0400"
      },
      "message": "NFSv4: Always use the delegation if we have one\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0f9f95e0ad1f9d07d77832c5b60f7d30440602ee",
      "tree": "7d46ab8497ccd0dbeb151a6e45113379da8f22f3",
      "parents": [
        "412c77cee6d6e73fbe1dc3d67f52163efed33fc4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jul 08 16:19:56 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:41 2007 -0400"
      },
      "message": "NFSv4: Clean up confirmation of sequence ids...\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": "2ced46c27058710a6d731d6eca77f1dd14ccde75",
      "tree": "d505d922873c7b3ade6426d0e9924b1c0c380614",
      "parents": [
        "549d6ed5e85003370fe858e70864a71882491d28"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 03 23:48:13 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:40 2007 -0400"
      },
      "message": "NFSv4: Fix up a bug in nfs4_open_recover()\n\nDon\u0027t clobber the delegation info...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "549d6ed5e85003370fe858e70864a71882491d28",
      "tree": "a5094cbce64f07560f0e3511279260e40c0ae669",
      "parents": [
        "1c816efa245111c52858fbe55d99474f3c149dd3"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 03 16:42:45 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:40 2007 -0400"
      },
      "message": "NFSv4: set the delegation in nfs4_opendata_to_nfs4_state\n\nThis ensures that nfs4_open_release() and nfs4_open_confirm_release()\ncan now handle an eventual delegation that was returned with out open.\nAs such, it fixes a delegation \"leak\" when the user breaks out of an open\ncall.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1b45c46cf75d9c48eb611d5cc41607ac1f046606",
      "tree": "866cbb5a15aec70a3da159da663f435475a2db4f",
      "parents": [
        "9f958ab8858c75df800e0121b1920182820cbc39"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 03 13:04:56 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:40 2007 -0400"
      },
      "message": "NFSv4: Fix atomic open for execute...\n\nCurrently we do not check for the FMODE_EXEC flag as we should. For that\nparticular case, we need to perform an ACCESS call to the server in order\nto check that the file is executable.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9f958ab8858c75df800e0121b1920182820cbc39",
      "tree": "754bb9d68aac077825b40796e2acf716bce5df08",
      "parents": [
        "88d9093997e1c73ca98db41b5605dbde7783845f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 02 13:58:33 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:39 2007 -0400"
      },
      "message": "NFSv4: Reduce the chances of an open_owner identifier collision\n\nCurrently we just use a 32-bit counter.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4e56e082dd89266d320ccfbc7bd0102186a765ac",
      "tree": "634bd7183db3bf3c380f97cff886528bf15fbc8a",
      "parents": [
        "8a702bbb7ddaa2e78c17dbaaf48e3cd5943676f0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jul 01 18:13:52 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:38 2007 -0400"
      },
      "message": "NFSv4: Clean up _nfs4_proc_lookup() vs _nfs4_proc_lookupfh()\n\nThey differ only slightly in the arguments they take. Why have they not\nbeen merged?\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c6d00e639bdec5f33460bc95bae4efda7177a6ed",
      "tree": "86c00c756f3212ea54203dc62619f5cd6b4f153e",
      "parents": [
        "3bec63db55463365110d00721ed60a31e4614cb6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jun 17 16:02:44 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:28 2007 -0400"
      },
      "message": "NFSv4: Convert struct nfs4_opendata to use struct kref\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "aa53ed541a1fec78a78d02afc8b042d040cc080d",
      "tree": "04d4c66b643e4ec9ec1277f3ad642b18f3f94990",
      "parents": [
        "fc6ae3cf482c385a6fe87ba119d399bb85aa670b"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Tue Jun 05 14:49:03 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:25 2007 -0400"
      },
      "message": "NFS4: on a O_EXCL OPEN make sure SETATTR sets the fields holding the verifier\n\nThe Linux NFS4 client simply skips over the bitmask in an O_EXCL open\ncall and so it doesn\u0027t bother to reset any fields that may be holding\nthe verifier. This patch has us save the first two words of the bitmask\n(which is all the current client has #defines for). The client then\nlater checks this bitmask and turns on the appropriate flags in the\nsattr-\u003eia_verify field for the following SETATTR call.\n\nThis patch only currently checks to see if the server used the atime\nand mtime slots for the verifier (which is what the Linux server uses\nfor this). I\u0027m not sure of what other fields the server could\nreasonably use, but adding checks for others should be trivial.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b39e625b6e75aa70e26c13f9378756bb5f2af032",
      "tree": "acf17b925b359b051f476c7e9500c4f4d60f5d0c",
      "parents": [
        "4a35bd41aff5714deb41c8f14766df3871e2e8f7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jun 11 23:05:07 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:24 2007 -0400"
      },
      "message": "NFSv4: Clean up nfs4_call_async()\n\nUse rpc_run_task() instead of doing it ourselves.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4a35bd41aff5714deb41c8f14766df3871e2e8f7",
      "tree": "3542c76b1e0aabcd0ee6bb76fdd8228e6f3b5479",
      "parents": [
        "ad389da79f7bf9dc12dbc79c9c2740f9ed2f13d1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jun 05 10:31:33 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:24 2007 -0400"
      },
      "message": "NFSv4: Ensure that nfs4_do_close() doesn\u0027t race with umount\n\nnfs4_do_close() does not currently have any way to ensure that the user\nwon\u0027t attempt to unmount the partition while the asynchronous RPC call\nis completing. This again may cause Oopses in nfs_update_inode().\n\nAdd a vfsmount argument to nfs4_close_state to ensure that the partition\nremains mounted while we\u0027re closing the file.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ad389da79f7bf9dc12dbc79c9c2740f9ed2f13d1",
      "tree": "9fd51d8a43aaba790a87f721d2796e36ab9f66e7",
      "parents": [
        "539cd03a5708c9861a3e738e6f363ad743c85ddf"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jun 05 12:30:00 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:24 2007 -0400"
      },
      "message": "NFSv4: Ensure asynchronous open() calls always pin the mountpoint\n\nA number of race conditions may currently ensue if the user presses ^C\nand then unmounts the partition while an asynchronous open() is in\nprogress.\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": "2d56d3c43cc97ae48586745556f5a5b564d61582",
      "tree": "28f2edc1e69b79e94d99023041dd0358861b6956",
      "parents": [
        "0f9008ef38d5a6305d94bbdd8f20d68fc75c63b6",
        "586759f03e2e9031ac5589912a51a909ed53c30a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:34:24 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:34:24 2007 -0700"
      },
      "message": "Merge branch \u0027server-cluster-locking-api\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027server-cluster-locking-api\u0027 of git://linux-nfs.org/~bfields/linux:\n  gfs2: nfs lock support for gfs2\n  lockd: add code to handle deferred lock requests\n  lockd: always preallocate block in nlmsvc_lock()\n  lockd: handle test_lock deferrals\n  lockd: pass cookie in nlmsvc_testlock\n  lockd: handle fl_grant callbacks\n  lockd: save lock state on deferral\n  locks: add fl_grant callback for asynchronous lock return\n  nfsd4: Convert NFSv4 to new lock interface\n  locks: add lock cancel command\n  locks: allow {vfs,posix}_lock_file to return conflicting lock\n  locks: factor out generic/filesystem switch from setlock code\n  locks: factor out generic/filesystem switch from test_lock\n  locks: give posix_test_lock same interface as -\u003elock\n  locks: make -\u003elock release private data before returning in GETLK case\n  locks: create posix-to-flock helper functions\n  locks: trivial removal of unnecessary parentheses\n"
    },
    {
      "commit": "70cc6487a4e08b8698c0e2ec935fb48d10490162",
      "tree": "3dbf00694a5fcbea48233b78697a50effdcc80c9",
      "parents": [
        "c2fa1b8a6c059dd08a802545fed3badc8df2adc1"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Thu Feb 22 18:48:53 2007 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sun May 06 17:38:19 2007 -0400"
      },
      "message": "locks: make -\u003elock release private data before returning in GETLK case\n\nThe file_lock argument to -\u003elock is used to return the conflicting lock\nwhen found.  There\u0027s no reason for the filesystem to return any private\ninformation with this conflicting lock, but nfsv4 is.\n\nFix nfsv4 client, and modify locks.c to stop calling fl_release_private\nfor it in this case.\n\nSigned-off-by: \"J. Bruce Fields\" \u003cbfields@citi.umich.edu\u003e\nCc: \"Trond Myklebust\" \u003cTrond.Myklebust@netapp.com\u003e\"\n"
    },
    {
      "commit": "08efa202eb398ce7939885a4a01df370fd392068",
      "tree": "e3de771d6a356b1539a31c1ae6c4e47350d37c74",
      "parents": [
        "83672d392f7bcf556f7920d6715e4174d9373ee0"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue May 01 10:56:25 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 02 07:36:09 2007 -0700"
      },
      "message": "NFS4: invalidate cached acl on setacl\n\nThe ACL that the server sets may not be exactly the one we set--for\nexample, it may silently turn off bits that it does not support.  So we\nshould remove any cached ACL so that any subsequent request for the ACL\nwill go to the server.\n\nSigned-off-by: \"J. Bruce Fields\" \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d9bc125caf592b7d081021f32ce5b717efdf70c8",
      "tree": "263b7066ba22ddce21db610c0300f6eaac6f2064",
      "parents": [
        "43d78ef2ba5bec26d0315859e8324bfc0be23766",
        "ec2f9d1331f658433411c58077871e1eef4ee1b4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 12 22:43:25 2007 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 12 22:43:25 2007 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of /home/trondmy/kernel/linux-2.6/\n\nConflicts:\n\n\tnet/sunrpc/auth_gss/gss_krb5_crypto.c\n\tnet/sunrpc/auth_gss/gss_spkm3_token.c\n\tnet/sunrpc/clnt.c\n\nMerge with mainline and fix conflicts.\n"
    },
    {
      "commit": "92e1d5be91a0e3ffa5c4697eeb09b2aa22792122",
      "tree": "4eb22a9f6c38e9f4cc2a5100cd6659b0af08b7ae",
      "parents": [
        "754661f143e70d66eae6c48532ca245aa05dec0e"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Mon Feb 12 00:55:39 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 12 09:48:46 2007 -0800"
      },
      "message": "[PATCH] mark struct inode_operations const 2\n\nMany struct inode_operations in the kernel can be \"const\".  Marking them const\nmoves these to the .rodata section, which avoids false sharing with potential\ndirty data.  In addition it\u0027ll catch accidental writes at compile time to\nthese shared resources.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e148582e10a2c1a23dfc09210df4a18bc6cca4e9",
      "tree": "a6a1aac3b2dda50dc34e41a3e78afee4e4bae58e",
      "parents": [
        "a6a352e93dfa78db8903f0e3610abb76efbf7fc9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 13 16:43:13 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Feb 03 15:35:08 2007 -0800"
      },
      "message": "NFSv4: Add lockdep checks to nfs4_wait_clnt_recover()\n\nAttempt to detect deadlocks due to caller holding locks on clp-\u003ecl_sem\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a6a352e93dfa78db8903f0e3610abb76efbf7fc9",
      "tree": "841b538d544444ab6f65102d5c444f72b4ecd869",
      "parents": [
        "7c85d9007d05436e71d2b805b96c1e36a8193bd4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 13 16:43:06 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Feb 03 15:35:08 2007 -0800"
      },
      "message": "NFSv4: Don\u0027t start state recovery in nfs4_close_done()\n\nWe might not even have any open files at this point...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8e0969f0451eaf7cf32f2ec3946196d8d0b1cb2c",
      "tree": "66f3e1ca0761d77e21ac3d24bacc1574189cfc64",
      "parents": [
        "c228fd3aeef55637354167faead74c579d5da28b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 13 15:23:44 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Feb 03 15:35:06 2007 -0800"
      },
      "message": "NFS: Remove nfs_readpage_sync()\n\nIt makes no sense to maintain 2 parallel systems for reading in pages.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c228fd3aeef55637354167faead74c579d5da28b",
      "tree": "44abf437f19a3f182e00a42de6cf853fef8cc0f6",
      "parents": [
        "faebf4e2bb0efad9dda396ea13d5c6ad15d7d7fb"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jan 13 02:28:11 2007 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Feb 03 15:35:06 2007 -0800"
      },
      "message": "NFSv4: Cleanups for fs_locations code.\n\nStart long arduous project...  What the hell is\n\n\tstruct dentry \u003d {};\n\nall about?\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5cbded585d129d0226cb48ac4202b253c781be26",
      "tree": "fb24edc194a57ee81a3bf8a4dd8a95030dd0ad22",
      "parents": [
        "0743b86800cf1dfbf96df4a438938127bbe4476c"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@mindspring.com",
        "time": "Wed Dec 13 00:35:56 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:58 2006 -0800"
      },
      "message": "[PATCH] getting rid of all casts of k[cmz]alloc() calls\n\nRun this:\n\n\t#!/bin/sh\n\tfor f in $(grep -Erl \"\\([^\\)]*\\) *k[cmz]alloc\" *) ; do\n\t  echo \"De-casting $f...\"\n\t  perl -pi -e \"s/ ?\u003d ?\\([^\\)]*\\) *(k[cmz]alloc) *\\(/ \u003d \\1\\(/\" $f\n\tdone\n\nAnd then go through and reinstate those cases where code is casting pointers\nto non-pointers.\n\nAnd then drop a few hunks which conflicted with outstanding work.\n\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e, Ian Molton \u003cspyro@f2s.com\u003e\nCc: Mikael Starvik \u003cstarvik@axis.com\u003e\nCc: Yoshinori Sato \u003cysato@users.sourceforge.jp\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Paul Fulghum \u003cpaulkf@microgate.com\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: Karsten Keil \u003ckkeil@suse.de\u003e\nCc: Mauro Carvalho Chehab \u003cmchehab@infradead.org\u003e\nCc: Jeff Garzik \u003cjeff@garzik.org\u003e\nCc: James Bottomley \u003cJames.Bottomley@steeleye.com\u003e\nCc: Ian Kent \u003craven@themaw.net\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nCc: Jaroslav Kysela \u003cperex@suse.cz\u003e\nCc: Takashi Iwai \u003ctiwai@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "200baa2112012dd8a13db9da3ee6885403f9c013",
      "tree": "261f9c2b85927c2dfaaecfb7ab808d353bd84da4",
      "parents": [
        "e21195a740533348e77efa8a2e2cf03bb4092b2b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 05 00:35:40 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:38 2006 -0500"
      },
      "message": "NFS: Remove nfs_writepage_sync()\n\nMaintaining two parallel ways of doing synchronous writes is rather\npointless. This patch gets rid of the legacy nfs_writepage_sync(), and\nreplaces it with the faster asynchronous writes.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cae823c4c089d2c7c2a90f39f20376ccd85f9893",
      "tree": "9bf9f70d3ddefe049818fd4cc1a604c749bb85b2",
      "parents": [
        "a99b71c9c43499bf2312c64f5c1d367aaf559dc4"
      ],
      "author": {
        "name": "Frank Filz",
        "email": "ffilzlnx@us.ibm.com",
        "time": "Tue Oct 17 10:24:38 2006 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:31 2006 -0500"
      },
      "message": "NFS: Remove use of the Big Kernel Lock around calls to rpc_call_sync\n\nRemove use of the Big Kernel Lock around calls to rpc_call_sync.\n\nSigned-off-by: Frank Filz \u003cffilz@us.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e6b3c4db6fbcd0d33720696f37790d6b8be12313",
      "tree": "24ad4a93b00ba7236b9a2d896fd6cb59a1dc2334",
      "parents": [
        "cc4dc59e5580d6c0de1685a25b74d32175f43434"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Nov 11 22:18:03 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:25 2006 -0500"
      },
      "message": "Fix a second potential rpc_wakeup race...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bc4785cd475a11ba125df7af674e16c6ea1cfc30",
      "tree": "4f552e0736d1e81460768f689fb6c4b500684066",
      "parents": [
        "5704fdeb41c9fb282ae576516f221ea0b8f64b2b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Thu Oct 19 23:28:51 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 20 10:26:40 2006 -0700"
      },
      "message": "[PATCH] nfs: verifier is network-endian\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nAcked-by: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0dbb4c6799cf8fa8c5ba1926153a30960117477d",
      "tree": "9d8f75f2f407a5758fa4ef3d8c03694f138c3304",
      "parents": [
        "8687b63afbe42103730bff4d3f7bfff3463c303e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Thu Oct 19 23:28:49 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 20 10:26:40 2006 -0700"
      },
      "message": "[PATCH] xdr annotations: NFS readdir entries\n\non-the-wire data is big-endian\n\n[in large part pulled from Alexey\u0027s patch]\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nAcked-by: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b87c0adfeaaf8d8310c4f790d76072a5961b3518",
      "tree": "1c3f2395436f6ec3c8abc94af8266709860b0839",
      "parents": [
        "85233a7a436a48a0b98e7976a66797e5da79c9d6"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Oct 19 23:28:42 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 20 10:26:39 2006 -0700"
      },
      "message": "[PATCH] NFS: remove unused check in nfs4_open_revalidate\n\nCoverity spotted a superfluous error check in nfs4_open_revalidate().  Remove\nit.\n\nCoverity: #cid 847\n\nTest plan:\nCode inspection; another pass through Coverity.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2066fe89b459c3c787c811b3369df191cddd93d8",
      "tree": "0eca930bb5dd17671b49d09e2aad13c6bdee801b",
      "parents": [
        "c514983d8d2260020543a81589a2b8c7d4bdab4e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 15 08:30:46 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:25:04 2006 -0400"
      },
      "message": "NFSv4: Poll more aggressively when handling NFS4ERR_DELAY\n\nChange the initial retry delay from 1s to 0.1s (and then back off\nexponentially).\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c514983d8d2260020543a81589a2b8c7d4bdab4e",
      "tree": "6151b2a7bb74c6209f7861d0748b35261e53c15e",
      "parents": [
        "6b30954ebb569fa1b2abdb21f2f4290eec76bf80"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 15 08:25:04 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:25:03 2006 -0400"
      },
      "message": "NFSv4: Handle the condition NFS4ERR_FILE_OPEN\n\nRetry a few times before we give up: the error is usually due to ordering\nissues with asynchronous RPC calls.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6b30954ebb569fa1b2abdb21f2f4290eec76bf80",
      "tree": "8d342c0709eeb7c0b442db29b6b3754572e75689",
      "parents": [
        "97db8f41792839a6912fd21be8b61dd6c50db58f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 14 14:03:14 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:25:03 2006 -0400"
      },
      "message": "NFSv4: Retry lease recovery if it failed during a synchronous operation.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "94a6d75320b3681e6e728b70e18bd186cb55e682",
      "tree": "0957071549d76ceb3857e419998818b11bce7269",
      "parents": [
        "873101b33776780d32610fc4c90c7358a5e98f51"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Aug 22 20:06:23 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:53 2006 -0400"
      },
      "message": "NFS: Use cached page as buffer for NFS symlink requests\n\nNow that we have a copy of the symlink path in the page cache, we can pass\na struct page down to the XDR routines instead of a string buffer.\n\nTest plan:\nConnectathon, all NFS versions.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4f390c152bc87165da4b1f5b7d870b46fb106d4e",
      "tree": "643b5d12f76bd7d3688380fbaf69f607a34a06bf",
      "parents": [
        "d3db90e270791b21cd00d3c094884bffa907cc9e"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Aug 22 20:06:22 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:52 2006 -0400"
      },
      "message": "NFS: Fix double d_drop in nfs_instantiate() error path\n\nIf the LOOKUP or GETATTR in nfs_instantiate fail, nfs_instantiate will do a\nd_drop before returning.  But some callers already do a d_drop in the case\nof an error return.  Make certain we do only one d_drop in all error paths.\n\nThis issue was introduced because over time, the symlink proc API diverged\nslightly from the create/mkdir/mknod proc API.  To prevent other coding\nmistakes of this type, change the symlink proc API to be more like\ncreate/mkdir/mknod and move the nfs_instantiate call into the symlink proc\nroutines so it is used in exactly the same way for create, mkdir, mknod,\nand symlink.\n\nTest plan:\nConnectathon, all versions of NFS.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "54ceac4515986030c2502960be620198dd8fe25b",
      "tree": "b4ae4305c5652c0fe883ef5ea3243da91dbd2b34",
      "parents": [
        "cf6d7b5de8535a9f0088c5cc28ee2dae87371b4a"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:13 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:37 2006 -0400"
      },
      "message": "NFS: Share NFS superblocks per-protocol per-server per-FSID\n\nThe attached patch makes NFS share superblocks between mounts from the same\nserver and FSID over the same protocol.\n\nIt does this by creating each superblock with a false root and returning the\nreal root dentry in the vfsmount presented by get_sb(). The root dentry set\nstarts off as an anonymous dentry if we don\u0027t already have the dentry for its\ninode, otherwise it simply returns the dentry we already have.\n\nWe may thus end up with several trees of dentries in the superblock, and if at\nsome later point one of anonymous tree roots is discovered by normal filesystem\nactivity to be located in another tree within the superblock, the anonymous\nroot is named and materialises attached to the second tree at the appropriate\npoint.\n\nWhy do it this way? Why not pass an extra argument to the mount() syscall to\nindicate the subpath and then pathwalk from the server root to the desired\ndirectory? You can\u0027t guarantee this will work for two reasons:\n\n (1) The root and intervening nodes may not be accessible to the client.\n\n     With NFS2 and NFS3, for instance, mountd is called on the server to get\n     the filehandle for the tip of a path. mountd won\u0027t give us handles for\n     anything we don\u0027t have permission to access, and so we can\u0027t set up NFS\n     inodes for such nodes, and so can\u0027t easily set up dentries (we\u0027d have to\n     have ghost inodes or something).\n\n     With this patch we don\u0027t actually create dentries until we get handles\n     from the server that we can use to set up their inodes, and we don\u0027t\n     actually bind them into the tree until we know for sure where they go.\n\n (2) Inaccessible symbolic links.\n\n     If we\u0027re asked to mount two exports from the server, eg:\n\n\tmount warthog:/warthog/aaa/xxx /mmm\n\tmount warthog:/warthog/bbb/yyy /nnn\n\n     We may not be able to access anything nearer the root than xxx and yyy,\n     but we may find out later that /mmm/www/yyy, say, is actually the same\n     directory as the one mounted on /nnn. What we might then find out, for\n     example, is that /warthog/bbb was actually a symbolic link to\n     /warthog/aaa/xxx/www, but we can\u0027t actually determine that by talking to\n     the server until /warthog is made available by NFS.\n\n     This would lead to having constructed an errneous dentry tree which we\n     can\u0027t easily fix. We can end up with a dentry marked as a directory when\n     it should actually be a symlink, or we could end up with an apparently\n     hardlinked directory.\n\n     With this patch we need not make assumptions about the type of a dentry\n     for which we can\u0027t retrieve information, nor need we assume we know its\n     place in the grand scheme of things until we actually see that place.\n\nThis patch reduces the possibility of aliasing in the inode and page caches for\ninodes that may be accessed by more than one NFS export. It also reduces the\nnumber of superblocks required for NFS where there are many NFS exports being\nused from a server (home directory server + autofs for example).\n\nThis in turn makes it simpler to do local caching of network filesystems, as it\ncan then be guaranteed that there won\u0027t be links from multiple inodes in\nseparate superblocks to the same cache file.\n\nObviously, cache aliasing between different levels of NFS protocol could still\nbe a problem, but at least that gives us another key to use when indexing the\ncache.\n\nThis patch makes the following changes:\n\n (1) The server record construction/destruction has been abstracted out into\n     its own set of functions to make things easier to get right.  These have\n     been moved into fs/nfs/client.c.\n\n     All the code in fs/nfs/client.c has to do with the management of\n     connections to servers, and doesn\u0027t touch superblocks in any way; the\n     remaining code in fs/nfs/super.c has to do with VFS superblock management.\n\n (2) The sequence of events undertaken by NFS mount is now reordered:\n\n     (a) A volume representation (struct nfs_server) is allocated.\n\n     (b) A server representation (struct nfs_client) is acquired.  This may be\n     \t allocated or shared, and is keyed on server address, port and NFS\n     \t version.\n\n     (c) If allocated, the client representation is initialised.  The state\n     \t member variable of nfs_client is used to prevent a race during\n     \t initialisation from two mounts.\n\n     (d) For NFS4 a simple pathwalk is performed, walking from FH to FH to find\n     \t the root filehandle for the mount (fs/nfs/getroot.c).  For NFS2/3 we\n     \t are given the root FH in advance.\n\n     (e) The volume FSID is probed for on the root FH.\n\n     (f) The volume representation is initialised from the FSINFO record\n     \t retrieved on the root FH.\n\n     (g) sget() is called to acquire a superblock.  This may be allocated or\n     \t shared, keyed on client pointer and FSID.\n\n     (h) If allocated, the superblock is initialised.\n\n     (i) If the superblock is shared, then the new nfs_server record is\n     \t discarded.\n\n     (j) The root dentry for this mount is looked up from the root FH.\n\n     (k) The root dentry for this mount is assigned to the vfsmount.\n\n (3) nfs_readdir_lookup() creates dentries for each of the entries readdir()\n     returns; this function now attaches disconnected trees from alternate\n     roots that happen to be discovered attached to a directory being read (in\n     the same way nfs_lookup() is made to do for lookup ops).\n\n     The new d_materialise_unique() function is now used to do this, thus\n     permitting the whole thing to be done under one set of locks, and thus\n     avoiding any race between mount and lookup operations on the same\n     directory.\n\n (4) The client management code uses a new debug facility: NFSDBG_CLIENT which\n     is set by echoing 1024 to /proc/net/sunrpc/nfs_debug.\n\n (5) Clone mounts are now called xdev mounts.\n\n (6) Use the dentry passed to the statfs() op as the handle for retrieving fs\n     statistics rather than the root dentry of the superblock (which is now a\n     dummy).\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8fa5c000d7f986ef9cdc6d95f9f7fcee20e0a7d6",
      "tree": "356b811803db9775fd9c870d189a9ff75885ae6c",
      "parents": [
        "1f163415dc05983830bcc47b33c155b2528b1574"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:12 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:35 2006 -0400"
      },
      "message": "NFS: Move rpc_ops from nfs_server to nfs_client\n\nMove the rpc_ops from the nfs_server struct to the nfs_client struct as they\u0027re\ncommon to all server records of a particular NFS protocol version.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1f163415dc05983830bcc47b33c155b2528b1574",
      "tree": "e4180da9947f8b802b6927726cda9d0949f8e00f",
      "parents": [
        "27951bd26031f6c27d38df9e94623bbe208a2464"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:11 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:35 2006 -0400"
      },
      "message": "NFS: Make better use of inode* dereferencing macros\n\nMake better use of inode* dereferencing macros to hide dereferencing chains\n(including NFS_PROTO and NFS_CLIENT).\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "509de8111656a7d89b4a1a5f430f4460ce510f0f",
      "tree": "94ec0130ab74a5c80956ca3edd3298999b3b9897",
      "parents": [
        "0c7d90cfed91a283228017ba6faf37ee0bcd32b1"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:11 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:34 2006 -0400"
      },
      "message": "NFS: Add extra const qualifiers\n\nAdd some extra const qualifiers into NFS.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\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": "e9326dcab413848e70ab746c7c5363da13e5f801",
      "tree": "594a1e4ac32fd0620f0b91442d5d1b65fd9cc743",
      "parents": [
        "2b3de4411b3ccaeb00018c99d1bbe7203554cf7f"
      ],
      "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: Add a server capabilities NFS RPC op\n\nAdd a set_capabilities NFS RPC op so that the server capabilities can be set.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2b3de4411b3ccaeb00018c99d1bbe7203554cf7f",
      "tree": "cb49ea1fe64835fdbb8335a55049e70b3d87c5ae",
      "parents": [
        "b7162792b5c0e0f6e91b8997f8e6bbc76ec5420a"
      ],
      "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: Add a lookupfh NFS RPC op\n\nAdd a lookup filehandle NFS RPC op so that a file handle can be looked up\nwithout requiring dentries and inodes and other VFS stuff when doing an NFS4\npathwalk during mounting.\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": "76723de0cf5b186afe2f329eeef304c321d52bf8",
      "tree": "677768d360a5288086aa6965ce4db67d556fac03",
      "parents": [
        "7a52411107e1ac8f5be6967936ec237f40a1c7e4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 15 08:11:51 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 19 11:54:53 2006 -0400"
      },
      "message": "NFSv4: Fix incorrect semaphore release in _nfs4_do_open()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "16b4289c7460ba9c04af40c574949dcca9029658",
      "tree": "b0c1b47e82306d23e326d6a6a59d251eccb85e81",
      "parents": [
        "e8896495bca8490a427409e0886d63d05419ec65"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Aug 24 12:27:15 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Aug 24 15:54:13 2006 -0400"
      },
      "message": "NFSv4: Add v4 exception handling for the ACL functions.\n\nThis is needed in order to handle any NFS4ERR_DELAY errors that might be\nreturned by the server. It also ensures that we map the NFSv4 errors before\nthey are returned to userland.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n(cherry picked from 71c12b3f0abc7501f6ed231a6d17bc9c05a238dc commit)\n"
    },
    {
      "commit": "01c3b861cd77b28565a2d18c7caa3ce7f938e35c",
      "tree": "1445669572dd5f0e97ec0690da88eefd8bbf5acb",
      "parents": [
        "f07f18dd6f29f11887b8d9cf7ecb736bf2f7dc62"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jun 29 16:38:39 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 05 13:13:18 2006 -0400"
      },
      "message": "NLM,NFSv4: Wait on local locks before we put RPC calls on the wire\n\nUse FL_ACCESS flag to test and/or wait for local locks before we try\nrequesting a lock from the server\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "42a2d13eee3c895d22e9d1a52b96d15ca49adabc",
      "tree": "42e2195fa5ee1ed867418aedf42ee17624553c5f",
      "parents": [
        "9b07357490e5c7a1c3c2b6f4679d7ee4b4185ecd"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jun 29 16:38:36 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 05 13:13:18 2006 -0400"
      },
      "message": "NFSv4: Ensure nfs4_lock_expired() caches delegated locks\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9b07357490e5c7a1c3c2b6f4679d7ee4b4185ecd",
      "tree": "020b1e8ed07374d45ae2691cae8ed550ef123137",
      "parents": [
        "f475ae957db66650db66916c62604ac27409d884"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jun 29 16:38:34 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 05 13:13:17 2006 -0400"
      },
      "message": "NLM,NFSv4: Don\u0027t put UNLOCK requests on the wire unless we hold a lock\n\nUse the new behaviour of {flock,posix}_file_lock(F_UNLCK) to determine if\nwe held a lock, and only send the RPC request to the server if this was the\ncase.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f7b422b17ee5ee4920e8ae24a6ad04bf3481ce72",
      "tree": "4ae8372762efc092ceb4f884b57cad1efe6594de",
      "parents": [
        "4e5ccf60c5aa79d325c123f47d288a068166f389"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jun 09 09:34:33 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:33 2006 -0400"
      },
      "message": "NFS: Split fs/nfs/inode.c\n\nAs fs/nfs/inode.c is rather large, heterogenous and unwieldy, the attached\npatch splits it up into a number of files:\n\n (*) fs/nfs/inode.c\n\n     Strictly inode specific functions.\n\n (*) fs/nfs/super.c\n\n     Superblock management functions for NFS and NFS4, normal access, clones\n     and referrals.  The NFS4 superblock functions _could_ move out into a\n     separate conditionally compiled file, but it\u0027s probably not worth it as\n     there\u0027re so many common bits.\n\n (*) fs/nfs/namespace.c\n\n     Some namespace-specific functions have been moved here.\n\n (*) fs/nfs/nfs4namespace.c\n\n     NFS4-specific namespace functions (this could be merged into the previous\n     file).  This file is conditionally compiled.\n\n (*) fs/nfs/internal.h\n\n     Inter-file declarations, plus a few simple utility functions moved from\n     fs/nfs/inode.c.\n\n     Additionally, all the in-.c-file externs have been moved here, and those\n     files they were moved from now includes this file.\n\nFor the most part, the functions have not been changed, only some multiplexor\nfunctions have changed significantly.\n\nI\u0027ve also:\n\n (*) Added some extra banner comments above some functions.\n\n (*) Rearranged the function order within the files to be more logical and\n     better grouped (IMO), though someone may prefer a different order.\n\n (*) Reduced the number of #ifdefs in .c files.\n\n (*) Added missing __init and __exit directives.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "6b97fd3da1eab2cc490cfe884c7d4956522eaf8b",
      "tree": "055f5f603101a15f783ae52081e4714ddc3edc96",
      "parents": [
        "9cdb3883c38f883436a84c2353a4cf964ff890a2"
      ],
      "author": {
        "name": "Manoj Naik",
        "email": "manoj@almaden.ibm.com",
        "time": "Fri Jun 09 09:34:29 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:29 2006 -0400"
      },
      "message": "NFSv4: Follow a referral\n\nRespond to a moved error on NFS lookup by setting up the referral.\nNote: We don\u0027t actually follow the referral during lookup/getattr, but\nlater when we detect fsid mismatch in inode revalidation (similar to the\nprocessing done for cloning submounts). Referrals will have fake attributes\nuntil they are actually followed or traversed.\n\nSigned-off-by: Manoj Naik \u003cmanoj@almaden.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "830b8e33fe1900b87c8eb7ec5c646117a9f298d6",
      "tree": "8e4aa4c7ecd0485a288254433edf76305852c846",
      "parents": [
        "361e624f6d8bfbeac53769603d995d47535cfd46"
      ],
      "author": {
        "name": "Manoj Naik",
        "email": "manoj@almaden.ibm.com",
        "time": "Fri Jun 09 09:34:25 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:25 2006 -0400"
      },
      "message": "NFSv4: Define an fs_locations bitmap\n\nThis is (similar to getattr bitmap) but includes fs_locations and\nmounted_on_fileid attributes. Use this bitmap for encoding in fs_locations\nrequests.\nNote: We can probably do better by requesting locations as part of fsinfo\nitself.\n\nSigned-off-by: Manoj Naik \u003cmanoj@almaden.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "361e624f6d8bfbeac53769603d995d47535cfd46",
      "tree": "9cf400058ff4c4960a4e573b3753baff41cb5cf0",
      "parents": [
        "99baf625d3b9b8944920acc7c2d06079a37458c5"
      ],
      "author": {
        "name": "Manoj Naik",
        "email": "manoj@almaden.ibm.com",
        "time": "Fri Jun 09 09:34:24 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:24 2006 -0400"
      },
      "message": "NFSv4: GETATTR attributes on referral\n\nPer referral draft, only fs_locations, fsid, and mounted_on_fileid can be\nrequested in a GETATTR on referrals.\n\nSigned-off-by: Manoj Naik \u003cmanoj@almaden.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7aaa0b3bd4d215d9ce4d62b6c2043a63ba650f93",
      "tree": "122b502bc56a00dcb60d2de211e5ea6eeac9e028",
      "parents": [
        "683b57b435326eb512c7305892683b6205669448"
      ],
      "author": {
        "name": "Manoj Naik",
        "email": "manoj@almaden.ibm.com",
        "time": "Fri Jun 09 09:34:23 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:23 2006 -0400"
      },
      "message": "NFSv4: convert fs-locations-components to conform to RFC3530\n\nUse component4-style formats for decoding list of servers and pathnames in\nfs_locations.\n\nSigned-off-by: Manoj Naik \u003cmanoj@almaden.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "683b57b435326eb512c7305892683b6205669448",
      "tree": "ca1e526ab5b27993c0c143c37bb31e18889eeb61",
      "parents": [
        "8b23ea7bedb8b45a5bb56745fa3ff11018acf04e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:22 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:22 2006 -0400"
      },
      "message": "NFSv4: Implement the fs_locations function call\n\nNFSv4 allows for the fact that filesystems may be replicated across\nseveral servers or that they may be migrated to a backup server in case of\nfailure of the primary server.\nfs_locations is an NFSv4 operation for retrieving information about the\nlocation of migrated and/or replicated filesystems.\n\nBased on an initial implementation by Jiaying Zhang \u003cjiayingz@citi.umich.edu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "55a975937d40cac582e981ddc8ed783b3dcc043c",
      "tree": "13507eaebdab5e9c9dd615fe373ec6c0ddcbade4",
      "parents": [
        "8b4bdcf8995dd92b23d2ec22b32aee8fbbb50e1c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:19 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:19 2006 -0400"
      },
      "message": "NFS: Ensure the client submounts, when it crosses a server mountpoint.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "38478b24e37587f1c4fedf8ac070ca54f052ed28",
      "tree": "da4d900a8bfe27f1243fb0e037b51fae2a7e3256",
      "parents": [
        "f1bb0b92ba2cdfffe6e437f7a7da53138cf08d52"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 25 01:40:57 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:09 2006 -0400"
      },
      "message": "NFS: More page cache revalidation fixups\n\nWhenever the directory changes, we want to make sure that we always\ninvalidate its page cache. Fix up update_changeattr() and\nnfs_mark_for_revalidate() so that they do so.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "73a3d07c1082145a3b78407bb5252df290470c4c",
      "tree": "58ae6256401e19750f2d5f916c1ca5636a14905b",
      "parents": [
        "9d1e9232223a7f065be7f956a7b749a4cbbbe16d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 25 01:40:47 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:04 2006 -0400"
      },
      "message": "NFS: Clean up inode metadata updates\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "95cf959b245832ad49bb333bf88f9805244b225d",
      "tree": "956205e6be9f70d39124faa464111c2a821f75e4",
      "parents": [
        "d4a30e7e66c004da26dfe5229af7c10fe9853a7a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Apr 18 13:14:06 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Apr 19 12:43:46 2006 -0400"
      },
      "message": "VFS: Fix another open intent Oops\n\nIf the call to nfs_intent_set_file() fails to open a file in\nnfs4_proc_create(), we should return an error.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "096455a22acac06fb6d0d75f276170ab72d55ba6",
      "tree": "ba2f522da3e248720b919bc94193f791a239821c",
      "parents": [
        "9e57b302cf0f27063184196def620f39ca7a5fc6"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@fieldses.org",
        "time": "Mon Mar 20 23:23:42 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 23:23:42 2006 -0500"
      },
      "message": "NFSv4: Dont list system.nfs4_acl for filesystems that don\u0027t support it.\n\nThanks to Frank Filz for pointing out that we list system.nfs4_acl extended\nattribute even on filesystems where we don\u0027t actually support nfs4_acl.\nThis is inconsistent with the e.g. ext3 POSIX ACL behaviour, and seems to\nannoy cp.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7a1218a277c45cba1fb8d7089407a1769c645c43",
      "tree": "c59634979c53606696993ef06297045015791d6e",
      "parents": [
        "43ac3f2961b8616da26114ec6dc76ac2a61f76ad"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 18:11:10 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 18:11:10 2006 -0500"
      },
      "message": "SUNRPC: Ensure rpc_call_async() always calls tk_ops-\u003erpc_release()\n\nCurrently this will not happen if we exit before rpc_new_task() was called.\nAlso fix up rpc_run_task() to do the same (for consistency).\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "03f28e3a2059fc466761d872122f30acb7be61ae",
      "tree": "d478e553b79520c34bb3d06e75b59609de2993f4",
      "parents": [
        "01d0ae8beaee75d954900109619b700fe68707d9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:48 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:48 2006 -0500"
      },
      "message": "NFS: Make nfs_fhget() return appropriate error values\n\nCurrently it returns NULL, which usually gets interpreted as ENOMEM. In\nfact it can mean a host of issues.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "51581f3bf922512880f52a7777923fd6dcfc792b",
      "tree": "91e9c6c6a89705e76ec07574d296967c3bde24a9",
      "parents": [
        "3e4f6290ca4df7464ee066123f2bca4298c2dab4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:47 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:47 2006 -0500"
      },
      "message": "NFSv4: SETCLIENTID_CONFIRM should handle NFS4ERR_DELAY/NFS4ERR_RESOURCE\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\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": "ec06c096edec0755534c7126f4caded69de131c2",
      "tree": "1f5b219c09dea1d9886cefe3ea3f7cef560a5e9a",
      "parents": [
        "788e7a89a03e364855583c0ab4649b94925efbb9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:27 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:27 2006 -0500"
      },
      "message": "NFS: Cleanup of NFS read code\n\nSame callback hierarchy inversion as for the NFS write calls. This patch is\nnot strictly speaking needed by the O_DIRECT code, but avoids confusing\ndifferences between the asynchronous read and write code.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "788e7a89a03e364855583c0ab4649b94925efbb9",
      "tree": "4434c93af133a92f550ba0ecc8d3254cb222e72d",
      "parents": [
        "7117bf3dfb10b534a017260d9fc643bc1d0afd2a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:27 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:27 2006 -0500"
      },
      "message": "NFS: Cleanup of NFS write code in preparation for asynchronous o_direct\n\nThis patch inverts the callback hierarchy for NFS write calls.\n\nInstead of having the NFSv2/v3/v4-specific code set up the RPC callback\nops, we allow the original caller to do so. This allows for more\nflexibility w.r.t. how to set up and tear down the nfs_write_data\nstructure while still allowing the NFSv3/v4 code to perform error\nhandling.\n\nThe greater flexibility is needed by the asynchronous O_DIRECT code, which\nwants to be able to hold on to the original nfs_write_data structures after\nthe WRITE RPC call has completed in order to be able to replay them if the\nCOMMIT call determines that the server has rebooted.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "006ea73e5fa82915d0ac7a3f15ee7c688433236d",
      "tree": "0f522982fe3d01a74f1ad9f5f713cbd10a6b09bd",
      "parents": [
        "91d5b47023b608227d605d1e916b29dd0215bff7"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Mon Mar 20 13:44:14 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:14 2006 -0500"
      },
      "message": "NFS: add hooks to account for NFSERR_JUKEBOX errors\n\nMake an inode or an nfs_server struct available in the logic that handles\nJUKEBOX/DELAY type errors so the NFS client can account for them.\n\nThis patch is split out from the main nfs iostat patch to highlight minor\narchitectural changes required to support this statistic.\n\nTest plan:\nNone.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a162a6b804b48c605d1fd35e1861a5d32d00ad3f",
      "tree": "50b6aa7f5da5e4c34da2f9d34b93c667c5d6c054",
      "parents": [
        "967b9281361481aecf323563886ef972ee88c681"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:10 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:10 2006 -0500"
      },
      "message": "NFSv4: Kill braindead gcc warnings\n\nnfs4_open_revalidate: \u0027res\u0027 may be used uninitialized\nnfs4_callback_compound: ‘hdr_res.nops’ may be used uninitialized\n\t\t\t\u0027op_nr’ may be used uninitialized\nencode_getattr_res: ‘savep’ may be used uninitialized\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c8d149f3dbd582a101aa7da7bdd6c3316efd11b4",
      "tree": "51f1d97f02ffb7e02d6f7534ab9c9fce5fa6dc20",
      "parents": [
        "ca62b9c3f7b8679ada4de94d2ab7098c6860c3d7"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jesper.juhl@gmail.com",
        "time": "Mon Mar 20 13:44:07 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:07 2006 -0500"
      },
      "message": "NFS: \"const static\" vs \"static const\" in nfs4\n\nMy previous \"const static\" vs \"static const\" cleanup missed a single case,\npatch below takes care of it.\n\nSigned-off-by: Jesper Juhl \u003cjesper.juhl@gmail.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c12e87f4652b1ba3be168b4f63a440399b941928",
      "tree": "aa8c0ca6a6ea60042975d1ec9437620269df0182",
      "parents": [
        "712917d1c002f820b177683f4fd491289bde3c32"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 13 21:20:47 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 14 07:57:18 2006 -0800"
      },
      "message": "[PATCH] NFSv4: fix mount segfault on errors returned that are \u003c -1000\n\nIt turns out that nfs4_proc_get_root() may return raw NFSv4 errors instead of\nmapping them to kernel errors.  Problem spotted by Neil Horman\n\u003cnhorman@tuxdriver.com\u003e\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "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": "286d7d6a0cb38d3d4316a1dfea9b0c0fc5a6455b",
      "tree": "844ea8a14db8261a3977ae4d460e227402a4a426",
      "parents": [
        "b4454fe1a7cb76a248d0641c9d68a44a1b8d9a1f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:26 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:47 2006 -0500"
      },
      "message": "NFSv4: Remove requirement for machine creds for the \"setclientid\" operation\n\n Use a cred from the nfs4_client-\u003ecl_state_owners list.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b4454fe1a7cb76a248d0641c9d68a44a1b8d9a1f",
      "tree": "50ddc265e9700b1924e45ffce0f4583ba1013177",
      "parents": [
        "58d9714a44a79bba9b414da3ffbf3c753dc5915f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:25 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:47 2006 -0500"
      },
      "message": "NFSv4: Remove requirement for machine creds for the \"renew\" operation\n\n In RFC3530, the RENEW operation is allowed to use either\n\n the same principal, RPC security flavour and (if RPCSEC_GSS), the same\n  mechanism and service that was used for SETCLIENTID_CONFIRM\n\n OR\n\n Any principal, RPC security flavour and service combination that\n currently has an OPEN file on the server.\n\n Choose the latter since that doesn\u0027t require us to keep credentials for\n the same principal for the entire duration of the mount.\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": "433fbe4c8837e3cc2ba6a6374edf28737d01a2e9",
      "tree": "9448a58eafca388efaab5d3653c818fe60a4450d",
      "parents": [
        "26e976a884be9aa08f8ff906372f25f68df0d948"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:22 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:45 2006 -0500"
      },
      "message": "NFSv4: State recovery cleanup\n\n Use wait_on_bit() when waiting for state recovery to complete.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "26e976a884be9aa08f8ff906372f25f68df0d948",
      "tree": "ef675345b5c6126dca86699e077b75a375b504b9",
      "parents": [
        "2bd615797ef32ec06ef0ee44198a7aecc21ffd8c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:21 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:45 2006 -0500"
      },
      "message": "NFSv4: OPEN/LOCK/LOCKU/CLOSE will automatically renew the NFSv4 lease\n\n Cut down on the number of unnecessary RENEW requests on the wire.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fe650407a86823bcafbfbee96c7bc6a1b5cd1c76",
      "tree": "38e899d40fabba538bb558c0dcc3d38f830beadb",
      "parents": [
        "a5d16a4d090bd2af86e648ed9bb205903fcf1e86"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:18 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:44 2006 -0500"
      },
      "message": "NFSv4: Make DELEGRETURN an interruptible operation.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a5d16a4d090bd2af86e648ed9bb205903fcf1e86",
      "tree": "9fd615f3991e50d07583010d9703a3d1aced8419",
      "parents": [
        "911d1aaf26fc4d771174d98fcab710a44e2a5fa0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:17 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:44 2006 -0500"
      },
      "message": "NFSv4: Convert LOCK rpc call into an asynchronous RPC call\n\n In order to allow users to interrupt/cancel it.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "911d1aaf26fc4d771174d98fcab710a44e2a5fa0",
      "tree": "e16df0f68093d2dc0abd5f55c2d46ff7705fffb8",
      "parents": [
        "864472e9b8fa76ffaad17dfcb84d79e16df6828c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:16 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:44 2006 -0500"
      },
      "message": "NFSv4: locking XDR cleanup\n\n Get rid of some unnecessary intermediate structures\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "864472e9b8fa76ffaad17dfcb84d79e16df6828c",
      "tree": "1cc5c4624c36be0b9aebdabae30d1a5385e04dee",
      "parents": [
        "e761692381f294ea079d2e869fcd7c0afc79e394"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:15 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:43 2006 -0500"
      },
      "message": "NFSv4: Make open recovery track O_RDWR, O_RDONLY and O_WRONLY correctly\n\n When recovering from a delegation recall or a network partition, we need\n to replay open(O_RDWR), open(O_RDONLY) and open(O_WRONLY) separately.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e761692381f294ea079d2e869fcd7c0afc79e394",
      "tree": "34ebc00c001cddc94866936c460547d311e5dabb",
      "parents": [
        "cdd4e68b5f0ed12c64b3e2be83655d2a47588a74"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:13 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:43 2006 -0500"
      },
      "message": "NFSv4: Make nfs4_state track O_RDWR, O_RDONLY and O_WRONLY separately\n\n A closer reading of RFC3530 reveals that OPEN_DOWNGRADE must always\n specify a access modes that have been the argument of a previous OPEN\n operation.\n IOW: doing OPEN(O_RDWR) and then OPEN_DOWNGRADE(O_WRONLY) is forbidden\n unless the user called OPEN(O_WRONLY)\n\n In order to fix that, we really need to track the three possible open\n states separately.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cdd4e68b5f0ed12c64b3e2be83655d2a47588a74",
      "tree": "c31565c36e0550655207d2edcabaa6ea1f3217f7",
      "parents": [
        "24ac23ab88df5b21b5b2df8cde748bf99b289099"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:12 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:42 2006 -0500"
      },
      "message": "NFSv4: Make open_confirm() asynchronous too\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "24ac23ab88df5b21b5b2df8cde748bf99b289099",
      "tree": "e5e599fc55fc1744284077b320f3541a3658b958",
      "parents": [
        "e60859ac0e50f660d23b72e42e05f58757dcfeff"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:11 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:42 2006 -0500"
      },
      "message": "NFSv4: Convert open() into an asynchronous RPC call\n\n OPEN is a stateful operation, so we must ensure that it always\n completes. In order to allow users to interrupt the operation,\n we need to make the RPC call asynchronous, and then wait on\n completion (or cancel).\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e56e0b78eb1097a8e06512b9ed4be94d7538e7ac",
      "tree": "fe2b82993dd62323f9891f28bdb79c7cb2b01442",
      "parents": [
        "06f814a3ad0ddfe19e6e4f44e3da5d490547faf3"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:08 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:41 2006 -0500"
      },
      "message": "NFSv4: Allocate OPEN call RPC arguments using kmalloc()\n\n Cleanup in preparation for making OPEN calls interruptible by the user.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "06f814a3ad0ddfe19e6e4f44e3da5d490547faf3",
      "tree": "576f5f3c884b10b3b6349523af70a113f75d6634",
      "parents": [
        "44c288732fdbd7e38460d156a40d29590bf93bce"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:07 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:40 2006 -0500"
      },
      "message": "NFSv4: Make locku use the new RPC \"wait on completion\" interface.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    }
  ],
  "next": "4ce70ada1ff1d0b80916ec9ec5764ce44a50a54f"
}
