)]}'
{
  "log": [
    {
      "commit": "31f31db1a15671513df9cd9fbe56ef45ee1e9a2a",
      "tree": "ad4015fb8159aaa18041791c2c85e272c5565dd7",
      "parents": [
        "3110ff8048fb757b36112b044b384aea9c44d6e4"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Fri May 02 13:42:45 2008 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 16 09:43:30 2008 -0700"
      },
      "message": "nfs: path_{get,put}() cleanups\n\nHere are some more places where path_{get,put}() can be used instead of\ndput()/mntput() pair.\n\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3110ff8048fb757b36112b044b384aea9c44d6e4",
      "tree": "5260f4973bd0848ddef3fb3c111386e59616abbc",
      "parents": [
        "46c8ac74250a396aca855e494f49a960797a6b5e"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Fri May 02 13:42:44 2008 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 16 09:43:29 2008 -0700"
      },
      "message": "nfs: replace remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc-specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "78ea323be6380a9313e87fe241809e912e8ae401",
      "tree": "6ea9a772ab677012c52a08c6b32e366d7bf129d4",
      "parents": [
        "441092415770ddec648800701895913c4bfd60c1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 07 20:49:28 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Apr 19 16:54:53 2008 -0400"
      },
      "message": "NFSv4: Don\u0027t use cred-\u003ecr_ops-\u003ecr_name in nfs4_proc_setclientid()\n\nWith the recent change to generic creds, we can no longer use\ncred-\u003ecr_ops-\u003ecr_name to distinguish between RPCSEC_GSS principals and\nAUTH_SYS/AUTH_NULL identities. Replace it with the rpc_authops-\u003eau_name\ninstead...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "536ff0f809b0f4d56e1c41e66768d330668e0a55",
      "tree": "fa2b17cc442227d5157b644d8b3fe188b4922983",
      "parents": [
        "4a9af59fee0701d9db99bc148d87b8852d6d6dd8"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 04 15:08:02 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Apr 19 16:53:33 2008 -0400"
      },
      "message": "NFSv4: Ensure we don\u0027t corrupt fl-\u003efl_flags in nfs4_proc_unlck\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c1d519312dcdf11532fed9f99a8ecc3547ffd9d6",
      "tree": "f91e0d8df3fc424aaa6eddbc54aaf55bdbfb245b",
      "parents": [
        "35d05778e25ee16dbddb60331be0bc1309efba19"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 07 13:20:54 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Apr 19 16:53:15 2008 -0400"
      },
      "message": "NFSv4: Only increment the sequence id if the server saw it\n\nIt is quite possible that the OPEN, CLOSE, LOCK, LOCKU,... compounds fail\nbefore the actual stateful operation has been executed (for instance in the\nPUTFH call). There is no way to tell from the overall status result which\noperations were executed from the COMPOUND.\n\nThe fix is to move incrementing of the sequence id into the XDR layer,\nso that we do it as we process the results from the stateful operation.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "35d05778e25ee16dbddb60331be0bc1309efba19",
      "tree": "81997edb4131763212dfba51ae4d94518decfef2",
      "parents": [
        "dbae4c73f08b8a7980cc912954ade3d4c1fb6147"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Apr 05 15:54:17 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Apr 19 16:53:12 2008 -0400"
      },
      "message": "NFSv4: Remove bogus call to nfs4_drop_state_owner() in _nfs4_open_expired()\n\nThere should be no need to invalidate a perfectly good state owner just\nbecause of a stale filehandle. Doing so can cause the state recovery code\nto break, since nfs4_get_renew_cred() and nfs4_get_setclientid_cred() rely\non finding active state owners.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "98a8e3239427051f5d44f2025b398bdcc3918f37",
      "tree": "aa3e6ba69dbf8575c2c6e10c013aa23d7d638af0",
      "parents": [
        "5c691044ecbca04dd558fca4c754121689fe1b34"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 12 12:25:28 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 14 13:42:49 2008 -0400"
      },
      "message": "SUNRPC: Add a helper rpcauth_lookup_generic_cred()\n\nThe NFSv4 protocol allows clients to negotiate security protocols on the\nfly in the case where an administrator on the server changes the export\nsettings and/or in the case where we may have a filesystem migration event.\n\nInstead of having the NFS client code cache credentials that are tied to a\nparticular AUTH method it is therefore preferable to have a generic credential\nthat can be converted into whatever AUTH is in use by the RPC client when\nthe read/write/sillyrename/... is put on the wire.\n\nWe do this by means of the new \"generic\" credential, which basically just\ncaches the minimal information that is needed to look up an RPCSEC_GSS,\nAUTH_SYS, or AUTH_NULL credential.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5d00837b90340af9106dcd93af75fd664c8eb87f",
      "tree": "f537dc84421cf150d66b630e56ea8107078c07a8",
      "parents": [
        "fda1393938035559b417dd5b26b9cc293a7aee00"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 22 16:34:17 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 25 21:40:44 2008 -0800"
      },
      "message": "SUNRPC: Run rpc timeout functions as callbacks instead of in softirqs\n\nAn audit of the current RPC timeout functions shows that they don\u0027t really\never need to run in the softirq context. As long as the softirq is\nable to signal that the wakeup is due to a timeout (which it can do by\nsetting task-\u003etk_status to -ETIMEDOUT) then the callback functions can just\nrun as standard task-\u003etk_callback functions (in the rpciod/process\ncontext).\n\nThe only possible border-line case would be xprt_timer() for the case of\nUDP, when the callback is used to reduce the size of the transport\ncongestion window. In testing, however, the effect of moving that update\nto a callback would appear to be minor.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fda1393938035559b417dd5b26b9cc293a7aee00",
      "tree": "8190a6ad7a81974dd5f782f2ab872753742ff68d",
      "parents": [
        "96ef13b283934fbf60b732e6c4ce23e8babd0042"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 22 16:34:12 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 25 21:40:42 2008 -0800"
      },
      "message": "SUNRPC: Convert users of rpc_wake_up_task to use rpc_wake_up_queued_task\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "101070ca2fe67186f5f5517b66cb4757b17f4e29",
      "tree": "b131c97e3033fc4c848e8cb3d76f675735b95085",
      "parents": [
        "5746006f1d17d9d5a3015051ea54de4341cb31f9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Feb 19 20:04:23 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 25 21:40:37 2008 -0800"
      },
      "message": "NFS: Ensure that the asynchronous RPC calls complete on nfsiod.\n\nWe want to ensure that rpc_call_ops that involve mntput() are run on nfsiod\nrather than on rpciod, so that they don\u0027t deadlock when the resulting\numount calls rpc_shutdown_client(). Hence we specify that read, write and\ncommit calls must complete on nfsiod.\nDitto for NFSv4 open, lock, locku and close asynchronous calls.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4ac9137858e08a19f29feac4e1f4df7c268b0ba5",
      "tree": "f5b5d84fd12fcc2b0ba0e7ce1a79ff381ad8f5dd",
      "parents": [
        "c5e725f33b733a77de622e91b6ba5645fcf070be"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:34:32 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:13:33 2008 -0800"
      },
      "message": "Embed a struct path into struct nameidata instead of nd-\u003e{dentry,mnt}\n\nThis is the central patch of a cleanup series. In most cases there is no good\nreason why someone would want to use a dentry for itself. This series reflects\nthat fact and embeds a struct path into nameidata.\n\nTogether with the other patches of this series\n- it enforced the correct order of getting/releasing the reference count on\n  \u003cdentry,vfsmount\u003e pairs\n- it prepares the VFS for stacking support since it is essential to have a\n  struct path in every place where the stack can be traversed\n- it reduces the overall code size:\n\nwithout patch series:\n   text    data     bss     dec     hex filename\n5321639  858418  715768 6895825  6938d1 vmlinux\n\nwith patch series:\n   text    data     bss     dec     hex filename\n5320026  858418  715768 6894212  693284 vmlinux\n\nThis patch:\n\nSwitch from nd-\u003e{dentry,mnt} to nd-\u003epath.{dentry,mnt} everywhere.\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: fix cifs]\n[akpm@linux-foundation.org: fix smack]\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Casey Schaufler \u003ccasey@schaufler-ca.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "75659ca0c10992dcb39258518368a0f6f56e935d",
      "tree": "5d014ceb2f10158061a23d0d976f9a613d85e659",
      "parents": [
        "fbdde7bd274d74729954190f99afcb1e3d9bbfba",
        "2dfe485a2c8afa54cb069fcf48476f6c90ea3fdf"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 01 11:45:47 2008 +1100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 01 11:45:47 2008 +1100"
      },
      "message": "Merge branch \u0027task_killable\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/willy/misc\n\n* \u0027task_killable\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/willy/misc: (22 commits)\n  Remove commented-out code copied from NFS\n  NFS: Switch from intr mount option to TASK_KILLABLE\n  Add wait_for_completion_killable\n  Add wait_event_killable\n  Add schedule_timeout_killable\n  Use mutex_lock_killable in vfs_readdir\n  Add mutex_lock_killable\n  Use lock_page_killable\n  Add lock_page_killable\n  Add fatal_signal_pending\n  Add TASK_WAKEKILL\n  exit: Use task_is_*\n  signal: Use task_is_*\n  sched: Use task_contributes_to_load, TASK_ALL and TASK_NORMAL\n  ptrace: Use task_is_*\n  power: Use task_is_*\n  wait: Use TASK_NORMAL\n  proc/base.c: Use task_is_*\n  proc/array.c: Use TASK_REPORT\n  perfmon: Use task_is_*\n  ...\n\nFixed up conflicts in NFS/sunrpc manually..\n"
    },
    {
      "commit": "e6f810759505bc86c009854b82cc495ffd8eb020",
      "tree": "1590631fe3b222d49015dd53b421a5547e13e4dc",
      "parents": [
        "99fadcd76465842c014c88b8c9c19b457e9debc0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 24 18:14:34 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:06:12 2008 -0500"
      },
      "message": "NFS: Add an asynchronous delegreturn operation for use in nfs_clear_inode\n\nOtherwise, there is a potential deadlock if the last dput() from an NFSv4\nclose() or other asynchronous operation leads to nfs_clear_inode calling\nthe synchronous delegreturn.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3d1c550874bcaf0d9b7fb66f601caed109074f4b",
      "tree": "d3517a859cfd433ebe08f6d204d84d03581070ee",
      "parents": [
        "f3c391e89c92651105364c6645244118ec9b3952"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 15 16:43:19 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:06:10 2008 -0500"
      },
      "message": "nfs4: allow nfsv4 acls on non-regular-files\n\nThe rfc doesn\u0027t give any reason it shouldn\u0027t be possible to set an\nattribute on a non-regular file.  And if the server supports it, then it\nshouldn\u0027t be up to us to prevent it.\n\nThanks to Erez for the report and Trond for further analysis.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nTested-by: Erez Zadok \u003cezk@cs.sunysb.edu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "69dd716c5ffd89f5ba14ffb871d633ecea74d13a",
      "tree": "bbf720dc7f16f99adc09063f934033eb9e36b307",
      "parents": [
        "3c7c7e4812e40e50a9ce9d687432ab5515cb3f2f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Dec 14 14:56:07 2007 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:58 2008 -0500"
      },
      "message": "NFSv4: Add socket proto argument to setclientid\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d4d3c507493afd3c9d19fbe9762f44e790909dbe",
      "tree": "1ebbc2d84e3c058258701acf3e96aa5f6c309451",
      "parents": [
        "4392f2592297876967191238a341667a6d4fc456"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Dec 10 14:57:09 2007 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:51 2008 -0500"
      },
      "message": "NFS: Enable NFS client to generate CLIENTID strings with IPv6 addresses\n\nWe recently added methods to RPC transports that provide string versions of\nthe remote peer address information.  Convert the NFSv4 SETCLIENTID\nprocedure to use those methods instead of building the client ID out of\nwhole cloth.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nCc: Aurelien Charbon \u003caurelien.charbon@ext.bull.net\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bfc69a456642a51c89dfd8e5184468857cb44f32",
      "tree": "0853b31afcc2c8bd24a0e94e9280d1c1083501de",
      "parents": [
        "5cce428d953cc3843b100e078dbc3c01c6411b85"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 15 18:18:29 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:47 2008 -0500"
      },
      "message": "NFS: define a function to update nfsi-\u003ecache_change_attribute\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5138fde01161cd7976fdc51f6a17da73adaa6baf",
      "tree": "57dea902155fc4c31667ffbc412782edf2593b01",
      "parents": [
        "bdc7f021f3a1fade77adf3c2d7f65690566fddfe"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 14 15:40:01 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:32 2008 -0500"
      },
      "message": "NFS/SUNRPC: Convert all users of rpc_call_setup()\n\nReplace use of rpc_call_setup() with rpc_init_task(), and in cases where we\nneed to initialise task-\u003etk_action, with rpc_call_start().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bdc7f021f3a1fade77adf3c2d7f65690566fddfe",
      "tree": "c076431ac83fc75cde00dc3d3a218fabae449980",
      "parents": [
        "b3ef8b3bb93300e58a4c4806207de3de4eb76f48"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 14 15:40:00 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:32 2008 -0500"
      },
      "message": "NFS: Clean up the (commit|read|write)_setup() callback routines\n\nMove the common code for setting up the nfs_write_data and nfs_read_data\nstructures into fs/nfs/read.c, fs/nfs/write.c and fs/nfs/direct.c.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c970aa85e71bd581726c42df843f6f129db275ac",
      "tree": "e7fc90ee4064196d357045fd173764e0b8fc8ca8",
      "parents": [
        "84115e1cd4a3614c4e566d4cce31381dce3dbef9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 14 15:39:59 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:30 2008 -0500"
      },
      "message": "SUNRPC: Clean up rpc_run_task\n\nMake it use the new task initialiser structure instead of acting as a\nwrapper.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2f74c0a05612b9c2014b5b67833dba9b9f523948",
      "tree": "59bb49bd9a393774b65e3d39e53edfe7bab4613e",
      "parents": [
        "acee478afc6ff7e1b8852d9a4dca1ff36021414d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 08 17:56:07 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:24 2008 -0500"
      },
      "message": "NFSv4: Clean up the OPEN/CLOSE serialisation code\n\nReduce the time spent locking the rpc_sequence structure by queuing the\nnfs_seqid only when we are ready to take the lock (when calling\nnfs_wait_on_sequence).\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e6e21970baff4845de74584e2efc8c964a55d574",
      "tree": "4a0b5f709ca2892d6babadd47baad7c9f0f8ec7d",
      "parents": [
        "bb22629ee87eed5054f8b508dbe7c58abad0a324"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 02 16:27:16 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 03 09:37:17 2008 -0500"
      },
      "message": "NFSv4: Fix open_to_lock_owner sequenceid allocation...\n\nNFSv4 file locking is currently completely broken since it doesn\u0027t respect\nthe OPEN sequencing when it is given an unconfirmed lock_owner and needs to\ndo an open_to_lock_owner. Worse: it breaks the sunrpc rules by doing a\nGFP_KERNEL allocation inside an rpciod callback.\n\nFix is to preallocate the open seqid structure in nfs4_alloc_lockdata if we\nsee that the lock_owner is unconfirmed.\nThen, in nfs4_lock_prepare() we wait for either the open_seqid, if\nthe lock_owner is still unconfirmed, or else fall back to waiting on the\nstandard lock_seqid.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bb22629ee87eed5054f8b508dbe7c58abad0a324",
      "tree": "6d72f1b34fad128ad09f6a49ca42731dc74fd9c3",
      "parents": [
        "3392c34922130d1dca9ad436c358330daa85e94e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 02 15:19:18 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 03 09:37:17 2008 -0500"
      },
      "message": "NFSv4: nfs4_open_confirm must not set the open_owner as confirmed on error\n\nRFC3530 states that the open_owner is confirmed if and only if the client\nsends an OPEN_CONFIRM request with the appropriate sequence id and stateid\nwithin the lease period.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "150030b78a454ba50d5e267b0dcf01b162809192",
      "tree": "4de766e7abbfd73a052f14f8efd3a26eb7b59d87",
      "parents": [
        "009e577e079656d51d0fe9b15e61e41b00816c29"
      ],
      "author": {
        "name": "Matthew Wilcox",
        "email": "matthew@wil.cx",
        "time": "Thu Dec 06 16:24:39 2007 -0500"
      },
      "committer": {
        "name": "Matthew Wilcox",
        "email": "willy@linux.intel.com",
        "time": "Thu Dec 06 17:40:25 2007 -0500"
      },
      "message": "NFS: Switch from intr mount option to TASK_KILLABLE\n\nBy using the TASK_KILLABLE infrastructure, we can get rid of the \u0027intr\u0027\nmount option.  We have to use _killable everywhere instead of _interruptible\nas we get rid of rpc_clnt_sigmask/sigunmask.\n\nSigned-off-by: Liam R. Howlett \u003chowlett@gmail.com\u003e\nSigned-off-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\n"
    },
    {
      "commit": "a49c3c7736a2e77931dabc5bc4a83fb4b2da013e",
      "tree": "1921900be210540ee53a4011c9e8f781deb0367e",
      "parents": [
        "565277f63c616e11c37309a1e98c052d18ebbb55"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 18 18:03:27 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Oct 19 17:19:25 2007 -0400"
      },
      "message": "NFSv4: Ensure that we wait for the CLOSE request to complete\n\nOtherwise, we do end up breaking close-to-open semantics. We also end up\nbreaking some of the silly-rename tests in Connectathon on some setups.\n\nPlease refer to the bug-report at\n\thttp://bugzilla.linux-nfs.org/show_bug.cgi?id\u003d150\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "565277f63c616e11c37309a1e98c052d18ebbb55",
      "tree": "60fdddc5a1c97df696392e47ead71d33d39e487f",
      "parents": [
        "61e930a904966cc37e0a3404276f0b73037e57ca"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 15 18:17:53 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Oct 19 17:19:16 2007 -0400"
      },
      "message": "NFS: Fix a race in sillyrename\n\nlookup() and sillyrename() can race one another because the sillyrename()\ncompletion cannot take the parent directory\u0027s inode-\u003ei_mutex since the\nlatter may be held by whoever is calling dput().\n\nWe therefore have little option but to add extra locking to ensure that\nnfs_lookup() and nfs_atomic_open() do not race with the sillyrename\ncompletion.\nIf somebody has looked up the sillyrenamed file in the meantime, we just\ntransfer the sillydelete information to the new dentry.\n\nPlease refer to the bug-report at\n\thttp://bugzilla.linux-nfs.org/show_bug.cgi?id\u003d150\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "40d24704091c8a29a4c99d25670f1996749aea6f",
      "tree": "511140e99865bd1610a6df1bd81c9321b7749005",
      "parents": [
        "9e08a3c5aec5b745e844328bcbc16458b6118faf"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 08 09:24:22 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:47 2007 -0400"
      },
      "message": "NFS: Fix a connectathon regression in NFSv3 and NFSv4\n\nWe\u0027re failing basic test6 against Linux servers because they lack a correct\nchange attribute. The fix is to assume that we always want to invalidate\nthe readdir caches when we call update_changeattr and/or\nnfs_post_op_update_inode on a directory.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9e08a3c5aec5b745e844328bcbc16458b6118faf",
      "tree": "0715485e16ddee34478cdf1ac8432944f6cc354e",
      "parents": [
        "220bcc2afd7011b3e0569fc178331fa983c92c1b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 08 14:10:31 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:45 2007 -0400"
      },
      "message": "NFS: Use nfs_refresh_inode() in ops that aren\u0027t expected to change the inode\n\nnfs_post_op_update_inode() is really only meant to be used if we expect the\ninode and its attributes to have changed in some way.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d75340cc4de5c187fbf0bba234309ca86cf0a2fb",
      "tree": "aa53e3248bf3d61283f94187ffc83b18fa06bb7a",
      "parents": [
        "216d5d06883edfaf992ada0d72a2a22fdfdbd296"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 21:42:01 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:06 2007 -0400"
      },
      "message": "NFSv4: Fix nfs_atomic_open() to set the verifier on negative dentries too\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d4d9cdcb470784df76304f75d0ce88f20f15fa6a",
      "tree": "7066e4640947f078855b47501e69f76ff775a834",
      "parents": [
        "5724ab37872042176916441930e78fd353be1e5e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 18:38:53 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:27 2007 -0400"
      },
      "message": "NFS: Don\u0027t hash the negative dentry when optimising for an O_EXCL open\n\nWe don\u0027t want to leave an unverified hashed negative dentry if the\nexclusive create fails to complete.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "70ca88521fc7bee8ef0fc22033a439d4b9a2c70d",
      "tree": "8e3943bfac55b59dc127393f8da0ecfc4aba424b",
      "parents": [
        "b64e8a5ef758888cb42b7c105dcfaaf51aab1baf"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Sep 30 15:21:24 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:15 2007 -0400"
      },
      "message": "NFS: Fake up \u0027wcc\u0027 attributes to prevent cache invalidation after write\n\nNFSv2 and v4 don\u0027t offer weak cache consistency attributes on WRITE calls.\nIn NFSv3, returning wcc data is optional. In all cases, we want to prevent\nthe client from invalidating our cached data whenever -\u003ewrite_done()\nattempts to update the inode attributes.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8850df999cd16aa141098e2e8be04a590276f3cc",
      "tree": "de5d934bff3ae6595dcfcf6d725dd991bb242f21",
      "parents": [
        "c4812998398d9cbce8646494704c52297359ede0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 17:20:07 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:06 2007 -0400"
      },
      "message": "NFS: Fix atime revalidation in read()\n\nNFSv3 will correctly update atime on a read() call, so there is no need to\nset the NFS_INO_INVALID_ATIME flag unless the call to nfs_refresh_inode()\nfails.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c4812998398d9cbce8646494704c52297359ede0",
      "tree": "8c7b786779b03d1960c25800a7a27a10f8318e99",
      "parents": [
        "57fa76f2da05d0fee597b26bbc1f05242252beab"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 17:11:45 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:03 2007 -0400"
      },
      "message": "NFS: Fix atime revalidation in readdir()\n\nNFSv3 will correctly update atime on a readdir call, so there is no need to\nset the NFS_INO_INVALID_ATIME flag unless the call to nfs_refresh_inode()\nfails.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "17cadc95372e28024be0874e67329c1862912c5d",
      "tree": "0785ba140643d87c23e7bca67d1f2522214a0d12",
      "parents": [
        "e323ea46d95d7f8c789effd1194dfc120284dbbd"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 27 10:07:31 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:55 2007 -0400"
      },
      "message": "NFS: Don\u0027t force a dcache revalidation if nfs_wcc_update_inode succeeds\n\nThe reason is that if the weak cache consistency update was successful,\nthen we know that our client must be the only one that changed the\ndirectory, and we\u0027ve already updated the dcache to reflect the change.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "76b32999dfff6e59252a8af17a5671a4cf3bcf9b",
      "tree": "6494e3a368e120668052e469c08c69a5d8d0b3f4",
      "parents": [
        "af22f94ae02ab9dd4fd7fe628c8434a59cc293be"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Aug 10 17:45:11 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:38 2007 -0400"
      },
      "message": "NFSv4: Make NFSv4 ACCESS calls return attributes too...\n\nIt doesn\u0027t really make sense to cache an access call without also\nrevalidating the attributes.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "af22f94ae02ab9dd4fd7fe628c8434a59cc293be",
      "tree": "e3794a90fc0720c33266dfa682e264a4041e7a14",
      "parents": [
        "cd3758e37ddea66fccca7d93c4b601e8a2e51926"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Aug 10 17:45:10 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:34 2007 -0400"
      },
      "message": "NFSv4: Simplify _nfs4_do_access()\n\nCurrently, _nfs4_do_access() is just a copy of nfs_do_access() with added\nconversion of the open flags into an access mask. This patch merges the\nduplicate functionality.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cd3758e37ddea66fccca7d93c4b601e8a2e51926",
      "tree": "07566d3ee457524a97b534a4f214b9178b1278c8",
      "parents": [
        "c03025d55540bd648f2546659090140ecc835572"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Aug 10 17:44:32 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:31 2007 -0400"
      },
      "message": "NFS: Replace file-\u003eprivate_data with calls to nfs_file_open_context()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4e769b934e7638038e232c05b64f644e7269a90f",
      "tree": "6508c1d273f22d3704eb849fb90404bade7cb4a7",
      "parents": [
        "50e437d522a6cc34a882b2f740297f1b6b4c3af3"
      ],
      "author": {
        "name": "Peter Staubach",
        "email": "staubach@redhat.com",
        "time": "Fri Aug 03 15:07:10 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:15:29 2007 -0400"
      },
      "message": "64 bit ino support for NFS client\n\nHi.\n\nAttached is a patch to modify the NFS client code to support\n64 bit ino\u0027s, as appropriate for the system and the NFS\nprotocol version.\n\nThe code basically just expand the NFS interfaces for routines\nwhich handle ino\u0027s from using ino_t to u64 and then uses the\nfileid in the nfs_inode instead of i_ino in the inode.  The\ncode paths that were updated are in the getattr method and\nthe readdir methods.\n\nThis should be no real change on 64 bit platforms.  Since\nthe ino_t is an unsigned long, it would already be 64 bits\nwide.\n\n    Thanx...\n\n           ps\n\nSigned-off-by: Peter Staubach \u003cstaubach@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "deee9369b993b52a8e2f25683b4a67be7a65e8ae",
      "tree": "d5d4f56c77ac21bc4f693ceaacdd3b6c87a00e56",
      "parents": [
        "65bbf6bdbba0f74e254f706bfb00fe533974f4f1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Aug 27 11:33:00 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 01 10:14:38 2007 -0400"
      },
      "message": "NFSv4: Ensure that we pass the correct dentry to nfs4_intent_set_file\n\nThis patch fixes an Oops that was reported by Gabriel Barazer.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "65bbf6bdbba0f74e254f706bfb00fe533974f4f1",
      "tree": "abf43f323a6320249e4dbe032fe32f2e403563cb",
      "parents": [
        "560aef74503e928f44ddbf481b8b02d9cef37dbf"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Aug 27 09:57:46 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 01 10:14:37 2007 -0400"
      },
      "message": "NFSv4: Fix a typo in _nfs4_do_open_reclaim\n\nThis should fix the following Oops reported by Jeff Garzik:\n\nkernel BUG at fs/nfs/nfs4xdr.c:1040!\ninvalid opcode: 0000 [1] SMP \nCPU 0 \nModules linked in: nfs lockd sunrpc af_packet\nipv6 cpufreq_ondemand acpi_cpufreq battery floppy nvram sg snd_hda_intel\nata_generic snd_pcm_oss snd_mixer_oss snd_pcm i2c_i801 snd_page_alloc e1000\nfirewire_ohci ata_piix i2c_core sr_mod cdrom sata_sil ahci libata sd_mod\nscsi_mod ext3 jbd ehci_hcd uhci_hcd\nPid: 16353, comm: 10.10.10.1-recl Not tainted 2.6.23-rc3 #1\nRIP: 0010:[\u003cffffffff88240980\u003e] [\u003cffffffff88240980\u003e] :nfs:encode_open+0x1c0/0x330\nRSP: 0018:ffff8100467c5c60  EFLAGS: 00010202\nRAX: ffff81000f89b8b8 RBX: 00000000697a6f6d RCX: ffff81000f89b8b8\nRDX: 0000000000000004 RSI: 0000000000000004 RDI: ffff8100467c5c80\nRBP: ffff8100467c5c80 R08: ffff81000f89bc30 R09: ffff81000f89b83f\nR10: 0000000000000001 R11: ffffffff881e79e0 R12: ffff81003cbd1808\nR13: ffff81000f89b860 R14: ffff81005fc984e0 R15: ffffffff88240af0\nFS:  0000000000000000(0000) GS:ffffffff8052a000(0000) knlGS:0000000000000000\nCS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b\nCR2: 00002adb9e51a030 CR3: 000000007ea7e000 CR4: 00000000000006e0\nDR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\nDR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\nProcess 10.10.10.1-recl (pid: 16353, threadinfo ffff8100467c4000, task ffff8100038ce780)\nStack:  ffff81004aeb6a40 ffff81003cbd1808 ffff81003cbd1808 ffffffff88240b5d\n ffff81000f89b8bc ffff81005fc984e8 ffff81000f89bc30 ffff81005fc984e8\n 0000000300000000 0000000000000000 0000000000000000 ffff81003cbd1800\nCall Trace:\n [\u003cffffffff88240b5d\u003e] :nfs:nfs4_xdr_enc_open_noattr+0x6d/0x90\n [\u003cffffffff881e74b7\u003e] :sunrpc:rpcauth_wrap_req+0x97/0xf0\n [\u003cffffffff88240af0\u003e] :nfs:nfs4_xdr_enc_open_noattr+0x0/0x90\n [\u003cffffffff881df57a\u003e] :sunrpc:call_transmit+0x18a/0x290\n [\u003cffffffff881e5e7b\u003e] :sunrpc:__rpc_execute+0x6b/0x290\n [\u003cffffffff881dff76\u003e] :sunrpc:rpc_do_run_task+0x76/0xd0\n [\u003cffffffff882373f6\u003e] :nfs:_nfs4_proc_open+0x76/0x230\n [\u003cffffffff88237a2e\u003e] :nfs:nfs4_open_recover_helper+0x5e/0xc0\n [\u003cffffffff88237b74\u003e] :nfs:nfs4_open_recover+0xe4/0x120\n [\u003cffffffff88238e14\u003e] :nfs:nfs4_open_reclaim+0xa4/0xf0\n [\u003cffffffff882413c5\u003e] :nfs:nfs4_reclaim_open_state+0x55/0x1b0\n [\u003cffffffff882417ea\u003e] :nfs:reclaimer+0x2ca/0x390\n [\u003cffffffff88241520\u003e] :nfs:reclaimer+0x0/0x390\n [\u003cffffffff8024e59b\u003e] kthread+0x4b/0x80\n [\u003cffffffff8020cad8\u003e] child_rip+0xa/0x12\n [\u003cffffffff8024e550\u003e] kthread+0x0/0x80\n [\u003cffffffff8020cace\u003e] child_rip+0x0/0x12\n\n\nCode: 0f 0b eb fe 48 89 ef c7 00 00 00 00 02 be 08 00 00 00 e8 79 \nRIP  [\u003cffffffff88240980\u003e] :nfs:encode_open+0x1c0/0x330\n RSP \u003cffff8100467c5c60\u003e\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "45328c354e8ae16b67cb3adb72ab57459f9e5fd6",
      "tree": "f0c4271a0c9f6b8d9b499f22fffc1804419d49c8",
      "parents": [
        "ba683031fae115d61c6b5f4c675cc27f6e9576d2"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 26 17:47:34 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 07 15:13:19 2007 -0400"
      },
      "message": "NFS: Fix NFSv4 open stateid regressions\n\nDo not allow cached open for O_RDONLY or O_WRONLY unless the file has been\npreviously opened in these modes.\n\nAlso Fix the calculation of the mode in nfs4_close_prepare. We should only\nissue an OPEN_DOWNGRADE if we\u0027re sure that we will still be holding the\ncorrect open modes. This may not be the case if we\u0027ve been doing delegated\nopens.\n\nFinally, there is no need to adjust the open mode bit flags in\nnfs4_close_done(): that has already been done in nfs4_close_prepare().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "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"
    }
  ],
  "next": "76723de0cf5b186afe2f329eeef304c321d52bf8"
}
