)]}'
{
  "log": [
    {
      "commit": "1193755ac6328ad240ba987e6ec41d5e8baf0680",
      "tree": "40bf847d7e3ebaa57b107151d14e6cd1d280cc6d",
      "parents": [
        "4edebed86690eb8db9af3ab85baf4a34e73266cc",
        "0ef97dcfce4179a2eba046b855ee2f91d6f1b414"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 10:34:35 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 10:34:35 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs changes from Al Viro.\n \"A lot of misc stuff.  The obvious groups:\n   * Miklos\u0027 atomic_open series; kills the damn abuse of\n     -\u003ed_revalidate() by NFS, which was the major stumbling block for\n     all work in that area.\n   * ripping security_file_mmap() and dealing with deadlocks in the\n     area; sanitizing the neighborhood of vm_mmap()/vm_munmap() in\n     general.\n   * -\u003eencode_fh() switched to saner API; insane fake dentry in\n     mm/cleancache.c gone.\n   * assorted annotations in fs (endianness, __user)\n   * parts of Artem\u0027s -\u003es_dirty work (jff2 and reiserfs parts)\n   * -\u003eupdate_time() work from Josef.\n   * other bits and pieces all over the place.\n\n  Normally it would\u0027ve been in two or three pull requests, but\n  signal.git stuff had eaten a lot of time during this cycle ;-/\"\n\nFix up trivial conflicts in Documentation/filesystems/vfs.txt (the\n\u0027truncate_range\u0027 inode method was removed by the VM changes, the VFS\nupdate adds an \u0027update_time()\u0027 method), and in fs/btrfs/ulist.[ch] (due\nto sparse fix added twice, with other changes nearby).\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (95 commits)\n  nfs: don\u0027t open in -\u003ed_revalidate\n  vfs: retry last component if opening stale dentry\n  vfs: nameidata_to_filp(): don\u0027t throw away file on error\n  vfs: nameidata_to_filp(): inline __dentry_open()\n  vfs: do_dentry_open(): don\u0027t put filp\n  vfs: split __dentry_open()\n  vfs: do_last() common post lookup\n  vfs: do_last(): add audit_inode before open\n  vfs: do_last(): only return EISDIR for O_CREAT\n  vfs: do_last(): check LOOKUP_DIRECTORY\n  vfs: do_last(): make ENOENT exit RCU safe\n  vfs: make follow_link check RCU safe\n  vfs: do_last(): use inode variable\n  vfs: do_last(): inline walk_component()\n  vfs: do_last(): make exit RCU safe\n  vfs: split do_lookup()\n  Btrfs: move over to use -\u003eupdate_time\n  fs: introduce inode operation -\u003eupdate_time\n  reiserfs: get rid of resierfs_sync_super\n  reiserfs: mark the superblock as dirty a bit later\n  ...\n"
    },
    {
      "commit": "0ef97dcfce4179a2eba046b855ee2f91d6f1b414",
      "tree": "d5a29275a427dafd8fce0131b58f215c6252d3e2",
      "parents": [
        "16b1c1cd71176ab0a76b26818fbf12db9183ed57"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon May 21 17:30:20 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 01 12:12:02 2012 -0400"
      },
      "message": "nfs: don\u0027t open in -\u003ed_revalidate\n\nNFSv4 can\u0027t do reliable opens in d_revalidate, since it cannot know whether a\nmount needs to be followed or not.  It does check d_mountpoint() on the dentry,\nwhich can result in a weird error if the VFS found that the mount does not in\nfact need to be followed, e.g.:\n\n  # mount --bind /mnt/nfs /mnt/nfs-clone\n  # echo something \u003e /mnt/nfs/tmp/bar\n  # echo x \u003e /tmp/file\n  # mount --bind /tmp/file /mnt/nfs-clone/tmp/bar\n  # cat  /mnt/nfs/tmp/bar\n  cat: /mnt/nfs/tmp/bar: Not a directory\n\nWhich should, by any sane filesystem, result in \"something\" being printed.\n\nSo instead do the open in f_op-\u003eopen() and in the unlikely case that the cached\ndentry turned out to be invalid, drop the dentry and return EOPENSTALE to let\nthe VFS retry.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "419f4319495043a9507ac3e616be9ca60af09744",
      "tree": "0f747d80d11a6d4cd726ad6556839d5cd40b23ac",
      "parents": [
        "fb21affa49204acd409328415b49bfe90136653c",
        "6eccece90b6addf80ef9e6db79b0bc873301034b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 08:32:58 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 08:32:58 2012 -0700"
      },
      "message": "Merge branch \u0027for-3.5\u0027 of git://linux-nfs.org/~bfields/linux\n\nPull the rest of the nfsd commits from Bruce Fields:\n \"... and then I cherry-picked the remainder of the patches from the\n  head of my previous branch\"\n\nThis is the rest of the original nfsd branch, rebased without the\ndelegation stuff that I thought really needed to be redone.\n\nI don\u0027t like rebasing things like this in general, but in this situation\nthis was the lesser of two evils.\n\n* \u0027for-3.5\u0027 of git://linux-nfs.org/~bfields/linux: (50 commits)\n  nfsd4: fix, consolidate client_has_state\n  nfsd4: don\u0027t remove rebooted client record until confirmation\n  nfsd4: remove some dprintk\u0027s and a comment\n  nfsd4: return \"real\" sequence id in confirmed case\n  nfsd4: fix exchange_id to return confirm flag\n  nfsd4: clarify that renewing expired client is a bug\n  nfsd4: simpler ordering of setclientid_confirm checks\n  nfsd4: setclientid: remove pointless assignment\n  nfsd4: fix error return in non-matching-creds case\n  nfsd4: fix setclientid_confirm same_cred check\n  nfsd4: merge 3 setclientid cases to 2\n  nfsd4: pull out common code from setclientid cases\n  nfsd4: merge last two setclientid cases\n  nfsd4: setclientid/confirm comment cleanup\n  nfsd4: setclientid remove unnecessary terms from a logical expression\n  nfsd4: move rq_flavor into svc_cred\n  nfsd4: stricter cred comparison for setclientid/exchange_id\n  nfsd4: move principal name into svc_cred\n  nfsd4: allow removing clients not holding state\n  nfsd4: rearrange exchange_id logic to simplify\n  ...\n"
    },
    {
      "commit": "03a4e1f6ddf25f48848e1bddcffc0ad489648331",
      "tree": "f140e3deb767d092eca997037ebb7b098d8afce9",
      "parents": [
        "631fc9ea05c97e5d1d14ea58a7347be4857d09da"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Mon May 14 19:55:22 2012 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu May 31 20:29:55 2012 -0400"
      },
      "message": "nfsd4: move principal name into svc_cred\n\nInstead of keeping the principal name associated with a request in a\nstructure that\u0027s private to auth_gss and using an accessor function,\nmove it to svc_cred.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "786185b5f8abefa6a8a16695bb4a59c164d5a071",
      "tree": "780eafd98f98a093fda540898595b47b4261764c",
      "parents": [
        "9793f7c88937e7ac07305ab1af1a519225836823"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Fri May 04 12:49:41 2012 +0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu May 31 20:29:40 2012 -0400"
      },
      "message": "SUNRPC: move per-net operations from svc_destroy()\n\nThe idea is to separate service destruction and per-net operations,\nbecause these are two different things and the mix looks ugly.\n\nNotes:\n\n1) For NFS server this patch looks ugly (sorry for that). But these\nplace will be rewritten soon during NFSd containerization.\n\n2) LockD per-net counter increase int lockd_up() was moved prior to\nmake_socks() to make lockd_down_net() call safe in case of error.\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "9793f7c88937e7ac07305ab1af1a519225836823",
      "tree": "48a4283a15cb0d5a427e722075fe546cc8cdcc53",
      "parents": [
        "c52226daf553b21891f39777d78a54ea4e7e8654"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Wed May 02 16:08:38 2012 +0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu May 31 20:29:39 2012 -0400"
      },
      "message": "SUNRPC: new svc_bind() routine introduced\n\nThis new routine is responsible for service registration in a specified\nnetwork context.\n\nThe idea is to separate service creation from per-net operations.\n\nNote also: since registering service with svc_bind() can fail, the\nservice will be destroyed and during destruction it will try to\nunregister itself from rpcbind. In this case unregistration has to be\nskipped.\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "1d59d61f606547f0712aa6971f91f71154071c99",
      "tree": "cb2fd4b9ce3e3ee9440d566d43ea350221edfc8e",
      "parents": [
        "2d117403b30cd7301af60d7d54b279a9f566d10d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 31 12:22:33 2012 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 11:41:36 2012 -0700"
      },
      "message": "NFS: Ensure that setattr and getattr wait for O_DIRECT write completion\n\nUse the same mechanism as the block devices are using, but move the\nhelper functions from fs/direct-io.c into fs/inode.c to remove the\ndependency on CONFIG_BLOCK.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "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": "cc0a98436820b161b595b8cc1d2329bcf7328107",
      "tree": "6ba95165311342c7f7030759dd972926ea94b7e9",
      "parents": [
        "fb13bfa7e1bcfdcfdece47c24b62f1a1cad957e9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 28 15:12:27 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 28 17:21:57 2012 -0400"
      },
      "message": "NFSv4: Add debugging printks to state manager\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fb13bfa7e1bcfdcfdece47c24b62f1a1cad957e9",
      "tree": "e4df7a2bb6737e6e725c7b333e824a9edf77a98f",
      "parents": [
        "359d7d1c976851c658aa7085761015812ed3b56f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 28 11:36:28 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 28 17:21:48 2012 -0400"
      },
      "message": "NFSv4: Map NFS4ERR_SHARE_DENIED into an EACCES error instead of EIO\n\nIf a file OPEN is denied due to a share lock, the resulting\nNFS4ERR_SHARE_DENIED is currently mapped to the default EIO.\nThis patch adds a more appropriate mapping, and brings Linux\ninto line with what Solaris 10 does.\n\nSee https://bugzilla.kernel.org/show_bug.cgi?id\u003d43286\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "90324cc1b11a211e37eabd8cb863e1a1561d6b1d",
      "tree": "c8b79c6850420a114ca6660c1b44fc486b1ba86d",
      "parents": [
        "fb8b00675eb6462aacab56bca31ed6107bda5314",
        "169ebd90131b2ffca74bb2dbe7eeacd39fb83714"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 28 09:54:45 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 28 09:54:45 2012 -0700"
      },
      "message": "Merge tag \u0027writeback\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux\n\nPull writeback tree from Wu Fengguang:\n \"Mainly from Jan Kara to avoid iput() in the flusher threads.\"\n\n* tag \u0027writeback\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:\n  writeback: Avoid iput() from flusher thread\n  vfs: Rename end_writeback() to clear_inode()\n  vfs: Move waiting for inode writeback from end_writeback() to evict_inode()\n  writeback: Refactor writeback_single_inode()\n  writeback: Remove wb-\u003elist_lock from writeback_single_inode()\n  writeback: Separate inode requeueing after writeback\n  writeback: Move I_DIRTY_PAGES handling\n  writeback: Move requeueing when I_SYNC set to writeback_sb_inodes()\n  writeback: Move clearing of I_SYNC into inode_sync_complete()\n  writeback: initialize global_dirty_limit\n  fs: remove 8 bytes of padding from struct writeback_control on 64 bit builds\n  mm: page-writeback.c: local functions should not be exposed globally\n"
    },
    {
      "commit": "359d7d1c976851c658aa7085761015812ed3b56f",
      "tree": "64e97174554638a9929850e6eaccfd23bf11cf11",
      "parents": [
        "f2c1b5100db340441963649fabb4e43e2a65df77"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 28 10:01:34 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 28 10:05:47 2012 -0400"
      },
      "message": "NFSv4: update_changeattr does not need to set NFS_INO_REVAL_PAGECACHE\n\nWe\u0027re already invalidating the data cache, and setting the new change\nattribute. Since directories don\u0027t care about the i_size field, there\nis no need to be forcing any extra revalidation of the page cache.\n\nWe do keep the NFS_INO_INVALID_ATTR flag, in order to force an\nattribute cache revalidation on stat() calls since we do not\nupdate the mtime and ctime fields.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f2c1b5100db340441963649fabb4e43e2a65df77",
      "tree": "a570ec8b25316c2c0d3b9113ba6192cdc630f6ed",
      "parents": [
        "9f594791dd530c2dc06953fb32505a26cc28371f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun May 27 14:46:46 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun May 27 14:50:44 2012 -0400"
      },
      "message": "NFSv4.1: nfs4_reset_session should use nfs4_handle_reclaim_lease_error\n\nThe results from a call to nfs4_proc_create_session() should always\nbe fed into nfs4_handle_reclaim_lease_error, so that we can\nhandle errors such as NFS4ERR_SEQ_MISORDERED correctly.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9f594791dd530c2dc06953fb32505a26cc28371f",
      "tree": "3e981af095a51a354bb1c1d281136e1889a125c9",
      "parents": [
        "7c5d7256845e30d295de4d72d4c52943bff7d1ac"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun May 27 13:02:53 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun May 27 14:33:07 2012 -0400"
      },
      "message": "NFSv4.1: Handle other occurrences of NFS4ERR_CONN_NOT_BOUND_TO_SESSION\n\nLet nfs4_schedule_session_recovery() handle the details of choosing\nbetween resetting the session, and other session related recovery.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7c5d7256845e30d295de4d72d4c52943bff7d1ac",
      "tree": "f18e38887396a982bc2f8b315c7a3f734bc4d57a",
      "parents": [
        "bf674c8228710fa4149df3988862dc112860df99"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun May 27 12:58:48 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun May 27 14:33:07 2012 -0400"
      },
      "message": "NFSv4.1: Handle NFS4ERR_CONN_NOT_BOUND_TO_SESSION in the state manager\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bf674c8228710fa4149df3988862dc112860df99",
      "tree": "b633781a7ddee018c4cae04ea2be58e1f7b6eee7",
      "parents": [
        "43ac544cb36adf38338c01968f8e3a5f81b7d629"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun May 27 12:53:10 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun May 27 14:32:06 2012 -0400"
      },
      "message": "NFSv4.1: Handle errors in nfs4_bind_conn_to_session\n\nEnsure that we handle NFS4ERR_DELAY errors separately, and then\nlet nfs4_recovery_handle_error() handle all other cases.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "43ac544cb36adf38338c01968f8e3a5f81b7d629",
      "tree": "8abf285176d59f6d251798112ea28ab724d27cea",
      "parents": [
        "32b0131069c5bebf52368a9fe170f8d58b78fa8d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun May 27 13:47:21 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun May 27 14:00:08 2012 -0400"
      },
      "message": "NFSv4.1: nfs4_bind_conn_to_session should drain the session\n\nIn order to avoid races with other RPC calls that end up setting the\nNFS4CLNT_BIND_CONN_TO_SESSION flag.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "32b0131069c5bebf52368a9fe170f8d58b78fa8d",
      "tree": "540451b739e9938b2f15682a0bab117852bc8e4e",
      "parents": [
        "662455391040a783b89d0232e743c27c23617dbd"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 26 13:41:04 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 26 14:17:31 2012 -0400"
      },
      "message": "NFSv4.1: Don\u0027t clobber the seqid if exchange_id returns a confirmed clientid\n\nIf the EXCHGID4_FLAG_CONFIRMED_R flag is set, the client is in theory\nsupposed to already know the correct value of the seqid, in which case\nRFC5661 states that it should ignore the value returned.\n\nAlso ensure that if the sanity check in nfs4_check_cl_exchange_flags\nfails, then we must not change the nfs_client fields.\n\nFinally, clean up the code: we don\u0027t need to retest the value of\n\u0027status\u0027 unless it can change.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "662455391040a783b89d0232e743c27c23617dbd",
      "tree": "aa1819778ac5005932edcbd844c54e6cab0dc4e5",
      "parents": [
        "2cf047c994c8a62f65e520342d0287fca8807a53"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 25 17:18:09 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 26 14:17:30 2012 -0400"
      },
      "message": "NFSv4.1: Add DESTROY_CLIENTID\n\nEnsure that we destroy our lease on last unmount\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2cf047c994c8a62f65e520342d0287fca8807a53",
      "tree": "ecc1b7c364bc6090201072d6975720febd455e2c",
      "parents": [
        "848f5bda54ef19435ff78f124082bf6eff2ab620"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 25 17:57:41 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 25 18:02:10 2012 -0400"
      },
      "message": "NFSv4.1: Ensure we use the correct credentials for bind_conn_to_session\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Weston Andros Adamson \u003cdros@netapp.com\u003e\n"
    },
    {
      "commit": "848f5bda54ef19435ff78f124082bf6eff2ab620",
      "tree": "06b86b2725e1c1c309067cb7c3bd7b16058662e9",
      "parents": [
        "ad24ecfbcddfa88541bccc980e753aeda8bf4031"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 25 17:51:23 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 25 18:02:09 2012 -0400"
      },
      "message": "NFSv4.1: Ensure we use the correct credentials for session create/destroy\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ad24ecfbcddfa88541bccc980e753aeda8bf4031",
      "tree": "bb079de871d886728dd141cf1aaae7d40f999158",
      "parents": [
        "89a217360ef4e96eb83758cb9647f1c42581b097"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 25 17:11:42 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 25 18:02:09 2012 -0400"
      },
      "message": "NFSv4.1: Move NFSPROC4_CLNT_BIND_CONN_TO_SESSION to the end of the operations\n\nFor backward compatibility with nfs-utils.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Weston Andros Adamson \u003cdros@netapp.com\u003e\n"
    },
    {
      "commit": "89a217360ef4e96eb83758cb9647f1c42581b097",
      "tree": "a802dbd6fdca71da10b7f5983215f83a4fadeb2b",
      "parents": [
        "be0bfed002e0c64a91dacc42a4dab6e883e6bc7e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 25 15:00:06 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 25 16:17:42 2012 -0400"
      },
      "message": "NFSv4.1: Handle NFS4ERR_SEQ_MISORDERED when confirming the lease\n\nApparently the patch \"NFS: Always use the same SETCLIENTID boot verifier\"\nis tickling a Linux nfs server bug, and causing a regression: the server\ncan get into a situation where it keeps replying NFS4ERR_SEQ_MISORDERED\nto our CREATE_SESSION request even when we are sending the correct\nsequence ID.\n\nFix this by purging the lease and then retrying.\n\nReported-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "be0bfed002e0c64a91dacc42a4dab6e883e6bc7e",
      "tree": "74a9169b134718bcf897a39440683a950d10293d",
      "parents": [
        "2a6ee6aa2f6dfc47fce8380ec9e31601c96a693e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 25 16:02:15 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 25 16:17:13 2012 -0400"
      },
      "message": "NFSv4: When purging the lease, we must clear NFS4CLNT_LEASE_CONFIRM\n\nOtherwise we can end up not sending a new exchange-id/setclientid\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2a6ee6aa2f6dfc47fce8380ec9e31601c96a693e",
      "tree": "c1dd3edf1cd6f53c62d352d921ddfb96ad2af221",
      "parents": [
        "bbafffd293e47f4cd5f0ae8b91d7d5767b242a5e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 25 15:00:06 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 25 16:17:13 2012 -0400"
      },
      "message": "NFSv4: Clean up the error handling for nfs4_reclaim_lease\n\nTry to consolidate the error handling for nfs4_reclaim_lease into\na single function instead of doing a bit here, and a bit there...\n\nAlso ensure that NFS4CLNT_PURGE_STATE handles errors correctly.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bbafffd293e47f4cd5f0ae8b91d7d5767b242a5e",
      "tree": "54e52fb857211914d7de2b3fe2292929bf41b9d1",
      "parents": [
        "a9e64442f1399e9f6ceaeeeb03a26a560c949fac"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 24 16:31:39 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 24 16:31:39 2012 -0400"
      },
      "message": "NFSv4.1: Exchange ID must use GFP_NOFS allocation mode\n\nExchange ID can be called in a lease reclaim situation, so it\nwill deadlock if it then tries to write out dirty NFS pages.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a9e64442f1399e9f6ceaeeeb03a26a560c949fac",
      "tree": "6348c1eb0e1ed43ebc5cb6b40bf843d7cb954c76",
      "parents": [
        "7c44f1ae4a21458a1ea3d6482ffb3136f1df6d2b"
      ],
      "author": {
        "name": "Weston Andros Adamson",
        "email": "dros@netapp.com",
        "time": "Thu May 24 12:26:37 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 24 16:26:21 2012 -0400"
      },
      "message": "nfs41: Use BIND_CONN_TO_SESSION for CB_PATH_DOWN*\n\nThe state manager can handle SEQ4_STATUS_CB_PATH_DOWN* flags with a\nBIND_CONN_TO_SESSION instead of destroying the session and creating a new one.\n\nSigned-off-by: Weston Andros Adamson \u003cdros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7c44f1ae4a21458a1ea3d6482ffb3136f1df6d2b",
      "tree": "a66f9b3fb7a5252a87dbcee40562a1e8ed47dc9b",
      "parents": [
        "d23d61c8d351f5ced44ce87caf1fa3baab4c3f89"
      ],
      "author": {
        "name": "Weston Andros Adamson",
        "email": "dros@netapp.com",
        "time": "Thu May 24 13:22:50 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 24 16:22:19 2012 -0400"
      },
      "message": "nfs4.1: add BIND_CONN_TO_SESSION operation\n\nThis patch adds the BIND_CONN_TO_SESSION operation which is needed for\nupcoming SP4_MACH_CRED work and useful for recovering from broken connections\nwithout destroying the session.\n\nSigned-off-by: Weston Andros Adamson \u003cdros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d23d61c8d351f5ced44ce87caf1fa3baab4c3f89",
      "tree": "4d35f14887a3a61dcfc2c76a64ce3e84655f949e",
      "parents": [
        "2701d086dbfca03b2d28b25c6dc11dd78d0e26ad"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Wed May 23 05:02:37 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 24 16:15:49 2012 -0400"
      },
      "message": "NFSv4.1 test the mdsthreshold hint parameters\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2701d086dbfca03b2d28b25c6dc11dd78d0e26ad",
      "tree": "69f81dd2a979600cd3ff4f1861c6d7ef5c25b1ed",
      "parents": [
        "82be417aa37c05116e310b0f2171187ea389f89b"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Thu May 24 13:13:24 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 24 16:15:48 2012 -0400"
      },
      "message": "NFSv4.1 add nfs_inode book keeping for mdsthreshold\n\nKeep track of the number of bytes read or written via buffered, direct, and\nmem-mapped i/o for use by mdsthreshold size_io hints.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "82be417aa37c05116e310b0f2171187ea389f89b",
      "tree": "901d8fc702d6aef425c4b17cdf62e4fdd8c81833",
      "parents": [
        "88034c3d88c2c48b215f2cc5eb22e564aa817f9c"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Wed May 23 05:02:35 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 24 16:15:48 2012 -0400"
      },
      "message": "NFSv4.1 cache mdsthreshold values on OPEN\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "88034c3d88c2c48b215f2cc5eb22e564aa817f9c",
      "tree": "aca4a42af31d12777a2ef7bcbf37751b28ff73c6",
      "parents": [
        "54ac471c83aff6b1e068eb8029c797dc68a76e89"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Wed May 23 05:02:34 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 24 16:15:47 2012 -0400"
      },
      "message": "NFSv4.1 mdsthreshold attribute xdr\n\nWe only support one layout type per file system, so one threshold_item4 per\nmdsthreshold4.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "54ac471c83aff6b1e068eb8029c797dc68a76e89",
      "tree": "3311a74fc6f5cdbedbe4e1da9bbbbaf6671050a2",
      "parents": [
        "4697bd5e9419348ef9fa9b55cefe4355ad9d3d01"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 23 13:26:10 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 23 15:24:59 2012 -0400"
      },
      "message": "NFS: Add memory barriers to the nfs_client-\u003ecl_cons_state initialisation\n\nEnsure that a process that uses the nfs_client-\u003ecl_cons_state test\nfor whether the initialisation process is finished does not read\nstale data.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4697bd5e9419348ef9fa9b55cefe4355ad9d3d01",
      "tree": "20bf5da80d10ec4df42ae0c3067af39a36f11c28",
      "parents": [
        "7b38c3682c5cab4f98751d5fe57b78a59020653d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 23 13:24:36 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 23 15:21:13 2012 -0400"
      },
      "message": "NFSv4: Fix a race in the net namespace mount notification\n\nSince the struct nfs_client gets added to the global nfs_client_list\nbefore it is initialised, it is possible that rpc_pipefs_event can\nend up trying to create idmapper entries on such a thing.\n\nThe solution is to have the mount notification wait for the\ninitialisation of each nfs_client to complete, and then to\nskip any entries for which the it failed.\n\nReported-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\n"
    },
    {
      "commit": "7b38c3682c5cab4f98751d5fe57b78a59020653d",
      "tree": "c6c2ea72b99b59b60a3c7ba3d142a4926664398e",
      "parents": [
        "acdeb69d9c5934a678a732b4e24770326bf9471e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 23 13:23:31 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 23 15:20:57 2012 -0400"
      },
      "message": "NFSv4.1: Fix session initialisation races\n\nSession initialisation is not complete until the lease manager\nhas run. We need to ensure that both nfs4_init_session and\nnfs4_init_ds_session do so, and that they check for any resulting\nerrors in clp-\u003ecl_cons_state.\n\nOnly after this is done, can nfs4_ds_connect check the contents\nof clp-\u003ecl_exchange_flags.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Andy Adamson \u003candros@netapp.com\u003e\n"
    },
    {
      "commit": "acdeb69d9c5934a678a732b4e24770326bf9471e",
      "tree": "818b6b385ecddc5bf2c7da2641ec55704b940b3b",
      "parents": [
        "4bf590e08f6db3395c181618a4c14f1c39b7c4af"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon May 21 22:46:16 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 22 16:45:48 2012 -0400"
      },
      "message": "NFS: EXCHANGE_ID should save the server major and minor ID\n\nSave the server major and minor ID results from EXCHANGE_ID, as they\nare needed for detecting server trunking.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4bf590e08f6db3395c181618a4c14f1c39b7c4af",
      "tree": "a55286e214564ef1bea4cb270258b75e849268c1",
      "parents": [
        "8cab4c390b43fe34c07bd33799c1bc24be648122"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon May 21 22:46:07 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 22 16:45:47 2012 -0400"
      },
      "message": "NFS: Add nfs_client behavior flags\n\n\"noresvport\" and \"discrtry\" can be passed to nfs_create_rpc_client()\nby setting flags in the passed-in nfs_client.  This change makes it\neasy to add new flags.\n\nNote that these settings are now \"sticky\" over the lifetime of a\nstruct nfs_client, and may even be copied when an nfs_client is\ncloned.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8cab4c390b43fe34c07bd33799c1bc24be648122",
      "tree": "a819ca042219e2764b9042e410ed6f7b4354c59b",
      "parents": [
        "f411703adc762a92b72f8a93c6464050d66cb87b"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon May 21 22:45:59 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 22 16:45:47 2012 -0400"
      },
      "message": "NFS: Refactor nfs_get_client(): initialize nfs_client\n\nClean up: Continue to rationalize the locking in nfs_get_client() by\nmoving the logic that handles the case where a matching server IP\naddress is not found.\n\nWhen we support server trunking detection, client initialization may\nreturn a different nfs_client struct than was passed to it.  Change\nthe synopsis of the init_client methods to return an nfs_client.\n\nThe client initialization logic in nfs_get_client() is not much more\nthan a wrapper around -\u003einit_client.  It\u0027s simpler to keep the little\nbits of error handling in the version-specific init_client methods.\n\nNo behavior change is expected.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f411703adc762a92b72f8a93c6464050d66cb87b",
      "tree": "3f9ae0df442e8b5f2c83070225986f4940e7d4dd",
      "parents": [
        "f092075dd33ea04000590e8ffea65c2e7d03d764"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon May 21 22:45:50 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 22 16:45:46 2012 -0400"
      },
      "message": "NFS: Refactor nfs_get_client(): add nfs_found_client()\n\nClean up: Code that takes and releases nfs_client_lock remains in\nnfs_get_client().  Logic that handles a pre-existing nfs_client is\nmoved to a separate function.\n\nNo behavior change is expected.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f092075dd33ea04000590e8ffea65c2e7d03d764",
      "tree": "626ce6b85084d50e9d2d81e32850e494eadbc8cb",
      "parents": [
        "2c820d9a97f07b273b2c8a5960bd52b1b5864c68"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon May 21 22:45:41 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 22 16:45:46 2012 -0400"
      },
      "message": "NFS: Always use the same SETCLIENTID boot verifier\n\nCurrently our NFS client assigns a unique SETCLIENTID boot verifier\nfor each server IP address it knows about.  It\u0027s set to CURRENT_TIME\nwhen the struct nfs_client for that server IP is created.\n\nDuring the SETCLIENTID operation, our client also presents an\nnfs_client_id4 string to servers, as an identifier on which the server\ncan hang all of this client\u0027s NFSv4 state.  Our client\u0027s\nnfs_client_id4 string is unique for each server IP address.\n\nAn NFSv4 server is obligated to wipe all NFSv4 state associated with\nan nfs_client_id4 string when the client presents the same\nnfs_client_id4 string along with a changed SETCLIENTID boot verifier.\n\nWhen our client unmounts the last of a server\u0027s shares, it destroys\nthat server\u0027s struct nfs_client.  The next time the client mounts that\nNFS server, it creates a fresh struct nfs_client with a fresh boot\nverifier.  On seeing the fresh verifer, the server wipes any previous\nNFSv4 state associated with that nfs_client_id4.\n\nHowever, NFSv4.1 clients are supposed to present the same\nnfs_client_id4 string to all servers.  And, to support Transparent\nState Migration, the same nfs_client_id4 string should be presented\nto all NFSv4.0 servers so they recognize that migrated state for this\nclient belongs with state a server may already have for this client.\n(This is known as the Uniform Client String model).\n\nIf the nfs_client_id4 string is the same but the boot verifier changes\nfor each server IP address, SETCLIENTID and EXCHANGE_ID operations\nfrom such a client could unintentionally result in a server wiping a\nclient\u0027s previously obtained lease.\n\nThus, if our NFS client is going to use a fixed nfs_client_id4 string,\neither for NFSv4.0 or NFSv4.1 mounts, our NFS client should use a\nboot verifier that does not change depending on server IP address.\nReplace our current per-nfs_client boot verifier with a per-nfs_net\nboot verifier.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2c820d9a97f07b273b2c8a5960bd52b1b5864c68",
      "tree": "5dfdd518744f4987775e8ad531029239efda4b05",
      "parents": [
        "ce1c8fc12d99386737953dfeb7b531dfa3d18e5e"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon May 21 22:45:33 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 22 16:45:45 2012 -0400"
      },
      "message": "NFS: Force server to drop NFSv4 state\n\nnfs4_reset_all_state() refreshes the boot verifier a server sees to\ntrigger that server to wipe this client\u0027s state.  This function is\ninvoked when an NFSv4.1 server reports that it has revoked some or\nall of a client\u0027s NFSv4 state.\n\nTo facilitate server trunking discovery, we will eventually want to\nmove the cl_boot_time field to a more global structure.  The Uniform\nClient String model (and specifically, server trunking detection)\nrequires that all servers see the same boot verifier until the client\nactually does reboot, and not a fresh verifier every time the client\nunmounts and remounts the server.\n\nWithout the cl_boot_time field, however, nfs4_reset_all_state() will\nhave to find some other way to force the server to purge the client\u0027s\nNFSv4 state.\n\nBecause these verifiers are opaque (ie, the server doesn\u0027t know or\ncare that they happen to be timestamps), we can force the server\nto wipe NFSv4 state by updating the boot verifier as we do now, then\nimmediately afterwards establish a fresh client ID using the old boot\nverifier again.\n\nHopefully there are no extra paranoid server implementations that keep\ntrack of the client\u0027s boot verifiers and prevent clients from reusing\na previous one.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ce1c8fc12d99386737953dfeb7b531dfa3d18e5e",
      "tree": "9db622f4689d504cb4dac6e08be48b893c6bc5a3",
      "parents": [
        "177313f1498dd66b551dccadc98331b3fc3b09a4"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon May 21 22:45:08 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 22 16:45:45 2012 -0400"
      },
      "message": "NFS: Remove nfs_unique_id\n\nClean up:  this structure is unused.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "177313f1498dd66b551dccadc98331b3fc3b09a4",
      "tree": "203c83e35cbda914ae74b1ad794365f3fc65a113",
      "parents": [
        "73ea666c2bb536f2862cefdb3e014ed62b262ba5"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon May 21 22:44:58 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 22 16:45:44 2012 -0400"
      },
      "message": "NFS: Clean up return code checking in nfs4_proc_exchange_id()\n\nClean up: update to use matching types in \"if\" expressions.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "73ea666c2bb536f2862cefdb3e014ed62b262ba5",
      "tree": "b1992b20a6d907660606b2fc998d75b2f56b894a",
      "parents": [
        "591555465ec513c42416392d392fd56866cb220c"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon May 21 22:44:50 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 22 16:45:44 2012 -0400"
      },
      "message": "NFS: Use proper naming conventions for the nfs_client.net field\n\nClean up:  When naming fields and data types, follow established\nconventions to facilitate accurate grep/cscope searches.\n\nIntroduced by commit e50a7a1a \"NFS: make NFS client allocated per\nnetwork namespace context,\" Tue Jan 10, 2012.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "591555465ec513c42416392d392fd56866cb220c",
      "tree": "8b7ce3d4fe39e31e48e3e7a1a604675395607888",
      "parents": [
        "79d4e1f0d8910f0214a57832ca6d589640d572c0"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon May 21 22:44:41 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 22 16:45:43 2012 -0400"
      },
      "message": "NFS: Use proper naming conventions for nfs_client.impl_id field\n\nClean up:  When naming fields and data types, follow established\nconventions to facilitate accurate grep/cscope searches.\n\nAdditionally, for consistency, move the impl_id field into the NFSv4-\nspecific part of the nfs_client, and free that memory in the logic\nthat shuts down NFSv4 nfs_clients.\n\nIntroduced by commit 7d2ed9ac \"NFSv4: parse and display server\nimplementation ids,\" Fri Feb 17, 2012.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "79d4e1f0d8910f0214a57832ca6d589640d572c0",
      "tree": "c32a4ff22864b554061b0ea6f81667f9f4ef14cf",
      "parents": [
        "722baafc9e638714a69aa66e9ed24ef961ff350c"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon May 21 22:44:31 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 22 16:45:43 2012 -0400"
      },
      "message": "NFS: Use proper naming conventions for NFSv4.1 server scope fields\n\nClean up:  When naming fields and data types, follow established\nconventions to facilitate accurate grep/cscope searches.\n\nAdditionally, for consistency, move the scope field into the NFSv4-\nspecific part of the nfs_client, and free that memory in the logic\nthat shuts down NFSv4 nfs_clients.\n\nIntroduced by commit 99fe60d0 \"nfs41: exchange_id operation\", April\n1 2009.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e3c0fb7ef515852619932b0da993baa2d107684d",
      "tree": "c187f17fbf5435c4037a3ae4d433ccc5a76679e4",
      "parents": [
        "c3607282b4d8787a530eb4a9a452b4e823508b9f"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon May 21 22:45:24 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 22 16:45:42 2012 -0400"
      },
      "message": "NFS: Add NFSDBG_STATE\n\nfs/nfs/nfs4state.c does not yet have any dprintk() call sites, and I\u0027m\nabout to introduce some.  We will need a new flag for enabling them.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c3607282b4d8787a530eb4a9a452b4e823508b9f",
      "tree": "edf90820e54b5f9ff18e120d07bd1c5e471f05d6",
      "parents": [
        "497826af60f812240ed5b6ba80541f7c9f2154d9"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon May 21 22:45:16 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 22 16:45:42 2012 -0400"
      },
      "message": "NFS: Don\u0027t swap bytes in nfs4_construct_boot_verifier()\n\nThe SETCLIENTID boot verifier is opaque to NFSv4 servers, thus there\nis no requirement for byte swapping before the client puts the\nverifier on the wire.\n\nThis treatment is similar to other timestamp-based verifiers.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "497826af60f812240ed5b6ba80541f7c9f2154d9",
      "tree": "b741b4f133aa89a6c6e50bf1a1704f550e59cf9d",
      "parents": [
        "bd4aeffb5b89070ae93c579f1d5a0758f7123e8b"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Tue May 22 10:10:03 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 22 16:43:04 2012 -0400"
      },
      "message": "NFS: Fix compiler warnings\n\nThe \"struct inode *inode\" was only used in a dprintk, so compiling with\nCONFIG_SUNRPC_DEBUG off triggers a warning.  To get around this, I\nremove the \"struct inode *inode\" variable and instead change the\ndprintk()s to use hdr-\u003einode instead.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bd4aeffb5b89070ae93c579f1d5a0758f7123e8b",
      "tree": "053682177f4d0211aabcd498c8be6aee768ed195",
      "parents": [
        "996074cb8c355bf3d87d066ba1e1189ba3f648f5"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Tue May 22 08:09:27 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 22 16:42:42 2012 -0400"
      },
      "message": "NFSv4.1 skip rpc_call_done only on disconnected DS slot_table_waitq tasks\n\nWe reset all I/O on a disconnected data server through the pgio layer indicated\nby the NFS_IOHDR_REDO flag.\n\nDifferentiate between on-the-wire tasks returning with an error which must\ncall rpc_call_done and tasks woken from the data server slot_table_waitq\nwaiting for a session slot with a status of zero which call rpc_exit in\nrpc_prepare and need to skip rpc_call_done.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "996074cb8c355bf3d87d066ba1e1189ba3f648f5",
      "tree": "11b94acdad07bde4fffb22cd3e3cb8b5f7f8ef75",
      "parents": [
        "d42e78737c31f08893ed4916fc03104790867a71"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Tue May 22 08:09:26 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 22 16:42:37 2012 -0400"
      },
      "message": "NFSv4.1 Just use nfs_put_client in filelayout release\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d42e78737c31f08893ed4916fc03104790867a71",
      "tree": "4a152d8d4c5a944895c52c4badbc639118bd03f4",
      "parents": [
        "53b8ee346463946f88b3e1639d688c384df1166c"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Tue May 22 08:09:28 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 22 16:42:28 2012 -0400"
      },
      "message": "NFSv4.1 fix null state reference in filelayout_async_handle_error\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "53b8ee346463946f88b3e1639d688c384df1166c",
      "tree": "31b089f4c9198293902d6e3ba46ee53c92c34726",
      "parents": [
        "b3f87b98aa3dc22cc58f970140113b270015cddb"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 22 16:36:27 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 22 16:36:27 2012 -0400"
      },
      "message": "NFSv4.1: Fix a bad reference count issue in the pNFS commit code\n\nfilelayout_scan_commit_lists needs to bump the reference count on\nthe struct nfs_page just like nfs_scan_commit_list().\n\nReported-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b3f87b98aa3dc22cc58f970140113b270015cddb",
      "tree": "c4aec5996567ad96310f61e9244e799f41bf2625",
      "parents": [
        "041245c88a29273788e8eff1353bc6e1f56c61df",
        "1afeaf5c29aa07db25760d2fbed5c08a3aec3498"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 21 10:12:39 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 21 10:12:39 2012 -0400"
      },
      "message": "Merge branch \u0027bugfixes\u0027 into nfs-for-next\n"
    },
    {
      "commit": "041245c88a29273788e8eff1353bc6e1f56c61df",
      "tree": "0810bad95fe40c6fbf1a1dc13cb3ba0305ba30d3",
      "parents": [
        "b4a2967e52523dbf0281b52c042f9042c6082f99"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 27 17:53:53 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 19 17:55:33 2012 -0400"
      },
      "message": "NFSv4.1 resend LAYOUTGET on data server invalid layout errors\n\nThe \"invalid layout\" class of errors is handled by destroying the layout and\ngetting a new layout from the server.  Currently, the layout must be\ndestroyed before a new layout can be obtained.\n\nThis means that all references (e.g.lsegs) to the \"to be destroyed\" layout\nheader must be dropped before it can be destroyed. This in turn means waiting\nfor all in flight RPC\u0027s using the old layout as well as draining the data\nserver session slot table wait queue.\n\nSet the NFS_LAYOUT_INVALID flag to redirect I/O to the MDS while waiting for\nthe old layout to be destroyed.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b4a2967e52523dbf0281b52c042f9042c6082f99",
      "tree": "e35824780a7d474501af611161e4181e95b18691",
      "parents": [
        "3a7936c3fc469c196d9163abfea6b7aa9572d443"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 27 17:53:52 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 19 17:55:32 2012 -0400"
      },
      "message": "NFSv4.1 dereference a disconnected data server client record\n\nWhen the last DS io is processed, the data server client record will be\nfreed.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3a7936c3fc469c196d9163abfea6b7aa9572d443",
      "tree": "0c3d2cf6bc9bb97cbdb9c2dc296f1224669e2524",
      "parents": [
        "0a57cdac3fb9d249f4fbbc745c01b9292ef8c1b7"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 27 17:53:51 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 19 17:55:32 2012 -0400"
      },
      "message": "NFSv4.1 ref count nfs_client across filelayout data server io\n\nPrepare to put a dis-connected DS client record.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0a57cdac3fb9d249f4fbbc745c01b9292ef8c1b7",
      "tree": "8fb264e116c6c29ae0ed38f8c8065074bc288f55",
      "parents": [
        "671fb89695fee0c70a969371efd38ed30be76a8a"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 27 17:53:50 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 19 17:55:31 2012 -0400"
      },
      "message": "NFSv4.1 send layoutreturn to fence disconnected data server\n\nLet the MDS know that you are redirecting I/O from pNFS to MDS.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "671fb89695fee0c70a969371efd38ed30be76a8a",
      "tree": "9feb369b1063a0fa038d21d5022384243f8f5edb",
      "parents": [
        "0ad2f378e1af7996d6f8355c02181ff3cc7ab260"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 27 17:53:49 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 19 17:55:31 2012 -0400"
      },
      "message": "NFSv4.1 wake up all tasks on un-connected DS slot table waitq\n\nThe DS has a connection error (invalid deviceid). Drain the fore channel\nslot table waitq.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0ad2f378e1af7996d6f8355c02181ff3cc7ab260",
      "tree": "d336b21a4dcb5d9681d8e298dc37c245b73ddc4e",
      "parents": [
        "a033a09189c0125d56f2ac17ffb4bec5a3d3323b"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 27 17:53:48 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 19 17:55:31 2012 -0400"
      },
      "message": "NFSv4.1 Check invalid deviceid upon slot table waitq wakeup\n\nTasks sleeping on the slot table waitq wake to the rpc_prepare_task state.\nReset the task for io through the MDS if the deviceid is invalid.\n\nThe reset functions put the io pages through the pageio layer which has the\nadvantage of re-coalescing which allows for the MDS and DS having different\nr/wsizes. Exit the awakened task without executing the rpc_call_done routine.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a033a09189c0125d56f2ac17ffb4bec5a3d3323b",
      "tree": "a224455528e9dc35da8649ad9c88c2b8ffa4a280",
      "parents": [
        "e7dd79af01e7ca932c5168a708e77750659f7a9e"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 27 17:53:47 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 19 17:54:59 2012 -0400"
      },
      "message": "NFSv4.1 remove nfs4_reset_write and nfs4_reset_read\n\nReplaced by filelayout_reset_write and filelayout_reset_read\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e7dd79af01e7ca932c5168a708e77750659f7a9e",
      "tree": "dfacd16bce6df877ecae697cd7dbf5f8e0561872",
      "parents": [
        "98fc685ae2aa24eae98526e9196b3229d519083a"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 27 17:53:46 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 19 17:54:20 2012 -0400"
      },
      "message": "NFSv4.1: mark deviceid invalid on filelayout DS connection errors\n\nThis prevents the use of any layout for i/o that references the deviceid.\nI/O is redirected through the MDS.\n\nRedirect the unhandled failed I/O to the MDS without marking either the\nlayout or the deviceid invalid.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "98fc685ae2aa24eae98526e9196b3229d519083a",
      "tree": "b6700253e6b724f51694ae9b69c60700f4658ab6",
      "parents": [
        "9f0ec176b3071e0472582c07ae1e68055b28184d"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 27 17:53:45 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 19 17:54:20 2012 -0400"
      },
      "message": "NFSv4.1 data server timeo and retrans module parameters\n\nSet the recovery parameters for data servers.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9f0ec176b3071e0472582c07ae1e68055b28184d",
      "tree": "a767381b136e8ac9f7839917b477fd7cd8cf9dc3",
      "parents": [
        "90fecfcb3437dfc9bec4ee3306584dcd6843701b"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 27 17:53:44 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 19 17:54:19 2012 -0400"
      },
      "message": "NFSv4.1 set RPC_TASK_SOFTCONN for filelayout DS RPC calls\n\nRPC_TASK_SOFTCONN returns connection errors to the caller which allows the pNFS\nfile layout to quickly try the MDS or perhaps another DS.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "90fecfcb3437dfc9bec4ee3306584dcd6843701b",
      "tree": "f03e089985c35c396d6705777ce9632a41d55c88",
      "parents": [
        "554d458d79fa34acc73bc5128ba7bbf6b3007dfd"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 27 17:53:43 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 19 17:54:19 2012 -0400"
      },
      "message": "NFSv4.1 cleanup filelayout invalid layout handling\n\nThe invalid layout bits are should only be used to block LAYOUTGETs.\n\nDo not invalidate a layout on deviceid invalidation.\nDo not invalidate a layout on un-handled READ, WRITE, COMMIT errors.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "554d458d79fa34acc73bc5128ba7bbf6b3007dfd",
      "tree": "e3b433888cfb494e234bb0a068563591f83cdcc2",
      "parents": [
        "e73e6c9e85ed91187c1d21cb9238e86a116bf3db"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 27 17:53:42 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 19 17:54:18 2012 -0400"
      },
      "message": "NFSv4.1: cleanup filelayout invalid deviceid handling\n\nMove the invalid deviceid test into nfs4_fl_prepare_ds, called by the\nfilelayout read, write, and commit routines. NFS4_DEVICE_ID_NEG_ENTRY\nis no longer needed.\nRemove redundant printk\u0027s - filelayout_mark_devid_invalid prints a KERN_WARNING.\n\nAn invalid device prevents pNFS io.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e73e6c9e85ed91187c1d21cb9238e86a116bf3db",
      "tree": "5b670db58e5ae253be7a204b610170147d8a1cc3",
      "parents": [
        "39ffb9218e41b1ef4920432776791f5e9ed2eff3"
      ],
      "author": {
        "name": "Matthew Treinish",
        "email": "treinish@linux.vnet.ibm.com",
        "time": "Mon Apr 30 11:32:57 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 19 17:10:10 2012 -0400"
      },
      "message": "Fixed goto readability in nfs_update_inode.\n\nSimplified error gotos to make it slightly easier to read,\nit doesn\u0027t affect the functionality of the routine.\n\nSigned-off-by: Matthew Treinish \u003ctreinish@linux.vnet.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5f23eff3814e9d255464e7a03dba47c27069ac78",
      "tree": "cdf8c9376a2f927d83aac463ebdf70f9ef24568a",
      "parents": [
        "bda14606a3c055dbbccd998fa91eb87c4c7b2027"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@tonian.com",
        "time": "Wed May 16 11:35:36 2012 +0300"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 16 10:36:50 2012 -0700"
      },
      "message": "NFS: fix unsigned comparison in nfs4_create_sec_client\n\nfs/nfs/nfs4namespace.c: In function ‘nfs4_create_sec_client’:\nfs/nfs/nfs4namespace.c:171:2: error: comparison of unsigned expression \u003c 0 is always false [-Werror\u003dtype-limits]\n\nIntroduced by commit 72de53ec4bca39c26709122a8f78bfefe7b6bca4\n\"NFS: Do secinfo as part of lookup\"\n\nSigned-off-by: Benny Halevy \u003cbhalevy@tonian.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "39ffb9218e41b1ef4920432776791f5e9ed2eff3",
      "tree": "0b1b02a1b252b587b78628a6f0f412e80dec0ace",
      "parents": [
        "7e450b4e47d14429d0cc17cf4ce389fc027937be"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 16 10:21:30 2012 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 16 10:24:20 2012 -0700"
      },
      "message": "NFS: Fix a compile issue when CONFIG_NFS_FSCACHE was undefined\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5abc03cd919535c61b813f2319cb38326a41e810",
      "tree": "22a180bdca008b9f7a1951c01f4732d4433e6ddd",
      "parents": [
        "36be50515fe2aef61533b516fa2576a2c7fe7664"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Mon May 14 22:45:28 2012 +0300"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 17:44:01 2012 -0700"
      },
      "message": "NFS: kmalloc() doesn\u0027t return an ERR_PTR()\n\nObviously we should check for NULL here instead of IS_ERR().\n\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nCc: stable@vger.kernel.org [3.4]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "981f9face8fc21bede7b7a56a7cf6c176da5ab05",
      "tree": "adc456dc98ecf175fe2d2b35438f67fc18394727",
      "parents": [
        "2ba68002a74fb167b68844077d36e5ccfc87f323"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu May 10 16:47:20 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 17:42:22 2012 -0700"
      },
      "message": "NFS: Turn v3 on by default\n\nMost users will use NFS v3 or possibly v4 so this makes it easier for\nthem.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2ba68002a74fb167b68844077d36e5ccfc87f323",
      "tree": "9a84b5849145275bda0ba74aa24b4354299bdf0e",
      "parents": [
        "5e7e5a0da28216fb9d0a49e93ee27668ef4f04f7"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu May 10 16:47:19 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 17:42:22 2012 -0700"
      },
      "message": "NFS: Make v2 configurable\n\nWith this patch NFS v2 can be disabled during Kconfig.  I default the\noption to \"y\" to match the current behavior.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5e7e5a0da28216fb9d0a49e93ee27668ef4f04f7",
      "tree": "866a46d16889cdf7a64eeabfab952707c1b45397",
      "parents": [
        "87c7083dc3eba802d6e9f312ec520a4814f59871"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu May 10 16:47:18 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 17:42:21 2012 -0700"
      },
      "message": "NFS: Create an NFS v3 stat_to_errno()\n\nIn theory, NFS v3 can have different error versions than NFS v2. v4 is\nalready using its own nfs4_stat_to_errno() to map error codes, so\nrather than create something in the generic client for v2 and v3 to\nshare I instead give v3 its own function.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "87c7083dc3eba802d6e9f312ec520a4814f59871",
      "tree": "ec12fcc5dbf5bc428376385118d01fb1d3d75747",
      "parents": [
        "46058d46d3fcf2900f18d9bd5585c8f89d59e1c4"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu May 10 15:07:43 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 17:30:31 2012 -0700"
      },
      "message": "NFS: Pass mntfh as part of the nfs_mount_info structure\n\nThis allows me to use the filehandle allocated in nfs_fs_mount() for nfs\nv4 mounts instead of allocating a new one.  Rather than change\nnfs4_mount() to look almost exactly like nfs_fs_mount(), I instead\nremove the function.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "46058d46d3fcf2900f18d9bd5585c8f89d59e1c4",
      "tree": "9016197e0ce1185fcbaa001affa7a1a091d8b0af",
      "parents": [
        "d72c727cd9de490f936a41634e34cd4a61ba6dd6"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu May 10 15:07:42 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 17:30:31 2012 -0700"
      },
      "message": "NFS: Allocate parsed mount data directly to the nfs_mount_info structure\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d72c727cd9de490f936a41634e34cd4a61ba6dd6",
      "tree": "3330d6c5b46c5edd4c190c14cca1cd8016c675d7",
      "parents": [
        "b72e4f42a33137acc037546277a08f407d3c1016"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu May 10 15:07:41 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 17:30:30 2012 -0700"
      },
      "message": "NFS: Create a single nfs_validate_mount_data() function\n\nThis new function chooses between the v2/3 parser and the v4 parser by\nfilesystem type.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b72e4f42a33137acc037546277a08f407d3c1016",
      "tree": "7223923f675b73bd1e670927376347084a7bf5b8",
      "parents": [
        "486aa699ffb6ec28adbc147326d62ac9294de8dc"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu May 10 15:07:40 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 17:30:30 2012 -0700"
      },
      "message": "NFS: Create a single function for text mount data\n\nThe v2/3 and v4 cases were very similar, with just a few parameters\nchanged.  This makes it easy to share code.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "486aa699ffb6ec28adbc147326d62ac9294de8dc",
      "tree": "e7957244df1cb5de3fae9da5422c376ef6a6ddc4",
      "parents": [
        "db8333519187d5974cf2ff33910c893bf8727d9f"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu May 10 15:07:39 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 17:30:29 2012 -0700"
      },
      "message": "NFS: Create a new nfs_try_mount()\n\nThis function returns the same same return type as nfs4_try_mount() so\nthey two can be more easily substituted.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "db8333519187d5974cf2ff33910c893bf8727d9f",
      "tree": "fbe1f658ffcb224332e7f2add2950853bb5deb5d",
      "parents": [
        "21e4b82e13c038457b4fa4d54d988c9f1865bcf6"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu May 10 15:07:38 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 17:30:29 2012 -0700"
      },
      "message": "NFS: Let mount data parsing set the NFS version\n\nThis field is unconditionally set while parsing mount data, so there is\nno need to fill it in here.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "21e4b82e13c038457b4fa4d54d988c9f1865bcf6",
      "tree": "1154e3de3869bb480d556cce1de436d400360cda",
      "parents": [
        "3d176e3fe4f6dc379b252bf43e2e146a8f7caf01"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu May 10 15:07:37 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 17:30:28 2012 -0700"
      },
      "message": "NFS: Use nfs_fs_mount_common() for remote referral mounts\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3d176e3fe4f6dc379b252bf43e2e146a8f7caf01",
      "tree": "c1d776845621fd53a73f60de14768cafabcb8db3",
      "parents": [
        "8c958e0c4c52d600bd2ea677eb920fceda8aee49"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu May 10 15:07:36 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 17:30:28 2012 -0700"
      },
      "message": "NFS: Use nfs_fs_mount_common() for xdev mounts\n\nAt this point, there are only a few small differences between these two\nfunctions.  I can set a few function pointers in the nfs_mount_info\nstruct to get around these differences.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8c958e0c4c52d600bd2ea677eb920fceda8aee49",
      "tree": "3590ce9504dad5d8dd7eab81429981758de5da8e",
      "parents": [
        "c40f8d1d35a27d81b4af9d5d2f7286fd978ae9b2"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu May 10 15:07:35 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 17:30:28 2012 -0700"
      },
      "message": "NFS: Create a common xdev_mount() function\n\nThe only difference between nfs_xdev_mount() and nfs4_xdev_mount() is the\nclone_super() function called to clone the super block.  I can combine\nthese two functions by using the fill_super field in the mount_info\nstructure.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c40f8d1d35a27d81b4af9d5d2f7286fd978ae9b2",
      "tree": "ec27dc62ab6ce56501db0f02f26387b2518323da",
      "parents": [
        "586f95cd4ffda7aa120327ec09865b181c809cdf"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu May 10 15:07:34 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 17:30:27 2012 -0700"
      },
      "message": "NFS: Create a common fs_mount() function\n\nThe nfs4_remote_mount() function was only slightly different from the\nnfs_fs_mount() function used by the generic client.  I created a new\nnfs_mount_info structure to set different parameters to help combine\nthese functions.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "586f95cd4ffda7aa120327ec09865b181c809cdf",
      "tree": "c9e35c871ba6ebbca6d997183d3f528a88fd7788",
      "parents": [
        "2311b9439ce8c525f3f8f821fc2ca9a541f673a5"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu May 10 15:07:33 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 17:30:27 2012 -0700"
      },
      "message": "NFS: Remove NFS4_MOUNT_UNSHARED\n\nThis flag is numerically equivalent to NFS_MOUNT_UNSHARED, so I can\nremove it to make collapsing functions more straightforward.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2311b9439ce8c525f3f8f821fc2ca9a541f673a5",
      "tree": "6306764554cc50faf435297e190d3b38f1a39044",
      "parents": [
        "bae36241be7fab16b2e987d31b6e6bd4456ac188"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu May 10 15:07:32 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 17:30:26 2012 -0700"
      },
      "message": "NFS: Don\u0027t pass mount data to nfs_fscache_get_super_cookie()\n\nI intend on creating a single nfs_fs_mount() function used by all our\nmount paths.  To avoid checking between new mounts and clone mounts, I\ninstead pass both structures to a new function in super.c that finds the\ncache key and then looks up the super cookie.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bae36241be7fab16b2e987d31b6e6bd4456ac188",
      "tree": "a6964de8b14917a2a0b9326d7ad84860f2f0fd8d",
      "parents": [
        "3028eb2b324c517da1e9e589743c4a5154f70dd1"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu May 10 15:07:31 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 17:30:26 2012 -0700"
      },
      "message": "NFS: Create a single nfs_get_root()\n\nThis patch splits out the NFS v4 specific functionality of\nnfs4_get_root() into its own rpc_op called by the generic client, and\nleaves nfs4_proc_get_rootfh() as its own stand alone function.  This\nalso allows me to change nfs4_remote_mount(), nfs4_xdev_mount() and\nnfs4_remote_referral_mount() to use the generic client\u0027s nfs_get_root()\nfunction.  Later patches in this series will collapse these functions\ninto one common function, so using the same get_root() function\neverywhere simplifies future changes.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3028eb2b324c517da1e9e589743c4a5154f70dd1",
      "tree": "9f2f13e0bea581bac9f68a8f516a3018e3d78e15",
      "parents": [
        "0427708657750bdc03af3491a0297cab5e7efabf"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu May 10 15:07:30 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 17:30:25 2012 -0700"
      },
      "message": "NFS: Rename nfs4_proc_get_root()\n\nThis function is really getting the root filehandle and not the root\ndentry of the filesystem.  I also removed the rpc_ops lookup from\nnfs4_get_rootfh() under the assumption that if we reach this function\nthen we already know we are using NFS v4.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\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": "0427708657750bdc03af3491a0297cab5e7efabf",
      "tree": "50b754a332cb763c8e5349d55e38db4d85521ea9",
      "parents": [
        "1d1afcbc294cc7c788eb5c7b6b98e8d63caf002c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 13:54:53 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 15:17:49 2012 -0400"
      },
      "message": "NFS: Clean up - Simplify reference counting in fs/nfs/direct.c\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Fred Isaman \u003ciisaman@netapp.com\u003e\n"
    },
    {
      "commit": "1d1afcbc294cc7c788eb5c7b6b98e8d63caf002c",
      "tree": "88abc7e7018f733410fa51039351e4f0e2dd84c3",
      "parents": [
        "7ad84aa9448571678c243f0c5ef383fbe5b50f4f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 14:04:55 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 15:17:43 2012 -0400"
      },
      "message": "NFS: Clean up - Rename nfs_unlock_request and nfs_unlock_request_dont_release\n\nFunction rename to ensure that the functionality of nfs_unlock_request()\nmirrors that of nfs_lock_request(). Then let nfs_unlock_and_release_request()\ndo the work of what used to be called nfs_unlock_request()...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Fred Isaman \u003ciisaman@netapp.com\u003e\n"
    },
    {
      "commit": "7ad84aa9448571678c243f0c5ef383fbe5b50f4f",
      "tree": "7d2baea4ff52fe62b23bf8adbb81a824ee768938",
      "parents": [
        "d1182b33ed9b62470cb6ab892a8a301542120086"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 13:19:15 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 15:17:34 2012 -0400"
      },
      "message": "NFS: Clean up - simplify nfs_lock_request()\n\nWe only have two places where we need to grab a reference when trying\nto lock the nfs_page. We\u0027re better off making that explicit.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Fred Isaman \u003ciisaman@netapp.com\u003e\n"
    },
    {
      "commit": "d1182b33ed9b62470cb6ab892a8a301542120086",
      "tree": "bb300d0801aeb873ae6d74fcf93deafdc993305a",
      "parents": [
        "3aff4ebb95b20ad8db2c1447e8c52097d89af5a7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 13:37:43 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 15:17:28 2012 -0400"
      },
      "message": "NFS: nfs_set_page_writeback no longer needs to reference the page\n\nWe now hold a reference to the nfs_page across the calls to\nnfs_set_page_writeback and nfs_end_page_writeback, and that\nmeans we already have a reference to the struct page.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Fred Isaman \u003ciisaman@netapp.com\u003e\n"
    },
    {
      "commit": "3aff4ebb95b20ad8db2c1447e8c52097d89af5a7",
      "tree": "ad56aceafbcbd0650e71e029ffa138eedffd33ba",
      "parents": [
        "dc327ed4cd320be689596365372a3683208c3ba0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 14:30:35 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 15:16:07 2012 -0400"
      },
      "message": "NFS: Prevent a deadlock in the new writeback code\n\nWe have to unlock the nfs_page before we call nfs_end_page_writeback\nto avoid races with functions that expect the page to be unlocked\nwhen PG_locked and PG_writeback are not set.\nThe problem is that nfs_unlock_request also releases the nfs_page,\ncausing a deadlock if the release of the nfs_open_context\ntriggers an iput() while the PG_writeback flag is still set...\n\nThe solution is to separate the unlocking and release of the nfs_page,\nso that we can do the former before nfs_end_page_writeback and the\nlatter after.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Fred Isaman \u003ciisaman@netapp.com\u003e\n"
    },
    {
      "commit": "dc327ed4cd320be689596365372a3683208c3ba0",
      "tree": "9393e6e22f5a3ece9ac0e739d93303f0cf1b9dc3",
      "parents": [
        "c57d1bc5e043dbb5ba82ded07003d71a8033d899"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun May 06 19:46:30 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 08 12:53:21 2012 -0400"
      },
      "message": "NFSv4: nfs_client_return_marked_delegations can\u0027t flush data\n\nSince even filemap_flush() needs to lock pages that are dirty, we\ncannot risk calling it from the state manager context. Therefore,\nwe need to move the call to filemap_flush() to\nnfs_async_inode_return_delegation().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c57d1bc5e043dbb5ba82ded07003d71a8033d899",
      "tree": "d56f455d3b2fbe8d7b52ac047f299bba67bef138",
      "parents": [
        "14546c337588370dced50dcaf43398939be9829e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun May 06 19:34:17 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 08 12:53:21 2012 -0400"
      },
      "message": "NFS: nfs_inode_return_delegation() should always flush dirty data\n\nThe assumption is that if you are in a situation where you need to\nreturn the delegation, then you should probably stop caching the\ndata anyway.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "14546c337588370dced50dcaf43398939be9829e",
      "tree": "4eca561ff63c86ce9fcbd4dd2cc96cdf3989283e",
      "parents": [
        "1385b8117325e79f74c1e7d1cbf45c789deb85c5"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun May 06 19:10:59 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 08 12:53:21 2012 -0400"
      },
      "message": "NFS: Don\u0027t do a full flush to disk on close() if we hold a delegation\n\nIf we hold a delegation then we know that it should be safe to continue\nto cache the data beyond the close(). However since the process that wrote\nthe data may die after close(), we may still want to send the data to\nserver before those RPCSEC_GSS credentials expire. We therefore compromise\nby starting writeback to the server, but don\u0027t wait for completion.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "dbd5768f87ff6fb0a4fe09c4d7b6c4a24de99430",
      "tree": "42ea94ea733538f797aa745945fc43c4d1b89217",
      "parents": [
        "7994e6f7254354e03028a11f98a27bd67dace9f1"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu May 03 14:48:02 2012 +0200"
      },
      "committer": {
        "name": "Fengguang Wu",
        "email": "fengguang.wu@intel.com",
        "time": "Sun May 06 13:43:41 2012 +0800"
      },
      "message": "vfs: Rename end_writeback() to clear_inode()\n\nAfter we moved inode_sync_wait() from end_writeback() it doesn\u0027t make sense\nto call the function end_writeback() anymore. Rename it to clear_inode()\nwhich well says what the function really does - set I_CLEAR flag.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "1385b8117325e79f74c1e7d1cbf45c789deb85c5",
      "tree": "b1afbd0a9ecd49d29621d1c931d685d705e285d7",
      "parents": [
        "bf5fc4028ef751904a114ffc4b5d2cd9f0233142"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 04 13:54:24 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 04 14:59:51 2012 -0400"
      },
      "message": "NFS: Fix sparse warnings\n\nFix the following sparse warnings:\n\nfs/nfs/direct.c:221:6: warning: symbol \u0027nfs_direct_readpage_release\u0027 was\nnot declared. Should it be static?\nfs/nfs/read.c:38:43: warning: non-ANSI function declaration of function\n\u0027nfs_readhdr_alloc\u0027\nfs/nfs/objlayout/objio_osd.c:214:5: warning: symbol \u0027__alloc_objio_seg\u0027\nwas not declared. Should it be static?\n\nReported-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Fred Isaman \u003ciisaman@netapp.com\u003e\nCc: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\n"
    },
    {
      "commit": "bf5fc4028ef751904a114ffc4b5d2cd9f0233142",
      "tree": "70c9aea55244ec155f6981a685b730bd6de0bc85",
      "parents": [
        "d69ee9b85541a69a1092f5da675bd23256dc62af"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 04 13:47:16 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 04 14:08:09 2012 -0400"
      },
      "message": "NFS: Fix O_DIRECT compile warnings\n\nFix the following compile warnings:\nfs/nfs/direct.c: In function \u0027nfs_direct_read_schedule_segment\u0027:\nfs/nfs/direct.c:325:11: warning: comparison of distinct pointer types\nlacks a cast [enabled by default]\nfs/nfs/direct.c:325:11: warning: comparison of distinct pointer types\nlacks a cast [enabled by default]\nfs/nfs/direct.c:325:11: warning: comparison of distinct pointer types\nlacks a cast [enabled by default]\nfs/nfs/direct.c:352:27: warning: comparison of distinct pointer types\nlacks a cast [enabled by default]\nfs/nfs/direct.c: In function \u0027nfs_direct_write_schedule_segment\u0027:\nfs/nfs/direct.c:622:11: warning: comparison of distinct pointer types\nlacks a cast [enabled by default]\nfs/nfs/direct.c:622:11: warning: comparison of distinct pointer types\nlacks a cast [enabled by default]\nfs/nfs/direct.c:622:11: warning: comparison of distinct pointer types\nlacks a cast [enabled by default]\nfs/nfs/direct.c:650:27: warning: comparison of distinct pointer types\nlacks a cast [enabled by default]\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Fred Isaman \u003ciisaman@netapp.com\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\n"
    },
    {
      "commit": "d69ee9b85541a69a1092f5da675bd23256dc62af",
      "tree": "5f890def2d1d4bca93a5acaf073fa4cbe5f16a44",
      "parents": [
        "8582715e733d08bc98fe629db0601360d70de4dc"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 01 17:37:59 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 01 19:16:43 2012 -0400"
      },
      "message": "NFS: Adapt readdirplus to application usage patterns\n\nWhile the use of READDIRPLUS is significantly more efficient than\nREADDIR followed by many LOOKUP calls, it is still less efficient\nthan just READDIR if the attributes are not required.\n\nThis patch tracks when lookups are attempted on the directory,\nand uses that information to selectively disable READDIRPLUS\non that directory.\nThe first \u0027readdir\u0027 call is always served using READDIRPLUS.\nSubsequent calls only use READDIRPLUS if there was a successful\nlookup or revalidation on a child in the mean time.\n\nCredit for the original idea should go to Neil Brown. See:\n      http://www.spinics.net/lists/linux-nfs/msg19996.html\nHowever, the implementation in this patch differs from Neil\u0027s\nin that it focuses on tracking lookups rather than calls to\nstat().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\n"
    }
  ],
  "next": "8582715e733d08bc98fe629db0601360d70de4dc"
}
