)]}'
{
  "log": [
    {
      "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": "f551e44ff11d3e2ec8f37907bb88ec2433cc8b74",
      "tree": "f86527c24391f70d72a28111df5c541959e8f293",
      "parents": [
        "a53a3c58fd83e572a7c768d88b4c4e9840a57e82"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Sep 20 14:33:04 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:25:05 2006 -0400"
      },
      "message": "NFS: add comments clarifying the use of nfs_post_op_update()\n\nComments-only change to clarify a detail of the NFS protocol and how it is\nimplemented in Linux.\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": "aec5e175288c711cbe44750276f61efa3fa3d370",
      "tree": "b793c3da94887f25e26b6627959a8bb5cb3b10dc",
      "parents": [
        "51b6ded4d9a94a61035deba1d8f51a54e3a3dd86"
      ],
      "author": {
        "name": "Josef \u0027Jeff\u0027 Sipek",
        "email": "jeffpc@josefsipek.net",
        "time": "Sat Sep 16 21:09:32 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:25:04 2006 -0400"
      },
      "message": "NFS: Use SEEK_END instead of hardcoded value\n\nSigned-off-by: Josef \u0027Jeff\u0027 Sipek \u003cjeffpc@josefsipek.net\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "51b6ded4d9a94a61035deba1d8f51a54e3a3dd86",
      "tree": "ec5a7a1cd573a2839e1af36aa74afb217dd1c01c",
      "parents": [
        "2066fe89b459c3c787c811b3369df191cddd93d8"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 15 16:31:56 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:25:04 2006 -0400"
      },
      "message": "NFSv4: When mounting with a port\u003d0 argument, substitute port\u003d2049\n\nRFC3530 states that the registered port 2049 for the NFS protocol should be\nthe default configuration in order to allow clients not to use the RPC\nbinding protocols.\nIf the mount program sends us a port\u003d0, we therefore substitute port\u003d2049.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2066fe89b459c3c787c811b3369df191cddd93d8",
      "tree": "0eca930bb5dd17671b49d09e2aad13c6bdee801b",
      "parents": [
        "c514983d8d2260020543a81589a2b8c7d4bdab4e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 15 08:30:46 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:25:04 2006 -0400"
      },
      "message": "NFSv4: Poll more aggressively when handling NFS4ERR_DELAY\n\nChange the initial retry delay from 1s to 0.1s (and then back off\nexponentially).\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c514983d8d2260020543a81589a2b8c7d4bdab4e",
      "tree": "6151b2a7bb74c6209f7861d0748b35261e53c15e",
      "parents": [
        "6b30954ebb569fa1b2abdb21f2f4290eec76bf80"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 15 08:25:04 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:25:03 2006 -0400"
      },
      "message": "NFSv4: Handle the condition NFS4ERR_FILE_OPEN\n\nRetry a few times before we give up: the error is usually due to ordering\nissues with asynchronous RPC calls.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6b30954ebb569fa1b2abdb21f2f4290eec76bf80",
      "tree": "8d342c0709eeb7c0b442db29b6b3754572e75689",
      "parents": [
        "97db8f41792839a6912fd21be8b61dd6c50db58f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 14 14:03:14 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:25:03 2006 -0400"
      },
      "message": "NFSv4: Retry lease recovery if it failed during a synchronous operation.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "97db8f41792839a6912fd21be8b61dd6c50db58f",
      "tree": "b569931dd76809ef4bee9165da54d1c34310fbe4",
      "parents": [
        "5f004cf2aa8494708fd8d78e78142b7b2748e765"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 14 14:03:14 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:25:03 2006 -0400"
      },
      "message": "NFS: Don\u0027t invalidate the symlink we just stuffed into the cache\n\nAnd slight optimisation of nfs_end_data_update(): directories never have\ndelegations anyway.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5f004cf2aa8494708fd8d78e78142b7b2748e765",
      "tree": "c4f10f43217737e08d68167e1866ef5b305ac571",
      "parents": [
        "2dec51466a08ac1c67da41bfd0518d43d983a2eb"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 14 14:03:14 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:25:02 2006 -0400"
      },
      "message": "NFS: Make read() return an ESTALE if the file has been deleted\n\nCurrently, a read() request will return EIO even if the file has been\ndeleted on the server, simply because that is what the VM will return\nif the call to readpage() fails to update the page.\n\nEnsure that readpage() marks the inode as stale if it receives an ESTALE.\nThen return that error to userland.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2dec51466a08ac1c67da41bfd0518d43d983a2eb",
      "tree": "b6df8d1c1dfe41b4aa89d42ba9864358e6eea1d3",
      "parents": [
        "fd6840714d9cf6e93f1d42b904860a94df316b85"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Sep 12 11:53:23 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:25:02 2006 -0400"
      },
      "message": "NFSv4: It\u0027s perfectly legal for clp to be NULL here....\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\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": "297de4f65698ee1e1c75e27d57933b5fa8227e72",
      "tree": "b04698edae97e64b3ad5290b33a9233f97f48c77",
      "parents": [
        "058ad9cbf14b3c7480d01b20280cb4d5858f7a50"
      ],
      "author": {
        "name": "andros@citi.umich.edu",
        "email": "andros@citi.umich.edu",
        "time": "Tue Aug 29 12:19:41 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:56 2006 -0400"
      },
      "message": "Fix a referral error Oops\n\nFix an oops when the referral server is not responding.\nCheck the error return from nfs4_set_client() in nfs4_create_referral_server.\n\nSigned-off-by: Andy Adamson \u003candros@citi.umich.edu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "058ad9cbf14b3c7480d01b20280cb4d5858f7a50",
      "tree": "069a2340c25a953b134b09efc9b84e64847b93ec",
      "parents": [
        "6daabf1b04c89f1fbd8eab5450261360943c8e20"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Sun Aug 27 17:23:53 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:55 2006 -0400"
      },
      "message": "NFS: NFS_ROOT should use the new rpc_create API\n\nTeach NFS_ROOT to use the new rpc_create API instead of the old two-call\nAPI for creating an RPC transport.\n\nTest plan:\nCompile the kernel with the NFS client build-in, and set CONFIG_NFS_ROOT.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6daabf1b04c89f1fbd8eab5450261360943c8e20",
      "tree": "a4aa0653c5edaf6deb41a10c16b8476f331e7c72",
      "parents": [
        "158998b6fe36f6acef087f574c96d44713499cc9"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Aug 24 15:44:16 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:55 2006 -0400"
      },
      "message": "NFS: Fix up compiler warnings on 64-bit platforms in client.c\n\nFix up warnings from compiling on ppc64.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "158998b6fe36f6acef087f574c96d44713499cc9",
      "tree": "afc0f330e51135cdcf05bd8c268bf514165a4e4a",
      "parents": [
        "5dd3177ae5012c1e2ad7a9ffdbd0e0d0de2f60e4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Aug 24 01:03:17 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:54 2006 -0400"
      },
      "message": "SUNRPC: Make rpc_mkpipe() take the parent dentry as an argument\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5dd3177ae5012c1e2ad7a9ffdbd0e0d0de2f60e4",
      "tree": "2a8730d6443f6d33e8879cfc323396f9a570b97b",
      "parents": [
        "275a082fe9308e710324e26ccb5363c53d8fd45f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Aug 24 01:03:05 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:54 2006 -0400"
      },
      "message": "NFSv4: Fix a use-after-free issue with the nfs server.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "275a082fe9308e710324e26ccb5363c53d8fd45f",
      "tree": "e97df6e45f98ea2827f71dc749f8cd47f3f353cc",
      "parents": [
        "94a6d75320b3681e6e728b70e18bd186cb55e682"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 22 20:06:24 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:54 2006 -0400"
      },
      "message": "Add a real API for dealing with blk_congestion_wait()\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": "41877d207c46f050b709f452703ade20c3b4a096",
      "tree": "a0da315e01e6008823dcc46c602e13c550a085a8",
      "parents": [
        "e1ec78928b4d5a31b7a847e65c6009f4229f7c0f"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Aug 22 20:06:20 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:50 2006 -0400"
      },
      "message": "NFS: Convert NFS client to use new rpc_create() API\n\nConvert NFS client mount logic to use rpc_create() instead of the old\nxprt_create_proto/rpc_create_client API.\n\nTest plan:\nMount stress tests.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "39d7bbcb5ba5e9d8d658b70903dd7939400e57db",
      "tree": "591e25f18cc1779c88c1a9de9306b23ff50bd0e0",
      "parents": [
        "081f79a9b09b634f0dc08ed014e0195464d52535"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Aug 22 20:06:18 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:47 2006 -0400"
      },
      "message": "SUNRPC: remove extraneous header inclusions\n\ninclude/linux/sunrpc/clnt.h already includes include/linux/sunrpc/xprt.h.\nWe can remove xprt.h from source files that already include clnt.h.\nLikewise include/linux/sunrpc/timer.h.\n\nTest plan:\nCompile kernel with CONFIG_NFS enabled.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9c5bf38d85a31b946664bcc21078ef5bb10672f7",
      "tree": "cceee456ebefe2380a417746b366d67a11ec6ebe",
      "parents": [
        "36b15c54cd0d6f707a3ac03e4a2a60bb530a95b9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 22 20:06:14 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:38 2006 -0400"
      },
      "message": "NFS: Fix nfs_alloc_client()\n\nThe scheme to indicate which services have been started up appears to be\nseriously broken.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "36b15c54cd0d6f707a3ac03e4a2a60bb530a95b9",
      "tree": "09aa1cff411f9a26c1da9255241a865b13d738f3",
      "parents": [
        "738a35195941ecf604d3070e2a053e1df3de350b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 22 20:06:14 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:38 2006 -0400"
      },
      "message": "NFS: Ensure NFSv2/v3 mounts respect the NFS_MOUNT_SECFLAVOUR flag\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "738a35195941ecf604d3070e2a053e1df3de350b",
      "tree": "dd85dd6e48fad4a041d26ef6c36c4dd08537161f",
      "parents": [
        "27ba851244f627a302d0fc6469d1ad413fc34fcb"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sun Jul 30 14:58:27 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:38 2006 -0400"
      },
      "message": "NFS: Secure the roots of the NFS subtrees in a shared superblock\n\nInvoke security_d_instantiate() on root dentries after allocating them with\ndentry_alloc_anon().  Normally dentry_alloc_root() would do that, but we don\u0027t\ncall that as we don\u0027t want to assign a name to the root dentry at this point\n(we may discover the real name later).\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "27ba851244f627a302d0fc6469d1ad413fc34fcb",
      "tree": "383016ee3e96fe7acf62067bda1ed70371ab4640",
      "parents": [
        "6aaca566503296a73f956908ec98173946134fe2"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sun Jul 30 14:40:56 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:37 2006 -0400"
      },
      "message": "NFS: Fix error handling\n\nFix an error handling problem: nfs_put_client() can be given a NULL pointer if\nnfs_free_server() is asked to destroy a partially initialised record.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6aaca566503296a73f956908ec98173946134fe2",
      "tree": "7625bbfa14cddd93ed3e2afa03caf4b553116f76",
      "parents": [
        "54ceac4515986030c2502960be620198dd8fe25b"
      ],
      "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: Add server and volume lists to /proc\n\nMake two new proc files available:\n\n\t/proc/fs/nfsfs/servers\n\t/proc/fs/nfsfs/volumes\n\nThe first lists the servers with which we are currently dealing (struct\nnfs_client), and the second lists the volumes we have on those servers (struct\nnfs_server).\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.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": "cf6d7b5de8535a9f0088c5cc28ee2dae87371b4a",
      "tree": "815aecb371fc5b702c209bbda550e950e2bd1b04",
      "parents": [
        "5006a76cca8f86c6975c16fcf67e83b8b0eee2b6"
      ],
      "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:36 2006 -0400"
      },
      "message": "NFS: Start rpciod in server common management\n\nStart rpciod in the server common (nfs_client struct) management code rather\nthan in the superblock management code.  This means we only need to \"start\" it\nonce per server instead of once per superblock.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5006a76cca8f86c6975c16fcf67e83b8b0eee2b6",
      "tree": "fbe711871729ddfc921e91ba86202a15c5a1a55f",
      "parents": [
        "8fa5c000d7f986ef9cdc6d95f9f7fcee20e0a7d6"
      ],
      "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:36 2006 -0400"
      },
      "message": "NFS: Eliminate client_sys in favour of cl_rpcclient\n\nEliminate nfs_server::client_sys in favour of nfs_client::cl_rpcclient as we\nonly really need one per server that we\u0027re talking to since it doesn\u0027t have any\nsecurity on it.\n\nThe retransmission management variables are also moved to the common struct as\nthey\u0027re required to set up the cl_rpcclient connection.\n\nThe NFS2/3 client and client_acl connections are thenceforth derived by cloning\nthe cl_rpcclient connection and post-applying the authorisation flavour.\n\nThe code for setting up the initial common connection has been moved to\nclient.c as nfs_create_rpc_client().  All the NFS program definition tables are\nalso moved there as that\u0027s where they\u0027re now required rather than super.c.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8fa5c000d7f986ef9cdc6d95f9f7fcee20e0a7d6",
      "tree": "356b811803db9775fd9c870d189a9ff75885ae6c",
      "parents": [
        "1f163415dc05983830bcc47b33c155b2528b1574"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:12 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:35 2006 -0400"
      },
      "message": "NFS: Move rpc_ops from nfs_server to nfs_client\n\nMove the rpc_ops from the nfs_server struct to the nfs_client struct as they\u0027re\ncommon to all server records of a particular NFS protocol version.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1f163415dc05983830bcc47b33c155b2528b1574",
      "tree": "e4180da9947f8b802b6927726cda9d0949f8e00f",
      "parents": [
        "27951bd26031f6c27d38df9e94623bbe208a2464"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:11 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:35 2006 -0400"
      },
      "message": "NFS: Make better use of inode* dereferencing macros\n\nMake better use of inode* dereferencing macros to hide dereferencing chains\n(including NFS_PROTO and NFS_CLIENT).\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "27951bd26031f6c27d38df9e94623bbe208a2464",
      "tree": "4d5b84cb50ad06883e5aaf16d144ce6cdab9f006",
      "parents": [
        "509de8111656a7d89b4a1a5f430f4460ce510f0f"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:11 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:35 2006 -0400"
      },
      "message": "NFS: Maintain a common server record for NFS2/3 as well as for NFS4\n\nMaintain a common server record for NFS2/3 as well as for NFS4 so that common\nstuff can be moved there from struct nfs_server.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "509de8111656a7d89b4a1a5f430f4460ce510f0f",
      "tree": "94ec0130ab74a5c80956ca3edd3298999b3b9897",
      "parents": [
        "0c7d90cfed91a283228017ba6faf37ee0bcd32b1"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:11 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:34 2006 -0400"
      },
      "message": "NFS: Add extra const qualifiers\n\nAdd some extra const qualifiers into NFS.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0c7d90cfed91a283228017ba6faf37ee0bcd32b1",
      "tree": "bf8aae1186e905660f179cbda720ce51d1b7498c",
      "parents": [
        "24c8dbbb5f777187d660393599641ab3307b4b97"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:10 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:34 2006 -0400"
      },
      "message": "NFS: Use the dentry superblock directly in nfs_statfs()\n\nUse the nominated dentry\u0027s superblock directly in the NFS statfs() op to get a\nfile handle, rather than using s_root (which will become a dummy dentry in a\nfuture patch).\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "24c8dbbb5f777187d660393599641ab3307b4b97",
      "tree": "9d50fdd57c7593d925a21e4bb049095a4e4ead6f",
      "parents": [
        "e9326dcab413848e70ab746c7c5363da13e5f801"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:10 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:33 2006 -0400"
      },
      "message": "NFS: Generalise the nfs_client structure\n\nGeneralise the nfs_client structure by:\n\n (1) Moving nfs_client to a more general place (nfs_fs_sb.h).\n\n (2) Renaming its maintenance routines to be non-NFS4 specific.\n\n (3) Move those maintenance routines to a new non-NFS4 specific file (client.c)\n     and move the declarations to internal.h.\n\n (4) Make nfs_find/get_client() take a full sockaddr_in to include the port\n     number (will be required for NFS2/3).\n\n (5) Make nfs_find/get_client() take the NFS protocol version (again will be\n     required to differentiate NFS2, 3 \u0026 4 client records).\n\nAlso:\n\n (6) Make nfs_client construction proceed akin to inodes, marking them as under\n     construction and providing a function to indicate completion.\n\n (7) Make nfs_get_client() wait interruptibly if it finds a client that it can\n     share, but that client is currently being constructed.\n\n (8) Make nfs4_create_client() use (6) and (7) instead of locking cl_sem.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e9326dcab413848e70ab746c7c5363da13e5f801",
      "tree": "594a1e4ac32fd0620f0b91442d5d1b65fd9cc743",
      "parents": [
        "2b3de4411b3ccaeb00018c99d1bbe7203554cf7f"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:10 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:33 2006 -0400"
      },
      "message": "NFS: Add a server capabilities NFS RPC op\n\nAdd a set_capabilities NFS RPC op so that the server capabilities can be set.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2b3de4411b3ccaeb00018c99d1bbe7203554cf7f",
      "tree": "cb49ea1fe64835fdbb8335a55049e70b3d87c5ae",
      "parents": [
        "b7162792b5c0e0f6e91b8997f8e6bbc76ec5420a"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:09 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:32 2006 -0400"
      },
      "message": "NFS: Add a lookupfh NFS RPC op\n\nAdd a lookup filehandle NFS RPC op so that a file handle can be looked up\nwithout requiring dentries and inodes and other VFS stuff when doing an NFS4\npathwalk during mounting.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b7162792b5c0e0f6e91b8997f8e6bbc76ec5420a",
      "tree": "214c0aec3cee41cf872e0c4940fa778f6c0f94e9",
      "parents": [
        "7539bbab8062aadc1db95a22b377146843cfa88f"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:09 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:32 2006 -0400"
      },
      "message": "NFS: Return an error when starting the idmapping pipe\n\nReturn an error when starting the idmapping pipe so that we can detect it\nfailing.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7539bbab8062aadc1db95a22b377146843cfa88f",
      "tree": "697983ea016cbe378e4f2128846edebd78e468b9",
      "parents": [
        "adfa6f980bd46974e6b32b22dd0c45e3f52063f4"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:09 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:32 2006 -0400"
      },
      "message": "NFS: Rename nfs_server::nfs4_state\n\nRename nfs_server::nfs4_state to nfs_client as it will be used to represent the\nclient state for NFS2 and NFS3 also.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "adfa6f980bd46974e6b32b22dd0c45e3f52063f4",
      "tree": "7dbc86985faa0fce0e73103979262c1593ea3a3b",
      "parents": [
        "5ae1fbce142b67bf59e15fb1af96e88a96abde7b"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:08 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:31 2006 -0400"
      },
      "message": "NFS: Rename struct nfs4_client to struct nfs_client\n\nRename struct nfs4_client to struct nfs_client so that it can become the basis\nfor a general client record for NFS2 and NFS3 in addition to NFS4.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5ae1fbce142b67bf59e15fb1af96e88a96abde7b",
      "tree": "88e09770f11535b688f9539b5999f836c8b322ab",
      "parents": [
        "0a8ea4372b2868842986118ca90912f3382e6c5a"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:08 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:31 2006 -0400"
      },
      "message": "NFS: Fix NFS4 callback up/down prototypes\n\nMake the nfs_callback_up()/down() prototypes just do nothing if NFS4 is not\nenabled.  Also make the down function void type since we can\u0027t really do\nanything if it fails.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0a8ea4372b2868842986118ca90912f3382e6c5a",
      "tree": "06d0641bf6d5906c28814c672ce43697467fa03d",
      "parents": [
        "7d4e2747a0412583526a162fbbd6edeeafcceb08"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:08 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:30 2006 -0400"
      },
      "message": "NFS: Disambiguate nfs_stat_to_errno()\n\nRename the NFS4 version of nfs_stat_to_errno() so that it doesn\u0027t conflict with\nthe common one used by NFS2 and NFS3.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7d4e2747a0412583526a162fbbd6edeeafcceb08",
      "tree": "756180b37a02b504998c646ff027652f80e10bab",
      "parents": [
        "770bfad846ab6628444428467b11fa6773ae9ea1"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:07 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:30 2006 -0400"
      },
      "message": "NFS: Fix up split of fs/nfs/inode.c\n\nFix ups for the splitting of the superblock stuff out of fs/nfs/inode.c,\nincluding:\n\n (*) Move the callback tcpport module param into callback.c.\n\n (*) Move the idmap cache timeout module param into idmap.c.\n\n (*) Changes to internal.h:\n\n     (*) namespace-nfs4.c was renamed to nfs4namespace.c.\n\n     (*) nfs_stat_to_errno() is in nfs2xdr.c, not nfs4xdr.c.\n\n     (*) nfs4xdr.c is contingent on CONFIG_NFS_V4.\n\n     (*) nfs4_path() is only uses if CONFIG_NFS_V4 is set.\n\nPlus also:\n\n (*) The sec_flavours[] table should really be const.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "979df72e6f963b42ee484f2eca049c3344da0ba7",
      "tree": "f3ba48a16203c899dbe57482c1ff7f1c02e0c9ca",
      "parents": [
        "cfcea3e8c66c2dcde98d5c2693d4bff50b5cac97"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 25 11:28:19 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:29 2006 -0400"
      },
      "message": "NFS: Add an ACCESS cache memory shrinker\n\nA pinned inode may in theory end up filling memory with cached ACCESS\ncalls. This patch ensures that the VM may shrink away the cache in these\nparticular cases.\nThe shrinker works by iterating through the list of inodes on the global\nnfs_access_lru_list, and removing the least recently used access\ncache entry until it is done (or until the entire cache is empty).\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cfcea3e8c66c2dcde98d5c2693d4bff50b5cac97",
      "tree": "ee7b995a48c43de7355fa33079ee7aaad020d6f3",
      "parents": [
        "1c3c07e9f6cc50dab2aeb8051325e317d4f6c70e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 25 11:28:18 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:29 2006 -0400"
      },
      "message": "NFS: Add a global LRU list for the ACCESS cache\n\n...in order to allow the addition of a memory shrinker.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1c3c07e9f6cc50dab2aeb8051325e317d4f6c70e",
      "tree": "96bbc2a304e9a0e831daf589d1662c6129303796",
      "parents": [
        "3eeab61aa3ddd3c0bedb7449ada1599de22fdb5a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 25 11:28:18 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:28 2006 -0400"
      },
      "message": "NFS: Add a new ACCESS rpc call cache to the linux nfs client\n\nThe current access cache only allows one entry at a time to be cached for each\ninode. Add a per-inode red-black tree in order to allow more than one to\nbe cached at a time.\n\nShould significantly cut down the time spent in path traversal for shared\ndirectories such as ${PATH}, /usr/share, etc.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5c2d97cb31fb77981797fec46230ca005b865799",
      "tree": "8393101586bc3ed4e7577eeae215fc305b1999de",
      "parents": [
        "76723de0cf5b186afe2f329eeef304c321d52bf8"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Sep 18 23:20:35 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 19 11:59:10 2006 -0400"
      },
      "message": "NFS: Fix nfs_page use after free issues in fs/nfs/write.c\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "76723de0cf5b186afe2f329eeef304c321d52bf8",
      "tree": "677768d360a5288086aa6965ce4db67d556fac03",
      "parents": [
        "7a52411107e1ac8f5be6967936ec237f40a1c7e4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 15 08:11:51 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 19 11:54:53 2006 -0400"
      },
      "message": "NFSv4: Fix incorrect semaphore release in _nfs4_do_open()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7a52411107e1ac8f5be6967936ec237f40a1c7e4",
      "tree": "155ba22e3d333f7e0f6cf1fcbb3d9538f75375fe",
      "parents": [
        "47a5c6fa0e204a2b63309c648bb2fde36836c826"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 15 16:03:45 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 19 11:54:39 2006 -0400"
      },
      "message": "NFS: Fix Oopsable condition in nfs_readpage_sync()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e9f7bee1df223dcf83743b46cb06c08d95497ec0",
      "tree": "67beae4733ef0286645112a52623c81c8f8a19a9",
      "parents": [
        "016eb4a0ed06a3677d67a584da901f0e9a63c666"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 08 09:48:54 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 08 10:22:51 2006 -0700"
      },
      "message": "[PATCH] NFS: large non-page-aligned direct I/O clobbers memory\n\nThe logic in nfs_direct_read_schedule and nfs_direct_write_schedule can\nallow data-\u003enpages to be one larger than rpages.  This causes a page\npointer to be written beyond the end of the pagevec in nfs_read_data (or\nnfs_write_data).\n\nFix this by making nfs_(read|write)_alloc() calculate the size of the\npagevec array, and initialise data-\u003enpages.\n\nAlso get rid of the redundant argument to nfs_commit_alloc().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "16b4289c7460ba9c04af40c574949dcca9029658",
      "tree": "b0c1b47e82306d23e326d6a6a59d251eccb85e81",
      "parents": [
        "e8896495bca8490a427409e0886d63d05419ec65"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Aug 24 12:27:15 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Aug 24 15:54:13 2006 -0400"
      },
      "message": "NFSv4: Add v4 exception handling for the ACL functions.\n\nThis is needed in order to handle any NFS4ERR_DELAY errors that might be\nreturned by the server. It also ensures that we map the NFSv4 errors before\nthey are returned to userland.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n(cherry picked from 71c12b3f0abc7501f6ed231a6d17bc9c05a238dc commit)\n"
    },
    {
      "commit": "e8896495bca8490a427409e0886d63d05419ec65",
      "tree": "b402c7c7a868501e3c6dbcf1874ead3368152ea4",
      "parents": [
        "3cedf13af9f7e61aca0dbbd11b601ac93bf93a9f"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Aug 24 15:44:19 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Aug 24 15:53:34 2006 -0400"
      },
      "message": "NFS: Check lengths more thoroughly in NFS4 readdir XDR decode\n\nCheck the bounds of length specifiers more thoroughly in the XDR decoding of\nNFS4 readdir reply data.\n\nCurrently, if the server returns a bitmap or attr length that causes the\ncurrent decode point pointer to wrap, this could go undetected (consider a\nsmall \"negative\" length on a 32-bit machine).\n\nAlso add a check into the main XDR decode handler to make sure that the amount\nof data is a multiple of four bytes (as specified by RFC-1014).  This makes\nsure that we can do u32* pointer subtraction in the NFS client without risking\nan undefined result (the result is undefined if the pointers are not correctly\naligned with respect to one another).\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n(cherry picked from 5861fddd64a7eaf7e8b1a9997455a24e7f688092 commit)\n"
    },
    {
      "commit": "79558f3610efd7928e8882b2eaca3093b283630e",
      "tree": "125f16640cd7f9de2074dae89a9c6c405703029c",
      "parents": [
        "01df9c5e918ae5559f2d96da0143f8bfbb9e6171"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 22 13:44:32 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Aug 24 15:51:08 2006 -0400"
      },
      "message": "NFS: Fix issue with EIO on NFS read\n\nThe problem is that we may be caching writes that would extend the file and\ncreate a hole in the region that we are reading. In this case, we need to\ndetect the eof from the server, ensure that we zero out the pages that\nare part of the hole and mark them as up to date.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n(cherry picked from 856b603b01b99146918c093969b6cb1b1b0f1c01 commit)\n"
    },
    {
      "commit": "8f8e7a50f450fcb86a5b2ffb94543c57a14f8260",
      "tree": "fc48bee347dad1c6100468c2169d34152e2daac1",
      "parents": [
        "68adb0af51ebccb72ffb14d49cb8121b1afc4259"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Aug 14 13:11:15 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Aug 24 15:50:51 2006 -0400"
      },
      "message": "SUNRPC: Fix dentry refcounting issues with users of rpc_pipefs\n\nrpc_unlink() and rpc_rmdir() will dput the dentry reference for you.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n(cherry picked from a05a57effa71a1f67ccbfc52335c10c8b85f3f6a commit)\n"
    },
    {
      "commit": "5d67476fff2df6ff12f60b540fd0e74cf2a668f9",
      "tree": "d1428c5562ce6b24919da18c44746d363e9864e1",
      "parents": [
        "a634904a7de0d3a0bc606f608007a34e8c05bfee"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 31 14:11:48 2006 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Aug 24 15:50:07 2006 -0400"
      },
      "message": "SUNRPC: make rpc_unlink() take a dentry argument instead of a path\n\nSigne-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n(cherry picked from 88bf6d811b01a4be7fd507d18bf5f1c527989089 commit)\n"
    },
    {
      "commit": "ddeff520f02b92128132c282c350fa72afffb84a",
      "tree": "238a720ece47a2f1e07b4d4cc53dff10860bbacb",
      "parents": [
        "ef7d1b244fa6c94fb76d5f787b8629df64ea4046"
      ],
      "author": {
        "name": "Nikita Danilov",
        "email": "nikita@clusterfs.com",
        "time": "Wed Aug 09 13:53:47 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Aug 24 15:48:46 2006 -0400"
      },
      "message": "NFS: Fix a potential deadlock in nfs_release_page\n\nnfs_wb_page() waits on request completion and, as a result, is not safe to be\ncalled from nfs_release_page() invoked by VM scanner as part of GFP_NOFS\nallocation. Fix possible deadlock by analyzing gfp mask and refusing to\nrelease page if __GFP_FS is not set.\n\nSigned-off-by: Nikita Danilov \u003cdanilov@gmail.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n(cherry picked from 374d969debfb290bafcb41d28918dc6f7e43ce31 commit)\n"
    },
    {
      "commit": "e4e20512cfe0bacec0764b4925889d1fa94644f9",
      "tree": "4926bdea3262685fe388d23e0f5bd50e5d9f42c2",
      "parents": [
        "ce510193272c295b891e45525a83b543ae3207c1"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Thu Aug 03 15:07:47 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Aug 03 16:55:41 2006 -0400"
      },
      "message": "NFS: make 2 functions static\n\nnfs_writedata_free() and nfs_readdata_free() can now become static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n(cherry picked from 5e1ce40f0c3c8f67591aff17756930d7a18ceb1a commit)\n"
    },
    {
      "commit": "ce510193272c295b891e45525a83b543ae3207c1",
      "tree": "4b343858aa43e2a1e549ea23c5cff4cf86aeff47",
      "parents": [
        "3f2792ffbd88dc1cd41d226674cc428914981e98"
      ],
      "author": {
        "name": "Josh Triplett",
        "email": "josht@us.ibm.com",
        "time": "Mon Jul 24 16:30:00 2006 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Aug 03 16:55:01 2006 -0400"
      },
      "message": "NFS: Release dcache_lock in an error path of nfs_path\n\nIn one of the error paths of nfs_path, it may return with dcache_lock still\nheld; fix this by adding and using a new error path Elong_unlock which unlocks\ndcache_lock.\n\nSigned-off-by: Josh Triplett \u003cjosh@freedesktop.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n(cherry picked from f4b90b43677fb23297c56802c3056fc304f988d9 commit)\n"
    },
    {
      "commit": "72dbac37e3a0acf8e8f07fc65e34e83de83e0b28",
      "tree": "4f70bea9d6e8098c13a8cc89806a1e569737ad13",
      "parents": [
        "4e0641a7ad98fca5646a6be17605bc80f6c4ebde",
        "01c3b861cd77b28565a2d18c7caa3ce7f938e35c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 05 13:19:25 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 05 13:19:25 2006 -0400"
      },
      "message": "Merge branch \u0027locks\u0027\n"
    },
    {
      "commit": "4e0641a7ad98fca5646a6be17605bc80f6c4ebde",
      "tree": "5951d35bb1b2ed5a0452334221689258b5e3165f",
      "parents": [
        "bce3481c91801665e17f8daf59ede946129f3d3f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 05 13:05:13 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 05 13:17:13 2006 -0400"
      },
      "message": "NFS: Optimise away an excessive GETATTR call when a file is symlinked\n\nIn the case when compiling via a symlink tree, we want to ensure that the\nclose-to-open GETATTR call is applied only to the final file, and not to\nthe symlink.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "83715ad54fad5a7ed330110f83e31ae92630e9d9",
      "tree": "3e8717ef9d168cbefd950bac544cb38542e6ee90",
      "parents": [
        "5e66dd6d66ffe758b39b6dcadf2330753ee1159b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 05 13:17:12 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 05 13:17:12 2006 -0400"
      },
      "message": "NFS: Fix NFS page_state usage\n\nThe introduction of the FLUSH_INVALIDATE argument to nfs_sync_inode_wait()\ndoes not clear the nr_unstable page state counter for pages that are being\nreleased.\n\nAlso fix a longstanding similar bug when nfs_commit_list() fails.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "01c3b861cd77b28565a2d18c7caa3ce7f938e35c",
      "tree": "1445669572dd5f0e97ec0690da88eefd8bbf5acb",
      "parents": [
        "f07f18dd6f29f11887b8d9cf7ecb736bf2f7dc62"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jun 29 16:38:39 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 05 13:13:18 2006 -0400"
      },
      "message": "NLM,NFSv4: Wait on local locks before we put RPC calls on the wire\n\nUse FL_ACCESS flag to test and/or wait for local locks before we try\nrequesting a lock from the server\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "42a2d13eee3c895d22e9d1a52b96d15ca49adabc",
      "tree": "42e2195fa5ee1ed867418aedf42ee17624553c5f",
      "parents": [
        "9b07357490e5c7a1c3c2b6f4679d7ee4b4185ecd"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jun 29 16:38:36 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 05 13:13:18 2006 -0400"
      },
      "message": "NFSv4: Ensure nfs4_lock_expired() caches delegated locks\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9b07357490e5c7a1c3c2b6f4679d7ee4b4185ecd",
      "tree": "020b1e8ed07374d45ae2691cae8ed550ef123137",
      "parents": [
        "f475ae957db66650db66916c62604ac27409d884"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jun 29 16:38:34 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 05 13:13:17 2006 -0400"
      },
      "message": "NLM,NFSv4: Don\u0027t put UNLOCK requests on the wire unless we hold a lock\n\nUse the new behaviour of {flock,posix}_file_lock(F_UNLCK) to determine if\nwe held a lock, and only send the RPC request to the server if this was the\ncase.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "026477c1141b67e98e3bd8bdedb7d4b88a3ecd09",
      "tree": "2624a44924c625c367f3cebf937853b9da2de282",
      "parents": [
        "9f2fa466383ce100b90fe52cb4489d7a26bf72a9",
        "29454dde27d8e340bb1987bad9aa504af7081eba"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 03 13:49:45 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 03 13:49:45 2006 -0400"
      },
      "message": "Merge branch \u0027master\u0027 of /home/trondmy/kernel/linux-2.6/\n"
    },
    {
      "commit": "4ebd9ab387b39c44165cd296a6637082a4f0f66a",
      "tree": "b6a6d5402a8108c4035a824f5ed428ef24330fb3",
      "parents": [
        "b4b9034132c7e1e4474999e688dd7d03b7d97a99"
      ],
      "author": {
        "name": "Dominik Hackl",
        "email": "dominik@hackl.dhs.org",
        "time": "Sun Jul 02 17:29:26 2006 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jul 02 15:10:20 2006 -0700"
      },
      "message": "[PATCH] nfs: non-procfs build fix\n\nThis fixes a bug in fs/nfs which makes it impossible to build nfs\nwithout having procfs enabled.\n\nSigned-off-by: Dominik Hackl \u003cdominik@hackl.dhs.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "22a3e233ca08a2ddc949ba1ae8f6e16ec7ef1a13",
      "tree": "7ef158ba2c30e0dde2dc103d1904fae243759a6b",
      "parents": [
        "39302175c26d74be35715c05a0f342c9e64c21bf",
        "6ab3d5624e172c553004ecc862bfeac16d9d68b7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 15:39:30 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 15:39:30 2006 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial:\n  Remove obsolete #include \u003clinux/config.h\u003e\n  remove obsolete swsusp_encrypt\n  arch/arm26/Kconfig typos\n  Documentation/IPMI typos\n  Kconfig: Typos in net/sched/Kconfig\n  v9fs: do not include linux/version.h\n  Documentation/DocBook/mtdnand.tmpl: typo fixes\n  typo fixes: specfic -\u003e specific\n  typo fixes in Documentation/networking/pktgen.txt\n  typo fixes: occuring -\u003e occurring\n  typo fixes: infomation -\u003e information\n  typo fixes: disadvantadge -\u003e disadvantage\n  typo fixes: aquire -\u003e acquire\n  typo fixes: mecanism -\u003e mechanism\n  typo fixes: bandwith -\u003e bandwidth\n  fix a typo in the RTC_CLASS help text\n  smb is no longer maintained\n\nManually merged trivial conflict in arch/um/kernel/vmlinux.lds.S\n"
    },
    {
      "commit": "fd39fc8561be33065306bdac0e30414e1e8ac8e1",
      "tree": "ae0740716eed3f850a8f7232c61caebe360bb5ae",
      "parents": [
        "ce866b34ae1b7f1ce60234cf65855886ac7e7d30"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 30 01:55:40 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 11:25:36 2006 -0700"
      },
      "message": "[PATCH] zoned vm counters: conversion of nr_unstable to per zone counter\n\nConversion of nr_unstable to a per zone counter\n\nWe need to do some special modifications to the nfs code since there are\nmultiple cases of disposition and we need to have a page ref for proper\naccounting.\n\nThis converts the last critical page state of the VM and therefore we need to\nremove several functions that were depending on GET_PAGE_STATE_LAST in order\nto make the kernel compile again.  We are only left with event type counters\nin page state.\n\n[akpm@osdl.org: bugfixes]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b1e7a8fd854d2f895730e82137400012b509650e",
      "tree": "9fba87ff6b0146ebd4ee5bc7d5f0c8b037dbb3ad",
      "parents": [
        "df849a1529c106f7460e51479ca78fe07b07dc8c"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 30 01:55:39 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 11:25:35 2006 -0700"
      },
      "message": "[PATCH] zoned vm counters: conversion of nr_dirty to per zone counter\n\nThis makes nr_dirty a per zone counter.  Looping over all processors is\navoided during writeback state determination.\n\nThe counter aggregation for nr_dirty had to be undone in the NFS layer since\nwe summed up the page counts from multiple zones.  Someone more familiar with\nNFS should probably review what I have done.\n\n[akpm@osdl.org: bugfix]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6ab3d5624e172c553004ecc862bfeac16d9d68b7",
      "tree": "6d98881fe91fd9583c109208d5c27131b93fa248",
      "parents": [
        "e02169b682bc448ccdc819dc8639ed34a23cedd8"
      ],
      "author": {
        "name": "Jörn Engel",
        "email": "joern@wohnheim.fh-wedel.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "message": "Remove obsolete #include \u003clinux/config.h\u003e\n\nSigned-off-by: Jörn Engel \u003cjoern@wohnheim.fh-wedel.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "9f2fa466383ce100b90fe52cb4489d7a26bf72a9",
      "tree": "7b72b1fae85137435d5b98f4614df2195f612acc",
      "parents": [
        "607f31e80b6f982d7c0dd7a5045377fc368fe507",
        "0a6047eef1c465c38aacfbdab193161b3f0cd144"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 28 23:27:48 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 28 23:27:48 2006 -0400"
      },
      "message": "Merge branch \u0027master\u0027 of /home/trondmy/kernel/linux-2.6/\n"
    },
    {
      "commit": "f5e54d6e53a20cef45af7499e86164f0e0d16bb2",
      "tree": "cb92acbb89b84796261bf5563182261ec5654127",
      "parents": [
        "a052b68b1e7a31f1e6a721290035e9deb0f6fed9"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Jun 28 04:26:44 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jun 28 14:59:04 2006 -0700"
      },
      "message": "[PATCH] mark address_space_operations const\n\nSame as with already do with the file operations: keep them in .rodata and\nprevents people from doing runtime patching.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "607f31e80b6f982d7c0dd7a5045377fc368fe507",
      "tree": "caa7087b1aa90fe620f8a7a564bf07d94f8c1b69",
      "parents": [
        "79bc79b07c9c6f8ae9290704e9e503a9327fcbb2"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 28 16:52:45 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 28 16:52:45 2006 -0400"
      },
      "message": "Revert \"Merge branch \u0027odirect\u0027\"\n\nThis reverts ccf01ef7aa9c6c293a1c64c27331a2ce227916ec commit.\n\nNo idea how git managed this one: when I asked it to merge the odirect\ntopic branch it actually generated a patch which reverted the change.\n\nReverting the \u0027merge\u0027 will once again reveal Chuck\u0027s recent NFS/O_DIRECT\nwork to the world.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "266bee88699ddbde42ab303bbc426a105cc49809",
      "tree": "2d2b57f869321e177caf173af8d43b5d88c4a79d",
      "parents": [
        "e7374e48009a15a680d53bd1f9828b9b79a8aac9"
      ],
      "author": {
        "name": "David Brownell",
        "email": "david-b@pacbell.net",
        "time": "Tue Jun 27 12:59:15 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jun 27 14:07:19 2006 -0700"
      },
      "message": "[PATCH] fix static linking of NFS\n\nBuilds on ARM report link problems with common configurations like\nstatically linked NFS (for nfsroot).  The symptom is that __init\nsection code references __exit section code; that won\u0027t work since\nthe exit sections are discarded (since they can never be called).\n\nThe best fix for these particular cases would be an \"__init_or_exit\"\nsection annotation.\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nAcked-by: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f36f44de721db44b4c2944133c3c5c2e06f633f0",
      "tree": "47549ea4017b29532b633df4765da5b7c9feda6f",
      "parents": [
        "a5d157e0675ac11188a8d429a062b1938bb2d353"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jun 25 12:30:33 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jun 25 12:30:33 2006 -0700"
      },
      "message": "Fix NFS2 compile error\n\nTrond had apparently merged the same patch twice, causing a duplicate\ninclude of the \"internal.h\" file, with resulting obvious confusion.\n\nTssk.  I\u0027m the only one allowed to send out trees that don\u0027t even\ncompile! Who does this Trond guy think he is?\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9bf2aa129a107a0e9e2a5318d35aca731ae7e666",
      "tree": "a639597d29b316cc2d24ce5e3982ca7fc21bded4",
      "parents": [
        "6ab86aa13045e7f6742af0b3c3c45f952f9fbb8d"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sun Jun 25 02:41:28 2006 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jun 25 06:39:35 2006 -0400"
      },
      "message": "nfs: remove nfs_put_link()\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6ab86aa13045e7f6742af0b3c3c45f952f9fbb8d",
      "tree": "d301f1faaa3e62459edde714cb0c3d4a67a4f8cf",
      "parents": [
        "d75d54147db9db5194040bd1c5022df6ba36ee48"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sun Jun 25 02:41:27 2006 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jun 25 06:38:47 2006 -0400"
      },
      "message": "nfs-build-fix-99\n\nfs/built-in.o:(__param+0x20): undefined reference to `nfs_idmap_cache_timeout\u0027\nfs/built-in.o:(__param+0x48): undefined reference to `nfs_callback_set_tcpport\u0027\n\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nCc: Andy Adamson \u003candros@citi.umich.edu\u003e\nCc: Chuck Lever \u003ccel@netapp.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: J. Bruce Fields \u003cbfields@fieldses.org\u003e\nCc: Manoj Naik \u003cmanoj@almaden.ibm.com\u003e\nCc: Marc Eshel \u003ceshel@almaden.ibm.com\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d75d54147db9db5194040bd1c5022df6ba36ee48",
      "tree": "4bb7c7db88edd31b57958850aa16bc8ea297e017",
      "parents": [
        "ccf01ef7aa9c6c293a1c64c27331a2ce227916ec"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sun Jun 25 02:41:26 2006 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jun 25 06:38:11 2006 -0400"
      },
      "message": "git-nfs-build-fixes\n\nFix various problems with nfs4 disabled.  And various other things.\n\nIn file included from fs/nfs/inode.c:50:\nfs/nfs/internal.h:24: error: static declaration of \u0027nfs_do_refmount\u0027 follows non-static declaration\ninclude/linux/nfs_fs.h:320: error: previous declaration of \u0027nfs_do_refmount\u0027 was here\nfs/nfs/internal.h:65: warning: \u0027struct nfs4_fs_locations\u0027 declared inside parameter list\nfs/nfs/internal.h:65: warning: its scope is only this definition or declaration, which is probably not what you want\nfs/nfs/internal.h: In function \u0027nfs4_path\u0027:\nfs/nfs/internal.h:97: error: \u0027struct nfs_server\u0027 has no member named \u0027mnt_path\u0027\nfs/nfs/inode.c: In function \u0027init_once\u0027:\nfs/nfs/inode.c:1116: error: \u0027struct nfs_inode\u0027 has no member named \u0027open_states\u0027\nfs/nfs/inode.c:1116: error: \u0027struct nfs_inode\u0027 has no member named \u0027delegation\u0027\nfs/nfs/inode.c:1116: error: \u0027struct nfs_inode\u0027 has no member named \u0027delegation_state\u0027\nfs/nfs/inode.c:1116: error: \u0027struct nfs_inode\u0027 has no member named \u0027rwsem\u0027\ndistcc[26452] ERROR: compile fs/nfs/inode.c on g5/64 failed\nmake[1]: *** [fs/nfs/inode.o] Error 1\nmake: *** [fs/nfs/inode.o] Error 2\nmake: *** Waiting for unfinished jobs....\nIn file included from fs/nfs/nfs3xdr.c:26:\nfs/nfs/internal.h:24: error: static declaration of \u0027nfs_do_refmount\u0027 follows non-static declaration\ninclude/linux/nfs_fs.h:320: error: previous declaration of \u0027nfs_do_refmount\u0027 was here\nfs/nfs/internal.h:65: warning: \u0027struct nfs4_fs_locations\u0027 declared inside parameter list\nfs/nfs/internal.h:65: warning: its scope is only this definition or declaration, which is probably not what you want\nfs/nfs/internal.h: In function \u0027nfs4_path\u0027:\nfs/nfs/internal.h:97: error: \u0027struct nfs_server\u0027 has no member named \u0027mnt_path\u0027\ndistcc[26486] ERROR: compile fs/nfs/nfs3xdr.c on g5/64 failed\nmake[1]: *** [fs/nfs/nfs3xdr.o] Error 1\nmake: *** [fs/nfs/nfs3xdr.o] Error 2\nIn file included from fs/nfs/nfs3proc.c:24:\nfs/nfs/internal.h:24: error: static declaration of \u0027nfs_do_refmount\u0027 follows non-static declaration\ninclude/linux/nfs_fs.h:320: error: previous declaration of \u0027nfs_do_refmount\u0027 was here\nfs/nfs/internal.h:65: warning: \u0027struct nfs4_fs_locations\u0027 declared inside parameter list\nfs/nfs/internal.h:65: warning: its scope is only this definition or declaration, which is probably not what you want\nfs/nfs/internal.h: In function \u0027nfs4_path\u0027:\nfs/nfs/internal.h:97: error: \u0027struct nfs_server\u0027 has no member named \u0027mnt_path\u0027\ndistcc[26469] ERROR: compile fs/nfs/nfs3proc.c on bix/32 failed\nmake[1]: *** [fs/nfs/nfs3proc.o] Error 1\nmake: *** [fs/nfs/nfs3proc.o] Error 2\n**FAILED**\n\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nCc: Andy Adamson \u003candros@citi.umich.edu\u003e\nCc: Chuck Lever \u003ccel@netapp.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: J. Bruce Fields \u003cbfields@fieldses.org\u003e\nCc: Manoj Naik \u003cmanoj@almaden.ibm.com\u003e\nCc: Marc Eshel \u003ceshel@almaden.ibm.com\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ccf01ef7aa9c6c293a1c64c27331a2ce227916ec",
      "tree": "421fa29aedff988e392f92780637553e275d37a0",
      "parents": [
        "82b145c5a572f7fa7211dffe2097234dc91bcecc"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jun 25 06:27:31 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jun 25 06:27:31 2006 -0400"
      },
      "message": "Merge branch \u0027odirect\u0027\n"
    },
    {
      "commit": "82b145c5a572f7fa7211dffe2097234dc91bcecc",
      "tree": "35689aa653d29f17681f13d89d592c88e7c112e5",
      "parents": [
        "06cf6f2ed0b19629700794727d86ed57b9c0583e"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Tue Jun 20 12:57:03 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jun 24 13:11:39 2006 -0400"
      },
      "message": "NFS: alloc nfs_read/write_data as direct I/O is scheduled\n\nRe-arrange the logic in the NFS direct I/O path so that nfs_read/write_data\nstructs are allocated just before they are scheduled, rather than\nallocating them all at once before we start scheduling requests.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "06cf6f2ed0b19629700794727d86ed57b9c0583e",
      "tree": "20630465974dc9391af486d8609aae077701b596",
      "parents": [
        "9c93ab7dff5eb22027ab15010557bb73f9b44c99"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Tue Jun 20 12:56:49 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jun 24 13:11:39 2006 -0400"
      },
      "message": "NFS: Eliminate nfs_get_user_pages()\n\nNeil Brown observed that the kmalloc() in nfs_get_user_pages() is more\nlikely to fail if the I/O is large enough to require the allocation of more\nthan a single page to keep track of all the pinned pages in the user\u0027s\nbuffer.\n\nInstead of tracking one large page array per dreq/iocb, track pages per\nnfs_read/write_data, just like the cached I/O path does.  An array for\npages is already allocated for us by nfs_readdata_alloc() (and the write\nand commit equivalents).\n\nThis is also required for adding support for vectored I/O to the NFS direct\nI/O path.\n\nThe original reason to pin the user buffer and allocate all the NFS data\nstructures before trying to schedule I/O was to ensure all needed resources\nare allocated on the client before starting to send requests.  This reduces\nthe chance that resource exhaustion on the client will cause a short read\nor write.\n\nOn the other hand, for an application making very large application I/O\nrequests, this means that it will be nearly impossible for the application\nto make forward progress on a resource-limited client.\n\nThus, moving the buffer pinning functionality into the I/O scheduling\nloops should be good for scalability.  The next patch will do the same for\nNFS data structure allocation.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9c93ab7dff5eb22027ab15010557bb73f9b44c99",
      "tree": "654a010c2aa161d0f9f49d7137410aaca1ebd2ba",
      "parents": [
        "51a7bc6caec94bab256b272bffd24d00ea81c698"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Tue Jun 20 12:56:31 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jun 24 13:11:39 2006 -0400"
      },
      "message": "NFS: refactor nfs_direct_free_user_pages\n\nClean-up and fix a minor bug: the logic was dirtying page cache pages on\nboth read and write operations.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "51a7bc6caec94bab256b272bffd24d00ea81c698",
      "tree": "29e19b93449e6affb53a737b73ddec847e21cc50",
      "parents": [
        "fedb595c66e1fbd5acafe0d43b7e95c13c936d61"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Tue Jun 20 12:56:16 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jun 24 13:11:39 2006 -0400"
      },
      "message": "NFS: remove user_addr, user_count, and pos from nfs_direct_req\n\nMake the user_addr, user_count, and pos parameters explicit to the\nscheduler routines, and remove the fields from nfs_direct_req.  The\niovec API will be passing in a series of these, not just one set.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fedb595c66e1fbd5acafe0d43b7e95c13c936d61",
      "tree": "e865ecc2399c09b7164c2f2c13a2c5c10c8d4de1",
      "parents": [
        "b1c5921c5b715c207d7fe77cd7aaafbb322f09f5"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Tue Jun 20 12:55:45 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jun 24 13:11:38 2006 -0400"
      },
      "message": "NFS: \"open code\" the NFS direct write rescheduler\n\nAn NFSv3/v4 client must reschedule on-the-wire writes if the writes are\nUNSTABLE, and the server reboots before the client can complete a\nsubsequent COMMIT request.\n\nTo support direct asynchronous scatter-gather writes, the write\nrescheduler in fs/nfs/direct.c must not depend on the I/O parameters\nin the controlling nfs_direct_req structure.  iovecs can be somewhat\narbitrarily complex, so there could be an unbounded amount of information\nto save for a rarely encountered requirement.\n\nRefactor the direct write rescheduler so it uses information from each\nnfs_write_data structure to reschedule writes, instead of caching that\ninformation in the controlling nfs_direct_req structure.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b1c5921c5b715c207d7fe77cd7aaafbb322f09f5",
      "tree": "c8a56c56740efa728b7d3b935b6cb09330a4817f",
      "parents": [
        "816724e65c72a90a44fbad0ef0b59b186c85fa90"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Tue Jun 20 12:55:19 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jun 24 13:11:38 2006 -0400"
      },
      "message": "NFS: Separate functions for counting outstanding NFS direct I/Os\n\nFactor out the logic that increments and decrements the outstanding I/O\ncount.  This will be a commonly used bit of code in upcoming patches.\nAlso make this an atomic_t again, since it will be very often manipulated\noutside dreq-\u003espin lock.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "816724e65c72a90a44fbad0ef0b59b186c85fa90",
      "tree": "421fa29aedff988e392f92780637553e275d37a0",
      "parents": [
        "70ac4385a13f78bc478f26d317511893741b05bd",
        "d384ea691fe4ea8c2dd5b9b8d9042eb181776f18"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jun 24 08:41:41 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jun 24 13:07:53 2006 -0400"
      },
      "message": "Merge branch \u0027master\u0027 of /home/trondmy/kernel/linux-2.6/\n\nConflicts:\n\n\tfs/nfs/inode.c\n\tfs/super.c\n\nFix conflicts between patch \u0027NFS: Split fs/nfs/inode.c\u0027 and patch\n\u0027VFS: Permit filesystem to override root dentry on mount\u0027\n"
    },
    {
      "commit": "75e1fcc0b18df0a65ab113198e9dc0e98999a08c",
      "tree": "3ac0d0d3120cbca4ee9734494e2c9a4e0775ac4f",
      "parents": [
        "ff7b86b82083f24b8637dff1528c7101c18c7f39"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Fri Jun 23 02:05:12 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:43:02 2006 -0700"
      },
      "message": "[PATCH] vfs: add lock owner argument to flush operation\n\nPass the POSIX lock owner ID to the flush operation.\n\nThis is useful for filesystems which don\u0027t want to store any locking state\nin inode-\u003ei_flock but want to handle locking/unlocking POSIX locks\ninternally.  FUSE is one such filesystem but I think it possible that some\nnetwork filesystems would need this also.\n\nAlso add a flag to indicate that a POSIX locking request was generated by\nclose(), so filesystems using the above feature won\u0027t send an extra locking\nrequest in this case.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\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": "726c334223180e3c0197cc980a432681370d4baf",
      "tree": "8327b354bb3dc959a6606051ae6f8d4d035e38a2",
      "parents": [
        "454e2398be9b9fa30433fccc548db34d19aa9958"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jun 23 02:02:58 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:45 2006 -0700"
      },
      "message": "[PATCH] VFS: Permit filesystem to perform statfs with a known root dentry\n\nGive the statfs superblock operation a dentry pointer rather than a superblock\npointer.\n\nThis complements the get_sb() patch.  That reduced the significance of\nsb-\u003es_root, allowing NFS to place a fake root there.  However, NFS does\nrequire a dentry to use as a target for the statfs operation.  This permits\nthe root in the vfsmount to be used instead.\n\nlinux/mount.h has been added where necessary to make allyesconfig build\nsuccessfully.\n\nInterest has also been expressed for use with the FUSE and XFS filesystems.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Nathan Scott \u003cnathans@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "454e2398be9b9fa30433fccc548db34d19aa9958",
      "tree": "1f61cb0c3716a33b661cfc8977e9beeb480a322c",
      "parents": [
        "1ad5544098a69d7dc1fa508cbb17e13a7a952fd8"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jun 23 02:02:57 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:45 2006 -0700"
      },
      "message": "[PATCH] VFS: Permit filesystem to override root dentry on mount\n\nExtend the get_sb() filesystem operation to take an extra argument that\npermits the VFS to pass in the target vfsmount that defines the mountpoint.\n\nThe filesystem is then required to manually set the superblock and root dentry\npointers.  For most filesystems, this should be done with simple_set_mnt()\nwhich will set the superblock pointer and then set the root dentry to the\nsuperblock\u0027s s_root (as per the old default behaviour).\n\nThe get_sb() op now returns an integer as there\u0027s now no need to return the\nsuperblock pointer.\n\nThis patch permits a superblock to be implicitly shared amongst several mount\npoints, such as can be done with NFS to avoid potential inode aliasing.  In\nsuch a case, simple_set_mnt() would not be called, and instead the mnt_root\nand mnt_sb would be set directly.\n\nThe patch also makes the following changes:\n\n (*) the get_sb_*() convenience functions in the core kernel now take a vfsmount\n     pointer argument and return an integer, so most filesystems have to change\n     very little.\n\n (*) If one of the convenience function is not used, then get_sb() should\n     normally call simple_set_mnt() to instantiate the vfsmount. This will\n     always return 0, and so can be tail-called from get_sb().\n\n (*) generic_shutdown_super() now calls shrink_dcache_sb() to clean up the\n     dcache upon superblock destruction rather than shrink_dcache_anon().\n\n     This is required because the superblock may now have multiple trees that\n     aren\u0027t actually bound to s_root, but that still need to be cleaned up. The\n     currently called functions assume that the whole tree is rooted at s_root,\n     and that anonymous dentries are not the roots of trees which results in\n     dentries being left unculled.\n\n     However, with the way NFS superblock sharing are currently set to be\n     implemented, these assumptions are violated: the root of the filesystem is\n     simply a dummy dentry and inode (the real inode for \u0027/\u0027 may well be\n     inaccessible), and all the vfsmounts are rooted on anonymous[*] dentries\n     with child trees.\n\n     [*] Anonymous until discovered from another tree.\n\n (*) The documentation has been adjusted, including the additional bit of\n     changing ext2_* into foo_* in the documentation.\n\n[akpm@osdl.org: convert ipath_fs, do other stuff]\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Nathan Scott \u003cnathans@sgi.com\u003e\nCc: Roland Dreier \u003crolandd@cisco.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "81039f1f204a0fd2952112a240284e114f1a25e6",
      "tree": "511625e9ea5361dc240ef0540aff7e5cde1551cb",
      "parents": [
        "f7b422b17ee5ee4920e8ae24a6ad04bf3481ce72"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:34 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:34 2006 -0400"
      },
      "message": "NFS: Display the chosen RPCSEC_GSS security flavour in /proc/mounts\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f7b422b17ee5ee4920e8ae24a6ad04bf3481ce72",
      "tree": "4ae8372762efc092ceb4f884b57cad1efe6594de",
      "parents": [
        "4e5ccf60c5aa79d325c123f47d288a068166f389"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jun 09 09:34:33 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:33 2006 -0400"
      },
      "message": "NFS: Split fs/nfs/inode.c\n\nAs fs/nfs/inode.c is rather large, heterogenous and unwieldy, the attached\npatch splits it up into a number of files:\n\n (*) fs/nfs/inode.c\n\n     Strictly inode specific functions.\n\n (*) fs/nfs/super.c\n\n     Superblock management functions for NFS and NFS4, normal access, clones\n     and referrals.  The NFS4 superblock functions _could_ move out into a\n     separate conditionally compiled file, but it\u0027s probably not worth it as\n     there\u0027re so many common bits.\n\n (*) fs/nfs/namespace.c\n\n     Some namespace-specific functions have been moved here.\n\n (*) fs/nfs/nfs4namespace.c\n\n     NFS4-specific namespace functions (this could be merged into the previous\n     file).  This file is conditionally compiled.\n\n (*) fs/nfs/internal.h\n\n     Inter-file declarations, plus a few simple utility functions moved from\n     fs/nfs/inode.c.\n\n     Additionally, all the in-.c-file externs have been moved here, and those\n     files they were moved from now includes this file.\n\nFor the most part, the functions have not been changed, only some multiplexor\nfunctions have changed significantly.\n\nI\u0027ve also:\n\n (*) Added some extra banner comments above some functions.\n\n (*) Rearranged the function order within the files to be more logical and\n     better grouped (IMO), though someone may prefer a different order.\n\n (*) Reduced the number of #ifdefs in .c files.\n\n (*) Added missing __init and __exit directives.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "4e5ccf60c5aa79d325c123f47d288a068166f389",
      "tree": "acc16e1c85eb4348f4faf5288463f236d61e0fcc",
      "parents": [
        "860de07139980afe9856cc31eb5efbf321bbcea4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:32 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:32 2006 -0400"
      },
      "message": "NFS: Fix typo in nfs_do_clone_mount()\n\nDoh!\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "860de07139980afe9856cc31eb5efbf321bbcea4",
      "tree": "e32a6c758b299f62978426c7e263f6f554678731",
      "parents": [
        "87e4ba1a62af8e05ee3e8f8aaca622714386ffb0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:31 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:31 2006 -0400"
      },
      "message": "NFS: Fix compile errors introduced by referrals patches\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "87e4ba1a62af8e05ee3e8f8aaca622714386ffb0",
      "tree": "f37f00e2c5cc5904f57395f800e8e6544eb062d9",
      "parents": [
        "33a43f2802d8d7be3a9b541785c4ca9ad79e4310"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:30 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:30 2006 -0400"
      },
      "message": "NFSv4: Ensure that referral mounts bind to a reserved port\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "33a43f2802d8d7be3a9b541785c4ca9ad79e4310",
      "tree": "dd55121ea9031401fce8b03554654a332a4c38df",
      "parents": [
        "6b97fd3da1eab2cc490cfe884c7d4956522eaf8b"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@citi.umich.edu",
        "time": "Fri Jun 09 09:34:30 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:30 2006 -0400"
      },
      "message": "NFSv4: A root pathname is sent as a zero component4\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6b97fd3da1eab2cc490cfe884c7d4956522eaf8b",
      "tree": "055f5f603101a15f783ae52081e4714ddc3edc96",
      "parents": [
        "9cdb3883c38f883436a84c2353a4cf964ff890a2"
      ],
      "author": {
        "name": "Manoj Naik",
        "email": "manoj@almaden.ibm.com",
        "time": "Fri Jun 09 09:34:29 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:29 2006 -0400"
      },
      "message": "NFSv4: Follow a referral\n\nRespond to a moved error on NFS lookup by setting up the referral.\nNote: We don\u0027t actually follow the referral during lookup/getattr, but\nlater when we detect fsid mismatch in inode revalidation (similar to the\nprocessing done for cloning submounts). Referrals will have fake attributes\nuntil they are actually followed or traversed.\n\nSigned-off-by: Manoj Naik \u003cmanoj@almaden.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9cdb3883c38f883436a84c2353a4cf964ff890a2",
      "tree": "7961aebf94c66d7d55bb6e7c715e99d28ad3ab9d",
      "parents": [
        "61f5164cab1f6fdf06871ea9d60fe2f912184078"
      ],
      "author": {
        "name": "Manoj Naik",
        "email": "manoj@almaden.ibm.com",
        "time": "Fri Jun 09 09:34:28 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:28 2006 -0400"
      },
      "message": "NFSv4: Ensure client submounts when following a referral\n\nSet up mountpoint when hitting a referral on moved error by getting\nfs_locations.\n\nSigned-off-by: Manoj Naik \u003cmanoj@almaden.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "61f5164cab1f6fdf06871ea9d60fe2f912184078",
      "tree": "966e8279f9563ceda4b919f309832c3336642abb",
      "parents": [
        "c818ba43f9ca2e8214412ab5f126b1f436c35098"
      ],
      "author": {
        "name": "Manoj Naik",
        "email": "manoj@almaden.ibm.com",
        "time": "Fri Jun 09 09:34:27 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:27 2006 -0400"
      },
      "message": "NFS: Expand clone mounts to include other servers\n\nSigned-off-by: Manoj Naik \u003cmanoj@almaden.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    }
  ],
  "next": "c818ba43f9ca2e8214412ab5f126b1f436c35098"
}
