)]}'
{
  "log": [
    {
      "commit": "e6305c43eda10ebfd2ad9e35d6e172ccc7bb3695",
      "tree": "8a95bd0e27fb3ce895cca9ef91af2e1605e4cdab",
      "parents": [
        "1bd5191d9f5d1928c4efdf604c4164b04bb88dbe"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 15 21:03:57 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 26 20:53:14 2008 -0400"
      },
      "message": "[PATCH] sanitize -\u003epermission() prototype\n\n* kill nameidata * argument; map the 3 bits in -\u003eflags anybody cares\n  about to new MAY_... ones and pass with the mask.\n* kill redundant gfs2_iop_permission()\n* sanitize ecryptfs_permission()\n* fix remaining places where -\u003epermission() instances might barf on new\n  MAY_... found in mask.\n\nThe obvious next target in that direction is permission(9)\n\nfolded fix for nfs_permission() breakage from Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c3cc8c019ca09767d7c9b5457d5cf8ac65085f44",
      "tree": "f06f3ec2e30994018b31da44ee81b8306b00af75",
      "parents": [
        "76566991f94c206d9c5881edcaf99ba72c9e9d61"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 15:44:23 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:56 2008 -0400"
      },
      "message": "NFS: Remove BKL from the readdir code\n\nPage accesses are serialised using the page locks, whereas all attribute\nupdates are serialised using the inode-\u003ei_lock.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "76566991f94c206d9c5881edcaf99ba72c9e9d61",
      "tree": "ed7ec44c59ae916639c1b775ac67cefa229b7e65",
      "parents": [
        "52e2e8d37e01edf38ccdccc983fb13ec1456d63d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 15:44:22 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:56 2008 -0400"
      },
      "message": "NFS: Remove BKL from the symlink code\n\nPage cache accesses are serialised using page locks, whereas attribute\nupdates are serialised using inode-\u003ei_lock.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "52e2e8d37e01edf38ccdccc983fb13ec1456d63d",
      "tree": "06f43fde01ae679fb2d29a343eef4531e34de015",
      "parents": [
        "bd9bb454b76fb6ca2d00f17313f9f9df5f5c404a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 15:44:21 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:55 2008 -0400"
      },
      "message": "NFS: Remove BKL from the sillydelete operations\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bd9bb454b76fb6ca2d00f17313f9f9df5f5c404a",
      "tree": "e5e0a7440552eca9e02a60e03c394ac0e91b76ab",
      "parents": [
        "fc0f684c21b5d4b41dc2ec76f7c0897ac98f5b6e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 16:09:59 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:55 2008 -0400"
      },
      "message": "NFS: Remove the BKL from the rename, rmdir and unlink operations\n\nAttribute updates are safe, and dentry operations are protected using VFS\nlevel locks. Defer removing the BKL from sillyrename until a separate\npatch.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fc0f684c21b5d4b41dc2ec76f7c0897ac98f5b6e",
      "tree": "686ee2a2d7b4f04d5812c76485c18c048c5366d2",
      "parents": [
        "fc81af535e462764e17f638d542973fbef13b026"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 15:44:20 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:54 2008 -0400"
      },
      "message": "NFS: Remove BKL from NFS lookup code\n\nAll dentry-related operations are already BKL-safe, since they are\nprotected by the VFS locking. No extra locks should be needed in the NFS\ncode.\n\nIn the case of nfs_revalidate_inode(), we\u0027re only doing an attribute\nupdate (protected by the inode-\u003ei_lock).\nIn the case of nfs_lookup(), we\u0027re instantiating a new dentry, so there\nshould be no contention possible until after we call d_materialise_unique.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fc81af535e462764e17f638d542973fbef13b026",
      "tree": "1e3c1c2e6a94698a9427ee21decd8a701bef947a",
      "parents": [
        "f1e2eda23513b68003202bddf1f84158baad8844"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 15:52:40 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:54 2008 -0400"
      },
      "message": "NFS: Remove the BKL from nfs_link()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f1e2eda23513b68003202bddf1f84158baad8844",
      "tree": "88e56131a18a1310e0d4a8bcabfce629496ca7d3",
      "parents": [
        "bba67e0e3f4caba2b2b90b48ed798fb0461bcb86"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 15:50:50 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:53 2008 -0400"
      },
      "message": "NFS: Remove the BKL from the inode creation operations\n\nnfs_instantiate() does not require the BKL, neither do the attribute\nupdates or the RPC code.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bba67e0e3f4caba2b2b90b48ed798fb0461bcb86",
      "tree": "c13781f1265ccd73b4f71a33e9bb22931e954c1e",
      "parents": [
        "b6a2e569e2157509951c9f3f58dfa18b44ce91b3"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 13:26:23 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:53 2008 -0400"
      },
      "message": "NFS: Remove BKL usage from open()\n\nAll the NFSv4 stateful operations are already protected by other locks (in\nparticular by the rpc_sequence locks.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4d80f2ecd506d9732ad94a6da104580bb47680d6",
      "tree": "26cb6bb08a53eae18dcf046b1041f20b5c9a9f8d",
      "parents": [
        "fa6dc9dc59c3a76fd209a97c8cf37395980fb903"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 15:44:18 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:52 2008 -0400"
      },
      "message": "NFS: Remove the BKL from the permission checking code\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1b83d707032a1be40a60ed0a9bd841662cc04a5d",
      "tree": "4c39cb618026a4480e06e5ed0d30c7a553a6fabf",
      "parents": [
        "d67d1c7bf948341fd8678c8e337ec27f4b46b206"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 15:44:04 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:50 2008 -0400"
      },
      "message": "NFS: Protect inode-\u003ei_nlink updates using inode-\u003ei_lock\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6da24bc9cfc645c619992e39aab09747164c9f14",
      "tree": "a2d092a395d219db6b251d4d7f481ca0f9f7ecb0",
      "parents": [
        "b7eaefaa8722fd98e5c2632640d1abd2b0c83e84"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jun 11 17:55:58 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 09 12:09:04 2008 -0400"
      },
      "message": "NFS: Use NFSDBG_FILE for all fops\n\nClean up: some fops use NFSDBG_FILE, some use NFSDBG_VFS.  Let\u0027s use\nNFSDBG_FILE for all fops, and consistently report file names instead\nof inode numbers.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cc0dd2d1052aede2946ad1338a8f6f5d5c604740",
      "tree": "e4566796e958935c4d21988c8c43b1d798f2c1d6",
      "parents": [
        "b84e06c58fdefdc42931f771dc295e63f4b27365"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jun 11 17:55:42 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 09 12:09:02 2008 -0400"
      },
      "message": "NFS: Make nfs_open methods consistent\n\nClean up: Report the same debugging info and count function calls the\nsame for files and directories in nfs_opendir() and nfs_file_open().\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b84e06c58fdefdc42931f771dc295e63f4b27365",
      "tree": "1018cbbb7559b928ee1ae7e29663de81ba56ef6b",
      "parents": [
        "549177863bac22f23663ee9f70c4e3b9fb269f2c"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jun 11 17:55:34 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 09 12:09:01 2008 -0400"
      },
      "message": "NFS: Make nfs_llseek methods consistent\n\nClean up: Report the same debugging info in nfs_llseek_dir() and\nnfs_llseek_file().\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "549177863bac22f23663ee9f70c4e3b9fb269f2c",
      "tree": "06ced21ed11c050cbb10f552b30e8e4368ccb487",
      "parents": [
        "cb3997b5a0b21864368bd1bd1d0929f9304fb6d9"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue May 27 16:29:07 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 09 12:09:00 2008 -0400"
      },
      "message": "NFS: Make nfs_fsync methods consistent\n\nClean up: Report the same debugging info, count function calls the same,\nand use similar function naming in nfs_fsync_dir() and nfs_fsync().\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2aac05a91971fbd1bf6cbed78b8731eb7454b9b7",
      "tree": "1bbbb13b7e4353bc729363582eef95925c523b7b",
      "parents": [
        "9c0fc4e28b57c5a6da7b58d60f71476c64d457a6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 07 13:26:10 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 08 15:22:40 2008 -0400"
      },
      "message": "NFS: Fix readdir cache invalidation\n\ninvalidate_inode_pages2_range() takes page offset arguments, not byte\nranges.\n\nAnother thought is that individual pages might perhaps get evicted by VM\npressure, in which case we might perhaps want to re-read not only the\nevicted page, but all subsequent pages too (in case the server returns\nmore/less data per page so that the alignment of the next entry\nchanges). We should therefore remove the condition that we only do this on\npage-\u003eindex\u003d\u003d0.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3110ff8048fb757b36112b044b384aea9c44d6e4",
      "tree": "5260f4973bd0848ddef3fb3c111386e59616abbc",
      "parents": [
        "46c8ac74250a396aca855e494f49a960797a6b5e"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Fri May 02 13:42:44 2008 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 16 09:43:29 2008 -0700"
      },
      "message": "nfs: replace remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc-specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "233607dbbc823caf685e778cabc49fb7f679900b",
      "tree": "13840137ee10788061cbec60fcfe8ea4c274558e",
      "parents": [
        "3dc5063786b273f1aee545844f6bd4e9651ebffe",
        "b48633bd086d21f4a2a5bea96c7e6c7ba58eb60c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Apr 24 14:01:02 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Apr 24 14:01:02 2008 -0400"
      },
      "message": "Merge branch \u0027devel\u0027\n"
    },
    {
      "commit": "2c463e95480829a2fe8f386589516e13b1289db6",
      "tree": "7294d93a15f62ccc2c649ef9782b7f85ae7d1ef8",
      "parents": [
        "ec82687f29127a954dd0da95dc1e0a4ce92b560c"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Fri Feb 15 14:37:56 2008 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Apr 19 00:29:27 2008 -0400"
      },
      "message": "[PATCH] r/o bind mounts: check mnt instead of superblock directly\n\nIf we depend on the inodes for writeability, we will not catch the r/o mounts\nwhen implemented.\n\nThis patches uses __mnt_want_write().  It does not guarantee that the mount\nwill stay writeable after the check.  But, this is OK for one of the checks\nbecause it is just for a printk().\n\nThe other two are probably unnecessary and duplicate existing checks in the\nVFS.  This won\u0027t make them better checks than before, but it will make them\ndetect r/o mounts.\n\nAcked-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nSigned-off-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "98a8e3239427051f5d44f2025b398bdcc3918f37",
      "tree": "aa3e6ba69dbf8575c2c6e10c013aa23d7d638af0",
      "parents": [
        "5c691044ecbca04dd558fca4c754121689fe1b34"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 12 12:25:28 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 14 13:42:49 2008 -0400"
      },
      "message": "SUNRPC: Add a helper rpcauth_lookup_generic_cred()\n\nThe NFSv4 protocol allows clients to negotiate security protocols on the\nfly in the case where an administrator on the server changes the export\nsettings and/or in the case where we may have a filesystem migration event.\n\nInstead of having the NFS client code cache credentials that are tied to a\nparticular AUTH method it is therefore preferable to have a generic credential\nthat can be converted into whatever AUTH is in use by the RPC client when\nthe read/write/sillyrename/... is put on the wire.\n\nWe do this by means of the new \"generic\" credential, which basically just\ncaches the minimal information that is needed to look up an RPCSEC_GSS,\nAUTH_SYS, or AUTH_NULL credential.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4e99a1ff3410c627a428d5ddb6cd2e7bc908a486",
      "tree": "ad22bf99412be3470ebe3a3dde51172826eb7a1a",
      "parents": [
        "c37dcd334c0b0a46a90cfa13b9f69e2aaa89bc09"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 06 12:34:59 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 07 14:35:41 2008 -0500"
      },
      "message": "NFS: Fix dentry revalidation for NFSv4 referrals and mountpoint crossings\n\nAs long as the directory contents haven\u0027t changed, we should just let the\npath walk proceed to cross the mountpoint. Apart from being an optimisation\nin the case of \u0027nohide\u0027 mountpoint traversals, it also fixes an issue with\nreferrals: referral inodes don\u0027t have valid filehandles, so calling\nnfs_revalidate_inode() on them is a bug.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "25606656b19a38bbece914c4c67101f674908f49",
      "tree": "216fee9dd03ae07c27f4247c24090af82526aa56",
      "parents": [
        "497799e7c0ac7e82164a510ebf8beed7b3635e34"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Tue Feb 12 06:49:01 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Feb 13 23:24:07 2008 -0500"
      },
      "message": "NFS: remove error field from nfs_readdir_descriptor_t\n\nThe error field in nfs_readdir_descriptor_t is never used outside of the\nfunction in which it is set. Remove the field and change the place that\ndoes use it to use an existing local variable.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6f23e3872cff238589f9bf39c71db2ea880c9a26",
      "tree": "7b118601dcd65ae2bee7eddbeae6bdd6d64f4423",
      "parents": [
        "e6f810759505bc86c009854b82cc495ffd8eb020"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 25 16:38:17 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:06:12 2008 -0500"
      },
      "message": "NFS: Fix a potential race between umount and nfs_access_cache_shrinker()\n\nThanks to Yawei Niu for spotting the race.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e6f810759505bc86c009854b82cc495ffd8eb020",
      "tree": "1590631fe3b222d49015dd53b421a5547e13e4dc",
      "parents": [
        "99fadcd76465842c014c88b8c9c19b457e9debc0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 24 18:14:34 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:06:12 2008 -0500"
      },
      "message": "NFS: Add an asynchronous delegreturn operation for use in nfs_clear_inode\n\nOtherwise, there is a potential deadlock if the last dput() from an NFSv4\nclose() or other asynchronous operation leads to nfs_clear_inode calling\nthe synchronous delegreturn.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3a10c30acc4821ca000b52ed0edafd0d3bf26a52",
      "tree": "535fe870e12f9a032112b16d4e31fe1d813ea2c3",
      "parents": [
        "fc6014771bde8a215a9a4ea24b45f76afeb3c922"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Wed Jan 23 08:58:59 2008 +0200"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:06:11 2008 -0500"
      },
      "message": "nfs: obliterate NFS_FLAGS macro\n\nuse NFS_I(inode)-\u003eflags instead\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bfc69a456642a51c89dfd8e5184468857cb44f32",
      "tree": "0853b31afcc2c8bd24a0e94e9280d1c1083501de",
      "parents": [
        "5cce428d953cc3843b100e078dbc3c01c6411b85"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 15 18:18:29 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:47 2008 -0500"
      },
      "message": "NFS: define a function to update nfsi-\u003ecache_change_attribute\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "77f111929d024165e736e919187cff017279bebe",
      "tree": "fb03b66823f8c60e8efcdb40f93fadd2fc283e80",
      "parents": [
        "d45b9d8baf41acb177abbbe6746b1dea094b8a28"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jan 28 19:43:19 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:22 2008 -0500"
      },
      "message": "NFS: Ensure that we eject stale inodes as soon as possible\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d45b9d8baf41acb177abbbe6746b1dea094b8a28",
      "tree": "2bb90613fb21865b6b23c676c00073d3c4729929",
      "parents": [
        "609005c319bc6062b95ed82e132884ed7e22cdb9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jan 28 19:43:18 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:22 2008 -0500"
      },
      "message": "NFS: Handle -ENOENT errors in unlink()/rmdir()/rename()\n\nIf the server returns an ENOENT error, we still need to do a d_delete() in\norder to ensure that the dentry is deleted.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fccca7fc6aab4e6b519e2d606ef34632e4f50e33",
      "tree": "4d12d88039d229263a610647df6c751585f714dc",
      "parents": [
        "5b10ca19ea4859d3884d10a3eb8495de92089792"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jan 26 17:37:47 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:21 2008 -0500"
      },
      "message": "NFS: Fix a sillyrename race...\n\nEnsure that readdir revalidates its data cache after blocking on\nsillyrename.\n\nAlso fix a typo in nfs_do_call_unlink(): swap the ^\u003d for an |\u003d. The result\nis the same, since we\u0027ve already checked that the flag is unset, but it\nmakes the code more readable.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4c30d56edcaaa0446370189e8ab5c5393dc20ca3",
      "tree": "53c5d0215259721972709122f558ab476bea4df3",
      "parents": [
        "5334eb13d455dd26b7064980b118e3c957929701"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Wed Nov 21 15:04:31 2007 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 26 16:24:49 2007 -0500"
      },
      "message": "NFS: fs/nfs/dir.c should #include \"internal.h\"\n\nEvery file should include the headers containing the prototypes for its global\nfunctions (in this case nfs_access_cache_shrinker()).\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "565277f63c616e11c37309a1e98c052d18ebbb55",
      "tree": "60fdddc5a1c97df696392e47ead71d33d39e487f",
      "parents": [
        "61e930a904966cc37e0a3404276f0b73037e57ca"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 15 18:17:53 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Oct 19 17:19:16 2007 -0400"
      },
      "message": "NFS: Fix a race in sillyrename\n\nlookup() and sillyrename() can race one another because the sillyrename()\ncompletion cannot take the parent directory\u0027s inode-\u003ei_mutex since the\nlatter may be held by whoever is calling dput().\n\nWe therefore have little option but to add extra locking to ensure that\nnfs_lookup() and nfs_atomic_open() do not race with the sillyrename\ncompletion.\nIf somebody has looked up the sillyrenamed file in the meantime, we just\ntransfer the sillydelete information to the new dentry.\n\nPlease refer to the bug-report at\n\thttp://bugzilla.linux-nfs.org/show_bug.cgi?id\u003d150\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f43bf0bebed7c33b698a8a25f95812f9e87c3843",
      "tree": "20c527153cde564ca3517cf6f214fa32727542bb",
      "parents": [
        "2a3f5fd45938bd86ce8faf4cb26be4f7e9ae2941"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 12:01:04 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:52 2007 -0400"
      },
      "message": "NFS: Add a boot parameter to disable 64 bit inode numbers\n\nThis boot parameter will allow legacy 32-bit applications which call stat()\nto continue to function even if the NFSv3/v4 server uses 64-bit inode\nnumbers.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c7c209730d635226b81e9aeae63b6dc8f445569f",
      "tree": "0817778cf1b0504839f8a3e83797826fbf9acccc",
      "parents": [
        "4f48af45842c6e78ab958c90344d3c940db4da15"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 19:22:40 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:23 2007 -0400"
      },
      "message": "NFS: Get rid of some obsolete macros\n\n- NFS_READTIME, NFS_CHANGE_ATTR are completely unused.\n- Inline the few remaining uses of NFS_ATTRTIMEO, and remove.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4f48af45842c6e78ab958c90344d3c940db4da15",
      "tree": "40f41baaf1931b47618034c21377a35b8ad926fe",
      "parents": [
        "9697d2342e1a480bc14921c52f185c2fe01016e7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 23:13:32 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:20 2007 -0400"
      },
      "message": "NFS: Simplify filehandle revalidation\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9697d2342e1a480bc14921c52f185c2fe01016e7",
      "tree": "bd4fba02d28777fc7705d8937a19740940fd5317",
      "parents": [
        "a12802cab8520f86c9a80bbf87d10ee6171687d1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 21:58:05 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:18 2007 -0400"
      },
      "message": "NFS: Ensure that nfs_link() returns a hashed dentry\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a12802cab8520f86c9a80bbf87d10ee6171687d1",
      "tree": "95e65c0541f0488b9fa6d31441cd584b2fbaf480",
      "parents": [
        "b050aa791fad6b060d6ff59305f01289e18b058c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 19:13:04 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:16 2007 -0400"
      },
      "message": "NFS: Be strict about dentry revalidation when doing exclusive create\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b050aa791fad6b060d6ff59305f01289e18b058c",
      "tree": "74786215218dfa0bb6cd45997de889a4f8526028",
      "parents": [
        "efbb06b7f98a154ef51ad41674548af5cc1fd005"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 19:02:07 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:13 2007 -0400"
      },
      "message": "NFS: Don\u0027t zap the readdir caches upon error\n\nIf necessary, the caches will get zapped under normal revalidation.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "efbb06b7f98a154ef51ad41674548af5cc1fd005",
      "tree": "7324549bd5138c1a439ebe95d1ca5149b9e4cf79",
      "parents": [
        "81c768808c78283e1b4ed4cd2cad2571294b2090"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 17:11:54 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:11 2007 -0400"
      },
      "message": "NFS: Remove the redundant nfs_reval_fsid()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d75340cc4de5c187fbf0bba234309ca86cf0a2fb",
      "tree": "aa53e3248bf3d61283f94187ffc83b18fa06bb7a",
      "parents": [
        "216d5d06883edfaf992ada0d72a2a22fdfdbd296"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 21:42:01 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:06 2007 -0400"
      },
      "message": "NFSv4: Fix nfs_atomic_open() to set the verifier on negative dentries too\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "216d5d06883edfaf992ada0d72a2a22fdfdbd296",
      "tree": "4b3ff79736cb09a2bb565383232243971a9a8e2f",
      "parents": [
        "0a5ebc148879be68acdb12fbe72b65cb88c410d9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 20:10:12 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:03 2007 -0400"
      },
      "message": "NFSv4: Use NFSv2/v3 rules for negative dentries in nfs_open_revalidate\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0a5ebc148879be68acdb12fbe72b65cb88c410d9",
      "tree": "b9fb0b5a2689b33daa97255b8b302383a304785a",
      "parents": [
        "f2c77f4e62a2290ae46b5b0449eb72d72afe691e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 12:57:24 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:01 2007 -0400"
      },
      "message": "NFSv4: Don\u0027t revalidate the directory in nfs_atomic_lookup()\n\nWhy bother, since the call to nfs4_atomic_open() will do it for us.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f2c77f4e62a2290ae46b5b0449eb72d72afe691e",
      "tree": "f0b68a5be10fdebf477c3b5af1dbdce3a6150301",
      "parents": [
        "6d2b2966869142660f46d1e06cf9d15c3debcf77"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 12:54:39 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:58 2007 -0400"
      },
      "message": "NFS: Optimise nfs_lookup_revalidate()\n\nWe don\u0027t need to call nfs_revalidate_inode() on the directory if we already\nknow that the verifiers don\u0027t match.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "60ccd4ec4170c9487e3792322626acd160197bce",
      "tree": "b35353518bd7945a40e39edfa543ce80aaa3f8b4",
      "parents": [
        "80eb209def76d375677840800eb838abce1e6639"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 29 17:48:19 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:53 2007 -0400"
      },
      "message": "NFS: Remove nfs_begin_data_update/nfs_end_data_update\n\nThe lower level routines in fs/nfs/proc.c, fs/nfs/nfs3proc.c and\nfs/nfs/nfs4proc.c should already be dealing with the revalidation issues.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a1643a92f6de92074116922a2d2906dd33499ff4",
      "tree": "9047e929e13d48b53a8d3512ce31ac9ab6b1832d",
      "parents": [
        "3258b4fa552c4f994b5e6490a8ad88f5d7e0e648"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 29 17:25:43 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:48 2007 -0400"
      },
      "message": "NFS: NFS_CACHEINV() should not test for nfs_caches_unstable()\n\nThe fact that we\u0027re in the process of modifying the inode does not mean\nthat we should not invalidate the attribute and data caches. The defensive\nthing is to always invalidate when we\u0027re confronted with inode\nmtime/ctime or change_attribute updates that we do not immediately\nrecognise.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3258b4fa552c4f994b5e6490a8ad88f5d7e0e648",
      "tree": "1ec891ada36618119544ae6c870665a53b120fcd",
      "parents": [
        "cf8ba45e0554f1c8838fcfe43a93114f177af839"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 13:54:51 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:45 2007 -0400"
      },
      "message": "NFS: Remove bogus nfs_mark_for_revalidate() in nfs_lookup\n\nThe parent of the newly materialised dentry has just been revalidated...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cf8ba45e0554f1c8838fcfe43a93114f177af839",
      "tree": "e8799c4eac30b4c42c2be7a02e4848aac6113f44",
      "parents": [
        "f38211100d4823be530577dc3452f838861222ec"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 13:46:53 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:42 2007 -0400"
      },
      "message": "NFS: don\u0027t cache the verifer across -\u003elookup() calls\n\nIf the -\u003elookup() call causes the directory verifier to change, then there\nis still no need to use the old verifier, since our dentry has been\nverified.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "446e534985bada0ad7451c08cf213c06695f9b67",
      "tree": "6f364b49ad9f6bc2c82ce28ce4fbd75aee372286",
      "parents": [
        "d4d9cdcb470784df76304f75d0ce88f20f15fa6a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Oct 03 15:58:38 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:30 2007 -0400"
      },
      "message": "NFS: Fix a bug in nfs_open_revalidate()\n\nWe want to set the verifier when the call to nfs4_open_revalidate()\n_succeeds_.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d4d9cdcb470784df76304f75d0ce88f20f15fa6a",
      "tree": "7066e4640947f078855b47501e69f76ff775a834",
      "parents": [
        "5724ab37872042176916441930e78fd353be1e5e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 18:38:53 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:27 2007 -0400"
      },
      "message": "NFS: Don\u0027t hash the negative dentry when optimising for an O_EXCL open\n\nWe don\u0027t want to leave an unverified hashed negative dentry if the\nexclusive create fails to complete.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5724ab37872042176916441930e78fd353be1e5e",
      "tree": "255ba54f98f20ef22584bfb7308bf80f0c4fa2ad",
      "parents": [
        "fab728e156b3cbfe31f05d6e7cdebe3d5eaff878"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 21:51:38 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:25 2007 -0400"
      },
      "message": "NFS: nfs_instantiate() should set the dentry verifier\n\nThat will also allow us to remove the calls in mknod and mkdir.\nIn addition it will ensure that symlinks set it correctly.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fab728e156b3cbfe31f05d6e7cdebe3d5eaff878",
      "tree": "4a0a9ab57867e33342119e61d52c16d0c9eb7a32",
      "parents": [
        "4b841736bc16b320bcdb1e8ece585b3ced9a8811"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 29 17:41:33 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:22 2007 -0400"
      },
      "message": "NFS: Ensure nfs_instantiate() invalidates the parent dir on error\n\nAlso ensure that it drops the dentry in this case.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4b841736bc16b320bcdb1e8ece585b3ced9a8811",
      "tree": "c79e4c99393b8ebfd54617f0ffa791dacc443cb5",
      "parents": [
        "8edb01828837302055a8f0afddb2256659480bc5"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 29 17:15:01 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:20 2007 -0400"
      },
      "message": "NFS: Fix nfs_verify_change_attribute()\n\nWe don\u0027t care about whether or not some other process on our client is\nchanging the directory while we\u0027re in nfs_lookup_revalidate(), because the\ndcache will take care of ensuring local atomicity.\nWe can therefore remove the test for nfs_caches_unstable().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c4812998398d9cbce8646494704c52297359ede0",
      "tree": "8c7b786779b03d1960c25800a7a27a10f8318e99",
      "parents": [
        "57fa76f2da05d0fee597b26bbc1f05242252beab"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 17:11:45 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:03 2007 -0400"
      },
      "message": "NFS: Fix atime revalidation in readdir()\n\nNFSv3 will correctly update atime on a readdir call, so there is no need to\nset the NFS_INO_INVALID_ATIME flag unless the call to nfs_refresh_inode()\nfails.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "57fa76f2da05d0fee597b26bbc1f05242252beab",
      "tree": "c3ee6a3b75315b10bf2d1c9396d7e07c1b8f4830",
      "parents": [
        "47aabaa7e45385fee4a535a6f6e523ff944e1684"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Sep 30 18:01:13 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:00 2007 -0400"
      },
      "message": "NFS: Don\u0027t use readdirplus data if the page cache is invalid\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6ecc5e8fcad7ad64d68c098249359831331bd299",
      "tree": "a0880db55be695d2975eb2d993d4cc918d0d3d83",
      "parents": [
        "7957c1418f4b6c66e28d4ac3c4d7a8c19d526c48"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 14:20:33 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:49 2007 -0400"
      },
      "message": "NFS: Fix dcache revalidation bugs\n\nWe don\u0027t need to force a dentry lookup just because we\u0027re making changes to\nthe directory.\n\nDon\u0027t update nfsi-\u003ecache_change_attribute in nfs_end_data_update: that\noverrides the NFSv3/v4 weak consistency checking that tells us our update\nwas the only one, and that tells us the dcache is still valid.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "af22f94ae02ab9dd4fd7fe628c8434a59cc293be",
      "tree": "e3794a90fc0720c33266dfa682e264a4041e7a14",
      "parents": [
        "cd3758e37ddea66fccca7d93c4b601e8a2e51926"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Aug 10 17:45:10 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:34 2007 -0400"
      },
      "message": "NFSv4: Simplify _nfs4_do_access()\n\nCurrently, _nfs4_do_access() is just a copy of nfs_do_access() with added\nconversion of the open flags into an access mask. This patch merges the\nduplicate functionality.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cd3758e37ddea66fccca7d93c4b601e8a2e51926",
      "tree": "07566d3ee457524a97b534a4f214b9178b1278c8",
      "parents": [
        "c03025d55540bd648f2546659090140ecc835572"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Aug 10 17:44:32 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:31 2007 -0400"
      },
      "message": "NFS: Replace file-\u003eprivate_data with calls to nfs_file_open_context()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8fb559f87fee7f71dbf9a595095ad7d8e84c55e7",
      "tree": "1d38a0d8b750f7515390c9741b12364f6f3426c7",
      "parents": [
        "77a55a1fe8f26f7d022986a599b68002e21d968a"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Sep 24 15:40:16 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:26 2007 -0400"
      },
      "message": "NFS: Eliminate nfs_refresh_verifier()\n\nnfs_set_verifier() and nfs_refresh_verifier() do exactly the same thing, so\nreplace one with the other.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "77a55a1fe8f26f7d022986a599b68002e21d968a",
      "tree": "63e804b1105d535149e0fd558c96a8c3efcc8dce",
      "parents": [
        "92f6c178250170222f6d80c8ae725400765aa7a4"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Sep 24 15:40:11 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:24 2007 -0400"
      },
      "message": "NFS: Eliminate nfs_renew_times()\n\nThe nfs_renew_times() function plants the current time in jiffies in\ndentry-\u003ed_time.  But a call to nfs_renew_times() is always followed by\nanother call that overwrites dentry-\u003ed_time.  Get rid of the\nnfs_renew_times() calls.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "92f6c178250170222f6d80c8ae725400765aa7a4",
      "tree": "f0da7a93122db0ed40cb5175294e8492082144ba",
      "parents": [
        "1321d8d971028e796978f6a48d195c09158b3bcd"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Sep 24 15:40:06 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:22 2007 -0400"
      },
      "message": "NFS: Don\u0027t call nfs_renew_times() in nfs_dentry_iput()\n\nNegative dentries need to be reverified after an asynchronous unlink.\n\nQuoth Trond:\n\n\"Unfortunately I don\u0027t think that we can avoid revalidating the\nresulting negative dentry since the UNLINK call is asynchronous,\nand so the new verifier on the directory will only be known a\nposteriori.\"\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c7e15961115028b99f6142266b5fb08acca0e8dd",
      "tree": "21d6ca8d97234664f242e35430ba4f0dbf61df8e",
      "parents": [
        "4e769b934e7638038e232c05b64f644e7269a90f"
      ],
      "author": {
        "name": "Fabio Olive Leite",
        "email": "fleite@redhat.com",
        "time": "Thu Jul 26 22:59:00 2007 -0300"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:15:33 2007 -0400"
      },
      "message": "Re: [NFS] [PATCH] Attribute timeout handling and wrapping u32 jiffies\n\nI would like to discuss the idea that the current checks for attribute\ntimeout using time_after are inadequate for 32bit architectures, since\ntime_after works correctly only when the two timestamps being compared\nare within 2^31 jiffies of each other. The signed overflow caused by\ncomparing values more than 2^31 jiffies apart will flip the result,\ncausing incorrect assumptions of validity.\n\n2^31 jiffies is a fairly large period of time (~25 days) when compared\nto the lifetime of most kernel data structures, but for long lived NFS\nmounts that can sit idle for months (think that for some reason autofs\ncannot be used), it is easy to compare inode attribute timestamps with\nvery disparate or even bogus values (as in when jiffies have wrapped\nmany times, where the comparison doesn\u0027t even make sense).\n\nCurrently the code tests for attribute timeout by simply adding the\ndesired amount of jiffies to the stored timestamp and comparing that\nwith the current timestamp of obtained attribute data with time_after.\nThis is incorrect, as it returns true for the desired timeout period\nand another full 2^31 range of jiffies.\n\nIn testing with artificial jumps (several small jumps, not one big\ncrank) of the jiffies I was able to reproduce a problem found in a\nserver with very long lived NFS mounts, where attributes would not be\nrefreshed even after touching files and directories in the server:\n\nInitial uptime:\n03:42:01 up 6 min, 0 users, load average: 0.01, 0.12, 0.07\n\nNFS volume is mounted and time is advanced:\n03:38:09 up 25 days, 2 min, 0 users, load average: 1.22, 1.05, 1.08\n\n# ls -l /local/A/foo/bar /nfs/A/foo/bar\n-rw-r--r--  1 root root 0 Dec 17 03:38 /local/A/foo/bar\n-rw-r--r--  1 root root 0 Nov 22 00:36 /nfs/A/foo/bar\n\n# touch /local/A/foo/bar\n\n# ls -l /local/A/foo/bar /nfs/A/foo/bar\n-rw-r--r--  1 root root 0 Dec 17 03:47 /local/A/foo/bar\n-rw-r--r--  1 root root 0 Nov 22 00:36 /nfs/A/foo/bar\n\nWe can see the local mtime is updated, but the NFS mount still shows\nthe old value. The patch below makes it work:\n\nInitial setup...\n07:11:02 up 25 days, 1 min,  0 users,  load average: 0.15, 0.03, 0.04\n\n# ls -l /local/A/foo/bar /nfs/A/foo/bar\n-rw-r--r--  1 root root 0 Jan 11 07:11 /local/A/foo/bar\n-rw-r--r--  1 root root 0 Jan 11 07:11 /nfs/A/foo/bar\n\n# touch /local/A/foo/bar\n\n# ls -l /local/A/foo/bar /nfs/A/foo/bar\n-rw-r--r--  1 root root 0 Jan 11 07:14 /local/A/foo/bar\n-rw-r--r--  1 root root 0 Jan 11 07:14 /nfs/A/foo/bar\n\nSigned-off-by: Fabio Olive Leite \u003cfleite@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4e769b934e7638038e232c05b64f644e7269a90f",
      "tree": "6508c1d273f22d3704eb849fb90404bade7cb4a7",
      "parents": [
        "50e437d522a6cc34a882b2f740297f1b6b4c3af3"
      ],
      "author": {
        "name": "Peter Staubach",
        "email": "staubach@redhat.com",
        "time": "Fri Aug 03 15:07:10 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:15:29 2007 -0400"
      },
      "message": "64 bit ino support for NFS client\n\nHi.\n\nAttached is a patch to modify the NFS client code to support\n64 bit ino\u0027s, as appropriate for the system and the NFS\nprotocol version.\n\nThe code basically just expand the NFS interfaces for routines\nwhich handle ino\u0027s from using ino_t to u64 and then uses the\nfileid in the nfs_inode instead of i_ino in the inode.  The\ncode paths that were updated are in the getattr method and\nthe readdir methods.\n\nThis should be no real change on 64 bit platforms.  Since\nthe ino_t is an unsigned long, it would already be 64 bits\nwide.\n\n    Thanx...\n\n           ps\n\nSigned-off-by: Peter Staubach \u003cstaubach@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "54af3bb543c071769141387a42deaaab5074da55",
      "tree": "d24e5b23462a51a4e932b14feb5ae943b0dbba1e",
      "parents": [
        "bd8936632475665bfd90c1180c9c1301ee838db8"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 12:27:41 2007 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Sep 28 15:36:42 2007 -0700"
      },
      "message": "NFS: Fix an Oops in encode_lookup()\n\nIt doesn\u0027t look as if the NFS file name limit is being initialised correctly\nin the struct nfs_server. Make sure that we limit whatever is being set in\nnfs_probe_fsinfo() and nfs_init_server().\n\nAlso ensure that readdirplus and nfs4_path_walk respect our file name\nlimits.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e4eff1a622edd6ab7b73acd5d8763aa2fa3fee49",
      "tree": "257d6675733d4af122a77054281e1d7d5062d904",
      "parents": [
        "4fdc17b2a7f4d9db5b08e0f963d0027f714e4104"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 14 15:39:58 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 19 15:21:39 2007 -0400"
      },
      "message": "SUNRPC: Clean up the sillyrename code\n\nFix a couple of bugs:\n - Don\u0027t rely on the parent dentry still being valid when the call completes.\n   Fixes a race with shrink_dcache_for_umount_subtree()\n\n - Don\u0027t remove the file if the filehandle has been labelled as stale.\n\nFix a couple of inefficiencies\n - Remove the global list of sillyrenamed files. Instead we can cache the\n   sillyrename information in the dentry-\u003ed_fsdata\n - Move common code from unlink_setup/unlink_done into fs/nfs/unlink.c\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3062c532ad410fe0e8320566fe2879a396be6701",
      "tree": "a6187e4988378bd6cc9712f0881417e0f360917b",
      "parents": [
        "be879c4e249a8875d7129f3b0c1bb62584dafbd8"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 14 17:36:45 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 19 15:21:39 2007 -0400"
      },
      "message": "NFS: Use dentry-\u003ed_time to store the parent directory verifier.\n\nThis will free up the d_fsdata field for other use.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a50f7951a31d3b976e829250853f89c9d2da32c0",
      "tree": "de9e8a3f93ee724471a49d9edb1155adef8d41f5",
      "parents": [
        "e2f032e9ef66e33089d09452892696ea97d1dca1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jun 05 19:23:43 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:25 2007 -0400"
      },
      "message": "NFS: Fix an Oops in the nfs_access_cache_shrinker()\n\nThe nfs_access_cache_shrinker may race with nfs_access_zap_cache().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "83d93f2229348837bf988a1048f7f38789474471",
      "tree": "cd4c6fc06cea4f7f761ceac187671f9cb5348d20",
      "parents": [
        "a0356862bcbeb20acf64bc1a82d28a4c5bb957a7"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Thu Jun 07 09:58:08 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:25 2007 -0400"
      },
      "message": "NFS: Use GFP_HIGHUSER for page allocation in nfs_symlink()\n\nnfs_symlink() allocates a GFP_KERNEL page for the pagecache. Most\npagecache pages are allocated using GFP_HIGHUSER, and there\u0027s no reason\nnot to do that in nfs_symlink() as well.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\n"
    },
    {
      "commit": "a0356862bcbeb20acf64bc1a82d28a4c5bb957a7",
      "tree": "20dd38a076a17c35e63eadddc77ccf0f3633f377",
      "parents": [
        "b39e625b6e75aa70e26c13f9378756bb5f2af032"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jun 05 13:26:15 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:24 2007 -0400"
      },
      "message": "NFS: Fix nfs_reval_fsid()\n\nWe don\u0027t need to revalidate the fsid on the root directory. It suffices to\nrevalidate it on the current directory.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ad389da79f7bf9dc12dbc79c9c2740f9ed2f13d1",
      "tree": "9fd51d8a43aaba790a87f721d2796e36ab9f66e7",
      "parents": [
        "539cd03a5708c9861a3e738e6f363ad743c85ddf"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jun 05 12:30:00 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:24 2007 -0400"
      },
      "message": "NFSv4: Ensure asynchronous open() calls always pin the mountpoint\n\nA number of race conditions may currently ensue if the user presses ^C\nand then unmounts the partition while an asynchronous open() is in\nprogress.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e8edc6e03a5c8562dc70a6d969f732bdb355a7e7",
      "tree": "fc86c863655128a7041dfe613d14393d761fa7b9",
      "parents": [
        "ff1be9ad61e3e17ba83702d8ed0b534e5b8ee15c"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon May 21 01:22:52 2007 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 21 09:18:19 2007 -0700"
      },
      "message": "Detach sched.h from mm.h\n\nFirst thing mm.h does is including sched.h solely for can_do_mlock() inline\nfunction which has \"current\" dereference inside. By dealing with can_do_mlock()\nmm.h can be detached from sched.h which is good. See below, why.\n\nThis patch\na) removes unconditional inclusion of sched.h from mm.h\nb) makes can_do_mlock() normal function in mm/mlock.c\nc) exports can_do_mlock() to not break compilation\nd) adds sched.h inclusions back to files that were getting it indirectly.\ne) adds less bloated headers to some files (asm/signal.h, jiffies.h) that were\n   getting them indirectly\n\nNet result is:\na) mm.h users would get less code to open, read, preprocess, parse, ... if\n   they don\u0027t need sched.h\nb) sched.h stops being dependency for significant number of files:\n   on x86_64 allmodconfig touching sched.h results in recompile of 4083 files,\n   after patch it\u0027s only 3744 (-8.3%).\n\nCross-compile tested on\n\n\tall arm defconfigs, all mips defconfigs, all powerpc defconfigs,\n\talpha alpha-up\n\tarm\n\ti386 i386-up i386-defconfig i386-allnoconfig\n\tia64 ia64-up\n\tm68k\n\tmips\n\tparisc parisc-up\n\tpowerpc powerpc-up\n\ts390 s390-up\n\tsparc sparc-up\n\tsparc64 sparc64-up\n\tum-x86_64\n\tx86_64 x86_64-up x86_64-defconfig x86_64-allnoconfig\n\nas well as my two usual configs.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "10afec9081fee7e48995fa396fba22c7de4b99d4",
      "tree": "edf1e3abf62d95eeef178dc8060cf033cc7940df",
      "parents": [
        "9c9cc93ad2a5d9972672e03685af20e8cea1e5a4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 17:16:04 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 19:33:46 2007 -0400"
      },
      "message": "NFS: Fix some \u0027sparse\u0027 warnings...\n\n - fs/nfs/dir.c:610:8: warning: symbol \u0027nfs_llseek_dir\u0027 was not declared.\n   Should it be static?\n - fs/nfs/dir.c:636:5: warning: symbol \u0027nfs_fsync_dir\u0027 was not declared.\n   Should it be static?\n - fs/nfs/write.c:925:19: warning: symbol \u0027req\u0027 shadows an earlier one\n - fs/nfs/write.c:61:6: warning: symbol \u0027nfs_commit_rcu_free\u0027 was not\n   declared. Should it be static?\n - fs/nfs/nfs4proc.c:793:5: warning: symbol \u0027nfs4_recover_expired_lease\u0027\n   was not declared. Should it be static?\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7a13e932281e7042a592f4f14db0b348199e7aac",
      "tree": "474245a3ed19f26528fd8b1bdda946fa9cd751d7",
      "parents": [
        "fee7f23feaf0845fdfd47d20cddc75652552fbb8"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jesper.juhl@gmail.com",
        "time": "Thu Apr 26 00:29:02 2007 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 17:58:01 2007 -0400"
      },
      "message": "NFS: Kill the obsolete NFS_PARANOIA\n\nSigned-off-by: Jesper Juhl \u003cjesper.juhl@gmail.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e70c490810dc683fad39e57cf00e69d5f120c542",
      "tree": "24276f69c064376d3c69979f61e181b377560795",
      "parents": [
        "e62c2bba1fb7cf068eb78d731da46e4447a9efb1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 09:00:18 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 17:57:59 2007 -0400"
      },
      "message": "NFS: Remove redundant check in nfs_check_verifier()\n\nThe check for nfs_attribute_timeout(dir) in nfs_check_verifier is\nredundant: nfs_lookup_revalidate() will already call nfs_revalidate_inode()\non the parent dir when necessary.\n\nThe only case where this is not done is the case of a negative dentry. Fix\nthis case by moving up the revalidation code.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e62c2bba1fb7cf068eb78d731da46e4447a9efb1",
      "tree": "bce53fe724400f7cfa1ae4621aafc6aa70bd564d",
      "parents": [
        "38cb162b7585d837083b8365da1eb32687c5164c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 09:00:17 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 17:57:58 2007 -0400"
      },
      "message": "NFS: Fix a jiffie wraparound issue\n\ndentry verifiers are always set to the parent directory\u0027s\ncache_change_attribute. There is no reason to be testing for anything other\nthan equality when we\u0027re trying to find out if the dentry has been checked\nsince the last time the directory was modified.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6fe6900e1e5b6fa9e5c59aa5061f244fe3f467e2",
      "tree": "8bbfe5072279227cc50a941ad4813908082426a1",
      "parents": [
        "714b8171af9c930a59a0da8f6fe50518e70ab035"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sun May 06 14:49:04 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:51 2007 -0700"
      },
      "message": "mm: make read_cache_page synchronous\n\nEnsure pages are uptodate after returning from read_cache_page, which allows\nus to cut out most of the filesystem-internal PageUptodate calls.\n\nI didn\u0027t have a great look down the call chains, but this appears to fixes 7\npossible use-before uptodate in hfs, 2 in hfsplus, 1 in jfs, a few in\necryptfs, 1 in jffs2, and a possible cleared data overwritten with readpage in\nblock2mtd.  All depending on whether the filler is async and/or can return\nwith a !uptodate page.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "83672d392f7bcf556f7920d6715e4174d9373ee0",
      "tree": "43af2f3428bd5a8eec3b089faf5aaef6ff7a4189",
      "parents": [
        "1f4eab7e7c1d90dcd8ca4d7c064ee78dfbb345eb"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Mon Feb 26 12:48:25 2007 +1100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 30 22:17:19 2007 -0700"
      },
      "message": "NFS: Fix directory caching problem - with test case and patch.\n\nTry running this script in an NFS mounted directory (Client relatively\nrecent - 2.6.18 has the problem as does 2.6.20).\n\n------------------------------------------------------\n#!/bin/bash\n#\n# This script will produce the following errormessage from tar:\n#\n#   tar: newdir/innerdir/innerfile: file changed as we read it\n\n# create dirs\nrm -rf nfstest\nmkdir -p nfstest/dir/innerdir\n\n# create files (should not be empty)\necho \"Hello World!\" \u003enfstest/dir/file\necho \"Hello World!\" \u003enfstest/dir/innerdir/innerfile\n\n# problem only happens if we sleep before chmod\nsleep 1\n\n# change file modes\nchmod -R a+r nfstest\n\n# rename dir\nmv nfstest/dir nfstest/newdir\n\n# tar it\ntar -cf nfstest/nfstest.tar -C nfstest newdir\n\n# restore old dir name\nmv nfstest/newdir nfstest/dir\n--------------------------------------------------------\n\nWhat happens:\n\nThe \u0027chmod -R\u0027 does a readdir_plus in each directory and the results\nget cached in the page cache.  It then updates the ctime on each file\nby one second.  When this happens, the post-op attributes are used to\nupdate the ctime stored on the client to match the value in the kernel.\n\nThe \u0027mv\u0027 calls shrink_dcache_parent on the directory tree which\nflushes all the dentries (so a new lookup will be required) but\ndoesn\u0027t flush the inodes or pagecache.\n\nThe \u0027tar\u0027 does a readdir on each directory, but (in the case of\n\u0027innerdir\u0027 at least) satisfies it from the pagecache and uses the\nREADDIRPLUS data to update all the inodes.  In the case of\n\u0027innerdir/innerfile\u0027, the ctime is out of date.\n\n\u0027tar\u0027 then calls \u0027lstat\u0027 on innerdir/innerfile getting an old ctime.\nIt then opens the file (triggering a GETATTR), reads the content, and\nthen calls fstat to see if anything has changed.  It finds that ctime\nhas changed and so complains.\n\nThe problem seems to be that the cache readdirplus info is kept around\nfor too long.\n\nMy patch below discards pagecache data for directories when\ndentry_iput is called on them.  This effectively removes the symptom\nwhich convinces me that I correctly understand the problem.  However\nI\u0027m not convinced that is a proper solution, as there could easily be\nother races that trigger the same problem without being affected by\nthis \u0027fix\u0027.\n\nOne possibility would be to require that readdirplus pagecache data be\nonly used *once* to instantiate an inode.  Somehow it should then be\ninvalidated so that if the dentry subsequently disappears, it will\ncause a new request to the server to fill in the stat data.\n\nAnother possibility is to compare the cache_change_attribute on the\ninode with something similar for the readdirplus info and reject the\ninfo from readdirplus if it is too old.\n\nI haven\u0027t tried to implement these and would value other opinions\nbefore I do.\n\nThanks,\nNeilBrown\n\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1f4eab7e7c1d90dcd8ca4d7c064ee78dfbb345eb",
      "tree": "06c431bedac14bd907e616c390743795abfb1622",
      "parents": [
        "74dd34e6e8bb127ff4c182423154b294729b663b"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 16 09:35:27 2007 +1000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 30 22:17:18 2007 -0700"
      },
      "message": "NFS: Set meaningful value for fattr-\u003etime_start in readdirplus results.\n\nDon\u0027t use uninitialsed value for fattr-\u003etime_start in readdirplus results.\n\nThe \u0027fattr\u0027 structure filled in by nfs3_decode_direct does not get a\nvalue for -\u003etime_start set.\nThus if an entry is for an inode that we already have in cache,\nwhen nfs_readdir_lookup calls nfs_fhget, it will call nfs_refresh_inode\nand may update the inode with out-of-date information.\n\nDirectories are read a page at a time, so each page could have a\ndifferent timestamp that \"should\" be used to set the time_start for\nthe fattr for info in that page.  However storing the timestamp per\npage is awkward.  (We could stick in the first 4 bytes and only read 4092\nbytes, but that is a bigger code change than I am interested it).\n\nThis patch ignores the readdir_plus attributes if a readdir finds the\ninformation already in cache, and otherwise sets -\u003etime_start to the time\nthe readdir request was sent to the server.\n\nIt might be nice to store - in the directory inode - the time stamp for\nthe earliest readdir request that is still in the page cache, so that we\ndon\u0027t ignore attribute data that we don\u0027t have to.  This patch doesn\u0027t do\nthat.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e1552e199857109d4b25b9163eff4646726eee3d",
      "tree": "344af8502076a414c7b579bc33e0c98f21a20b2c",
      "parents": [
        "c9c57929d23e44f258d1b6e7f089e72c85f0bd1c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Apr 14 19:07:28 2007 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Apr 14 21:46:47 2007 -0700"
      },
      "message": "NFS: Fix an Oops in nfs_setattr()\n\nIt looks like nfs_setattr() and nfs_rename() also need to test whether the\ntarget is a regular file before calling nfs_wb_all()...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d9bc125caf592b7d081021f32ce5b717efdf70c8",
      "tree": "263b7066ba22ddce21db610c0300f6eaac6f2064",
      "parents": [
        "43d78ef2ba5bec26d0315859e8324bfc0be23766",
        "ec2f9d1331f658433411c58077871e1eef4ee1b4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 12 22:43:25 2007 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 12 22:43:25 2007 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of /home/trondmy/kernel/linux-2.6/\n\nConflicts:\n\n\tnet/sunrpc/auth_gss/gss_krb5_crypto.c\n\tnet/sunrpc/auth_gss/gss_spkm3_token.c\n\tnet/sunrpc/clnt.c\n\nMerge with mainline and fix conflicts.\n"
    },
    {
      "commit": "92e1d5be91a0e3ffa5c4697eeb09b2aa22792122",
      "tree": "4eb22a9f6c38e9f4cc2a5100cd6659b0af08b7ae",
      "parents": [
        "754661f143e70d66eae6c48532ca245aa05dec0e"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Mon Feb 12 00:55:39 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 12 09:48:46 2007 -0800"
      },
      "message": "[PATCH] mark struct inode_operations const 2\n\nMany struct inode_operations in the kernel can be \"const\".  Marking them const\nmoves these to the .rodata section, which avoids false sharing with potential\ndirty data.  In addition it\u0027ll catch accidental writes at compile time to\nthese shared resources.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c79ba787c11e767ffaf8d723923afda99ba6c63c",
      "tree": "746cd4018ab4dd5b28368b8e9a4d4c23c8e5b7b0",
      "parents": [
        "ef75c7974b383769ae5741cf930b8aa4dcaef395"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 31 08:16:24 2007 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Feb 03 15:35:05 2007 -0800"
      },
      "message": "NFS: Dont clobber more uptodate values in nfs_set_verifier()\n\nnfs_lookup_revalidate and friends are not serialised, so it is currently\nquite possible for the dentry to be revalidated, and then have the\nupdated verifier replaced with an older value by another process.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ef75c7974b383769ae5741cf930b8aa4dcaef395",
      "tree": "4ed78762d171e41badb94c1bca93ae0be3e5af16",
      "parents": [
        "df1d5d23d3a1a713c69b0f9ec67c59aeca3ce6b3"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 16 10:09:44 2007 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Feb 03 15:35:04 2007 -0800"
      },
      "message": "NFS: Also use readdir info to revalidate positive dentries\n\nIf the fileid of the cached dentry fails to match that returned by\nthe readdir call, then we should also d_drop. Try to take into account the\nfact that on NFSv4, readdir may return the \"mounted_on_fileid\" by looking\nfor submounts.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "df1d5d23d3a1a713c69b0f9ec67c59aeca3ce6b3",
      "tree": "2d5c3d7ba82c3f7010089414db2f0563ff6bd3e0",
      "parents": [
        "ccfeb506231348a3c60ab0fdb5753a574653e3c0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jan 15 13:56:29 2007 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Feb 03 15:35:04 2007 -0800"
      },
      "message": "NFS: Fix a readdir/lookup inefficiency.\n\nMake sure that nfs_readdir_lookup() handles negative dentries correctly.\nIf d_lookup() returns a negative dentry, then we need to d_drop() that\nsince readdir shows that it should be positive.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ccfeb506231348a3c60ab0fdb5753a574653e3c0",
      "tree": "17e2261c396d927e389c7f018008e5537bc27ddb",
      "parents": [
        "ab91f264cfbafd079dcb1bd02e9803c2dd65de19"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jan 13 02:28:12 2007 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Feb 03 15:35:04 2007 -0800"
      },
      "message": "NFS: Fix up \"rm -rf\"...\n\nWhen a file is being scheduled for deletion by means of the sillyrename\nmechanism, it makes sense to start out writeback of the dirty data as\nsoon as possible in order to ensure that the delete can occur. Examples of\ncases where this is an issue include \"rm -rf\", which will busy-wait until\nthe file is closed, and the sillyrename completes.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "717d44e849219781ced028a40fcc59d3e1f49e4c",
      "tree": "aa34a9b84377d18ff58901cc342b84c7e8b81dca",
      "parents": [
        "bde8f00ce64d9824a4f227c8594e335a1a10d044"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 24 11:54:55 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jan 24 12:31:06 2007 -0800"
      },
      "message": "[PATCH] NFS: Fix races in nfs_revalidate_mapping()\n\nPrevent the call to invalidate_inode_pages2() from racing with file writes\nby taking the inode-\u003ei_mutex across the page cache flush and invalidate.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "01cce933d8b524d9312f5098c70fa1b6ac190572",
      "tree": "7601e02e874a6eb44faca3cdf06664c7377ac687",
      "parents": [
        "2485822d51f8b338d289abe00eb7ce5249794a08"
      ],
      "author": {
        "name": "Josef \"Jeff\" Sipek",
        "email": "jsipek@cs.sunysb.edu",
        "time": "Fri Dec 08 02:36:40 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:41 2006 -0800"
      },
      "message": "[PATCH] nfs: change uses of f_{dentry,vfsmnt} to use f_path\n\nChange all the uses of f_{dentry,vfsmnt} to f_path.{dentry,mnt} in the nfs\nclient code.\n\nSigned-off-by: Josef \"Jeff\" Sipek \u003cjsipek@cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fc22617e451f23b466d4d63bb016f5f6111b69e4",
      "tree": "64a772622e9bcd49f23ffcde408eb3517082ce6f",
      "parents": [
        "9eaef27b36a6b716384948da94b8fc5bfba7b712"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 21 10:24:24 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 21 13:35:06 2006 -0700"
      },
      "message": "[PATCH] NFS: Cache invalidation fixup\n\nIf someone has renamed a directory on the server, triggering the d_move\ncode in d_materialise_unique(), then we need to invalidate the cached\ndirectory information in the source parent directory.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Maneesh Soni \u003cmaneesh@in.ibm.com\u003e\nCc: Dipankar Sarma \u003cdipankar@in.ibm.com\u003e\nCc: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9eaef27b36a6b716384948da94b8fc5bfba7b712",
      "tree": "ab69cf9c3863bb7ca564574c914e5b6bf8ad3162",
      "parents": [
        "3f7705eab6722ad1a346d748c4aad55755d6c241"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 21 10:24:20 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 21 13:35:06 2006 -0700"
      },
      "message": "[PATCH] VFS: Make d_materialise_unique() enforce directory uniqueness\n\nIf the caller tries to instantiate a directory using an inode that already\nhas a dentry alias, then we attempt to rename the existing dentry instead\nof instantiating a new one.  Fail with an ELOOP error if the rename would\naffect one of our parent directories.\n\nThis behaviour is needed in order to avoid issues such as\n\n  http://bugzilla.kernel.org/show_bug.cgi?id\u003d7178\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Maneesh Soni \u003cmaneesh@in.ibm.com\u003e\nCc: Dipankar Sarma \u003cdipankar@in.ibm.com\u003e\nCc: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0dbb4c6799cf8fa8c5ba1926153a30960117477d",
      "tree": "9d8f75f2f407a5758fa4ef3d8c03694f138c3304",
      "parents": [
        "8687b63afbe42103730bff4d3f7bfff3463c303e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Thu Oct 19 23:28:49 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 20 10:26:40 2006 -0700"
      },
      "message": "[PATCH] xdr annotations: NFS readdir entries\n\non-the-wire data is big-endian\n\n[in large part pulled from Alexey\u0027s patch]\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nAcked-by: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "39cf8a1374dc51fea169190674d5e4996a7d7ea2",
      "tree": "ca6e201861ed911c2b78dd81b56505527308c9a4",
      "parents": [
        "cd9ae2b6a75bb1fa0d370929c2d7a7da1ed719d9"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Oct 19 23:28:41 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 20 10:26:39 2006 -0700"
      },
      "message": "[PATCH] NFS: fix minor bug in new NFS symlink code\n\nThe original code confused a zero return code from pagevec_add() as success.\n\nTest plan:\nNone.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "cd9ae2b6a75bb1fa0d370929c2d7a7da1ed719d9",
      "tree": "1bf943b54f47bfbf5198b08b930bd09099ff99b7",
      "parents": [
        "13bbc06af8a5f65df0f888b442e557c617cadba7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 19 23:28:40 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 20 10:26:39 2006 -0700"
      },
      "message": "[PATCH] NFS: Deal with failure of invalidate_inode_pages2()\n\nIf invalidate_inode_pages2() fails, then it should in principle just be\nbecause the current process was signalled.  In that case, we just want to\nensure that the inode\u0027s page cache remains marked as invalid.\n\nAlso add a helper to allow the O_DIRECT code to simply mark the page cache as\ninvalid once it is finished writing, instead of calling\ninvalidate_inode_pages2() itself.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ce71ec36840368b877fb63bd14c8e67ab62d08b1",
      "tree": "55ea3caaa339881dfd66d787b3dbbb964825d07a",
      "parents": [
        "17ff785691503f63ec648df82a7fdaece7695561"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Sat Sep 30 23:29:06 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:30 2006 -0700"
      },
      "message": "[PATCH] r/o bind mounts: monitor zeroing of i_nlink\n\nSome filesystems, instead of simply decrementing i_nlink, simply zero it\nduring an unlink operation.  We need to catch these in addition to the\ndecrement operations.\n\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9a53c3a783c2fa9b969628e65695c11c3e51e673",
      "tree": "5a6115e18ee105246d46e3db3d5b07749d232f5b",
      "parents": [
        "aab520e2f6c80160cabd187a8d0292d1cec8ff68"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Sat Sep 30 23:29:03 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:30 2006 -0700"
      },
      "message": "[PATCH] r/o bind mounts: unlink: monitor i_nlink\n\nWhen a filesystem decrements i_nlink to zero, it means that a write must be\nperformed in order to drop the inode from the filesystem.\n\nWe\u0027re shortly going to have keep filesystems from being remounted r/o between\nthe time that this i_nlink decrement and that write occurs.\n\nSo, add a little helper function to do the decrements.  We\u0027ll tie into it in a\nbit to note when i_nlink hits zero.\n\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "349457ccf2592c14bdf13b6706170ae2e94931b1",
      "tree": "3670945b5a62617d38cf1f317487387032d3da4d",
      "parents": [
        "1390334b4c697b7588d5661fcf6acaeec409cf4c"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Sep 08 14:22:21 2006 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Sun Sep 24 13:50:45 2006 -0700"
      },
      "message": "[PATCH] Allow file systems to manually d_move() inside of -\u003erename()\n\nSome file systems want to manually d_move() the dentries involved in a\nrename.  We can do this by making use of the FS_ODD_RENAME flag if we just\nhave nfs_rename() unconditionally do the d_move().  While there, we rename\nthe flag to be more descriptive.\n\nOCFS2 uses this to protect that part of the rename operation with a cluster\nlock.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\n"
    },
    {
      "commit": "fd6840714d9cf6e93f1d42b904860a94df316b85",
      "tree": "e72a0ef8bff8f1b6183596dbce3de34570ee6180",
      "parents": [
        "762d4527c2fc19d821a13d9a3455ccc2d4073731"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 05 12:27:44 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:25:01 2006 -0400"
      },
      "message": "NFS: nfs_lookup - don\u0027t hash dentry when optimising away the lookup\n\nIf the open intents tell us that a given lookup is going to result in a,\nexclusive create, we currently optimize away the lookup call itself. The\nreason is that the lookup would not be atomic with the create RPC call, so\nwhy do it in the first place?\n\nA problem occurs, however, if the VFS aborts the exclusive create operation\nafter the lookup, but before the call to create the file/directory: in this\ncase we will end up with a hashed negative dentry in the dcache that has\nnever been looked up.\nFix this by only actually hashing the dentry once the create operation has\nbeen successfully completed.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "94a6d75320b3681e6e728b70e18bd186cb55e682",
      "tree": "0957071549d76ceb3857e419998818b11bce7269",
      "parents": [
        "873101b33776780d32610fc4c90c7358a5e98f51"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Aug 22 20:06:23 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:53 2006 -0400"
      },
      "message": "NFS: Use cached page as buffer for NFS symlink requests\n\nNow that we have a copy of the symlink path in the page cache, we can pass\na struct page down to the XDR routines instead of a string buffer.\n\nTest plan:\nConnectathon, all NFS versions.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "873101b33776780d32610fc4c90c7358a5e98f51",
      "tree": "39bff3860ecc522e8a716c8cf2eebf55588f081a",
      "parents": [
        "4f390c152bc87165da4b1f5b7d870b46fb106d4e"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Aug 22 20:06:23 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:53 2006 -0400"
      },
      "message": "NFS: copy symlinks into page cache before sending NFS SYMLINK request\n\nCurrently the NFS client does not cache symlinks it creates.  They get\ncached only when the NFS client reads them back from the server.\n\nCopy the symlink into the page cache before sending it.\n\nTest plan:\nConnectathon, all NFS versions.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4f390c152bc87165da4b1f5b7d870b46fb106d4e",
      "tree": "643b5d12f76bd7d3688380fbaf69f607a34a06bf",
      "parents": [
        "d3db90e270791b21cd00d3c094884bffa907cc9e"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Aug 22 20:06:22 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:52 2006 -0400"
      },
      "message": "NFS: Fix double d_drop in nfs_instantiate() error path\n\nIf the LOOKUP or GETATTR in nfs_instantiate fail, nfs_instantiate will do a\nd_drop before returning.  But some callers already do a d_drop in the case\nof an error return.  Make certain we do only one d_drop in all error paths.\n\nThis issue was introduced because over time, the symlink proc API diverged\nslightly from the create/mkdir/mknod proc API.  To prevent other coding\nmistakes of this type, change the symlink proc API to be more like\ncreate/mkdir/mknod and move the nfs_instantiate call into the symlink proc\nroutines so it is used in exactly the same way for create, mkdir, mknod,\nand symlink.\n\nTest plan:\nConnectathon, all versions of NFS.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d3db90e270791b21cd00d3c094884bffa907cc9e",
      "tree": "3d6aea8fabd34fba5db5454867811b087bb71e05",
      "parents": [
        "b86acd501a34227e0ed2b2d54dc8002c1701ce17"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Aug 22 20:06:22 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:52 2006 -0400"
      },
      "message": "NFS: remove a no-longer-needed error check in nfs_symlink()\n\nIn the early days of NFS, there was no duplicate reply cache on the server.\nThus retransmitted non-idempotent requests often found that the request had\nalready completed on the server.  To avoid passing an unanticipated return\ncode to unsuspecting applications, NFS clients would often shunt error\ncodes that implied the request had been retried but already completed.\n\nThanks to NFS over TCP, duplicate reply caches on the server, and network\nperformance and reliability improvements, it is safe to remove such checks.\n\nTest plan:\nNone.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "54ceac4515986030c2502960be620198dd8fe25b",
      "tree": "b4ae4305c5652c0fe883ef5ea3243da91dbd2b34",
      "parents": [
        "cf6d7b5de8535a9f0088c5cc28ee2dae87371b4a"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:13 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:37 2006 -0400"
      },
      "message": "NFS: Share NFS superblocks per-protocol per-server per-FSID\n\nThe attached patch makes NFS share superblocks between mounts from the same\nserver and FSID over the same protocol.\n\nIt does this by creating each superblock with a false root and returning the\nreal root dentry in the vfsmount presented by get_sb(). The root dentry set\nstarts off as an anonymous dentry if we don\u0027t already have the dentry for its\ninode, otherwise it simply returns the dentry we already have.\n\nWe may thus end up with several trees of dentries in the superblock, and if at\nsome later point one of anonymous tree roots is discovered by normal filesystem\nactivity to be located in another tree within the superblock, the anonymous\nroot is named and materialises attached to the second tree at the appropriate\npoint.\n\nWhy do it this way? Why not pass an extra argument to the mount() syscall to\nindicate the subpath and then pathwalk from the server root to the desired\ndirectory? You can\u0027t guarantee this will work for two reasons:\n\n (1) The root and intervening nodes may not be accessible to the client.\n\n     With NFS2 and NFS3, for instance, mountd is called on the server to get\n     the filehandle for the tip of a path. mountd won\u0027t give us handles for\n     anything we don\u0027t have permission to access, and so we can\u0027t set up NFS\n     inodes for such nodes, and so can\u0027t easily set up dentries (we\u0027d have to\n     have ghost inodes or something).\n\n     With this patch we don\u0027t actually create dentries until we get handles\n     from the server that we can use to set up their inodes, and we don\u0027t\n     actually bind them into the tree until we know for sure where they go.\n\n (2) Inaccessible symbolic links.\n\n     If we\u0027re asked to mount two exports from the server, eg:\n\n\tmount warthog:/warthog/aaa/xxx /mmm\n\tmount warthog:/warthog/bbb/yyy /nnn\n\n     We may not be able to access anything nearer the root than xxx and yyy,\n     but we may find out later that /mmm/www/yyy, say, is actually the same\n     directory as the one mounted on /nnn. What we might then find out, for\n     example, is that /warthog/bbb was actually a symbolic link to\n     /warthog/aaa/xxx/www, but we can\u0027t actually determine that by talking to\n     the server until /warthog is made available by NFS.\n\n     This would lead to having constructed an errneous dentry tree which we\n     can\u0027t easily fix. We can end up with a dentry marked as a directory when\n     it should actually be a symlink, or we could end up with an apparently\n     hardlinked directory.\n\n     With this patch we need not make assumptions about the type of a dentry\n     for which we can\u0027t retrieve information, nor need we assume we know its\n     place in the grand scheme of things until we actually see that place.\n\nThis patch reduces the possibility of aliasing in the inode and page caches for\ninodes that may be accessed by more than one NFS export. It also reduces the\nnumber of superblocks required for NFS where there are many NFS exports being\nused from a server (home directory server + autofs for example).\n\nThis in turn makes it simpler to do local caching of network filesystems, as it\ncan then be guaranteed that there won\u0027t be links from multiple inodes in\nseparate superblocks to the same cache file.\n\nObviously, cache aliasing between different levels of NFS protocol could still\nbe a problem, but at least that gives us another key to use when indexing the\ncache.\n\nThis patch makes the following changes:\n\n (1) The server record construction/destruction has been abstracted out into\n     its own set of functions to make things easier to get right.  These have\n     been moved into fs/nfs/client.c.\n\n     All the code in fs/nfs/client.c has to do with the management of\n     connections to servers, and doesn\u0027t touch superblocks in any way; the\n     remaining code in fs/nfs/super.c has to do with VFS superblock management.\n\n (2) The sequence of events undertaken by NFS mount is now reordered:\n\n     (a) A volume representation (struct nfs_server) is allocated.\n\n     (b) A server representation (struct nfs_client) is acquired.  This may be\n     \t allocated or shared, and is keyed on server address, port and NFS\n     \t version.\n\n     (c) If allocated, the client representation is initialised.  The state\n     \t member variable of nfs_client is used to prevent a race during\n     \t initialisation from two mounts.\n\n     (d) For NFS4 a simple pathwalk is performed, walking from FH to FH to find\n     \t the root filehandle for the mount (fs/nfs/getroot.c).  For NFS2/3 we\n     \t are given the root FH in advance.\n\n     (e) The volume FSID is probed for on the root FH.\n\n     (f) The volume representation is initialised from the FSINFO record\n     \t retrieved on the root FH.\n\n     (g) sget() is called to acquire a superblock.  This may be allocated or\n     \t shared, keyed on client pointer and FSID.\n\n     (h) If allocated, the superblock is initialised.\n\n     (i) If the superblock is shared, then the new nfs_server record is\n     \t discarded.\n\n     (j) The root dentry for this mount is looked up from the root FH.\n\n     (k) The root dentry for this mount is assigned to the vfsmount.\n\n (3) nfs_readdir_lookup() creates dentries for each of the entries readdir()\n     returns; this function now attaches disconnected trees from alternate\n     roots that happen to be discovered attached to a directory being read (in\n     the same way nfs_lookup() is made to do for lookup ops).\n\n     The new d_materialise_unique() function is now used to do this, thus\n     permitting the whole thing to be done under one set of locks, and thus\n     avoiding any race between mount and lookup operations on the same\n     directory.\n\n (4) The client management code uses a new debug facility: NFSDBG_CLIENT which\n     is set by echoing 1024 to /proc/net/sunrpc/nfs_debug.\n\n (5) Clone mounts are now called xdev mounts.\n\n (6) Use the dentry passed to the statfs() op as the handle for retrieving fs\n     statistics rather than the root dentry of the superblock (which is now a\n     dummy).\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8fa5c000d7f986ef9cdc6d95f9f7fcee20e0a7d6",
      "tree": "356b811803db9775fd9c870d189a9ff75885ae6c",
      "parents": [
        "1f163415dc05983830bcc47b33c155b2528b1574"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:12 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:35 2006 -0400"
      },
      "message": "NFS: Move rpc_ops from nfs_server to nfs_client\n\nMove the rpc_ops from the nfs_server struct to the nfs_client struct as they\u0027re\ncommon to all server records of a particular NFS protocol version.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    }
  ],
  "next": "979df72e6f963b42ee484f2eca049c3344da0ba7"
}
