)]}'
{
  "log": [
    {
      "commit": "59844a9bd73e084b0ffefc0e13226098e28c71ad",
      "tree": "7b897c2530fe7083d57755df684d1d808fb18f8b",
      "parents": [
        "0a68b0bed08eeb7ec62e0125f17856b1ccb1ea4b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 26 08:42:24 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 26 08:43:51 2010 -0400"
      },
      "message": "NFS: Fix a lock imbalance typo in nfs_access_cache_shrinker\n\nCommit 9c7e7e23371e629dbb3b341610a418cdf1c19d91 (NFS: Don\u0027t call iput() in\nnfs_access_cache_shrinker) unintentionally removed the spin unlock for the\ninode-\u003ei_lock.\n\nReported-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9c7e7e23371e629dbb3b341610a418cdf1c19d91",
      "tree": "c211183b99860d232500bf99d12775e47c4f0f9c",
      "parents": [
        "1a81bb8a1fa62ccb9b2411ac10ce702ca4ed302a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 13 12:51:06 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:36 2010 -0400"
      },
      "message": "NFS: Don\u0027t call iput() in nfs_access_cache_shrinker\n\niput() can potentially attempt to allocate memory, so we should avoid\ncalling it in a memory shrinker. Instead, rely on the fact that iput() will\ncall nfs_access_zap_cache().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1a81bb8a1fa62ccb9b2411ac10ce702ca4ed302a",
      "tree": "7a4d29a36c2646b8cdd67d50f3b7778636e1dfbe",
      "parents": [
        "61d5eb2985b3b1d69fd53d7dc9789037c27f8d91"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 13 12:51:06 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:35 2010 -0400"
      },
      "message": "NFS: Clean up nfs_access_zap_cache()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "61d5eb2985b3b1d69fd53d7dc9789037c27f8d91",
      "tree": "6e73d0e7adcda510ec47d0cd50c57d4461e7fbdf",
      "parents": [
        "20673406534176ead9b984a84b662928110f77b1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 13 12:51:06 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:35 2010 -0400"
      },
      "message": "NFS: Don\u0027t run nfs_access_cache_shrinker() when the mask is GFP_NOFS\n\nBoth iput() and put_rpccred() might allocate memory under certain\ncircumstances, so make sure that we don\u0027t recurse and deadlock...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "aa49b4cf7dbf45438563f0ff6a2d23a68b70a7b9",
      "tree": "39304ffe1812f5407dc20bc77c6dccfa2d060912",
      "parents": [
        "011fff7239eb90e33e7bebba48bf596fced06eb9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:49 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:25 2010 -0400"
      },
      "message": "NFS: Reduce stack footprint of nfs_readdir()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e1fb4d05d5a3265f1f6769bee034175f91ecc2dd",
      "tree": "b5a1d30b2f57e0b9c1d021ed653030fb5c699147",
      "parents": [
        "364d015e5208e4669a4ae9fab2ab104ff26bc159"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:47 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:23 2010 -0400"
      },
      "message": "NFS: Reduce the stack footprint of nfs_lookup\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "27fb8d7b1fe7c2fa2d7c1f243b899793e1b080e0",
      "tree": "25a8ca59a3743459bbd48674731becea89a16318",
      "parents": [
        "f80a0ca6ad8f2800453e819dafa09a0ed9e56850",
        "9699eda6bc1f708a28acb716e1477aa351362fe2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 29 10:23:44 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 29 10:23:44 2010 -0700"
      },
      "message": "Merge branch \u0027bugfixes\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6\n\n* \u0027bugfixes\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6:\n  nfs: fix memory leak in nfs_get_sb with CONFIG_NFS_V4\n  nfs: fix some issues in nfs41_proc_reclaim_complete()\n  NFS: Ensure that nfs_wb_page() waits for Pg_writeback to clear\n  NFS: Fix an unstable write data integrity race\n  nfs: testing for null instead of ERR_PTR()\n  NFS: rsize and wsize settings ignored on v4 mounts\n  NFSv4: Don\u0027t attempt an atomic open if the file is a mountpoint\n  SUNRPC: Fix a bug in rpcauth_prune_expired\n"
    },
    {
      "commit": "d9e80b7de91db05c1c4d2e5ebbfd70b3b3ba0e0f",
      "tree": "0ca15a8b9250337c810e18756422c17b5f651b08",
      "parents": [
        "1d16b0f2f3edf05f12a9e3960588e0d4854157bb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Thu Apr 29 03:10:43 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 28 20:40:03 2010 -0700"
      },
      "message": "nfs d_revalidate() is too trigger-happy with d_drop()\n\nIf dentry found stale happens to be a root of disconnected tree, we\ncan\u0027t d_drop() it; its d_hash is actually part of s_anon and d_drop()\nwould simply hide it from shrink_dcache_for_umount(), leading to\nall sorts of fun, including busy inodes on umount and oopsen after\nthat.\n\nBug had been there since at least 2006 (commit c636eb already has it),\nso it\u0027s definitely -stable fodder.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1f063d2cdf332a8a5722006b1345d15d16007c6e",
      "tree": "4295c3fd46390f12e1ed2354998a91007f85fb13",
      "parents": [
        "3d7b08945e54a3a5358d5890240619a013cb7388"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Apr 22 15:35:55 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Apr 22 15:35:55 2010 -0400"
      },
      "message": "NFSv4: Don\u0027t attempt an atomic open if the file is a mountpoint\n\nFix https://bugzilla.kernel.org/show_bug.cgi?id\u003d15789\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "80e60639f1b7c121a7fea53920c5a4b94009361a",
      "tree": "ee7f01512859dd5d5ff5d46b37a79d88bfc3af4c",
      "parents": [
        "0eddb519b9127c73d53db4bf3ec1d45b13f844d1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 25 13:51:05 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 09 19:08:16 2010 -0400"
      },
      "message": "NFSv4: Fall back to ordinary lookup if nfs4_atomic_open() returns EISDIR\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "b4d2314bb88b07e5a04e6c75b442a1dfcd60e340",
      "tree": "9727944bf30a47cf02f9b9547adcaeafeee25843",
      "parents": [
        "49697ee79242d5f8ac88f1ebc62e583d16bcc687"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 10 15:21:44 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 10 15:21:44 2010 -0500"
      },
      "message": "NFSv4: Don\u0027t ignore the NFS_INO_REVAL_FORCED flag in nfs_revalidate_inode()\n\nIf the NFS_INO_REVAL_FORCED flag is set, that means that we don\u0027t yet have\nan up to date attribute cache. Even if we hold a delegation, we must\nput a GETATTR on the wire.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "1cda707d52e51a6cafac0aef12d2bd7052d572e6",
      "tree": "7a63b005631cca98f62ea199fef739eddce85d32",
      "parents": [
        "5cf95214ccb915591e2214f81de4659302d3e452"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 17:03:30 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:56 2010 -0500"
      },
      "message": "NFS: Remove requirement for inode-\u003ei_mutex from nfs_invalidate_mapping\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "56335936de1a41c8978fde62b2158af77ddc7258",
      "tree": "f0061bef629a1c6a14e08f1b660b3beca0adc7cd",
      "parents": [
        "6c8530993e1fdf1d6af0403e796fe14d80b4b097"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Wed Jan 06 18:48:26 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 06 18:48:26 2010 -0500"
      },
      "message": "nfs: fix oops in nfs_rename()\n\nRecent change is missing to update \"rehash\".  With that change, it will\nbecome the cause of adding dentry to hash twice.\n\nThis explains the reason of Oops (dereference the freed dentry in\n__d_lookup()) on my machine.\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nReported-by: Marvin \u003cmarvin24@gmx.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "24e93025ee434a58d35e5abb283c5bcc9a13e477",
      "tree": "f187100fdb63afb537e209c62e9c6bb5a95fc46b",
      "parents": [
        "27226104e60964f21717e0f452cecd45c85a64c6"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Thu Dec 03 15:58:56 2009 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 03 15:58:56 2009 -0500"
      },
      "message": "nfs: clean up sillyrenaming in nfs_rename()\n\nThe d_instantiate(new_dentry, NULL) is superfluous, the dentry is\nalready negative.  Rehashing this dummy dentry isn\u0027t needed either,\nd_move() works fine on an unhashed target.\n\nThe re-checking for busy after a failed nfs_sillyrename() is bogus\ntoo: new_dentry-\u003ed_count \u003c 2 would be a bug here.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "27226104e60964f21717e0f452cecd45c85a64c6",
      "tree": "fc0bf5aea3d316034a9d51ce00a135e9ddbce5f2",
      "parents": [
        "28f79a1a695e7a5b00af3b6713b449e08581ffbb"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Thu Dec 03 15:58:56 2009 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 03 15:58:56 2009 -0500"
      },
      "message": "nfs: dont unhash target if renaming a directory\n\nMove unhashing the target to after the check for existence and being a\nnon-directory.\n\nIf renaming a directory then the VFS already unhashes the target if it\nis not busy.  If it\u0027s busy then acquiring more references during the\nrename makes no difference.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "28f79a1a695e7a5b00af3b6713b449e08581ffbb",
      "tree": "e843f269eebb716a69a71dd51fec769c30d6efc9",
      "parents": [
        "e48de5ec25b37d42292c876c1d3337766aae89bd"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Thu Dec 03 15:58:56 2009 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 03 15:58:56 2009 -0500"
      },
      "message": "nfs: fix comments in nfs_rename()\n\nComments are wrong or out of date.  In particular d_drop() doesn\u0027t\nfree the inode it just unhashes the dentry.  And if target is a\ndirectory then it is not checked for being busy.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e48de5ec25b37d42292c876c1d3337766aae89bd",
      "tree": "de35cc77f7d99de0c3962a213a2b4c5385065987",
      "parents": [
        "9c4c761a629caa5572c1a29a8288416070d5d6b7"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Thu Dec 03 15:58:56 2009 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 03 15:58:56 2009 -0500"
      },
      "message": "nfs: remove unnecessary check from nfs_rename()\n\nVFS already checks if both source and target are directories.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9a3936aac133037f65124fcb2d676a6c201a90a4",
      "tree": "164fa366bf66e5596ff11d24daab4caf5266d27b",
      "parents": [
        "141aeb9f26f9f12f1584c128ce8697cdffb046e7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 26 08:09:46 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 26 08:09:46 2009 -0400"
      },
      "message": "NFSv4: The link() operation should return any delegation on the file\n\nOtherwise, we have to wait for the server to recall it.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d953126a28f97ec965d23c69fd5795854c048f30",
      "tree": "d3f239909dac00e1bc7882a783b8b63b20345d4d",
      "parents": [
        "fccba8045537f7e840d0e7565e1989d465e488a3"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 21 19:22:38 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 21 19:22:38 2009 -0400"
      },
      "message": "NFSv4: Fix a problem whereby a buggy server can oops the kernel\n\nWe just had a case in which a buggy server occasionally returns the wrong\nattributes during an OPEN call. While the client does catch this sort of\ncondition in nfs4_open_done(), and causes the nfs4_atomic_open() to return\n-EISDIR, the logic in nfs_atomic_lookup() is broken, since it causes a\nfallback to an ordinary lookup instead of just returning the error.\n\nWhen the buggy server then returns a regular file for the fallback lookup,\nthe VFS allows the open, and bad things start to happen, since the open\nfile doesn\u0027t have any associated NFSv4 state.\n\nThe fix is firstly to return the EISDIR/ENOTDIR errors immediately, and\nsecondly to ensure that we are always careful when dereferencing the\nnfs_open_context state pointer.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "405f55712dfe464b3240d7816cc4fe4174831be2",
      "tree": "96c425ea7fa8b31058b8f83a433c5e5265c8ebc7",
      "parents": [
        "f9fabcb58a6d26d6efde842d1703ac7cfa9427b6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Jul 11 22:08:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 12 12:22:34 2009 -0700"
      },
      "message": "headers: smp_lock.h redux\n\n* Remove smp_lock.h from files which don\u0027t need it (including some headers!)\n* Add smp_lock.h to files which do need it\n* Make smp_lock.h include conditional in hardirq.h\n  It\u0027s needed only for one kernel_locked() usage which is under CONFIG_PREEMPT\n\n  This will make hardirq.h inclusion cheaper for every PREEMPT\u003dn config\n  (which includes allmodconfig/allyesconfig, BTW)\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7ee2cb7f32b299c2b06a31fde155457203e4b7dd",
      "tree": "ca8ef4015ad1e80325df02dcd4ecfe261e1a4f9f",
      "parents": [
        "363383277081ce831642b72df40932ee05ce40a2"
      ],
      "author": {
        "name": "Frank Filz",
        "email": "ffilzlnx@us.ibm.com",
        "time": "Mon May 18 17:41:40 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 18 20:11:12 2009 -0700"
      },
      "message": "nfs: Fix NFS v4 client handling of MAY_EXEC in nfs_permission.\n\nThe problem is that permission checking is skipped if atomic open is\npossible, but when exec opens a file, it just opens it O_READONLY which\nmeans EXEC permission will not be checked at that time.\n\nThis problem is observed by the following sequence (executed as root):\n\n  mount -t nfs4 server:/ /mnt4\n  echo \"ls\" \u003e/mnt4/foo\n  chmod 744 /mnt4/foo\n  su guest -c \"mnt4/foo\"\n\nSigned-off-by: Frank Filz \u003cffilzlnx@us.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@kernel.org\nTested-by: Eugene Teo \u003ceugeneteo@kernel.sg\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cc85906110e26fe8537c3bdbc08a74ae8110030b",
      "tree": "891813098ede3dba4d5ff3b83b1f7b491367ad2f",
      "parents": [
        "c09bca786ff941ed17c5f381c4eca5b106808c51",
        "c69da774b28e01e062e0a3aba7509f2dcfd2a11a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Apr 01 13:28:15 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Apr 01 13:28:15 2009 -0400"
      },
      "message": "Merge branch \u0027devel\u0027 into for-linus\n"
    },
    {
      "commit": "f786aa90e026f2174bb0c26d49f338c5c46ede55",
      "tree": "6b50684e5b43149cfdb8e4220a3e84b5ea71ec3f",
      "parents": [
        "e56980d451904b623573ef4966cbab768e433c79"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 20 05:51:22 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:43:59 2009 -0400"
      },
      "message": "constify dentry_operations: NFS\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b1e4adf4ea41bb8b5a7bfc1a7001f137e65495df",
      "tree": "2e244acb15347bfe749cd8758466e3351fde0cb6",
      "parents": [
        "47c62564200609b6de60f535f61f0c73dd10c7c9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 19 15:35:49 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 19 15:35:49 2009 -0400"
      },
      "message": "NFS: Fix the notifications when renaming onto an existing file\n\nNFS appears to be returning an unnecessary \"delete\" notification when\nwe\u0027re doing an atomic rename. See\n\n  http://bugzilla.gnome.org/show_bug.cgi?id\u003d575684\n\nThe fix is to get rid of the redundant call to d_delete().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a71ee337b31271e701f689d544b6153b75609bc5",
      "tree": "56871bcec70c8f46a1fcc4b2f76763e948b508f0",
      "parents": [
        "57df675c60c5cf0748ddba9c7f85afde1530d74d"
      ],
      "author": {
        "name": "Suresh Jayaraman",
        "email": "sjayaraman@suse.de",
        "time": "Tue Mar 10 20:33:21 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 10 20:33:21 2009 -0400"
      },
      "message": "NFS: Handle -ESTALE error in access()\n\nHi Trond,\n\nI have been looking at a bugreport where trying to open applications on KDE\non a NFS mounted home fails temporarily. There have been multiple reports on\ndifferent kernel versions pointing to this common issue:\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12557\nhttps://bugs.launchpad.net/ubuntu/+source/linux/+bug/269954\nhttp://bugs.debian.org/cgi-bin/bugreport.cgi?bug\u003d508866.html\n\nThis issue can be reproducible consistently by doing this on a NFS mounted\nhome (KDE):\n1. Open 2 xterm sessions\n2. From one of the xterm session, do \"ssh -X \u003cremote host\u003e\"\n3. \"stat ~/.Xauthority\" on the remote SSH session\n4. Close the two xterm sessions\n5. On the server do a \"stat ~/.Xauthority\"\n6. Now on the client, try to open xterm\nThis will fail.\n\nEven if the filehandle had become stale, the NFS client should invalidate\nthe cache/inode and should repeat LOOKUP. Looking at the packet capture when\nthe failure occurs shows that there were two subsequent ACCESS() calls with\nthe same filehandle and both fails with -ESTALE error.\n\nI have tested the fix below. Now the client issue a LOOKUP after the\nACCESS() call fails with -ESTALE. If all this makes sense to you, can you\nconsider this for inclusion?\n\nThanks,\n\n\nIf the server returns an -ESTALE error due to stale filehandle in response to\nan ACCESS() call, we need to invalidate the cache and inode so that LOOKUP()\ncan be retried. Without this change, the nfs client retries ACCESS() with the\nsame filehandle, fails again and could lead to temporary failure of\napplications running on nfs mounted home.\n\nSigned-off-by: Suresh Jayaraman \u003csjayaraman@suse.de\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "64672d55d93c26fb4035fd1a84a803cbc09cb058",
      "tree": "6873f9335b925e4c6a5336544a6f6fc1d789604f",
      "parents": [
        "dc0b027dfadfcb8a5504f7d8052754bf8d501ab9"
      ],
      "author": {
        "name": "Peter Staubach",
        "email": "staubach@redhat.com",
        "time": "Tue Dec 23 15:21:56 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:56 2008 -0500"
      },
      "message": "optimize attribute timeouts for \"noac\" and \"actimeo\u003d0\"\n\nHi.\n\nI\u0027ve been looking at a bugzilla which describes a problem where\na customer was advised to use either the \"noac\" or \"actimeo\u003d0\"\nmount options to solve a consistency problem that they were\nseeing in the file attributes.  It turned out that this solution\ndid not work reliably for them because sometimes, the local\nattribute cache was believed to be valid and not timed out.\n(With an attribute cache timeout of 0, the cache should always\nappear to be timed out.)\n\nIn looking at this situation, it appears to me that the problem\nis that the attribute cache timeout code has an off-by-one\nerror in it.  It is assuming that the cache is valid in the\nregion, [read_cache_jiffies, read_cache_jiffies + attrtimeo].  The\ncache should be considered valid only in the region,\n[read_cache_jiffies, read_cache_jiffies + attrtimeo).  With this\nchange, the options, \"noac\" and \"actimeo\u003d0\", work as originally\nexpected.\n\nThis problem was previously addressed by special casing the\nattrtimeo \u003d\u003d 0 case.  However, since the problem is only an off-\nby-one error, the cleaner solution is address the off-by-one\nerror and thus, not require the special case.\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": "7a50c60e461f6ff97428da9448c3dad5b7bef491",
      "tree": "311c584f990377c1cb16b178db4ad54ede3bea03",
      "parents": [
        "15860ab1d7700249ebe3b0b8ca86ce43dfd0d66f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:55 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:55 2008 -0500"
      },
      "message": "NFS: Use delegations to optimise ACCESS calls\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "15860ab1d7700249ebe3b0b8ca86ce43dfd0d66f",
      "tree": "a4ca20956b2dec71d1d2f269f36160fdcc5d6618",
      "parents": [
        "5584c30630f8a4aac557093b1603e166fe7385be"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:54 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:54 2008 -0500"
      },
      "message": "NFSv4: Ensure that we set the verifier when revalidating delegated dentries\n\nThis ensures that we don\u0027t have to look up the dentry again after we return\nthe delegation if we know that the directory didn\u0027t change.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5584c30630f8a4aac557093b1603e166fe7385be",
      "tree": "c19db130a3b69bcc6a68eade044732571857db94",
      "parents": [
        "bd7bf9d540c001055fba796ebf146d90e4dd2eb2"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:54 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:54 2008 -0500"
      },
      "message": "NFSv4: Clean up is_atomic_open()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f696a3659fc4b3a3bf4bc83d9dbec5e5a2ffd929",
      "tree": "738adf557608f26e881a710839de12b7527549b6",
      "parents": [
        "5cec56deb6d41b5b570306b17cd0b1590ebd0897"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Thu Jul 31 13:41:58 2008 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 23 05:13:25 2008 -0400"
      },
      "message": "[PATCH] move executable checking into -\u003epermission()\n\nFor execute permission on a regular files we need to check if file has\nany execute bits at all, regardless of capabilites.\n\nThis check is normally performed by generic_permission() but was also\nadded to the case when the filesystem defines its own -\u003epermission()\nmethod.  In the latter case the filesystem should be responsible for\nperforming this check.\n\nMove the check from inode_permission() inside filesystems which are\nnot calling generic_permission().\n\nCreate a helper function execute_ok() that returns true if the inode\nis a directory or if any execute bits are present in i_mode.\n\nAlso fix up the following code:\n\n - coda control file is never executable\n - sysctl files are never executable\n - hfs_permission seems broken on MAY_EXEC, remove\n - hfsplus_permission is eqivalent to generic_permission(), remove\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "3516586a424ea5727be089da6541cbd5644f0497",
      "tree": "cb55c6262e066c393917735021aa2bd801f6dd16",
      "parents": [
        "2c552d81363e0dac66d478046cc8a3948a67eae9"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Aug 05 03:00:49 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 23 05:12:56 2008 -0400"
      },
      "message": "[PATCH] make O_EXCL in nd-\u003eintent.flags visible in nd-\u003eflags\n\nNew flag: LOOKUP_EXCL.  Set before doing the final step of pathname\nresolution on the paths that have LOOKUP_CREATE and O_EXCL.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4f98a2fee8acdb4ac84545df98cccecfd130f8db",
      "tree": "035a2937f4c3e2f7b4269412041c073ac646937c",
      "parents": [
        "b2e185384f534781fd22f5ce170b2ad26f97df70"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Sat Oct 18 20:26:32 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:25 2008 -0700"
      },
      "message": "vmscan: split LRU lists into anon \u0026 file sets\n\nSplit the LRU lists in two, one set for pages that are backed by real file\nsystems (\"file\") and one for pages that are backed by memory and swap\n(\"anon\").  The latter includes tmpfs.\n\nThe advantage of doing this is that the VM will not have to scan over lots\nof anonymous pages (which we generally do not want to swap out), just to\nfind the page cache pages that it should evict.\n\nThis patch has the infrastructure and a basic policy to balance how much\nwe scan the anon lists and how much we scan the file lists.  The big\npolicy changes are in separate patches.\n\n[lee.schermerhorn@hp.com: collect lru meminfo statistics from correct offset]\n[kosaki.motohiro@jp.fujitsu.com: prevent incorrect oom under split_lru]\n[kosaki.motohiro@jp.fujitsu.com: fix pagevec_move_tail() doesn\u0027t treat unevictable page]\n[hugh@veritas.com: memcg swapbacked pages active]\n[hugh@veritas.com: splitlru: BDI_CAP_SWAP_BACKED]\n[akpm@linux-foundation.org: fix /proc/vmstat units]\n[nishimura@mxp.nes.nec.co.jp: memcg: fix handling of shmem migration]\n[kosaki.motohiro@jp.fujitsu.com: adjust Quicklists field of /proc/meminfo]\n[kosaki.motohiro@jp.fujitsu.com: fix style issue of get_scan_ratio()]\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "011935a0a710c20bb7ae63523b78856848db1926",
      "tree": "aabfb595ce38eabd95ae1f79546d604aba663b7d",
      "parents": [
        "4704f0e274829e3af00737d2d9adace2d71a9605"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 14 19:24:50 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 14 19:24:50 2008 -0400"
      },
      "message": "NFS: Fix a resolution problem with nfs_inode-\u003ecache_change_attribute\n\nThe cache_change_attribute is used to decide whether or not a directory has\nchanged, in which case we may need to look it up again. Again, the use of\n\u0027jiffies\u0027 leads to an issue of resolution.\n\nOnce again, the fix is to change nfs_inode-\u003ecache_change_attribute, and\njust make it a simple counter.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4704f0e274829e3af00737d2d9adace2d71a9605",
      "tree": "048404f927dc210f1d7c695cb39e28e4e7d49030",
      "parents": [
        "921615f111108258820226a3258a047d9bf1d96a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 14 19:16:07 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 14 19:23:17 2008 -0400"
      },
      "message": "NFS: Fix the resolution problem with nfs_inode_attrs_need_update()\n\nIt appears that \u0027jiffies\u0027 timestamps do not have high enough resolution for\nnfs_inode_attrs_need_update(). One problem is that a GETATTR can be\nlaunched within \u003c 1 jiffy of the last operation that updated the attribute.\nAnother problem is that RPC calls can take \u003c 1 jiffy to execute.\n\nWe can fix this by switching the variables to use a simple global counter\nthat gets incremented every time we start another GETATTR call.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4eec952e42314b53e48fef1f54dd89cbf9789734",
      "tree": "6c0e407472224954987021a815036fe561f88c5a",
      "parents": [
        "1daef0a868370c5a96d031b9202e3354bea060e6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 17:58:13 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 07 17:22:20 2008 -0400"
      },
      "message": "NFS: Add options for finer control of the lookup cache\n\nAdd the flag NFS_MOUNT_LOOKUP_CACHE_NONEG to turn off the caching of\nnegative dentries. In reality what we do is to force\nnfs_lookup_revalidate() to always discard negative dentries.\n\nAdd the flag NFS_MOUNT_LOOKUP_CACHE_NONE for enforcing stricter\nrevalidation of dentries. It forces the revalidate code to always do a\nlookup instead of just checking the cached mtime of the parent directory.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e6305c43eda10ebfd2ad9e35d6e172ccc7bb3695",
      "tree": "8a95bd0e27fb3ce895cca9ef91af2e1605e4cdab",
      "parents": [
        "1bd5191d9f5d1928c4efdf604c4164b04bb88dbe"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 15 21:03:57 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 26 20:53:14 2008 -0400"
      },
      "message": "[PATCH] sanitize -\u003epermission() prototype\n\n* kill nameidata * argument; map the 3 bits in -\u003eflags anybody cares\n  about to new MAY_... ones and pass with the mask.\n* kill redundant gfs2_iop_permission()\n* sanitize ecryptfs_permission()\n* fix remaining places where -\u003epermission() instances might barf on new\n  MAY_... found in mask.\n\nThe obvious next target in that direction is permission(9)\n\nfolded fix for nfs_permission() breakage from Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c3cc8c019ca09767d7c9b5457d5cf8ac65085f44",
      "tree": "f06f3ec2e30994018b31da44ee81b8306b00af75",
      "parents": [
        "76566991f94c206d9c5881edcaf99ba72c9e9d61"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 15:44:23 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:56 2008 -0400"
      },
      "message": "NFS: Remove BKL from the readdir code\n\nPage accesses are serialised using the page locks, whereas all attribute\nupdates are serialised using the inode-\u003ei_lock.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "76566991f94c206d9c5881edcaf99ba72c9e9d61",
      "tree": "ed7ec44c59ae916639c1b775ac67cefa229b7e65",
      "parents": [
        "52e2e8d37e01edf38ccdccc983fb13ec1456d63d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 15:44:22 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:56 2008 -0400"
      },
      "message": "NFS: Remove BKL from the symlink code\n\nPage cache accesses are serialised using page locks, whereas attribute\nupdates are serialised using inode-\u003ei_lock.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "52e2e8d37e01edf38ccdccc983fb13ec1456d63d",
      "tree": "06f43fde01ae679fb2d29a343eef4531e34de015",
      "parents": [
        "bd9bb454b76fb6ca2d00f17313f9f9df5f5c404a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 15:44:21 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:55 2008 -0400"
      },
      "message": "NFS: Remove BKL from the sillydelete operations\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bd9bb454b76fb6ca2d00f17313f9f9df5f5c404a",
      "tree": "e5e0a7440552eca9e02a60e03c394ac0e91b76ab",
      "parents": [
        "fc0f684c21b5d4b41dc2ec76f7c0897ac98f5b6e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 16:09:59 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:55 2008 -0400"
      },
      "message": "NFS: Remove the BKL from the rename, rmdir and unlink operations\n\nAttribute updates are safe, and dentry operations are protected using VFS\nlevel locks. Defer removing the BKL from sillyrename until a separate\npatch.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fc0f684c21b5d4b41dc2ec76f7c0897ac98f5b6e",
      "tree": "686ee2a2d7b4f04d5812c76485c18c048c5366d2",
      "parents": [
        "fc81af535e462764e17f638d542973fbef13b026"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 15:44:20 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:54 2008 -0400"
      },
      "message": "NFS: Remove BKL from NFS lookup code\n\nAll dentry-related operations are already BKL-safe, since they are\nprotected by the VFS locking. No extra locks should be needed in the NFS\ncode.\n\nIn the case of nfs_revalidate_inode(), we\u0027re only doing an attribute\nupdate (protected by the inode-\u003ei_lock).\nIn the case of nfs_lookup(), we\u0027re instantiating a new dentry, so there\nshould be no contention possible until after we call d_materialise_unique.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fc81af535e462764e17f638d542973fbef13b026",
      "tree": "1e3c1c2e6a94698a9427ee21decd8a701bef947a",
      "parents": [
        "f1e2eda23513b68003202bddf1f84158baad8844"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 15:52:40 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:54 2008 -0400"
      },
      "message": "NFS: Remove the BKL from nfs_link()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f1e2eda23513b68003202bddf1f84158baad8844",
      "tree": "88e56131a18a1310e0d4a8bcabfce629496ca7d3",
      "parents": [
        "bba67e0e3f4caba2b2b90b48ed798fb0461bcb86"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 15:50:50 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:53 2008 -0400"
      },
      "message": "NFS: Remove the BKL from the inode creation operations\n\nnfs_instantiate() does not require the BKL, neither do the attribute\nupdates or the RPC code.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bba67e0e3f4caba2b2b90b48ed798fb0461bcb86",
      "tree": "c13781f1265ccd73b4f71a33e9bb22931e954c1e",
      "parents": [
        "b6a2e569e2157509951c9f3f58dfa18b44ce91b3"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 13:26:23 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:53 2008 -0400"
      },
      "message": "NFS: Remove BKL usage from open()\n\nAll the NFSv4 stateful operations are already protected by other locks (in\nparticular by the rpc_sequence locks.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4d80f2ecd506d9732ad94a6da104580bb47680d6",
      "tree": "26cb6bb08a53eae18dcf046b1041f20b5c9a9f8d",
      "parents": [
        "fa6dc9dc59c3a76fd209a97c8cf37395980fb903"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 15:44:18 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:52 2008 -0400"
      },
      "message": "NFS: Remove the BKL from the permission checking code\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1b83d707032a1be40a60ed0a9bd841662cc04a5d",
      "tree": "4c39cb618026a4480e06e5ed0d30c7a553a6fabf",
      "parents": [
        "d67d1c7bf948341fd8678c8e337ec27f4b46b206"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 15:44:04 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:50 2008 -0400"
      },
      "message": "NFS: Protect inode-\u003ei_nlink updates using inode-\u003ei_lock\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6da24bc9cfc645c619992e39aab09747164c9f14",
      "tree": "a2d092a395d219db6b251d4d7f481ca0f9f7ecb0",
      "parents": [
        "b7eaefaa8722fd98e5c2632640d1abd2b0c83e84"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jun 11 17:55:58 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 09 12:09:04 2008 -0400"
      },
      "message": "NFS: Use NFSDBG_FILE for all fops\n\nClean up: some fops use NFSDBG_FILE, some use NFSDBG_VFS.  Let\u0027s use\nNFSDBG_FILE for all fops, and consistently report file names instead\nof inode numbers.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cc0dd2d1052aede2946ad1338a8f6f5d5c604740",
      "tree": "e4566796e958935c4d21988c8c43b1d798f2c1d6",
      "parents": [
        "b84e06c58fdefdc42931f771dc295e63f4b27365"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jun 11 17:55:42 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 09 12:09:02 2008 -0400"
      },
      "message": "NFS: Make nfs_open methods consistent\n\nClean up: Report the same debugging info and count function calls the\nsame for files and directories in nfs_opendir() and nfs_file_open().\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b84e06c58fdefdc42931f771dc295e63f4b27365",
      "tree": "1018cbbb7559b928ee1ae7e29663de81ba56ef6b",
      "parents": [
        "549177863bac22f23663ee9f70c4e3b9fb269f2c"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jun 11 17:55:34 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 09 12:09:01 2008 -0400"
      },
      "message": "NFS: Make nfs_llseek methods consistent\n\nClean up: Report the same debugging info in nfs_llseek_dir() and\nnfs_llseek_file().\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "549177863bac22f23663ee9f70c4e3b9fb269f2c",
      "tree": "06ced21ed11c050cbb10f552b30e8e4368ccb487",
      "parents": [
        "cb3997b5a0b21864368bd1bd1d0929f9304fb6d9"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue May 27 16:29:07 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 09 12:09:00 2008 -0400"
      },
      "message": "NFS: Make nfs_fsync methods consistent\n\nClean up: Report the same debugging info, count function calls the same,\nand use similar function naming in nfs_fsync_dir() and nfs_fsync().\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2aac05a91971fbd1bf6cbed78b8731eb7454b9b7",
      "tree": "1bbbb13b7e4353bc729363582eef95925c523b7b",
      "parents": [
        "9c0fc4e28b57c5a6da7b58d60f71476c64d457a6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 07 13:26:10 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 08 15:22:40 2008 -0400"
      },
      "message": "NFS: Fix readdir cache invalidation\n\ninvalidate_inode_pages2_range() takes page offset arguments, not byte\nranges.\n\nAnother thought is that individual pages might perhaps get evicted by VM\npressure, in which case we might perhaps want to re-read not only the\nevicted page, but all subsequent pages too (in case the server returns\nmore/less data per page so that the alignment of the next entry\nchanges). We should therefore remove the condition that we only do this on\npage-\u003eindex\u003d\u003d0.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3110ff8048fb757b36112b044b384aea9c44d6e4",
      "tree": "5260f4973bd0848ddef3fb3c111386e59616abbc",
      "parents": [
        "46c8ac74250a396aca855e494f49a960797a6b5e"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Fri May 02 13:42:44 2008 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 16 09:43:29 2008 -0700"
      },
      "message": "nfs: replace remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc-specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "233607dbbc823caf685e778cabc49fb7f679900b",
      "tree": "13840137ee10788061cbec60fcfe8ea4c274558e",
      "parents": [
        "3dc5063786b273f1aee545844f6bd4e9651ebffe",
        "b48633bd086d21f4a2a5bea96c7e6c7ba58eb60c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Apr 24 14:01:02 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Apr 24 14:01:02 2008 -0400"
      },
      "message": "Merge branch \u0027devel\u0027\n"
    },
    {
      "commit": "2c463e95480829a2fe8f386589516e13b1289db6",
      "tree": "7294d93a15f62ccc2c649ef9782b7f85ae7d1ef8",
      "parents": [
        "ec82687f29127a954dd0da95dc1e0a4ce92b560c"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Fri Feb 15 14:37:56 2008 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Apr 19 00:29:27 2008 -0400"
      },
      "message": "[PATCH] r/o bind mounts: check mnt instead of superblock directly\n\nIf we depend on the inodes for writeability, we will not catch the r/o mounts\nwhen implemented.\n\nThis patches uses __mnt_want_write().  It does not guarantee that the mount\nwill stay writeable after the check.  But, this is OK for one of the checks\nbecause it is just for a printk().\n\nThe other two are probably unnecessary and duplicate existing checks in the\nVFS.  This won\u0027t make them better checks than before, but it will make them\ndetect r/o mounts.\n\nAcked-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nSigned-off-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\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": "4e99a1ff3410c627a428d5ddb6cd2e7bc908a486",
      "tree": "ad22bf99412be3470ebe3a3dde51172826eb7a1a",
      "parents": [
        "c37dcd334c0b0a46a90cfa13b9f69e2aaa89bc09"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 06 12:34:59 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 07 14:35:41 2008 -0500"
      },
      "message": "NFS: Fix dentry revalidation for NFSv4 referrals and mountpoint crossings\n\nAs long as the directory contents haven\u0027t changed, we should just let the\npath walk proceed to cross the mountpoint. Apart from being an optimisation\nin the case of \u0027nohide\u0027 mountpoint traversals, it also fixes an issue with\nreferrals: referral inodes don\u0027t have valid filehandles, so calling\nnfs_revalidate_inode() on them is a bug.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "25606656b19a38bbece914c4c67101f674908f49",
      "tree": "216fee9dd03ae07c27f4247c24090af82526aa56",
      "parents": [
        "497799e7c0ac7e82164a510ebf8beed7b3635e34"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Tue Feb 12 06:49:01 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Feb 13 23:24:07 2008 -0500"
      },
      "message": "NFS: remove error field from nfs_readdir_descriptor_t\n\nThe error field in nfs_readdir_descriptor_t is never used outside of the\nfunction in which it is set. Remove the field and change the place that\ndoes use it to use an existing local variable.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6f23e3872cff238589f9bf39c71db2ea880c9a26",
      "tree": "7b118601dcd65ae2bee7eddbeae6bdd6d64f4423",
      "parents": [
        "e6f810759505bc86c009854b82cc495ffd8eb020"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 25 16:38:17 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:06:12 2008 -0500"
      },
      "message": "NFS: Fix a potential race between umount and nfs_access_cache_shrinker()\n\nThanks to Yawei Niu for spotting the race.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e6f810759505bc86c009854b82cc495ffd8eb020",
      "tree": "1590631fe3b222d49015dd53b421a5547e13e4dc",
      "parents": [
        "99fadcd76465842c014c88b8c9c19b457e9debc0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 24 18:14:34 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:06:12 2008 -0500"
      },
      "message": "NFS: Add an asynchronous delegreturn operation for use in nfs_clear_inode\n\nOtherwise, there is a potential deadlock if the last dput() from an NFSv4\nclose() or other asynchronous operation leads to nfs_clear_inode calling\nthe synchronous delegreturn.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3a10c30acc4821ca000b52ed0edafd0d3bf26a52",
      "tree": "535fe870e12f9a032112b16d4e31fe1d813ea2c3",
      "parents": [
        "fc6014771bde8a215a9a4ea24b45f76afeb3c922"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Wed Jan 23 08:58:59 2008 +0200"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:06:11 2008 -0500"
      },
      "message": "nfs: obliterate NFS_FLAGS macro\n\nuse NFS_I(inode)-\u003eflags instead\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\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": "77f111929d024165e736e919187cff017279bebe",
      "tree": "fb03b66823f8c60e8efcdb40f93fadd2fc283e80",
      "parents": [
        "d45b9d8baf41acb177abbbe6746b1dea094b8a28"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jan 28 19:43:19 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:22 2008 -0500"
      },
      "message": "NFS: Ensure that we eject stale inodes as soon as possible\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d45b9d8baf41acb177abbbe6746b1dea094b8a28",
      "tree": "2bb90613fb21865b6b23c676c00073d3c4729929",
      "parents": [
        "609005c319bc6062b95ed82e132884ed7e22cdb9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jan 28 19:43:18 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:22 2008 -0500"
      },
      "message": "NFS: Handle -ENOENT errors in unlink()/rmdir()/rename()\n\nIf the server returns an ENOENT error, we still need to do a d_delete() in\norder to ensure that the dentry is deleted.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fccca7fc6aab4e6b519e2d606ef34632e4f50e33",
      "tree": "4d12d88039d229263a610647df6c751585f714dc",
      "parents": [
        "5b10ca19ea4859d3884d10a3eb8495de92089792"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jan 26 17:37:47 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:21 2008 -0500"
      },
      "message": "NFS: Fix a sillyrename race...\n\nEnsure that readdir revalidates its data cache after blocking on\nsillyrename.\n\nAlso fix a typo in nfs_do_call_unlink(): swap the ^\u003d for an |\u003d. The result\nis the same, since we\u0027ve already checked that the flag is unset, but it\nmakes the code more readable.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4c30d56edcaaa0446370189e8ab5c5393dc20ca3",
      "tree": "53c5d0215259721972709122f558ab476bea4df3",
      "parents": [
        "5334eb13d455dd26b7064980b118e3c957929701"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Wed Nov 21 15:04:31 2007 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 26 16:24:49 2007 -0500"
      },
      "message": "NFS: fs/nfs/dir.c should #include \"internal.h\"\n\nEvery file should include the headers containing the prototypes for its global\nfunctions (in this case nfs_access_cache_shrinker()).\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\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": "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": "f43bf0bebed7c33b698a8a25f95812f9e87c3843",
      "tree": "20c527153cde564ca3517cf6f214fa32727542bb",
      "parents": [
        "2a3f5fd45938bd86ce8faf4cb26be4f7e9ae2941"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 12:01:04 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:52 2007 -0400"
      },
      "message": "NFS: Add a boot parameter to disable 64 bit inode numbers\n\nThis boot parameter will allow legacy 32-bit applications which call stat()\nto continue to function even if the NFSv3/v4 server uses 64-bit inode\nnumbers.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c7c209730d635226b81e9aeae63b6dc8f445569f",
      "tree": "0817778cf1b0504839f8a3e83797826fbf9acccc",
      "parents": [
        "4f48af45842c6e78ab958c90344d3c940db4da15"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 19:22:40 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:23 2007 -0400"
      },
      "message": "NFS: Get rid of some obsolete macros\n\n- NFS_READTIME, NFS_CHANGE_ATTR are completely unused.\n- Inline the few remaining uses of NFS_ATTRTIMEO, and remove.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4f48af45842c6e78ab958c90344d3c940db4da15",
      "tree": "40f41baaf1931b47618034c21377a35b8ad926fe",
      "parents": [
        "9697d2342e1a480bc14921c52f185c2fe01016e7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 23:13:32 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:20 2007 -0400"
      },
      "message": "NFS: Simplify filehandle revalidation\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9697d2342e1a480bc14921c52f185c2fe01016e7",
      "tree": "bd4fba02d28777fc7705d8937a19740940fd5317",
      "parents": [
        "a12802cab8520f86c9a80bbf87d10ee6171687d1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 21:58:05 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:18 2007 -0400"
      },
      "message": "NFS: Ensure that nfs_link() returns a hashed dentry\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a12802cab8520f86c9a80bbf87d10ee6171687d1",
      "tree": "95e65c0541f0488b9fa6d31441cd584b2fbaf480",
      "parents": [
        "b050aa791fad6b060d6ff59305f01289e18b058c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 19:13:04 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:16 2007 -0400"
      },
      "message": "NFS: Be strict about dentry revalidation when doing exclusive create\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b050aa791fad6b060d6ff59305f01289e18b058c",
      "tree": "74786215218dfa0bb6cd45997de889a4f8526028",
      "parents": [
        "efbb06b7f98a154ef51ad41674548af5cc1fd005"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 19:02:07 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:13 2007 -0400"
      },
      "message": "NFS: Don\u0027t zap the readdir caches upon error\n\nIf necessary, the caches will get zapped under normal revalidation.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "efbb06b7f98a154ef51ad41674548af5cc1fd005",
      "tree": "7324549bd5138c1a439ebe95d1ca5149b9e4cf79",
      "parents": [
        "81c768808c78283e1b4ed4cd2cad2571294b2090"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 17:11:54 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:11 2007 -0400"
      },
      "message": "NFS: Remove the redundant nfs_reval_fsid()\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": "216d5d06883edfaf992ada0d72a2a22fdfdbd296",
      "tree": "4b3ff79736cb09a2bb565383232243971a9a8e2f",
      "parents": [
        "0a5ebc148879be68acdb12fbe72b65cb88c410d9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 20:10:12 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:03 2007 -0400"
      },
      "message": "NFSv4: Use NFSv2/v3 rules for negative dentries in nfs_open_revalidate\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0a5ebc148879be68acdb12fbe72b65cb88c410d9",
      "tree": "b9fb0b5a2689b33daa97255b8b302383a304785a",
      "parents": [
        "f2c77f4e62a2290ae46b5b0449eb72d72afe691e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 12:57:24 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:01 2007 -0400"
      },
      "message": "NFSv4: Don\u0027t revalidate the directory in nfs_atomic_lookup()\n\nWhy bother, since the call to nfs4_atomic_open() will do it for us.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f2c77f4e62a2290ae46b5b0449eb72d72afe691e",
      "tree": "f0b68a5be10fdebf477c3b5af1dbdce3a6150301",
      "parents": [
        "6d2b2966869142660f46d1e06cf9d15c3debcf77"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 12:54:39 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:58 2007 -0400"
      },
      "message": "NFS: Optimise nfs_lookup_revalidate()\n\nWe don\u0027t need to call nfs_revalidate_inode() on the directory if we already\nknow that the verifiers don\u0027t match.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "60ccd4ec4170c9487e3792322626acd160197bce",
      "tree": "b35353518bd7945a40e39edfa543ce80aaa3f8b4",
      "parents": [
        "80eb209def76d375677840800eb838abce1e6639"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 29 17:48:19 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:53 2007 -0400"
      },
      "message": "NFS: Remove nfs_begin_data_update/nfs_end_data_update\n\nThe lower level routines in fs/nfs/proc.c, fs/nfs/nfs3proc.c and\nfs/nfs/nfs4proc.c should already be dealing with the revalidation issues.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a1643a92f6de92074116922a2d2906dd33499ff4",
      "tree": "9047e929e13d48b53a8d3512ce31ac9ab6b1832d",
      "parents": [
        "3258b4fa552c4f994b5e6490a8ad88f5d7e0e648"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 29 17:25:43 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:48 2007 -0400"
      },
      "message": "NFS: NFS_CACHEINV() should not test for nfs_caches_unstable()\n\nThe fact that we\u0027re in the process of modifying the inode does not mean\nthat we should not invalidate the attribute and data caches. The defensive\nthing is to always invalidate when we\u0027re confronted with inode\nmtime/ctime or change_attribute updates that we do not immediately\nrecognise.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3258b4fa552c4f994b5e6490a8ad88f5d7e0e648",
      "tree": "1ec891ada36618119544ae6c870665a53b120fcd",
      "parents": [
        "cf8ba45e0554f1c8838fcfe43a93114f177af839"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 13:54:51 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:45 2007 -0400"
      },
      "message": "NFS: Remove bogus nfs_mark_for_revalidate() in nfs_lookup\n\nThe parent of the newly materialised dentry has just been revalidated...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cf8ba45e0554f1c8838fcfe43a93114f177af839",
      "tree": "e8799c4eac30b4c42c2be7a02e4848aac6113f44",
      "parents": [
        "f38211100d4823be530577dc3452f838861222ec"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 13:46:53 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:42 2007 -0400"
      },
      "message": "NFS: don\u0027t cache the verifer across -\u003elookup() calls\n\nIf the -\u003elookup() call causes the directory verifier to change, then there\nis still no need to use the old verifier, since our dentry has been\nverified.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "446e534985bada0ad7451c08cf213c06695f9b67",
      "tree": "6f364b49ad9f6bc2c82ce28ce4fbd75aee372286",
      "parents": [
        "d4d9cdcb470784df76304f75d0ce88f20f15fa6a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Oct 03 15:58:38 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:30 2007 -0400"
      },
      "message": "NFS: Fix a bug in nfs_open_revalidate()\n\nWe want to set the verifier when the call to nfs4_open_revalidate()\n_succeeds_.\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": "5724ab37872042176916441930e78fd353be1e5e",
      "tree": "255ba54f98f20ef22584bfb7308bf80f0c4fa2ad",
      "parents": [
        "fab728e156b3cbfe31f05d6e7cdebe3d5eaff878"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 21:51:38 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:25 2007 -0400"
      },
      "message": "NFS: nfs_instantiate() should set the dentry verifier\n\nThat will also allow us to remove the calls in mknod and mkdir.\nIn addition it will ensure that symlinks set it correctly.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fab728e156b3cbfe31f05d6e7cdebe3d5eaff878",
      "tree": "4a0a9ab57867e33342119e61d52c16d0c9eb7a32",
      "parents": [
        "4b841736bc16b320bcdb1e8ece585b3ced9a8811"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 29 17:41:33 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:22 2007 -0400"
      },
      "message": "NFS: Ensure nfs_instantiate() invalidates the parent dir on error\n\nAlso ensure that it drops the dentry in this case.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4b841736bc16b320bcdb1e8ece585b3ced9a8811",
      "tree": "c79e4c99393b8ebfd54617f0ffa791dacc443cb5",
      "parents": [
        "8edb01828837302055a8f0afddb2256659480bc5"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 29 17:15:01 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:20 2007 -0400"
      },
      "message": "NFS: Fix nfs_verify_change_attribute()\n\nWe don\u0027t care about whether or not some other process on our client is\nchanging the directory while we\u0027re in nfs_lookup_revalidate(), because the\ndcache will take care of ensuring local atomicity.\nWe can therefore remove the test for nfs_caches_unstable().\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": "57fa76f2da05d0fee597b26bbc1f05242252beab",
      "tree": "c3ee6a3b75315b10bf2d1c9396d7e07c1b8f4830",
      "parents": [
        "47aabaa7e45385fee4a535a6f6e523ff944e1684"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Sep 30 18:01:13 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:00 2007 -0400"
      },
      "message": "NFS: Don\u0027t use readdirplus data if the page cache is invalid\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6ecc5e8fcad7ad64d68c098249359831331bd299",
      "tree": "a0880db55be695d2975eb2d993d4cc918d0d3d83",
      "parents": [
        "7957c1418f4b6c66e28d4ac3c4d7a8c19d526c48"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 14:20:33 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:49 2007 -0400"
      },
      "message": "NFS: Fix dcache revalidation bugs\n\nWe don\u0027t need to force a dentry lookup just because we\u0027re making changes to\nthe directory.\n\nDon\u0027t update nfsi-\u003ecache_change_attribute in nfs_end_data_update: that\noverrides the NFSv3/v4 weak consistency checking that tells us our update\nwas the only one, and that tells us the dcache is still valid.\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": "8fb559f87fee7f71dbf9a595095ad7d8e84c55e7",
      "tree": "1d38a0d8b750f7515390c9741b12364f6f3426c7",
      "parents": [
        "77a55a1fe8f26f7d022986a599b68002e21d968a"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Sep 24 15:40:16 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:26 2007 -0400"
      },
      "message": "NFS: Eliminate nfs_refresh_verifier()\n\nnfs_set_verifier() and nfs_refresh_verifier() do exactly the same thing, so\nreplace one with the other.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "77a55a1fe8f26f7d022986a599b68002e21d968a",
      "tree": "63e804b1105d535149e0fd558c96a8c3efcc8dce",
      "parents": [
        "92f6c178250170222f6d80c8ae725400765aa7a4"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Sep 24 15:40:11 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:24 2007 -0400"
      },
      "message": "NFS: Eliminate nfs_renew_times()\n\nThe nfs_renew_times() function plants the current time in jiffies in\ndentry-\u003ed_time.  But a call to nfs_renew_times() is always followed by\nanother call that overwrites dentry-\u003ed_time.  Get rid of the\nnfs_renew_times() calls.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "92f6c178250170222f6d80c8ae725400765aa7a4",
      "tree": "f0da7a93122db0ed40cb5175294e8492082144ba",
      "parents": [
        "1321d8d971028e796978f6a48d195c09158b3bcd"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Sep 24 15:40:06 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:22 2007 -0400"
      },
      "message": "NFS: Don\u0027t call nfs_renew_times() in nfs_dentry_iput()\n\nNegative dentries need to be reverified after an asynchronous unlink.\n\nQuoth Trond:\n\n\"Unfortunately I don\u0027t think that we can avoid revalidating the\nresulting negative dentry since the UNLINK call is asynchronous,\nand so the new verifier on the directory will only be known a\nposteriori.\"\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c7e15961115028b99f6142266b5fb08acca0e8dd",
      "tree": "21d6ca8d97234664f242e35430ba4f0dbf61df8e",
      "parents": [
        "4e769b934e7638038e232c05b64f644e7269a90f"
      ],
      "author": {
        "name": "Fabio Olive Leite",
        "email": "fleite@redhat.com",
        "time": "Thu Jul 26 22:59:00 2007 -0300"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:15:33 2007 -0400"
      },
      "message": "Re: [NFS] [PATCH] Attribute timeout handling and wrapping u32 jiffies\n\nI would like to discuss the idea that the current checks for attribute\ntimeout using time_after are inadequate for 32bit architectures, since\ntime_after works correctly only when the two timestamps being compared\nare within 2^31 jiffies of each other. The signed overflow caused by\ncomparing values more than 2^31 jiffies apart will flip the result,\ncausing incorrect assumptions of validity.\n\n2^31 jiffies is a fairly large period of time (~25 days) when compared\nto the lifetime of most kernel data structures, but for long lived NFS\nmounts that can sit idle for months (think that for some reason autofs\ncannot be used), it is easy to compare inode attribute timestamps with\nvery disparate or even bogus values (as in when jiffies have wrapped\nmany times, where the comparison doesn\u0027t even make sense).\n\nCurrently the code tests for attribute timeout by simply adding the\ndesired amount of jiffies to the stored timestamp and comparing that\nwith the current timestamp of obtained attribute data with time_after.\nThis is incorrect, as it returns true for the desired timeout period\nand another full 2^31 range of jiffies.\n\nIn testing with artificial jumps (several small jumps, not one big\ncrank) of the jiffies I was able to reproduce a problem found in a\nserver with very long lived NFS mounts, where attributes would not be\nrefreshed even after touching files and directories in the server:\n\nInitial uptime:\n03:42:01 up 6 min, 0 users, load average: 0.01, 0.12, 0.07\n\nNFS volume is mounted and time is advanced:\n03:38:09 up 25 days, 2 min, 0 users, load average: 1.22, 1.05, 1.08\n\n# ls -l /local/A/foo/bar /nfs/A/foo/bar\n-rw-r--r--  1 root root 0 Dec 17 03:38 /local/A/foo/bar\n-rw-r--r--  1 root root 0 Nov 22 00:36 /nfs/A/foo/bar\n\n# touch /local/A/foo/bar\n\n# ls -l /local/A/foo/bar /nfs/A/foo/bar\n-rw-r--r--  1 root root 0 Dec 17 03:47 /local/A/foo/bar\n-rw-r--r--  1 root root 0 Nov 22 00:36 /nfs/A/foo/bar\n\nWe can see the local mtime is updated, but the NFS mount still shows\nthe old value. The patch below makes it work:\n\nInitial setup...\n07:11:02 up 25 days, 1 min,  0 users,  load average: 0.15, 0.03, 0.04\n\n# ls -l /local/A/foo/bar /nfs/A/foo/bar\n-rw-r--r--  1 root root 0 Jan 11 07:11 /local/A/foo/bar\n-rw-r--r--  1 root root 0 Jan 11 07:11 /nfs/A/foo/bar\n\n# touch /local/A/foo/bar\n\n# ls -l /local/A/foo/bar /nfs/A/foo/bar\n-rw-r--r--  1 root root 0 Jan 11 07:14 /local/A/foo/bar\n-rw-r--r--  1 root root 0 Jan 11 07:14 /nfs/A/foo/bar\n\nSigned-off-by: Fabio Olive Leite \u003cfleite@redhat.com\u003e\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": "54af3bb543c071769141387a42deaaab5074da55",
      "tree": "d24e5b23462a51a4e932b14feb5ae943b0dbba1e",
      "parents": [
        "bd8936632475665bfd90c1180c9c1301ee838db8"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 12:27:41 2007 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Sep 28 15:36:42 2007 -0700"
      },
      "message": "NFS: Fix an Oops in encode_lookup()\n\nIt doesn\u0027t look as if the NFS file name limit is being initialised correctly\nin the struct nfs_server. Make sure that we limit whatever is being set in\nnfs_probe_fsinfo() and nfs_init_server().\n\nAlso ensure that readdirplus and nfs4_path_walk respect our file name\nlimits.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\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": "3062c532ad410fe0e8320566fe2879a396be6701",
      "tree": "a6187e4988378bd6cc9712f0881417e0f360917b",
      "parents": [
        "be879c4e249a8875d7129f3b0c1bb62584dafbd8"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 14 17:36:45 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 19 15:21:39 2007 -0400"
      },
      "message": "NFS: Use dentry-\u003ed_time to store the parent directory verifier.\n\nThis will free up the d_fsdata field for other use.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a50f7951a31d3b976e829250853f89c9d2da32c0",
      "tree": "de9e8a3f93ee724471a49d9edb1155adef8d41f5",
      "parents": [
        "e2f032e9ef66e33089d09452892696ea97d1dca1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jun 05 19:23:43 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:25 2007 -0400"
      },
      "message": "NFS: Fix an Oops in the nfs_access_cache_shrinker()\n\nThe nfs_access_cache_shrinker may race with nfs_access_zap_cache().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    }
  ],
  "next": "83d93f2229348837bf988a1048f7f38789474471"
}
