)]}'
{
  "log": [
    {
      "commit": "0acd2201920d0968919f4f5797d63f7b6f2b19d4",
      "tree": "9b241d264f42eff3ff4eeffb67616fca0490e460",
      "parents": [
        "8f70e95f9f4159184f557a1db60c909d7c1bd2e3",
        "35124a0994fc02545b14b9fa3aad000b3331f1c0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 17:03:14 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 17:03:14 2011 -0400"
      },
      "message": "Merge branch \u0027nfs-for-2.6.39\u0027 into nfs-for-next\n"
    },
    {
      "commit": "7c5130588d691a3b34d02312f1bd1b6d56fe0100",
      "tree": "154ccea3a837ca1aae2c5676e0946b79fb4bb671",
      "parents": [
        "e73b83f270828630a9ce33728f6ef61c37a82340"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Mar 24 17:12:24 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 13:52:41 2011 -0400"
      },
      "message": "NFS: lookup supports alternate client\n\nA later patch will need to perform a lookup using an\nalternate client with a different security flavor.\nThis patch adds support for doing that on NFS v4.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8ef2ce3e16d9bec6cf015207c1c82a5b864046ac",
      "tree": "35441fd695c4f5215ab0061d8df26b4cfd9a44f5",
      "parents": [
        "480c2006ebb44ae03165695db7b3e38c04e0d102"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Wed Mar 23 15:04:31 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:14:27 2011 -0400"
      },
      "message": "NFS: Detect loops in a readdir due to bad cookies\n\nSome filesystems (such as ext4) can return the same cookie value for\nmultiple files.  If we try to start a readdir with one of these cookies,\nthe server will return the first file found with a cookie of the same\nvalue.  This can cause the client to enter an infinite loop.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "480c2006ebb44ae03165695db7b3e38c04e0d102",
      "tree": "20bb22ea6db986e91017734f6c0390e1211b1765",
      "parents": [
        "e47c085afb3d16cbc6a4bfb10a3b074bb7c58998"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Wed Mar 23 14:48:29 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:13:11 2011 -0400"
      },
      "message": "NFS: Create nfs_open_dir_context\n\nnfs_opendir() created a context that held much more information than we\nneed for a readdir.  This patch introduces a slimmed-down\nnfs_open_dir_context that contains only the cookie and the cred used for\nRPC operations.  The new context will eventually be used to help detect\nreaddir loops.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e47c085afb3d16cbc6a4bfb10a3b074bb7c58998",
      "tree": "67472d29b894b285bc6cc3bb7802b57c3d295bca",
      "parents": [
        "51e816564db151f7f08c739ad69b9d1dbd166663"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 08:43:09 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:12:12 2011 -0400"
      },
      "message": "NFS: Ensure that we update the readdir filp-\u003ef_pos correctly\n\nIf we\u0027re doing a search by readdir cookie, we need to ensure that the\nresulting f_pos is updated. To do so, we need to update the\ndesc-\u003ecurrent_index, in the same way that we do in the search by\nfile offset case.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b1942c5f8cf3bea3a3c88a7498ae4c4361f31afe",
      "tree": "0ff98cbdf75b23104df97344dcd6a35a86bbe9ec",
      "parents": [
        "0d5839ad05acd0fe2a84a39f33ac5efdf634a5a5"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 05:44:14 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 16:44:24 2011 -0400"
      },
      "message": "nfs: store devname at disconnected NFS roots\n\npart 2: make sure that disconnected roots have corresponding mnt_devname\nvalues stashed into them.\n\nHave nfs*_get_root() stuff a copy of devname into -\u003ed_fsdata of the\nfound root, provided that it is disconnected.\n\nHave -\u003ed_release() free it when dentry goes away.\n\nHave the places where NFS uses -\u003ed_fsdata for sillyrename (and that\ncan *never* happen to a disconnected root - dentry will be attached\nto its parent) free old devname copies if they find those.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "36d43a43761b004ad1879ac21471d8fc5f3157ec",
      "tree": "6cb6c6d978f4e58de7f9bf901707d6929f098345",
      "parents": [
        "d18610b0ce9eb48c60649d8fcbf68374c84349d3"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jan 14 18:45:42 2011 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 15 20:07:34 2011 -0500"
      },
      "message": "NFS: Use d_automount() rather than abusing follow_link()\n\nMake NFS use the new d_automount() dentry operation rather than abusing\nfollow_link() on directories.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "db9effe99adc67c53e6aedadadd2aa9a02342e48",
      "tree": "efe7ebfe951972568189ef2548130f0abd515210",
      "parents": [
        "9c4bc1c2befbbdce4b9fd526e67a7a2ea143ffa2",
        "f20877d94a74557b7c28b4ed8920d834c31e0ea5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 20:14:13 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 20:14:13 2011 -0800"
      },
      "message": "Merge branch \u0027vfs-scale-working\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/npiggin/linux-npiggin\n\n* \u0027vfs-scale-working\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/npiggin/linux-npiggin:\n  fs: fix do_last error case when need_reval_dot\n  nfs: add missing rcu-walk check\n  fs: hlist UP debug fixup\n  fs: fix dropping of rcu-walk from force_reval_path\n  fs: force_reval_path drop rcu-walk before d_invalidate\n  fs: small rcu-walk documentation fixes\n\nFixed up trivial conflicts in Documentation/filesystems/porting\n"
    },
    {
      "commit": "657e94b673a805b427903c5628e95348235fad06",
      "tree": "0c174e387cb5d3fd3a2b55e154219cc67b644637",
      "parents": [
        "2c6755988afc003a0332406a134fb6a1626f9b28"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 14 02:48:39 2011 +0000"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 14 02:48:39 2011 +0000"
      },
      "message": "nfs: add missing rcu-walk check\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "8a0eebf66e3b1deae036553ba641a9c2bdbae678",
      "tree": "642d4367dd30a55f78244891479cc08f2983eb7e",
      "parents": [
        "581548db3b3c0f6e25b500329eb02e3c72e7acbe"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 13 14:15:50 2011 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 12:06:29 2011 -0800"
      },
      "message": "NFS: Fix NFSv3 exclusive open semantics\n\nCommit c0204fd2b8fe047b18b67e07e1bf2a03691240cd (NFS: Clean up\nnfs4_proc_create()) broke NFSv3 exclusive open by removing the code\nthat passes the O_EXCL flag down to nfs3_proc_create(). This patch\nreverts that offending hunk from the original commit.\n\nReported-by: Nick Bowler \u003cnbowler@elliptictech.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@kernel.org    [2.6.37]\nTested-by: Nick Bowler \u003cnbowler@elliptictech.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8b244ff2fa58f81f84aa03c82c2c23307a778ce7",
      "tree": "39c913ed4e529084a856c9c80cab9d173d251863",
      "parents": [
        "96e1391414f80a8a3bae74ddf58d3c2870e304f0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Dec 18 11:29:39 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 12 20:02:45 2011 -0500"
      },
      "message": "switch nfs to -\u003es_d_op\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b9d919a4ac6cf031b8e065f82ad8f1b0c9ed74b1",
      "tree": "3139b066396956fd3794df0cb1aa74dcc9f1cb28",
      "parents": [
        "7c955fca3e1d8132982148267d9efcafae849bb6",
        "357f54d6b38252737116a6d631f6ac28ded018ed"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 11 15:11:56 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 11 15:11:56 2011 -0800"
      },
      "message": "Merge branch \u0027nfs-for-2.6.38\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6\n\n* \u0027nfs-for-2.6.38\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (89 commits)\n  NFS fix the setting of exchange id flag\n  NFS: Don\u0027t use vm_map_ram() in readdir\n  NFSv4: Ensure continued open and lockowner name uniqueness\n  NFS: Move cl_delegations to the nfs_server struct\n  NFS: Introduce nfs_detach_delegations()\n  NFS: Move cl_state_owners and related fields to the nfs_server struct\n  NFS: Allow walking nfs_client.cl_superblocks list outside client.c\n  pnfs: layout roc code\n  pnfs: update nfs4_callback_recallany to handle layouts\n  pnfs: add CB_LAYOUTRECALL handling\n  pnfs: CB_LAYOUTRECALL xdr code\n  pnfs: change lo refcounting to atomic_t\n  pnfs: check that partial LAYOUTGET return is ignored\n  pnfs: add layout to client list before sending rpc\n  pnfs: serialize LAYOUTGET(openstateid)\n  pnfs: layoutget rpc code cleanup\n  pnfs: change how lsegs are removed from layout list\n  pnfs: change layout state seqlock to a spinlock\n  pnfs: add prefix to struct pnfs_layout_hdr fields\n  pnfs: add prefix to struct pnfs_layout_segment fields\n  ...\n"
    },
    {
      "commit": "68c404b18f6fba404b2753622d0459c68ee128ae",
      "tree": "c1ec0bb12f19d91071b461cc2831d9d3dd4c74f3",
      "parents": [
        "d035c36c58dd9183ad6aa7875dea89893faedb55",
        "6650239a4b01077e80d5a4468562756d77afaa59"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jan 10 14:48:02 2011 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jan 10 14:48:02 2011 -0500"
      },
      "message": "Merge branch \u0027bugfixes\u0027 into nfs-for-2.6.38\n\nConflicts:\n\tfs/nfs/nfs2xdr.c\n\tfs/nfs/nfs3xdr.c\n\tfs/nfs/nfs4xdr.c\n"
    },
    {
      "commit": "6650239a4b01077e80d5a4468562756d77afaa59",
      "tree": "505c9a1dc26c26608ce6a5981093a6357d4f3638",
      "parents": [
        "3c0eee3fe6a3a1c745379547c7e7c904aa64f6d5"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jan 08 17:45:38 2011 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jan 10 14:45:01 2011 -0500"
      },
      "message": "NFS: Don\u0027t use vm_map_ram() in readdir\n\nvm_map_ram() is not available on NOMMU platforms, and causes trouble\non incoherrent architectures such as ARM when we access the page data\nthrough both the direct and the virtual mapping.\n\nThe alternative is to use the direct mapping to access page data\nfor the case when we are not crossing a page boundary, but to copy\nthe data into a linear scratch buffer when we are accessing data\nthat spans page boundaries.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nTested-by: Marc Kleine-Budde \u003cmkl@pengutronix.de\u003e\nCc: stable@kernel.org  [2.6.37]\n"
    },
    {
      "commit": "b74c79e99389cd79b31fcc08f82c24e492e63c7e",
      "tree": "763c6b412517306670bc625e90035f2d16bb739f",
      "parents": [
        "34286d6662308d82aed891852d04c7c3a2649b16"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:58 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: provide rcu-walk aware permission i_ops\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "34286d6662308d82aed891852d04c7c3a2649b16",
      "tree": "c4b7311404d302e7cb94df7a4690298e1059910a",
      "parents": [
        "44a7d7a878c9cbb74f236ea755b25b6b2e26a9a9"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:57 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: rcu-walk aware d_revalidate method\n\nRequire filesystems be aware of .d_revalidate being called in rcu-walk\nmode (nd-\u003eflags \u0026 LOOKUP_RCU). For now do a simple push down, returning\n-ECHILD from all implementations.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fb045adb99d9b7c562dc7fef834857f78249daa1",
      "tree": "1fd6a4024fffeec568abe100d730589bfdb81c38",
      "parents": [
        "5f57cbcc02cf18f6b22ef4066bb10afeb8f930ff"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:55 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:28 2011 +1100"
      },
      "message": "fs: dcache reduce branches in lookup path\n\nReduce some branches and memory accesses in dcache lookup by adding dentry\nflags to indicate common d_ops are set, rather than having to check them.\nThis saves a pointer memory access (dentry-\u003ed_op) in common path lookup\nsituations, and saves another pointer load and branch in cases where we\nhave d_op but not the particular operation.\n\nPatched with:\n\ngit grep -E \u0027[.\u003e]([[:space:]])*d_op([[:space:]])*\u003d\u0027 | xargs sed -e \u0027s/\\([^\\t ]*\\)-\u003ed_op \u003d \\(.*\\);/d_set_d_op(\\1, \\2);/\u0027 -e \u0027s/\\([^\\t ]*\\)\\.d_op \u003d \\(.*\\);/d_set_d_op(\\\u0026\\1, \\2);/\u0027 -i\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b5c84bf6f6fa3a7dfdcb556023a62953574b60ee",
      "tree": "7a2c299a180713e21d5cb653cb933121adf53c31",
      "parents": [
        "949854d02455080d20cd3e1db28a3a18daf7599d"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:38 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:23 2011 +1100"
      },
      "message": "fs: dcache remove dcache_lock\n\ndcache_lock no longer protects anything. remove it.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b7ab39f631f505edc2bbdb86620d5493f995c9da",
      "tree": "62be97ebc7fc69ceb601f23312d335ebb8038ee7",
      "parents": [
        "2304450783dfde7b0b94ae234edd0dbffa865073"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:32 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:21 2011 +1100"
      },
      "message": "fs: dcache scale dentry refcount\n\nMake d_count non-atomic and protect it with d_lock. This allows us to ensure a\n0 refcount dentry remains 0 without dcache_lock. It is also fairly natural when\nwe start protecting many other dentry members with d_lock.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fe15ce446beb3a33583af81ffe6c9d01a75314ed",
      "tree": "bc8af66b6dd2d0f21a2a3f48a19975ae2cdbae4e",
      "parents": [
        "5eef7fa905c814826f518aca2d414ca77508ce30"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:23 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:18 2011 +1100"
      },
      "message": "fs: change d_delete semantics\n\nChange d_delete from a dentry deletion notification to a dentry caching\nadvise, more like -\u003edrop_inode. Require it to be constant and idempotent,\nand not take d_lock. This is how all existing filesystems use the callback\nanyway.\n\nThis makes fine grained dentry locking of dput and dentry lru scanning\nmuch simpler.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "64c2ce8b72eceec4030b04bca32d098b3d1431bb",
      "tree": "d296c9282da04017457e44d36cf1bbda3451e2ac",
      "parents": [
        "a8a5da996df7d2d91b5aef2752da9adcefea4bc6"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Thu Dec 09 11:35:25 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 04 13:10:41 2011 -0500"
      },
      "message": "nfsv4: Switch to generic xattr handling code\n\nThis patch make nfsv4 use the generic xattr handling code\nto get the nfsv4 acl. This will help us to add richacl\nsupport to nfsv4 in later patches\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a8a5da996df7d2d91b5aef2752da9adcefea4bc6",
      "tree": "605be5f4af59d5cc324ae11c18a8b34db7ab3c6a",
      "parents": [
        "bf0c84f1614bffc59565d04f09b9ac6b1aa269a9"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Thu Dec 09 11:35:14 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 04 13:10:40 2011 -0500"
      },
      "message": "nfs: Set MS_POSIXACL always\n\nWe want to skip VFS applying mode for NFS. So set MS_POSIXACL always\nand selectively use umask. Ideally we would want to use umask only\nwhen we don\u0027t have inheritable ACEs set. But NFS currently don\u0027t\nallow to send umask to the server. So this is best what we can do\nand this is consistent with NFSv3\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bf0c84f1614bffc59565d04f09b9ac6b1aa269a9",
      "tree": "cf310f5baaa323fe902320047f32e0d0c4a8f2a9",
      "parents": [
        "5f3e97c9ee6290befb5a2e78baf95ff951a8a34a"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Dec 28 17:02:46 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 04 13:10:39 2011 -0500"
      },
      "message": "NFS: use ERR_CAST()\n\nUse ERR_CAST() intead of wierd-looking cast.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "573c4e1ef53a6b891b73cc2257e1604da754a2e4",
      "tree": "b1e01ca46472ac6c936c4a144c3a160d8e1595bb",
      "parents": [
        "8111f373600cd43b3198b48b9238e3ad2fd9908d"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 14 14:58:11 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 16 12:37:24 2010 -0500"
      },
      "message": "NFS: Simplify -\u003edecode_dirent() calling sequence\n\nClean up.\n\nThe pointer returned by -\u003edecode_dirent() is no longer used as a\npointer.  The only call site (xdr_decode() in fs/nfs/dir.c) simply\nextracts the errno value encoded in the pointer.  Replace the\nreturned pointer with a standard integer errno return value.\n\nAlso, pass the \"server\" argument as part of the nfs_entry instead of\nas a separate parameter.  It\u0027s faster to derive \"server\" in\nnfs_readdir_xdr_to_array() since we already have the directory\u0027s inode\nhandy.  \"server\" ought to be invariant for a set of entries in the\nsame directory, right?\n\nThe legacy versions of decode_dirent() don\u0027t use \"server\" anyway, so\nit\u0027s wasted work for them to derive and pass \"server\" for each entry.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nTested-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "47c716cbf638a16583441d78be3fc24345eab636",
      "tree": "ee06a3e432e9fdc12438423745674442acbbeb0f",
      "parents": [
        "18fb5fe40ce7f789b5cfc3aa81ff1e6175b0a5be"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 07 12:44:56 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 07 14:09:02 2010 -0500"
      },
      "message": "NFS: Readdir cleanups\n\nNo functional changes, but clarify the code.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "18fb5fe40ce7f789b5cfc3aa81ff1e6175b0a5be",
      "tree": "e7d191c921142ecb1cb2eba0634cb0c6ba89459d",
      "parents": [
        "11de3b11e08cac26d59e88efaf4e316701883552"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 07 12:41:58 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 07 12:41:58 2010 -0500"
      },
      "message": "NFS: nfs_readdir_search_for_cookie() don\u0027t mark as eof if cookie not found\n\nIf we\u0027re searching for a specific cookie, and it isn\u0027t found in the page\ncache, we should try an uncached_readdir(). To do so, we return EBADCOOKIE,\nbut we don\u0027t set desc-\u003eeof.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "11de3b11e08cac26d59e88efaf4e316701883552",
      "tree": "e4cc282e692560897c42c5fbc8df227d5da669d4",
      "parents": [
        "6072d13c429373c5d63b69dadbbef40a9b035552"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 01 14:17:06 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 02 09:58:00 2010 -0500"
      },
      "message": "NFS: Fix a memory leak in nfs_readdir\n\nWe need to ensure that the entries in the nfs_cache_array get cleared\nwhen the page is removed from the page cache. To do so, we use the\nfreepage address_space operation.\n\nChange nfs_readdir_clear_array to use kmap_atomic(), so that the\nfunction can be safely called from all contexts.\n\nFinally, modify the cache_page_release helper to call\nnfs_readdir_clear_array directly, when dealing with an anonymous\npage from \u0027uncached_readdir\u0027.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0aded708d125a3ff7e5abaea9c2d9c6d7ebbfdcd",
      "tree": "124bb3e0e1cd8104f9310f7df224ca00301c10c7",
      "parents": [
        "22a5b566c8c442b0b35b3b106795e2f2b3578096"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Nov 30 21:56:32 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 01 08:16:16 2010 -0500"
      },
      "message": "NFS: Ensure we use the correct cookie in nfs_readdir_xdr_filler\n\nWe need to use the cookie from the previous array entry, not the\nactual cookie that we are searching for (except for the case of\nuncached_readdir).\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "37a09f07459753e7c98d4e21f1c61e8756923f81",
      "tree": "eecab05dc4b4c2de61f4b31f51d301fdcf210737",
      "parents": [
        "e8a7e48bb248a1196484d3f8afa53bded2b24e71"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Nov 30 12:42:34 2010 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 30 10:18:49 2010 -0800"
      },
      "message": "NFS: Fix a readdirplus bug\n\nWhen comparing filehandles in the helper nfs_same_file(), we should not be\nusing \u0027strncmp()\u0027: filehandles are not null terminated strings.\n\nInstead, we should just use the existing helper nfs_compare_fh().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0b26a0bf6ff398185546432420bb772bcfdf8d94",
      "tree": "705b94c8662cf18cf8cd18c6b8c68d751d87acb7",
      "parents": [
        "3020093f578fb6c9acc6914dfd887a1ebd1db659"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Nov 20 14:26:44 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 22 13:24:48 2010 -0500"
      },
      "message": "NFS: Ensure we return the dirent-\u003ed_type when it is known\n\nStore the dirent-\u003ed_type in the struct nfs_cache_array_entry so that we\ncan use it in getdents() calls.\n\nThis fixes a regression with the new readdir code.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3020093f578fb6c9acc6914dfd887a1ebd1db659",
      "tree": "473af4f139dcb3975b20bcd9d2e04fb1cadc97b3",
      "parents": [
        "ece0b4233b6b915d1f63add2bd9f2733aec6317a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Nov 20 15:18:22 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 22 13:24:47 2010 -0500"
      },
      "message": "NFS: Correct the array bound calculation in nfs_readdir_add_to_array\n\nIt looks as if the array size calculation in MAX_READDIR_ARRAY does not\ntake the alignment of struct nfs_cache_array_entry into account.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ece0b4233b6b915d1f63add2bd9f2733aec6317a",
      "tree": "f0f9a2ec50079ccd0c95ddce082648ab25923cfe",
      "parents": [
        "85f8607e163f8d281fb407357279cb4ac6df12e6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Nov 20 13:55:33 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 22 13:24:47 2010 -0500"
      },
      "message": "NFS: Don\u0027t ignore errors from nfs_do_filldir()\n\nWe should ignore the errors from the filldir callback, and just interpret\nthem as meaning we should exit, however we should definitely pass back\nENOMEM errors.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "85f8607e163f8d281fb407357279cb4ac6df12e6",
      "tree": "abfa44658e17b4c3522aac999c7736f5d4782ff6",
      "parents": [
        "7a8e1dc34f52fd2927dbf7e520d7cd8eadc51336"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Nov 20 13:24:49 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 22 13:24:46 2010 -0500"
      },
      "message": "NFS: Fix the error handling in \"uncached_readdir()\"\n\nCurrently, uncached_readdir() is broken because if fails to handle\nthe results from nfs_readdir_xdr_to_array() correctly.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7a8e1dc34f52fd2927dbf7e520d7cd8eadc51336",
      "tree": "de5e01e628e0fec4a20e335ef5a3163e307ba3fa",
      "parents": [
        "e7c58e974a0318fcca5368e7b3570e10e9ae9028"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Nov 20 13:24:46 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 22 13:24:45 2010 -0500"
      },
      "message": "NFS: Fix a page leak in uncached_readdir()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e7c58e974a0318fcca5368e7b3570e10e9ae9028",
      "tree": "de7c5bf4d565ce0365af6fe1d82bd035deb37024",
      "parents": [
        "5c346854d8ce6ca91931f8fc9177934257a667d0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Nov 20 13:22:24 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 22 13:24:44 2010 -0500"
      },
      "message": "NFS: Fix a page leak in nfs_do_filldir()\n\nnfs_do_filldir() must always free desc-\u003epage when it is done, otherwise\nwe end up leaking the page.\n\nAlso remove unused variable \u0027dentry\u0027.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5c346854d8ce6ca91931f8fc9177934257a667d0",
      "tree": "de10054f20a2bc3a2fc58ca394854d40aebc8654",
      "parents": [
        "463a376eae1c92a66c912af539bfd4bbefa37673"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Nov 20 12:43:45 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 22 13:24:44 2010 -0500"
      },
      "message": "NFS: Assume eof if the server returns no readdir records\n\nSome servers are known to be buggy w.r.t. this. Deal with them...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "04e4bd1c67f941d81bff78a3b6b94194f081b7df",
      "tree": "7f6cd633219bc19d7a716a0c2af4eaae2b5170ba",
      "parents": [
        "94f58df8e545657f0b2d16eca1ac7a4ec39ed6be"
      ],
      "author": {
        "name": "Catalin Marinas",
        "email": "catalin.marinas@arm.com",
        "time": "Thu Nov 11 12:53:47 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Nov 16 12:03:14 2010 -0500"
      },
      "message": "nfs: Ignore kmemleak false positive in nfs_readdir_make_qstr\n\nStrings allocated via kmemdup() in nfs_readdir_make_qstr() are\nreferenced from the nfs_cache_array which is stored in a page cache\npage. Kmemleak does not scan such pages and it reports several false\npositives. This patch annotates the string-\u003ename pointer so that\nkmemleak does not consider it a real leak.\n\nSigned-off-by: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nCc: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ac39612824e1fad8baf82c2841e42b2142af3445",
      "tree": "12a841ca751a50f324dc97963579002943d0c3c9",
      "parents": [
        "8cd51a0ccd1beda4482507769887c0be9d70f8c1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 15 20:26:22 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 15 20:44:29 2010 -0500"
      },
      "message": "NFS: readdir shouldn\u0027t read beyond the reply returned by the server\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8cd51a0ccd1beda4482507769887c0be9d70f8c1",
      "tree": "3fe5c05dcc6e532641d1be4e797ab869c71c36ad",
      "parents": [
        "23ebbd9acf5756b6eb783df84403e3ab668a6bce"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 15 20:26:22 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 15 20:44:28 2010 -0500"
      },
      "message": "NFS: Fix a couple of regressions in readdir.\n\nFix up the issue that array-\u003eeof_index needs to be able to be set\neven if array-\u003esize \u003d\u003d 0.\n\nEnsure that we catch all important memory allocation error conditions\nand/or kmap() failures.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "23ebbd9acf5756b6eb783df84403e3ab668a6bce",
      "tree": "11f632c35ccd0569b70811ad7b78c14831697041",
      "parents": [
        "1e657bd51f313d87fbbb22d1edf625dba87ef353"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Nov 03 10:24:16 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 15 20:44:27 2010 -0500"
      },
      "message": "Revert \"NFSv4: Fall back to ordinary lookup if nfs4_atomic_open() returns EISDIR\"\n\nThis reverts commit 80e60639f1b7c121a7fea53920c5a4b94009361a.\n\nThis change requires further fixes to ensure that the open doesn\u0027t\nsucceed if the lookup later results in a regular file being created.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "426e1f5cec4821945642230218876b0e89aafab1",
      "tree": "2728ace018d0698886989da586210ef1543a7098",
      "parents": [
        "9e5fca251f44832cb996961048ea977f80faf6ea",
        "63997e98a3be68d7cec806d22bf9b02b2e1daabb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (52 commits)\n  split invalidate_inodes()\n  fs: skip I_FREEING inodes in writeback_sb_inodes\n  fs: fold invalidate_list into invalidate_inodes\n  fs: do not drop inode_lock in dispose_list\n  fs: inode split IO and LRU lists\n  fs: switch bdev inode bdi\u0027s correctly\n  fs: fix buffer invalidation in invalidate_list\n  fsnotify: use dget_parent\n  smbfs: use dget_parent\n  exportfs: use dget_parent\n  fs: use RCU read side protection in d_validate\n  fs: clean up dentry lru modification\n  fs: split __shrink_dcache_sb\n  fs: improve DCACHE_REFERENCED usage\n  fs: use percpu counter for nr_dentry and nr_dentry_unused\n  fs: simplify __d_free\n  fs: take dcache_lock inside __d_path\n  fs: do not assign default i_ino in new_inode\n  fs: introduce a per-cpu last_ino allocator\n  new helper: ihold()\n  ...\n"
    },
    {
      "commit": "7de9c6ee3ecffd99e1628e81a5ea5468f7581a1f",
      "tree": "88787e77ba8a253d0a26aeda4bd5e58532d592e0",
      "parents": [
        "646ec4615cd05972581c9c5342ed7a1e77df17bb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Oct 23 11:11:40 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "new helper: ihold()\n\nClones an existing reference to inode; caller must already hold one.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4a201d6e3f4253f918555cc7c27c418f8ac1bb65",
      "tree": "9424a999b43f8c4d397f513a32258a64f3bed61a",
      "parents": [
        "82f2e5472e2304e531c2fa85e457f4a71070044e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 14:53:23 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:38 2010 -0400"
      },
      "message": "NFS: Ensure we check all allocation return values in new readdir code\n\nAlso some clean ups.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "82f2e5472e2304e531c2fa85e457f4a71070044e",
      "tree": "45e170b0ec64bcc07e51ae36919ca6cba1163703",
      "parents": [
        "ae42c70a60fe330d9c2af7c4b92ce78484308e37"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Oct 21 16:33:18 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:37 2010 -0400"
      },
      "message": "NFS: Readdir plus in v4\n\nBy requsting more attributes during a readdir, we can mimic the readdir plus\noperation that was in NFSv3.\n\nTo test, I ran the command `ls -lU --color\u003dnone` on directories with various\nnumbers of files.  Without readdir plus, I see this:\n\nn files |    100    |   1,000   |  10,000   |  100,000  | 1,000,000\n--------+-----------+-----------+-----------+-----------+----------\nreal    | 0m00.153s | 0m00.589s | 0m05.601s | 0m56.691s | 9m59.128s\nuser    | 0m00.007s | 0m00.007s | 0m00.077s | 0m00.703s | 0m06.800s\nsys     | 0m00.010s | 0m00.070s | 0m00.633s | 0m06.423s | 1m10.005s\naccess  | 3         | 1         | 1         | 4         | 31\ngetattr | 2         | 1         | 1         | 1         | 1\nlookup  | 104       | 1,003     | 10,003    | 100,003   | 1,000,003\nreaddir | 2         | 16        | 158       | 1,575     | 15,749\ntotal   | 111       | 1,021     | 10,163    | 101,583   | 1,015,784\n\nWith readdir plus enabled, I see this:\n\nn files |    100    |   1,000   |  10,000   |  100,000  | 1,000,000\n--------+-----------+-----------+-----------+-----------+----------\nreal    | 0m00.115s | 0m00.206s | 0m01.079s | 0m12.521s | 2m07.528s\nuser    | 0m00.003s | 0m00.003s | 0m00.040s | 0m00.290s | 0m03.296s\nsys     | 0m00.007s | 0m00.020s | 0m00.120s | 0m01.357s | 0m17.556s\naccess  | 3         | 1         | 1         | 1         | 7\ngetattr | 2         | 1         | 1         | 1         | 1\nlookup  | 4         | 3         | 3         | 3         | 3\nreaddir | 6         | 62        | 630       | 6,300     | 62,993\ntotal   | 15        | 67        | 635       | 6,305     | 63,004\n\nReaddir plus disabled has about a 16x increase in the number of rpc calls and\nis 4 - 5 times slower on large directories.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9942438089d5c0e3adecdcb7bc360b8fe0ce7e62",
      "tree": "6c6fa331811f6c8e5217193276602bd353613061",
      "parents": [
        "3c8a1aeed8fd7f89bd0400fad72cbc1ac3460217"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Oct 21 16:33:16 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:36 2010 -0400"
      },
      "message": "NFS: check xdr_decode for errors\n\nCheck if the decoded entry has the eof bit set when returning from xdr_decode\nwith an error.  If it does, we should set the eof bits in the array before\nreturning.  This should keep us from looping when we expect more data but the\nserver doesn\u0027t give us anything new.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3c8a1aeed8fd7f89bd0400fad72cbc1ac3460217",
      "tree": "7483a41703dafcbc8526c112e3e625c3a881fc99",
      "parents": [
        "56e4ebf877b6043c289bda32a5a7385b80c17dee"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Oct 21 16:33:16 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:35 2010 -0400"
      },
      "message": "NFS: nfs_readdir_filler catch all errors\n\nCheck for all errors, not a specific one.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "56e4ebf877b6043c289bda32a5a7385b80c17dee",
      "tree": "160ae8d5b5ee3871d02a9f5283187430c9ec5ffe",
      "parents": [
        "afa8ccc978c24d8ab22e3b3b8cbd1054c84c070b"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Wed Oct 20 15:44:37 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:35 2010 -0400"
      },
      "message": "NFS: readdir with vmapped pages\n\nWe can use vmapped pages to read more information from the network at once.\nThis will reduce the number of calls needed to complete a readdir.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\n[trondmy: Added #include for linux/vmalloc.h\u003e in fs/nfs/dir.c]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "babddc72a9468884ce1a23db3c3d54b0afa299f0",
      "tree": "b176e5795b47c73c47543acdc546da0c38619ddc",
      "parents": [
        "ba8e452a4fe64a51b74d43761e14d99f0666cc45"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Wed Oct 20 15:44:29 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:33 2010 -0400"
      },
      "message": "NFS: decode_dirent should use an xdr_stream\n\nConvert nfs*xdr.c to use an xdr stream in decode_dirent.  This will prevent a\nkernel oops that has been occuring when reading a vmapped page.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d39ab9de3b80da5835049b1c3b49da4e84e01c07",
      "tree": "8ffd7947d927f94bc467fd509c64d563b6f0110d",
      "parents": [
        "baf57a09e9d87b14be5e2788828169394a2525ab"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Fri Sep 24 18:50:01 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:31 2010 -0400"
      },
      "message": "NFS: re-add readdir plus\n\nThis patch adds readdir plus support to the cache array.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "baf57a09e9d87b14be5e2788828169394a2525ab",
      "tree": "77b35fe3ef7868f3c642093a4a8c01ed6be584cd",
      "parents": [
        "d1bacf9eb2fd0e7ef870acf84b9e3b157dcfa7dc"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 24 18:49:43 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:30 2010 -0400"
      },
      "message": "NFS: Optimise the readdir searches\n\nIf we\u0027re going through the loop in nfs_readdir() more than once, we usually\ndo not want to restart searching from the beginning of the pages cache.\n\nWe only want to do that if the previous search failed...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d1bacf9eb2fd0e7ef870acf84b9e3b157dcfa7dc",
      "tree": "8b6746ade07c71f0d40c29b76dbe65e999c038f7",
      "parents": [
        "8c7597f6ce212bbc8ca05090e21820ffe9792b3d"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Fri Sep 24 14:48:42 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:30 2010 -0400"
      },
      "message": "NFS: add readdir cache array\n\nThis patch adds the readdir cache array and functions to retreive the array\nstored on a cache page, clear the array by freeing allocated memory, add an\nentry to the array, and search the array for a given cookie.\n\nIt then modifies readdir to make use of the new cache array.\nWith the new cache array method, we no longer need some of this code.\n\nFinally, nfs_llseek_dir() will set file-\u003ef_pos to a value greater than 0 and\ndesc-\u003edir_cookie to zero.  When we see this, readdir needs to find the file\nat position file-\u003ef_pos from the start of the directory.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "898f635c4297e91ceac675d83c4a460f26118342",
      "tree": "1e6e1d3fb179fffa8f78a094a0db1e31e841ad19",
      "parents": [
        "6eaa61496fb3b93cceface7a296415fc4c030bce"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 11:24:25 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:17 2010 -0400"
      },
      "message": "NFSv4: Don\u0027t ignore the error return codes from nfs_intent_set_file\n\nIf nfs_intent_set_file() returns an error, we usually want to pass that\nback up the stack.\n\nAlso ensure that nfs_open_revalidate() returns \u00271\u0027 on success.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "aa510da5bfe1dfe263215fd0e05dac96e738a782",
      "tree": "23653cea38532e688f593e36295c312158558a79",
      "parents": [
        "a00dd6c03dd97a777c291a8af8682be4b5fadf8d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Sep 29 15:11:56 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Sep 29 15:16:25 2010 -0400"
      },
      "message": "NFS: We must use list_for_each_entry_safe in nfs_access_cache_shrinker\n\nWe may end up removing the current entry from nfs_access_lru_list.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "779c51795bfb35c2403c924b9de90ca9356bc693",
      "tree": "6bdd2e6896425b58df4ec457c583a15af21cb0c4",
      "parents": [
        "e8582a8b96f329083b4da29aa87bc43cc0d80dd1"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Fri Sep 17 17:31:30 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 17:31:30 2010 -0400"
      },
      "message": "nfs: move nfs_sillyrename to unlink.c\n\n...since that\u0027s where most of the sillyrenaming code lives. A comment\nblock is added to the beginning as well to clarify how sillyrenaming\nworks. Also, make nfs_async_unlink static as nfs_sillyrename is the only\ncaller.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nReviewed-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2b484297e48c3fbb1846fc6ea10036d9465273e7",
      "tree": "bfd8f5cfba73b597d5277ba48e02fd2c13ece9b3",
      "parents": [
        "c0204fd2b8fe047b18b67e07e1bf2a03691240cd"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "message": "NFS: Add an \u0027open_context\u0027 element to struct nfs_rpc_ops\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c0204fd2b8fe047b18b67e07e1bf2a03691240cd",
      "tree": "d6cf75bc11d08f190c0757ba98b5ae6baef49402",
      "parents": [
        "535918f14176396646b5547b7d1353c932f24f5e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "message": "NFS: Clean up nfs4_proc_create()\n\nRemove all remaining references to the struct nameidata from the low level\nNFS layers. Again pass down a partially initialised struct nfs_open_context\nwhen we want to do atomic open+create.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "535918f14176396646b5547b7d1353c932f24f5e",
      "tree": "0736137c736ac8c35cfbdd99a1de68eb556e4b4a",
      "parents": [
        "b8d4caddd871758ffa156be51b4c8be82fea470d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "message": "NFSv4: Further cleanups for nfs4_open_revalidate()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b8d4caddd871758ffa156be51b4c8be82fea470d",
      "tree": "c388304ca2f1163b2737409ccc4cbc2d29ad3f41",
      "parents": [
        "f46e0bd34ec002d0727761da52b8fd47f06d4440"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "message": "NFSv4: Clean up nfs4_open_revalidate\n\nRemove references to \u0027struct nameidata\u0027 from the low-level open_revalidate\ncode, and replace them with a struct nfs_open_context which will be\ncorrectly initialised upon success.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f46e0bd34ec002d0727761da52b8fd47f06d4440",
      "tree": "bb4ce4d00a9857b370765abf6faf89a09f4c4ff4",
      "parents": [
        "cd9a1c0e5ac681871d64804f82291649e2a0accb"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:50 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:50 2010 -0400"
      },
      "message": "NFSv4: Further minor cleanups for nfs4_atomic_open()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cd9a1c0e5ac681871d64804f82291649e2a0accb",
      "tree": "900c2bf6ba75c2a02af07091afcf4ba4cfdb2396",
      "parents": [
        "859d5024f450686ad0a42ed3c06f2fa20295c9e6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:50 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:50 2010 -0400"
      },
      "message": "NFSv4: Clean up nfs4_atomic_open\n\nStart moving the \u0027struct nameidata\u0027 dependent code out of the lower level\nNFS code in preparation for the removal of open intents.\n\nInstead of the struct nameidata, we pass down a partially initialised\nstruct nfs_open_context that will be fully initialised by the atomic open\nupon success.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0a377cff9428af2da2b293d11e07bc4dbf064ee5",
      "tree": "af97cd65f7e662bef87866b6a876831416f60a1f",
      "parents": [
        "df486a25900f4dba9cdc3886c4ac871951c6aef3"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Aug 18 09:25:42 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Aug 18 09:25:42 2010 -0400"
      },
      "message": "NFS: Fix an Oops in the NFSv4 atomic open code\n\nAdam Lackorzynski reports:\n\nwith 2.6.35.2 I\u0027m getting this reproducible Oops:\n\n[  110.825396] BUG: unable to handle kernel NULL pointer dereference at\n(null)\n[  110.828638] IP: [\u003cffffffff811247b7\u003e] encode_attrs+0x1a/0x2a4\n[  110.828638] PGD be89f067 PUD bf18f067 PMD 0\n[  110.828638] Oops: 0000 [#1] SMP\n[  110.828638] last sysfs file: /sys/class/net/lo/operstate\n[  110.828638] CPU 2\n[  110.828638] Modules linked in: rtc_cmos rtc_core rtc_lib amd64_edac_mod\ni2c_amd756 edac_core i2c_core dm_mirror dm_region_hash dm_log dm_snapshot\nsg sr_mod usb_storage ohci_hcd mptspi tg3 mptscsih mptbase usbcore nls_base\n[last unloaded: scsi_wait_scan]\n[  110.828638]\n[  110.828638] Pid: 11264, comm: setchecksum Not tainted 2.6.35.2 #1\n[  110.828638] RIP: 0010:[\u003cffffffff811247b7\u003e]  [\u003cffffffff811247b7\u003e]\nencode_attrs+0x1a/0x2a4\n[  110.828638] RSP: 0000:ffff88003bf5b878  EFLAGS: 00010296\n[  110.828638] RAX: ffff8800bddb48a8 RBX: ffff88003bf5bb18 RCX:\n0000000000000000\n[  110.828638] RDX: ffff8800be258800 RSI: 0000000000000000 RDI:\nffff88003bf5b9f8\n[  110.828638] RBP: 0000000000000000 R08: ffff8800bddb48a8 R09:\n0000000000000004\n[  110.828638] R10: 0000000000000003 R11: ffff8800be779000 R12:\nffff8800be258800\n[  110.828638] R13: ffff88003bf5b9f8 R14: ffff88003bf5bb20 R15:\nffff8800be258800\n[  110.828638] FS:  0000000000000000(0000) GS:ffff880041e00000(0063)\nknlGS:00000000556bd6b0\n[  110.828638] CS:  0010 DS: 002b ES: 002b CR0: 000000008005003b\n[  110.828638] CR2: 0000000000000000 CR3: 00000000be8ef000 CR4:\n00000000000006e0\n[  110.828638] DR0: 0000000000000000 DR1: 0000000000000000 DR2:\n0000000000000000\n[  110.828638] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7:\n0000000000000400\n[  110.828638] Process setchecksum (pid: 11264, threadinfo\nffff88003bf5a000, task ffff88003f232210)\n[  110.828638] Stack:\n[  110.828638]  0000000000000000 ffff8800bfbcf920 0000000000000000\n0000000000000ffe\n[  110.828638] \u003c0\u003e 0000000000000000 0000000000000000 0000000000000000\n0000000000000000\n[  110.828638] \u003c0\u003e 0000000000000000 0000000000000000 0000000000000000\n0000000000000000\n[  110.828638] Call Trace:\n[  110.828638]  [\u003cffffffff81124c1f\u003e] ? nfs4_xdr_enc_setattr+0x90/0xb4\n[  110.828638]  [\u003cffffffff81371161\u003e] ? call_transmit+0x1c3/0x24a\n[  110.828638]  [\u003cffffffff813774d9\u003e] ? __rpc_execute+0x78/0x22a\n[  110.828638]  [\u003cffffffff81371a91\u003e] ? rpc_run_task+0x21/0x2b\n[  110.828638]  [\u003cffffffff81371b7e\u003e] ? rpc_call_sync+0x3d/0x5d\n[  110.828638]  [\u003cffffffff8111e284\u003e] ? _nfs4_do_setattr+0x11b/0x147\n[  110.828638]  [\u003cffffffff81109466\u003e] ? nfs_init_locked+0x0/0x32\n[  110.828638]  [\u003cffffffff810ac521\u003e] ? ifind+0x4e/0x90\n[  110.828638]  [\u003cffffffff8111e2fb\u003e] ? nfs4_do_setattr+0x4b/0x6e\n[  110.828638]  [\u003cffffffff8111e634\u003e] ? nfs4_do_open+0x291/0x3a6\n[  110.828638]  [\u003cffffffff8111ed81\u003e] ? nfs4_open_revalidate+0x63/0x14a\n[  110.828638]  [\u003cffffffff811056c4\u003e] ? nfs_open_revalidate+0xd7/0x161\n[  110.828638]  [\u003cffffffff810a2de4\u003e] ? do_lookup+0x1a4/0x201\n[  110.828638]  [\u003cffffffff810a4733\u003e] ? link_path_walk+0x6a/0x9d5\n[  110.828638]  [\u003cffffffff810a42b6\u003e] ? do_last+0x17b/0x58e\n[  110.828638]  [\u003cffffffff810a5fbe\u003e] ? do_filp_open+0x1bd/0x56e\n[  110.828638]  [\u003cffffffff811cd5e0\u003e] ? _atomic_dec_and_lock+0x30/0x48\n[  110.828638]  [\u003cffffffff810a9b1b\u003e] ? dput+0x37/0x152\n[  110.828638]  [\u003cffffffff810ae063\u003e] ? alloc_fd+0x69/0x10a\n[  110.828638]  [\u003cffffffff81099f39\u003e] ? do_sys_open+0x56/0x100\n[  110.828638]  [\u003cffffffff81027a22\u003e] ? ia32_sysret+0x0/0x5\n[  110.828638] Code: 83 f1 01 e8 f5 ca ff ff 48 83 c4 50 5b 5d 41 5c c3 41\n57 41 56 41 55 49 89 fd 41 54 49 89 d4 55 48 89 f5 53 48 81 ec 18 01 00 00\n\u003c8b\u003e 06 89 c2 83 e2 08 83 fa 01 19 db 83 e3 f8 83 c3 18 a8 01 8d\n[  110.828638] RIP  [\u003cffffffff811247b7\u003e] encode_attrs+0x1a/0x2a4\n[  110.828638]  RSP \u003cffff88003bf5b878\u003e\n[  110.828638] CR2: 0000000000000000\n[  112.840396] ---[ end trace 95282e83fd77358f ]---\n\nWe need to ensure that the O_EXCL flag is turned off if the user doesn\u0027t\nset O_CREAT.\n\nCc: stable@kernel.org\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f5a73672d1811f2fb1dcb62ca90ceb12b2050ae7",
      "tree": "f9d8798abbcbb6df399dea3d718ded7b2b2b5270",
      "parents": [
        "669502ff31d7dba1849aec7ee2450a3c61f57d39"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 10 10:20:05 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 10 10:20:05 2010 -0400"
      },
      "message": "NFS: allow close-to-open cache semantics to apply to root of NFS filesystem\n\n\n\nTo obey NFS cache semantics, the client must verify the cached\nattributes when a file is opened.  In most cases this is done by a call to\nd_validate as one of the last steps in path_walk.\n\nHowever for the root of a filesystem, d_validate is only ever called\non the mounted-on filesystem (except when the path ends \u0027.\u0027 or \u0027..\u0027).\nSo NFS has no chance to validate the attributes.\n\nSo, in nfs_opendir, we revalidate the attributes if the opened\ndirectory is the mountpoint.  This may cause double-validation for \".\"\nand \"..\" lookups, but that is better than missing regular /path/name\nlookups completely.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5df6b8e65ad0f2eaee202ff002ac00d1ac605315",
      "tree": "2eff6606f8e39dc1fd7eb8a05feb2a9927151805",
      "parents": [
        "fe21ea18c742ab0eb8f6f8ebc543374839a02a87",
        "3dce9a5c3a39a664e372886ea86c42ae7ae33dfc"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 13:19:36 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 13:19:36 2010 -0700"
      },
      "message": "Merge branch \u0027nfs-for-2.6.36\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6\n\n* \u0027nfs-for-2.6.36\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (42 commits)\n  NFS: NFSv4.1 is no longer a \"developer only\" feature\n  NFS: NFS_V4 is no longer an EXPERIMENTAL feature\n  NFS: Fix /proc/mount for legacy binary interface\n  NFS: Fix the locking in nfs4_callback_getattr\n  SUNRPC: Defer deleting the security context until gss_do_free_ctx()\n  SUNRPC: prevent task_cleanup running on freed xprt\n  SUNRPC: Reduce asynchronous RPC task stack usage\n  SUNRPC: Move the bound cred to struct rpc_rqst\n  SUNRPC: Clean up of rpc_bindcred()\n  SUNRPC: Move remaining RPC client related task initialisation into clnt.c\n  SUNRPC: Ensure that rpc_exit() always wakes up a sleeping task\n  SUNRPC: Make the credential cache hashtable size configurable\n  SUNRPC: Store the hashtable size in struct rpc_cred_cache\n  NFS: Ensure the AUTH_UNIX credcache is allocated dynamically\n  NFS: Fix the NFS users of rpc_restart_call()\n  SUNRPC: The function rpc_restart_call() should return success/failure\n  NFSv4: Get rid of the bogus RPC_ASSASSINATED(task) checks\n  NFSv4: Clean up the process of renewing the NFSv4 lease\n  NFSv4.1: Handle NFS4ERR_DELAY on SEQUENCE correctly\n  NFS: nfs_rename() should not have to flush out writebacks\n  ...\n"
    },
    {
      "commit": "0a8ebba943dd89bdd57c5dab5a66932f690847d9",
      "tree": "b7ef484c9ecb62ebae09c6739fe016d9954cf243",
      "parents": [
        "1b924e5f878e3cd62a20bd8dbf3b911a40185a99"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 31 14:29:06 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 03 22:06:41 2010 -0400"
      },
      "message": "NFS: nfs_rename() should not have to flush out writebacks\n\nWe don\u0027t really support nfs servers that invalidate the file handle after a\nrename, so precautions such as flushing out dirty data before renaming the\nfile are superfluous.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9cfcac810e8993fa7a5bfd24b1a21f1dbbb03a7b",
      "tree": "86fae80c744e46b15b8eb9aa23fead7e63a64159",
      "parents": [
        "692a8a231b212dfc68f612956d63f34abf098e0f"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Fri Jul 23 11:43:51 2010 -0400"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Mon Aug 02 15:35:06 2010 +1000"
      },
      "message": "vfs: re-introduce MAY_CHDIR\n\nCurrently MAY_ACCESS means that filesystems must check the permissions\nright then and not rely on cached results or the results of future\noperations on the object.  This can be because of a call to sys_access() or\nbecause of a call to chdir() which needs to check search without relying on\nany future operations inside that dir.  I plan to use MAY_ACCESS for other\npurposes in the security system, so I split the MAY_ACCESS and the\nMAY_CHDIR cases.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nAcked-by:  Stephen D. Smalley \u003csds@tycho.nsa.gov\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "7f8275d0d660c146de6ee3017e1e2e594c49e820",
      "tree": "884db927118b44102750b5168ee36ef4b8b5cb4e",
      "parents": [
        "d0c6f6258478e1dba532bf7c28e2cd6e1047d3a4"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Jul 19 14:56:17 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Mon Jul 19 14:56:17 2010 +1000"
      },
      "message": "mm: add context argument to shrinker callback\n\nThe current shrinker implementation requires the registered callback\nto have global state to work from. This makes it difficult to shrink\ncaches that are not global (e.g. per-filesystem caches). Pass the shrinker\nstructure to the callback so that users can embed the shrinker structure\nin the context the shrinker needs to operate on and get back to it in the\ncallback via container_of().\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "7ea8085910ef3dd4f3cad6845aaa2b580d39b115",
      "tree": "d9c1edb5906f943f7d70bfb4b65106e29772d379",
      "parents": [
        "cc967be54710d97c05229b2e5ba2d00df84ddd64"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed May 26 17:53:25 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 27 22:05:02 2010 -0400"
      },
      "message": "drop unused dentry argument to -\u003efsync\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "59844a9bd73e084b0ffefc0e13226098e28c71ad",
      "tree": "7b897c2530fe7083d57755df684d1d808fb18f8b",
      "parents": [
        "0a68b0bed08eeb7ec62e0125f17856b1ccb1ea4b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 26 08:42:24 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 26 08:43:51 2010 -0400"
      },
      "message": "NFS: Fix a lock imbalance typo in nfs_access_cache_shrinker\n\nCommit 9c7e7e23371e629dbb3b341610a418cdf1c19d91 (NFS: Don\u0027t call iput() in\nnfs_access_cache_shrinker) unintentionally removed the spin unlock for the\ninode-\u003ei_lock.\n\nReported-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9c7e7e23371e629dbb3b341610a418cdf1c19d91",
      "tree": "c211183b99860d232500bf99d12775e47c4f0f9c",
      "parents": [
        "1a81bb8a1fa62ccb9b2411ac10ce702ca4ed302a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 13 12:51:06 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:36 2010 -0400"
      },
      "message": "NFS: Don\u0027t call iput() in nfs_access_cache_shrinker\n\niput() can potentially attempt to allocate memory, so we should avoid\ncalling it in a memory shrinker. Instead, rely on the fact that iput() will\ncall nfs_access_zap_cache().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1a81bb8a1fa62ccb9b2411ac10ce702ca4ed302a",
      "tree": "7a4d29a36c2646b8cdd67d50f3b7778636e1dfbe",
      "parents": [
        "61d5eb2985b3b1d69fd53d7dc9789037c27f8d91"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 13 12:51:06 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:35 2010 -0400"
      },
      "message": "NFS: Clean up nfs_access_zap_cache()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "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"
    }
  ],
  "next": "4704f0e274829e3af00737d2d9adace2d71a9605"
}
