)]}'
{
  "log": [
    {
      "commit": "53f2c4a8fd882009a2a75c5b72d6898c0808616e",
      "tree": "922293a1056c0c2358203cdab832f0e0891e628a",
      "parents": [
        "8f6576ad476b2a22d05ddafd2ddaee102577a4ed",
        "cc0a98436820b161b595b8cc1d2329bcf7328107"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 10:43:51 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 10:43:51 2012 -0700"
      },
      "message": "Merge tag \u0027nfs-for-3.5-1\u0027 of git://git.linux-nfs.org/projects/trondmy/linux-nfs\n\nPull NFS client updates from Trond Myklebust:\n \"New features include:\n   - Rewrite the O_DIRECT code so that it can share the same coalescing\n     and pNFS functionality as the page cache code.\n   - Allow the server to provide hints as to when we should use pNFS,\n     and when it is more efficient to read and write through the\n     metadata server.\n   - NFS cache consistency updates:\n     * Use the ctime to emulate a change attribute for NFSv2/v3 so that\n       all NFS versions can share the same cache management code.\n     * New cache management code will only look at the change attribute\n       and size attribute when deciding whether or not our cached data\n       is still valid or not.\n     * Don\u0027t request NFSv4 post-op attributes on writes in cases such as\n       O_DIRECT, where we don\u0027t care about data cache consistency, or\n       when we have a write delegation, and know that our cache is still\n       consistent.\n     * Don\u0027t request NFSv4 post-op attributes on operations such as\n       COMMIT, where there are no expected metadata updates.\n     * Don\u0027t request NFSv4 directory post-op attributes in cases where\n       the operations themselves already return change attribute\n       updates: i.e. operations such as OPEN, CREATE, REMOVE, LINK and\n       RENAME.\n   - Speed up \u0027ls\u0027 and friends by using READDIR rather than READDIRPLUS\n     if we detect no attempts to lookup filenames.\n   - Improve the code sharing between NFSv2/v3 and v4 mounts\n   - NFSv4.1 state management efficiency improvements\n   - More patches in preparation for NFSv4/v4.1 migration functionality.\"\n\nFix trivial conflict in fs/nfs/nfs4proc.c that was due to the dcache\nqstr name initialization changes (that made the length/hash a 64-bit\nunion)\n\n* tag \u0027nfs-for-3.5-1\u0027 of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (146 commits)\n  NFSv4: Add debugging printks to state manager\n  NFSv4: Map NFS4ERR_SHARE_DENIED into an EACCES error instead of EIO\n  NFSv4: update_changeattr does not need to set NFS_INO_REVAL_PAGECACHE\n  NFSv4.1: nfs4_reset_session should use nfs4_handle_reclaim_lease_error\n  NFSv4.1: Handle other occurrences of NFS4ERR_CONN_NOT_BOUND_TO_SESSION\n  NFSv4.1: Handle NFS4ERR_CONN_NOT_BOUND_TO_SESSION in the state manager\n  NFSv4.1: Handle errors in nfs4_bind_conn_to_session\n  NFSv4.1: nfs4_bind_conn_to_session should drain the session\n  NFSv4.1: Don\u0027t clobber the seqid if exchange_id returns a confirmed clientid\n  NFSv4.1: Add DESTROY_CLIENTID\n  NFSv4.1: Ensure we use the correct credentials for bind_conn_to_session\n  NFSv4.1: Ensure we use the correct credentials for session create/destroy\n  NFSv4.1: Move NFSPROC4_CLNT_BIND_CONN_TO_SESSION to the end of the operations\n  NFSv4.1: Handle NFS4ERR_SEQ_MISORDERED when confirming the lease\n  NFSv4: When purging the lease, we must clear NFS4CLNT_LEASE_CONFIRM\n  NFSv4: Clean up the error handling for nfs4_reclaim_lease\n  NFSv4.1: Exchange ID must use GFP_NOFS allocation mode\n  nfs41: Use BIND_CONN_TO_SESSION for CB_PATH_DOWN*\n  nfs4.1: add BIND_CONN_TO_SESSION operation\n  NFSv4.1 test the mdsthreshold hint parameters\n  ...\n"
    },
    {
      "commit": "26fe575028703948880fce4355a210c76bb0536e",
      "tree": "0a7d04289e1eb1f1739659ebc9498d40f2add5da",
      "parents": [
        "ee983e89670704b2a05e897b161f2674a42d1508"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 10 13:14:12 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 10 19:54:35 2012 -0700"
      },
      "message": "vfs: make it possible to access the dentry hash/len as one 64-bit entry\n\nThis allows comparing hash and len in one operation on 64-bit\narchitectures.  Right now only __d_lookup_rcu() takes advantage of this,\nsince that is the case we care most about.\n\nThe use of anonymous struct/unions hides the alternate 64-bit approach\nfrom most users, the exception being a few cases where we initialize a\n\u0027struct qstr\u0027 with a static initializer.  This makes the problematic\ncases use a new QSTR_INIT() helper function for that (but initializing\njust the name pointer with a \"{ .name \u003d xyzzy }\" initializer remains\nvalid, as does just copying another qstr structure).\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "80a16b21a81eb639f0b726549f4c46c0e9aff92e",
      "tree": "5095cb05498d16e64976b03c38b3fcdaa83e4ecb",
      "parents": [
        "281cad46b34db4dbb1d1e603f7b9cfe25d1ae7c9"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Fri Apr 27 13:27:46 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 27 14:10:39 2012 -0400"
      },
      "message": "NFS: Remove extra rpc_clnt argument to proc_lookup\n\nNow that I\u0027m doing secinfo automatically in the v4 code this extra\nargument isn\u0027t needed.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "281cad46b34db4dbb1d1e603f7b9cfe25d1ae7c9",
      "tree": "f13917030755776a4f80ffcc0d07c2b5da60066d",
      "parents": [
        "2671bfc3beb44e70636bd0208274426db57f73b5"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Fri Apr 27 13:27:45 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 27 14:10:39 2012 -0400"
      },
      "message": "NFS: Create a submount rpc_op\n\nThis simplifies the code for v2 and v3 and gives v4 a chance to decide\non referrals without needing to modify the generic client.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cd841605f7a721878d8a2d1362484723d8abf569",
      "tree": "b5c37db575cd545a183577249909e042fe38d646",
      "parents": [
        "b5542849764aa56fd3f05c0041195b637b9d2ac2"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Fri Apr 20 14:47:44 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 27 14:10:37 2012 -0400"
      },
      "message": "NFS: create common nfs_pgio_header for both read and write\n\nIn order to avoid duplicating all the data in nfs_read_data whenever we\nsplit it up into multiple RPC calls (either due to a short read result\nor due to rsize \u003c PAGE_SIZE), we split out the bits that are the same\nper RPC call into a separate \"header\" structure.\n\nThe goal this patch moves towards is to have a single header\nrefcounted by several rpc_data structures.  Thus, want to always refer\nfrom rpc_data to the header, and not the other way.  This patch comes\nclose to that ideal, but the directio code currently needs some\nspecial casing, isolated in the nfs_direct_[read_write]hdr_release()\nfunctions.  This will be dealt with in a future patch.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0b7c01533aa9f4a228d07d2768d084acb3a387bc",
      "tree": "aa57b08ce42f1effea2294354e3c9770b70e7612",
      "parents": [
        "799ba8d53d32c84bd2a867ca2689538a48176140"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Fri Apr 20 14:47:39 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 27 14:10:37 2012 -0400"
      },
      "message": "NFS: add a struct nfs_commit_data to replace nfs_write_data in commits\n\nCommits don\u0027t need the vectors of pages, etc. that writes do. Split out\na separate structure for the commit operation.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c6bfa1a16377b42496ecc0490a33516c0e414e7b",
      "tree": "a45bb649475733474350d1420b6cb1079020b8f2",
      "parents": [
        "34e137cc7e3b63c254875e59cd48dcbe6757fe6c"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Mar 19 14:54:42 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 21 09:31:46 2012 -0400"
      },
      "message": "NFS: Remove nfs4_setup_sequence from generic rename code\n\nThis is an NFS v4 specific operation, so it belongs in the NFS v4 code\nand not the generic client.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "34e137cc7e3b63c254875e59cd48dcbe6757fe6c",
      "tree": "ea509e7f715bcbf2fd3541062063348f547e6c6c",
      "parents": [
        "ea7c330362257c072791aeaf03bae2cebf9fb984"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Mar 19 14:54:41 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 21 09:31:46 2012 -0400"
      },
      "message": "NFS: Remove nfs4_setup_sequence from generic unlink code\n\nThis is an NFS v4 specific operation, so it belongs in the NFS v4 code\nand not the generic client.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ea7c330362257c072791aeaf03bae2cebf9fb984",
      "tree": "5633ea3278a8ad9b81891bd1fd149af76ad3fe7d",
      "parents": [
        "c6cb80d00be42f30716ec817b963bcec094433b5"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Mar 19 14:54:40 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 21 09:31:45 2012 -0400"
      },
      "message": "NFS: Remove nfs4_setup_sequence from generic read code\n\nThis is an NFS v4 specific operation, so it belongs in the NFS v4 code\nand not the generic client.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c6cb80d00be42f30716ec817b963bcec094433b5",
      "tree": "8049071fc2c5f01a730eb47bfa95ee095ce677df",
      "parents": [
        "6f00866ddd15724eb20eac4ddf6e2c6c1a6cfcdc"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Mar 19 14:54:39 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 21 09:31:45 2012 -0400"
      },
      "message": "NFS: Remove nfs4_setup_sequence from generic write code\n\nThis is an NFS v4 specific operation, so it belongs in the NFS v4 code\nand not the generic client.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d310310cbff18ec385c6ab4d58f33b100192a96a",
      "tree": "801dbbef1552256e7cefc7ec08dcd41b30a9930b",
      "parents": [
        "62c9ea6b120688d800b4d892eaf737c20a73e86b"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Thu Dec 01 22:44:39 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Dec 06 22:12:27 2011 +0100"
      },
      "message": "Freezer / sunrpc / NFS: don\u0027t allow TASK_KILLABLE sleeps to block the freezer\n\nAllow the freezer to skip wait_on_bit_killable sleeps in the sunrpc\nlayer. This should allow suspend and hibernate events to proceed, even\nwhen there are RPC\u0027s pending on the wire.\n\nAlso, wrap the TASK_KILLABLE sleeps in NFS layer in freezer_do_not_count\nand freezer_count calls. This allows the freezer to skip tasks that are\nsleeping while looping on EJUKEBOX or NFS4ERR_DELAY sorts of errors.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "1788ea6e3b2a58cf4fb00206e362d9caff8d86a7",
      "tree": "24846fddf8b55f516f365a735defd79b6ea6d28a",
      "parents": [
        "1583171492eb514e267c7b51e96846b38de0f544"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Fri Nov 04 13:31:21 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Nov 04 16:39:04 2011 -0400"
      },
      "message": "nfs: when attempting to open a directory, fall back on normal lookup (try #5)\n\ncommit d953126 changed how nfs_atomic_lookup handles an -EISDIR return\nfrom an OPEN call. Prior to that patch, that caused the client to fall\nback to doing a normal lookup. When that patch went in, the code began\nreturning that error to userspace. The d_revalidate codepath however\nnever had the corresponding change, so it was still possible to end up\nwith a NULL ctx-\u003estate pointer after that.\n\nThat patch caused a regression. When we attempt to open a directory that\ndoes not have a cached dentry, that open now errors out with EISDIR. If\nyou attempt the same open with a cached dentry, it will succeed.\n\nFix this by reverting the change in nfs_atomic_lookup and allowing\nattempts to open directories to fall back to a normal lookup\n\nAlso, add a NFSv4-specific f_ops-\u003eopen routine that just returns\n-ENOTDIR. This should never be called if things are working properly,\nbut if it ever is, then the dprintk may help in debugging.\n\nTo facilitate this, a new file_operations field is also added to the\nnfs_rpc_ops struct.\n\nCc: stable@kernel.org\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7c5130588d691a3b34d02312f1bd1b6d56fe0100",
      "tree": "154ccea3a837ca1aae2c5676e0946b79fb4bb671",
      "parents": [
        "e73b83f270828630a9ce33728f6ef61c37a82340"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Mar 24 17:12:24 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 13:52:41 2011 -0400"
      },
      "message": "NFS: lookup supports alternate client\n\nA later patch will need to perform a lookup using an\nalternate client with a different security flavor.\nThis patch adds support for doing that on NFS v4.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "45a52a02072b2a7e265f024cfdb00127e08dd9f2",
      "tree": "33c98f48d5b652297f45406f47d9545cca37c7c5",
      "parents": [
        "bf9c1387ca80deac792c9ecf1c64dfcc5d1cc768"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Tue Mar 01 01:34:08 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:41 2011 -0500"
      },
      "message": "NFS move nfs_client initialization into nfs_get_client\n\nNow nfs_get_client returns an nfs_client ready to be used no matter if it was\nfound or created.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "878215feb8b2417c4700090b4335739858cf7b5a",
      "tree": "175172dad3e31faf4cb36262f3ef5fdf2a7bda61",
      "parents": [
        "1174dd1f890b7f8be8ec6a7071657fe8f59e18b7"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Fri Dec 24 22:22:37 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 04 13:10:36 2011 -0500"
      },
      "message": "NFS: Don\u0027t leak in nfs_proc_symlink()\n\nHi,\n\nIn fs/nfs/proc.c::nfs_proc_symlink() we will leak memory if either\nnfs_alloc_fhandle() or nfs_alloc_fattr() returns NULL but the other one\ndoesn\u0027t.\nThis patch ensures memory allocated by one when the other fails is always\nreleased (this is safe since nfs_free_fattr() and nfs_free_fhandle() both\ncall kfree which deals gracefully with NULL pointers).\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f796f8b3ae292abb9cb2931e8db6fc1d69bba09d",
      "tree": "80d62906e65bda8fb82b3b9c76a56a2071e99a7e",
      "parents": [
        "858284932462cec260f3d1d7426aeb03f5dbc2ad"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 14 14:55:10 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 16 12:37:21 2010 -0500"
      },
      "message": "NFS: Introduce new-style XDR decoding functions for NFSv2\n\nWe\u0027d like to prevent local buffer overflows caused by malicious or\nbroken servers.  New xdr_stream style decoders can do that.\n\nFor efficiency, we also eventually want to be able to pass xdr_streams\nfrom call_decode() to all XDR decoding functions, rather than building\nan xdr_stream in every XDR decoding function in the kernel.\n\nnfs_decode_dirent() is renamed to follow the naming convention of the\nother two dirent decoders.\n\nStatic helper functions are left without the \"inline\" directive.  This\nallows the compiler to choose automatically how to optimize these for\nsize or speed.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nTested-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "56e4ebf877b6043c289bda32a5a7385b80c17dee",
      "tree": "160ae8d5b5ee3871d02a9f5283187430c9ec5ffe",
      "parents": [
        "afa8ccc978c24d8ab22e3b3b8cbd1054c84c070b"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Wed Oct 20 15:44:37 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:35 2010 -0400"
      },
      "message": "NFS: readdir with vmapped pages\n\nWe can use vmapped pages to read more information from the network at once.\nThis will reduce the number of calls needed to complete a readdir.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\n[trondmy: Added #include for linux/vmalloc.h\u003e in fs/nfs/dir.c]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d3d4152a5d59af9e13a73efa9e9c24383fbe307f",
      "tree": "552ea5586bb64f8fef93825c72e88b9248d02b79",
      "parents": [
        "779c51795bfb35c2403c924b9de90ca9356bc693"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Fri Sep 17 17:31:57 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 17:31:57 2010 -0400"
      },
      "message": "nfs: make sillyrename an async operation\n\nA synchronous rename can be interrupted by a SIGKILL. If that happens\nduring a sillyrename operation, it\u0027s possible for the rename call to\nbe sent to the server, but the task exits before processing the\nreply. If this happens, the sillyrenamed file won\u0027t get cleaned up\nduring nfs_dentry_iput and the server is left with a dangling .nfs* file\nhanging around.\n\nFix this problem by turning sillyrename into an asynchronous operation\nand have the task doing the sillyrename just wait on the reply. If the\ntask is killed before the sillyrename completes, it\u0027ll still proceed\nto completion.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nReviewed-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "920769f031a8aff87b66bdf49d1a0d0988241ef9",
      "tree": "e7a3ecc1ceedabd8559de8235be7b2509abf891b",
      "parents": [
        "2b484297e48c3fbb1846fc6ea10036d9465273e7"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Fri Sep 17 17:30:25 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 17:30:25 2010 -0400"
      },
      "message": "nfs: standardize the rename args container\n\nEach NFS version has its own version of the rename args container.\nStandardize them on a common one that\u0027s identical to the one NFSv4\nuses.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nReviewed-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c0204fd2b8fe047b18b67e07e1bf2a03691240cd",
      "tree": "d6cf75bc11d08f190c0757ba98b5ae6baef49402",
      "parents": [
        "535918f14176396646b5547b7d1353c932f24f5e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "message": "NFS: Clean up nfs4_proc_create()\n\nRemove all remaining references to the struct nameidata from the low level\nNFS layers. Again pass down a partially initialised struct nfs_open_context\nwhen we want to do atomic open+create.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "23a306120fcb2879ed2b814716c1cb2a8eb74f72",
      "tree": "d2c8dfc11351be67956a095f82ee97417177f7d2",
      "parents": [
        "eb872f0c8e5c9801da05d5c2a6e402af8e27160e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:51 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:27 2010 -0400"
      },
      "message": "NFS: Reduce the stack footprint of nfs_proc_symlink()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "eb872f0c8e5c9801da05d5c2a6e402af8e27160e",
      "tree": "b9fb68d0ff9eb920471be0e292766532f250a247",
      "parents": [
        "39967ddf19ff98b6e0d7b43fe60bcbf2c254c478"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:51 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:26 2010 -0400"
      },
      "message": "NFS: Reduce the stack footprint of nfs_proc_create\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "97cefcc6d0aa6b4fc9ba67eb1ef4cc9e25f826f2",
      "tree": "3807bb7ff0767bfd4ab0e3572456ab6ca28da239",
      "parents": [
        "b68d69b8c6d19f4c2174f26fe8b750a0e82eb732"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Fri Jan 08 12:17:21 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Feb 10 08:30:52 2010 -0500"
      },
      "message": "nfs: handle NFSv2 -EKEYEXPIRED returns from RPC layer appropriately\n\nAdd a wrapper around rpc_call_sync that handles -EKEYEXPIRED errors from\nthe RPC layer as it would an -EJUKEBOX error if NFSv2 had such a thing.\nAlso, add a handler for that error for async calls that makes it\nresubmit the RPC on -EKEYEXPIRED.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2bcd57ab61e7cabed626226a3771617981c11ce1",
      "tree": "687c0c35fb2a632cb8c56b2729f9c3873c9461bd",
      "parents": [
        "95e0d86badc410d525ea7218fd32df7bfbf9c837"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Sep 24 04:22:25 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 18:13:10 2009 -0700"
      },
      "message": "headers: utsname.h redux\n\n* remove asm/atomic.h inclusion from linux/utsname.h --\n   not needed after kref conversion\n * remove linux/utsname.h inclusion from files which do not need it\n\nNOTE: it looks like fs/binfmt_elf.c do not need utsname.h, however\ndue to some personality stuff it _is_ needed -- cowardly leave ELF-related\nheaders and files alone.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7fe5c398fc2186ed586db11106a6692d871d0d58",
      "tree": "1133bd775a23fb07ca759e4d6c44132c14576b75",
      "parents": [
        "b1e4adf4ea41bb8b5a7bfc1a7001f137e65495df"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 19 15:35:50 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 19 15:35:50 2009 -0400"
      },
      "message": "NFS: Optimise NFS close()\n\nClose-to-open cache consistency rules really only require us to flush out\nwrites on calls to close(), and require us to revalidate attributes on the\nvery last close of the file.\n\nCurrently we appear to be doing a lot of extra attribute revalidation\nand cache flushes.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "37ca8f5c6041516aac603a5abb89b05675493802",
      "tree": "5beea95e09c90fb591e92d40b052997d98821fda",
      "parents": [
        "f25b874d39461935b1b5bbffaa622e735e79d49e"
      ],
      "author": {
        "name": "EG Keizer",
        "email": "keie@few.vu.nl",
        "time": "Tue Aug 19 16:34:36 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 07 18:16:22 2008 -0400"
      },
      "message": "nfs: authenticated deep mounting\n\nAllow mount to do authenticated mounts below the root of the exported tree.\nThe wording in RFC 2623, sec 2.3.2. allows fsinfo with UNIX authentication\non the root of the export. Mounts are not always done on the root\nof the exported tree. Especially autoumounts often mount below the root of\nthe exported tree.\nSome server implementations (justly) require full authentication for the\nso-called deep mounts. The old code used AUTH_SYS only. This caused deep\nmounts to fail on systems requiring stronger authentication..\nThe client should try both authentication types and use the first one that\nsucceeds.\nThis method was already partially implemented. This patch completes\nthe implementation for NFS2 and NFS3.\nThis patch was developed to allow Debian systems to automount home directories\non Solaris servers with krb5 authentication.\n\nTested on kernel 2.6.24-etchnhalf.1\n\nSigned-off-by: E.G. Keizer \u003ckeie@few.vu.nl\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "46cb650c224bb8e64a749090105d74b9e8eda669",
      "tree": "03c6b21bc70a983a63642c2bec6c0e26f07e4efb",
      "parents": [
        "b22602a673b1743bba4b62bb404ffd3b269d2f09"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 16:32:46 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 09 12:09:16 2008 -0400"
      },
      "message": "NFS: Remove the redundant file_open entry from struct nfs_rpc_ops\n\nAll instances are set to nfs_open(), so we should just remove the redundant\nindirection. Ditto for the file_release op\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "659bfcd6dd88919a5ad453f62afbeffcb3106847",
      "tree": "e3996d809e9ae4860a8adac71474e6ea8850c3b5",
      "parents": [
        "a486aeda9b2b0d944aecce7871b3186379b898de"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jun 10 19:39:41 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 09 12:09:14 2008 -0400"
      },
      "message": "NFS: Fix the ftruncate() credential problem\n\nftruncate() access checking is supposed to be performed at open() time,\njust like reads and writes.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2116271a347d1181b5497602c2bfada1de8fd53b",
      "tree": "537498aa91bbe1fbbfc7f2c1e00910ca7fbc2261",
      "parents": [
        "f3d47a3a6a1484a93c8cfe1e8c8d4399c95199c7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 20 19:34:39 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 09 12:08:40 2008 -0400"
      },
      "message": "NFS: Add correct bounds checking to NFSv2 locks\n\nNFSv2 file locking currently fails the Connectathon tests, because the\ncalls to the VFS locking code do not return an EINVAL error if the\nstruct file_lock overflows the 32-bit boundaries.\n\nThe problem is due to the fact that we occasionally call helpers from\nfs/locks.c in order to avoid RPC calls to the server when we know that a\nlocal process holds the lock. These helpers are, of course, always\n64-bit enabled, so EINVAL is not returned in cases when it would if\nthe call had gone to the NLM code.\n\nFor consistency, we therefore add support for a bounds-checking helper.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3110ff8048fb757b36112b044b384aea9c44d6e4",
      "tree": "5260f4973bd0848ddef3fb3c111386e59616abbc",
      "parents": [
        "46c8ac74250a396aca855e494f49a960797a6b5e"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Fri May 02 13:42:44 2008 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 16 09:43:29 2008 -0700"
      },
      "message": "nfs: replace remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc-specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1093a60ef34bb12010fe7ea4b780bee1c57cfbbe",
      "tree": "bc558d58ae38aab7e615883eceef1ec253c2d646",
      "parents": [
        "9289e7f91add1c09c3ec8571a2080f7507730b8d"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Jan 11 17:09:59 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:06:07 2008 -0500"
      },
      "message": "NLM/NFS: Use cached nlm_host when calling nlmclnt_proc()\n\nNow that each NFS mount point caches its own nlm_host structure, it can be\npassed to nlmclnt_proc() for each lock request.  By pinning an nlm_host for\neach mount point, we trade the overhead of looking up or creating a fresh\nnlm_host struct during every NLM procedure call for a little extra memory.\n\nWe also restrict the nlmclnt_proc symbol to limit the use of this call to\nin-tree modules.\n\nNote that nlm_lookup_host() (just removed from the client\u0027s per-request\nNLM processing) could also trigger an nlm_host garbage collection.  Now\nclient-side nlm_host garbage collection occurs only during NFS mount\nprocessing.  Since the NFS client now holds a reference on these nlm_host\nstructures, they wouldn\u0027t have been affected by garbage collection\nanyway.\n\nGiven that nlm_lookup_host() reorders the global nlm_host chain after\nevery successful lookup, and that a garbage collection could be triggered\nduring the call, we\u0027ve removed a significant amount of per-NLM-request\nCPU processing overhead.\n\nSidebar: there are only a few remaining references to the internals of\nNFS inodes in the client-side NLM code.  The only references I found are\nrelated to extracting or comparing the inode\u0027s file handle via NFS_FH().\nOne is in nlmclnt_grant(); the other is in nlmclnt_setlockargs().\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bdc7f021f3a1fade77adf3c2d7f65690566fddfe",
      "tree": "c076431ac83fc75cde00dc3d3a218fabae449980",
      "parents": [
        "b3ef8b3bb93300e58a4c4806207de3de4eb76f48"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 14 15:40:00 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:32 2008 -0500"
      },
      "message": "NFS: Clean up the (commit|read|write)_setup() callback routines\n\nMove the common code for setting up the nfs_write_data and nfs_read_data\nstructures into fs/nfs/read.c, fs/nfs/write.c and fs/nfs/direct.c.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bad2a524113075d1e0665f1e111283ab25135ade",
      "tree": "5c87770bc1a868d5dec5e39acc7406568271f400",
      "parents": [
        "efea90a454c6bf95d489878ea366d5dff03f3fb7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 20 13:07:21 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Oct 21 13:37:02 2007 -0400"
      },
      "message": "NFSv2: Ensure that the directory metadata gets revalidated on file create\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "70ca88521fc7bee8ef0fc22033a439d4b9a2c70d",
      "tree": "8e3943bfac55b59dc127393f8da0ecfc4aba424b",
      "parents": [
        "b64e8a5ef758888cb42b7c105dcfaaf51aab1baf"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Sep 30 15:21:24 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:15 2007 -0400"
      },
      "message": "NFS: Fake up \u0027wcc\u0027 attributes to prevent cache invalidation after write\n\nNFSv2 and v4 don\u0027t offer weak cache consistency attributes on WRITE calls.\nIn NFSv3, returning wcc data is optional. In all cases, we want to prevent\nthe client from invalidating our cached data whenever -\u003ewrite_done()\nattempts to update the inode attributes.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8850df999cd16aa141098e2e8be04a590276f3cc",
      "tree": "de5d934bff3ae6595dcfcf6d725dd991bb242f21",
      "parents": [
        "c4812998398d9cbce8646494704c52297359ede0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 17:20:07 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:06 2007 -0400"
      },
      "message": "NFS: Fix atime revalidation in read()\n\nNFSv3 will correctly update atime on a read() call, so there is no need to\nset the NFS_INO_INVALID_ATIME flag unless the call to nfs_refresh_inode()\nfails.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c4812998398d9cbce8646494704c52297359ede0",
      "tree": "8c7b786779b03d1960c25800a7a27a10f8318e99",
      "parents": [
        "57fa76f2da05d0fee597b26bbc1f05242252beab"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 17:11:45 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:03 2007 -0400"
      },
      "message": "NFS: Fix atime revalidation in readdir()\n\nNFSv3 will correctly update atime on a readdir call, so there is no need to\nset the NFS_INO_INVALID_ATIME flag unless the call to nfs_refresh_inode()\nfails.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e4eff1a622edd6ab7b73acd5d8763aa2fa3fee49",
      "tree": "257d6675733d4af122a77054281e1d7d5062d904",
      "parents": [
        "4fdc17b2a7f4d9db5b08e0f963d0027f714e4104"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 14 15:39:58 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 19 15:21:39 2007 -0400"
      },
      "message": "SUNRPC: Clean up the sillyrename code\n\nFix a couple of bugs:\n - Don\u0027t rely on the parent dentry still being valid when the call completes.\n   Fixes a race with shrink_dcache_for_umount_subtree()\n\n - Don\u0027t remove the file if the filehandle has been labelled as stale.\n\nFix a couple of inefficiencies\n - Remove the global list of sillyrenamed files. Instead we can cache the\n   sillyrename information in the dentry-\u003ed_fsdata\n - Move common code from unlink_setup/unlink_done into fs/nfs/unlink.c\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4fdc17b2a7f4d9db5b08e0f963d0027f714e4104",
      "tree": "502aacc94e06962c2f3352b6ced1146245158be1",
      "parents": [
        "3062c532ad410fe0e8320566fe2879a396be6701"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 14 15:39:57 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 19 15:21:39 2007 -0400"
      },
      "message": "NFS: Introduce struct nfs_removeargs+nfs_removeres\n\nWe need a common structure for setting up an unlink() rpc call in order to\nfix the asynchronous unlink code.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e63340ae6b6205fef26b40a75673d1c9c0c8bb90",
      "tree": "8d3212705515edec73c3936bb9e23c71d34a7b41",
      "parents": [
        "04c9167f91e309c9c4ea982992aa08e83b2eb42e"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Tue May 08 00:28:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:07 2007 -0700"
      },
      "message": "header cleaning: don\u0027t include smp_lock.h when not used\n\nRemove includes of \u003clinux/smp_lock.h\u003e where it is not used/needed.\nSuggested by Al Viro.\n\nBuilds cleanly on x86_64, i386, alpha, ia64, powerpc, sparc,\nsparc64, and arm (all 59 defconfigs).\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8e0969f0451eaf7cf32f2ec3946196d8d0b1cb2c",
      "tree": "66f3e1ca0761d77e21ac3d24bacc1574189cfc64",
      "parents": [
        "c228fd3aeef55637354167faead74c579d5da28b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 13 15:23:44 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Feb 03 15:35:06 2007 -0800"
      },
      "message": "NFS: Remove nfs_readpage_sync()\n\nIt makes no sense to maintain 2 parallel systems for reading in pages.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "01cce933d8b524d9312f5098c70fa1b6ac190572",
      "tree": "7601e02e874a6eb44faca3cdf06664c7377ac687",
      "parents": [
        "2485822d51f8b338d289abe00eb7ce5249794a08"
      ],
      "author": {
        "name": "Josef \"Jeff\" Sipek",
        "email": "jsipek@cs.sunysb.edu",
        "time": "Fri Dec 08 02:36:40 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:41 2006 -0800"
      },
      "message": "[PATCH] nfs: change uses of f_{dentry,vfsmnt} to use f_path\n\nChange all the uses of f_{dentry,vfsmnt} to f_path.{dentry,mnt} in the nfs\nclient code.\n\nSigned-off-by: Josef \"Jeff\" Sipek \u003cjsipek@cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "200baa2112012dd8a13db9da3ee6885403f9c013",
      "tree": "261f9c2b85927c2dfaaecfb7ab808d353bd84da4",
      "parents": [
        "e21195a740533348e77efa8a2e2cf03bb4092b2b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 05 00:35:40 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:38 2006 -0500"
      },
      "message": "NFS: Remove nfs_writepage_sync()\n\nMaintaining two parallel ways of doing synchronous writes is rather\npointless. This patch gets rid of the legacy nfs_writepage_sync(), and\nreplaces it with the faster asynchronous writes.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cae823c4c089d2c7c2a90f39f20376ccd85f9893",
      "tree": "9bf9f70d3ddefe049818fd4cc1a604c749bb85b2",
      "parents": [
        "a99b71c9c43499bf2312c64f5c1d367aaf559dc4"
      ],
      "author": {
        "name": "Frank Filz",
        "email": "ffilzlnx@us.ibm.com",
        "time": "Tue Oct 17 10:24:38 2006 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:31 2006 -0500"
      },
      "message": "NFS: Remove use of the Big Kernel Lock around calls to rpc_call_sync\n\nRemove use of the Big Kernel Lock around calls to rpc_call_sync.\n\nSigned-off-by: Frank Filz \u003cffilz@us.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f52720ca5f48574e347dff35ffe6b389ace61537",
      "tree": "7efc8ec6bad32b98e406a5c553149d57e46bd07e",
      "parents": [
        "f8314dc60ccba7e41f425048c4160dc7f63377d5"
      ],
      "author": {
        "name": "Panagiotis Issaris",
        "email": "takis@issaris.org",
        "time": "Wed Sep 27 01:49:39 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:10 2006 -0700"
      },
      "message": "[PATCH] fs: Removing useless casts\n\n* Removing useless casts\n* Removing useless wrapper\n* Conversion from kmalloc+memset to kzalloc\n\nSigned-off-by: Panagiotis Issaris \u003ctakis@issaris.org\u003e\nAcked-by: Dave Kleikamp \u003cshaggy@austin.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "94a6d75320b3681e6e728b70e18bd186cb55e682",
      "tree": "0957071549d76ceb3857e419998818b11bce7269",
      "parents": [
        "873101b33776780d32610fc4c90c7358a5e98f51"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Aug 22 20:06:23 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:53 2006 -0400"
      },
      "message": "NFS: Use cached page as buffer for NFS symlink requests\n\nNow that we have a copy of the symlink path in the page cache, we can pass\na struct page down to the XDR routines instead of a string buffer.\n\nTest plan:\nConnectathon, all NFS versions.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4f390c152bc87165da4b1f5b7d870b46fb106d4e",
      "tree": "643b5d12f76bd7d3688380fbaf69f607a34a06bf",
      "parents": [
        "d3db90e270791b21cd00d3c094884bffa907cc9e"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Aug 22 20:06:22 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:52 2006 -0400"
      },
      "message": "NFS: Fix double d_drop in nfs_instantiate() error path\n\nIf the LOOKUP or GETATTR in nfs_instantiate fail, nfs_instantiate will do a\nd_drop before returning.  But some callers already do a d_drop in the case\nof an error return.  Make certain we do only one d_drop in all error paths.\n\nThis issue was introduced because over time, the symlink proc API diverged\nslightly from the create/mkdir/mknod proc API.  To prevent other coding\nmistakes of this type, change the symlink proc API to be more like\ncreate/mkdir/mknod and move the nfs_instantiate call into the symlink proc\nroutines so it is used in exactly the same way for create, mkdir, mknod,\nand symlink.\n\nTest plan:\nConnectathon, all versions of NFS.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "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": "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": "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": "ec06c096edec0755534c7126f4caded69de131c2",
      "tree": "1f5b219c09dea1d9886cefe3ea3f7cef560a5e9a",
      "parents": [
        "788e7a89a03e364855583c0ab4649b94925efbb9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:27 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:27 2006 -0500"
      },
      "message": "NFS: Cleanup of NFS read code\n\nSame callback hierarchy inversion as for the NFS write calls. This patch is\nnot strictly speaking needed by the O_DIRECT code, but avoids confusing\ndifferences between the asynchronous read and write code.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "788e7a89a03e364855583c0ab4649b94925efbb9",
      "tree": "4434c93af133a92f550ba0ecc8d3254cb222e72d",
      "parents": [
        "7117bf3dfb10b534a017260d9fc643bc1d0afd2a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:27 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:27 2006 -0500"
      },
      "message": "NFS: Cleanup of NFS write code in preparation for asynchronous o_direct\n\nThis patch inverts the callback hierarchy for NFS write calls.\n\nInstead of having the NFSv2/v3/v4-specific code set up the RPC callback\nops, we allow the original caller to do so. This allows for more\nflexibility w.r.t. how to set up and tear down the nfs_write_data\nstructure while still allowing the NFSv3/v4 code to perform error\nhandling.\n\nThe greater flexibility is needed by the asynchronous O_DIRECT code, which\nwants to be able to hold on to the original nfs_write_data structures after\nthe WRITE RPC call has completed in order to be able to replay them if the\nCOMMIT call determines that the server has rebooted.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "dead28da8e3fb32601d38fb32b7021122e0a3d21",
      "tree": "a1a23e27e08345c86ed0d9812f848470b615eb34",
      "parents": [
        "cc0175c1dc1de8f6af0eb0631dcc5b999a6fcc42"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Mon Mar 20 13:44:23 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:23 2006 -0500"
      },
      "message": "SUNRPC: eliminate rpc_call()\n\nClean-up: replace rpc_call() helper with direct call to rpc_call_sync.\n\nThis makes NFSv2 and NFSv3 synchronous calls more computationally\nefficient, and reduces stack consumption in functions that used to\ninvoke rpc_call more than once.\n\nTest plan:\nCompile kernel with CONFIG_NFS enabled.  Connectathon on NFS version 2,\nversion 3, and version 4 mount points.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cf3fff54a46e1f8fa4cc1deb783172a392077eb0",
      "tree": "9dc139601f2227abfa4a8efdf996f765fbbdad60",
      "parents": [
        "f518e35aec984036903c1003e867f833747a9d79"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:53 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:57 2006 -0500"
      },
      "message": "NFS: Send valid mode bits to the server\n\n inode-\u003ei_mode contains a lot more than just the mode bits. Make sure that\n we mask away this extra stuff in SETATTR calls to the server.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "963d8fe53339128ee46a7701f2e36305f0ccff8c",
      "tree": "426736c70a8e05cb1d945d5c7f44ea6475edd113",
      "parents": [
        "abbcf28f23d53e8ec56a91f3528743913fa2694a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:04 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:39 2006 -0500"
      },
      "message": "RPC: Clean up RPC task structure\n\n Shrink the RPC task structure. Instead of storing separate pointers\n for task-\u003etk_exit and task-\u003etk_release, put them in a structure.\n\n Also pass the user data pointer as a parameter instead of passing it via\n task-\u003etk_calldata. This enables us to nest callbacks.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5ba7cc4801ae0fe74b6e0160f008521ae71d9f5d",
      "tree": "8e7c236d2adeee1c23d99a2e7d20203cdc37a4e6",
      "parents": [
        "bb713d6d38f7be4f4e7d790cddb1b076e7da6699"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Dec 03 15:20:17 2005 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Dec 03 15:20:17 2005 -0500"
      },
      "message": "NFS: Fix post-op attribute revalidation...\n\n  - Missing nfs_mark_for_revalidate in nfs_proc_link()\n  - Missing nfs_mark_for_revalidate in nfs_rename()\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "decf491f3076190262d4c649bed877650623903a",
      "tree": "8f67577349fe451b0267b68435db1578ec1273a4",
      "parents": [
        "33801147a8fda6b04d7e9afe1d42f1c01d3d6837"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 27 22:12:39 2005 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 27 22:12:39 2005 -0400"
      },
      "message": "NFS: Don\u0027t let nfs_end_data_update() clobber attribute update information\n\n Since we almost always call nfs_end_data_update() after we called\n nfs_refresh_inode(), we now end up marking the inode metadata\n as needing revalidation immediately after having updated it.\n\n This patch rearranges things so that we mark the inode as needing\n revalidation _before_ we call nfs_refresh_inode() on those operations\n that need it.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0e574af1be5f569a5d7f2800333b0bfb358a5e34",
      "tree": "bb5b62dece21b8906222dfee022020ed6f81e34c",
      "parents": [
        "4c2cb58c552a34744979a99ccf01762d5eb7e288"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 27 22:12:38 2005 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 27 22:12:38 2005 -0400"
      },
      "message": "NFS: Cleanup initialisation of struct nfs_fattr\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "02a913a73b52071e93f4b76db3e86138d19efffd",
      "tree": "1dc1abbd2d8f57a6fd593dd252d6d7ecc7c811c5",
      "parents": [
        "834f2a4a1554dc5b2598038b3fe8703defcbe467"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 18 14:20:17 2005 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 18 14:20:17 2005 -0700"
      },
      "message": "NFSv4: Eliminate nfsv4 open race...\n\n Make NFSv4 return the fully initialized file pointer with the\n stateid that it created in the lookup w/intent.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "65e4308d2500e7daf60c3dccc202c61ffb066c63",
      "tree": "76a2e00004f645d09b2e59b485fb2aea0af45234",
      "parents": [
        "367ae3cd74bdc2ad32d71293427fec570b14ddcd"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 16 11:49:44 2005 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Aug 16 09:30:58 2005 -0700"
      },
      "message": "[PATCH] NFS: Ensure we always update inode-\u003ei_mode when doing O_EXCL creates\n\nWhen the client performs an exclusive create and opens the file for writing,\na Netapp filer will first create the file using the mode 01777. It does this\nsince an NFSv3/v4 exclusive create cannot immediately set the mode bits.\nThe 01777 mode then gets put into the inode-\u003ei_mode. After the file creation\nis successful, we then do a setattr to change the mode to the correct value\n(as per the NFS spec).\n\nThe problem is that nfs_refresh_inode() no longer updates inode-\u003ei_mode, so\nthe latter retains the 01777 mode. A bit later, the VFS notices this, and calls\nremove_suid(). This of course now resets the file mode to inode-\u003ei_mode \u0026 0777.\nHey presto, the file mode on the server is now magically changed to 0777. Duh...\n\nFixes http://bugzilla.linux-nfs.org/show_bug.cgi?id\u003d32\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "92cfc62cb8412c9563860b1bf70cd4701f03092e",
      "tree": "13b75734522c0cbf6d1ba0663d07ecc13a4f464c",
      "parents": [
        "464a98bd70bae8c559cfc82af799faf44824ce64"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Jun 22 17:16:22 2005 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 16:07:09 2005 -0400"
      },
      "message": "[PATCH] NFS: Allow NFS versions to support different sets of inode operations.\n\n ACL support will require supporting additional inode operations in v4\n (getxattr, setxattr, listxattr).  This patch allows different protocol versions\n to support different inode operations by adding a file_inode_ops to the\n nfs_rpc_ops (to match the existing dir_inode_ops).\n\n Signed-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
