)]}'
{
  "log": [
    {
      "commit": "533eb4611c9eea53072eb6a61d5a6393b6a77ed7",
      "tree": "adb2b4cbfe85689979d2cf971b65ebcd0d383d56",
      "parents": [
        "1d92a08da23848a38eece4df7eaa4e8ec0e6c699"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Mon Jun 13 18:25:56 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 15 11:24:29 2011 -0400"
      },
      "message": "NFSv4.1: allow nfs_fhget to succeed with mounted on fileid\n\nCommit 28331a46d88459788c8fca72dbb0415cd7f514c9 \"Ensure we request the\nordinary fileid when doing readdirplus\"\nchanged the meaning of NFS_ATTR_FATTR_FILEID which used to be set when\nFATTR4_WORD1_MOUNTED_ON_FILED was requested.\n\nAllow nfs_fhget to succeed with only a mounted on fileid when crossing\na mountpoint or a referral.\n\nAsk for the fileid of the absent file system if mounted_on_fileid is not\nsupported.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\ncc:stable@kernel.org [2.6.39]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cd1acdf1723d71b28175f95b04305f1cc74ce363",
      "tree": "7ab58883eccd314be3d8efafd59a124d4ffbb861",
      "parents": [
        "fac04863cef53a69830590b2e1c54345068a9747",
        "9342077011d54f42fa1b88b7bc1f7008dcf5fff9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 29 14:10:13 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 29 14:10:13 2011 -0700"
      },
      "message": "Merge branch \u0027pnfs-submit\u0027 of git://git.open-osd.org/linux-open-osd\n\n* \u0027pnfs-submit\u0027 of git://git.open-osd.org/linux-open-osd: (32 commits)\n  pnfs-obj: pg_test check for max_io_size\n  NFSv4.1: define nfs_generic_pg_test\n  NFSv4.1: use pnfs_generic_pg_test directly by layout driver\n  NFSv4.1: change pg_test return type to bool\n  NFSv4.1: unify pnfs_pageio_init functions\n  pnfs-obj: objlayout_encode_layoutcommit implementation\n  pnfs: encode_layoutcommit\n  pnfs-obj: report errors and .encode_layoutreturn Implementation.\n  pnfs: encode_layoutreturn\n  pnfs: layoutret_on_setattr\n  pnfs: layoutreturn\n  pnfs-obj: osd raid engine read/write implementation\n  pnfs: support for non-rpc layout drivers\n  pnfs-obj: define per-inode private structure\n  pnfs: alloc and free layout_hdr layoutdriver methods\n  pnfs-obj: objio_osd device information retrieval and caching\n  pnfs-obj: decode layout, alloc/free lseg\n  pnfs-obj: pnfs_osd XDR client implementation\n  pnfs-obj: pnfs_osd XDR definitions\n  pnfs-obj: objlayoutdriver module skeleton\n  ...\n"
    },
    {
      "commit": "d20581aa4be11407c9eeeb75992df5ef176bba0f",
      "tree": "277fdff5bc6ad5a5df105abd092c7179d22554fb",
      "parents": [
        "e51b841dd0be9ff53f740c44c32c32679edcb7c8"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Sun May 22 19:52:03 2011 +0300"
      },
      "committer": {
        "name": "Boaz Harrosh",
        "email": "bharrosh@panasas.com",
        "time": "Sun May 29 20:53:51 2011 +0300"
      },
      "message": "pnfs: support for non-rpc layout drivers\n\nNon-rpc layout driver such as for objects and blocks\nimplement their own I/O path and error handling logic.\nTherefore bypass NFS-based error handling for these layout drivers.\n\n[fix lseg ref-count bugs, and null de-refs]\n[Fall out from: non-rpc layout drivers]\nSigned-off-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\n[get rid of PNFS_USE_RPC_CODE]\n[get rid of __nfs4_write_done_cb]\n[revert useless change in nfs4_write_done_cb]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n"
    },
    {
      "commit": "1495f230fa7750479c79e3656286b9183d662077",
      "tree": "e5e233bb9fe1916ccc7281e7dcc71b1572fb22c5",
      "parents": [
        "a09ed5e00084448453c8bada4dcd31e5fbfc2f21"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Tue May 24 17:12:27 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:26 2011 -0700"
      },
      "message": "vmscan: change shrinker API by passing shrink_control struct\n\nChange each shrinker\u0027s API by consolidating the existing parameters into\nshrink_control struct.  This will simplify any further features added w/o\ntouching each file of shrinker.\n\n[akpm@linux-foundation.org: fix build]\n[akpm@linux-foundation.org: fix warning]\n[kosaki.motohiro@jp.fujitsu.com: fix up new shrinker API]\n[akpm@linux-foundation.org: fix xfs warning]\n[akpm@linux-foundation.org: update gfs2]\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0acd2201920d0968919f4f5797d63f7b6f2b19d4",
      "tree": "9b241d264f42eff3ff4eeffb67616fca0490e460",
      "parents": [
        "8f70e95f9f4159184f557a1db60c909d7c1bd2e3",
        "35124a0994fc02545b14b9fa3aad000b3331f1c0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 17:03:14 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 17:03:14 2011 -0400"
      },
      "message": "Merge branch \u0027nfs-for-2.6.39\u0027 into nfs-for-next\n"
    },
    {
      "commit": "7ebb931598cd95cccea10d4bc4c0123a464ea565",
      "tree": "dec1af6eefdbbc3ce42346d7c6d407088eaf509e",
      "parents": [
        "5a5ea0d485c9715c86bf858bbdc5f6d373b3db88"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Mar 24 17:12:30 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 13:52:42 2011 -0400"
      },
      "message": "NFS: use secinfo when crossing mountpoints\n\nA submount may use different security than the parent\nmount does.  We should figure out what sec flavor the\nsubmount uses at mount time.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7c5130588d691a3b34d02312f1bd1b6d56fe0100",
      "tree": "154ccea3a837ca1aae2c5676e0946b79fb4bb671",
      "parents": [
        "e73b83f270828630a9ce33728f6ef61c37a82340"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Mar 24 17:12:24 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 13:52:41 2011 -0400"
      },
      "message": "NFS: lookup supports alternate client\n\nA later patch will need to perform a lookup using an\nalternate client with a different security flavor.\nThis patch adds support for doing that on NFS v4.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e0c2b3801828aadb65dec9f67f7c6b7a675ad007",
      "tree": "547d70967ad8f41a18f2d3112dbd12e64f972af2",
      "parents": [
        "988b6dceb0ae6d642587c8594529b94f6be0c5ea"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Wed Mar 23 13:27:53 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:29:04 2011 -0400"
      },
      "message": "NFSv4.1: filelayout driver specific code for COMMIT\n\nImplement all the hooks created in the previous patches.\nThis requires exporting quite a few functions and adding a few\nstructure fields.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "179198373cf374f0ef793f1023c1cdd83b53674d",
      "tree": "9c7f9e82b936864b9d8cf91b3d4121a3c8d2671c",
      "parents": [
        "374e55251cacfb68d331bb8a574b2de8160aacc2",
        "8e26de238fd794c8ea56a5c98bf67c40cfeb051d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 17 17:40:00 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 17 17:40:00 2011 -0700"
      },
      "message": "Merge branch \u0027nfs-for-2.6.39\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6\n\n* \u0027nfs-for-2.6.39\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (54 commits)\n  RPC: killing RPC tasks races fixed\n  xprt: remove redundant check\n  SUNRPC: Convert struct rpc_xprt to use atomic_t counters\n  SUNRPC: Ensure we always run the tk_callback before tk_action\n  sunrpc: fix printk format warning\n  xprt: remove redundant null check\n  nfs: BKL is no longer needed, so remove the include\n  NFS: Fix a warning in fs/nfs/idmap.c\n  Cleanup: Factor out some cut-and-paste code.\n  cleanup: save 60 lines/100 bytes by combining two mostly duplicate functions.\n  NFS: account direct-io into task io accounting\n  gss:krb5 only include enctype numbers in gm_upcall_enctypes\n  RPCRDMA: Fix FRMR registration/invalidate handling.\n  RPCRDMA: Fix to XDR page base interpretation in marshalling logic.\n  NFSv4: Send unmapped uid/gids to the server when using auth_sys\n  NFSv4: Propagate the error NFS4ERR_BADOWNER to nfs4_do_setattr\n  NFSv4: cleanup idmapper functions to take an nfs_server argument\n  NFSv4: Send unmapped uid/gids to the server if the idmapper fails\n  NFSv4: If the server sends us a numeric uid/gid then accept it\n  NFSv4.1: reject zero layout with zeroed stripe unit\n  ...\n"
    },
    {
      "commit": "f8ad9c4bae99854c961ca79ed130a0d11d9ab53c",
      "tree": "de466d67c6413ba5a0fed1733768f21e1ffc2acf",
      "parents": [
        "b514f872f86d4b0c13fed74a1fe1f7ab500c4fd0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 06:32:07 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 16:48:06 2011 -0400"
      },
      "message": "nfs: nfs_do_{ref,sub}mount() superblock argument is redundant\n\nIt\u0027s always equal to dentry-\u003ed_sb\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b514f872f86d4b0c13fed74a1fe1f7ab500c4fd0",
      "tree": "a54821b3e2363150e4e9b180e097a8092f884dda",
      "parents": [
        "b1942c5f8cf3bea3a3c88a7498ae4c4361f31afe"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 06:26:11 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 16:47:55 2011 -0400"
      },
      "message": "nfs: make nfs_path() work without vfsmount\n\npart 3: now we have everything to get nfs_path() just by dentry -\njust follow to (disconnected) root and pick the rest of the thing\nthere.\n\nStart killing propagation of struct vfsmount * on the paths that\nused to bring it to nfs_path().\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0d5839ad05acd0fe2a84a39f33ac5efdf634a5a5",
      "tree": "a84d6d3a1169a8ff4598cf1337c5e5e75863f6e2",
      "parents": [
        "60ed8cf78f886753e454b671841c0a3a0e55e915"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 05:27:27 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 16:27:04 2011 -0400"
      },
      "message": "nfs: propagate devname to nfs{,4}_get_root()\n\nstep 1 of -\u003emnt_devname fixes: make sure we have the value of devname\navailable in ..._get_root().\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a69aef1496726ed88386dad65abfcc8cd3195304",
      "tree": "66766c9eed54e6dc7ddf9ecaf8765a7bc833685e",
      "parents": [
        "7ffd10640dc008f6d5a375bd6450755745c63c7d"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Thu Mar 03 15:13:47 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:44 2011 -0500"
      },
      "message": "NFSv4.1: pnfs filelayout driver write\n\nAllows the pnfs filelayout driver to write to the data servers.\n\nNote that COMMIT to data servers will be implemented in a future\npatch.  To avoid improper behavior, for the moment any WRITE to a data\nserver that would also require a COMMIT to the data server is sent\nNFS_FILE_SYNC.\n\nSigned-off-by: Andy Adamson \u003candros@citi.umich.edu\u003e\nSigned-off-by: Dean Hildebrand \u003cdhildeb@us.ibm.com\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@citi.umich.edu\u003e\nSigned-off-by: Mingyang Guo \u003cguomingyang@nrchpc.ac.cn\u003e\nSigned-off-by: Oleg Drokin \u003cgreen@linuxhacker.ru\u003e\nSigned-off-by: Ricardo Labiaga \u003cRicardo.Labiaga@netapp.com\u003e\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cbdabc7f8bf14ca1d40ab1cb86f64b3bc09716e8",
      "tree": "16939b96996e8380d91d7e2743e811cf5c49f629",
      "parents": [
        "dc70d7b3189597f313df7bd2da849cfc39063b15"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Tue Mar 01 01:34:20 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:43 2011 -0500"
      },
      "message": "NFSv4.1: filelayout async error handler\n\nUse our own async error handler.\nMark the layout as failed and retry i/o through the MDS on specified errors.\n\nUpdate the mds_offset in nfs_readpage_retry so that a failed short-read retry\nto a DS gets correctly resent through the MDS.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "dc70d7b3189597f313df7bd2da849cfc39063b15",
      "tree": "c739f2c3a2213b1bc028f1599ee0efcbeabd9b81",
      "parents": [
        "cfe7f4120f8b1b9465c333d1e42efd4669b1799f"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Tue Mar 01 01:34:19 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:43 2011 -0500"
      },
      "message": "NFSv4.1: filelayout read\n\nAttempt a pNFS file layout read by setting up the nfs_read_data struct and\ncalling nfs_initiate_read with the data server rpc client and the\nfilelayout rpc call ops.\n\nError handling is implemented in a subsequent patch.\n\nSigned-off-by: Andy Adamson \u003candros@citi.umich.edu\u003e\nSigned-off-by: Dean Hildebrand \u003cdhildeb@us.ibm.com\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@citi.umich.edu\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Mingyang Guo \u003cguomingyang@nrchpc.ac.cn\u003e\nSigned-off-by: Oleg Drokin \u003cgreen@linuxhacker.ru\u003e\nSigned-off-by: Ricardo Labiaga \u003cRicardo.Labiaga@netapp.com\u003e\nTested-by: Guo Mingyang \u003cguomingyang@nrchpc.ac.cn\u003e\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d83217c13531fd59730d77b5c2284e90e56c0a50",
      "tree": "e347037afc91fdb81e0e2fcf7225d30462fb90af",
      "parents": [
        "64419a9b20938d9070fdd8c58c2fa23c911915f8"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Tue Mar 01 01:34:17 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:42 2011 -0500"
      },
      "message": "NFSv4.1: data server connection\n\nIntroduce a data server set_client and init session following the\nnfs4_set_client and  nfs4_init_session convention.\n\nOnce a new nfs_client is on the nfs_client_list, the nfs_client cl_cons_state\nserializes access to creating an nfs_client struct with matching properties.\n\nUse the new nfs_get_client() that initializes new clients.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "45a52a02072b2a7e265f024cfdb00127e08dd9f2",
      "tree": "33c98f48d5b652297f45406f47d9545cca37c7c5",
      "parents": [
        "bf9c1387ca80deac792c9ecf1c64dfcc5d1cc768"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Tue Mar 01 01:34:08 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:41 2011 -0500"
      },
      "message": "NFS move nfs_client initialization into nfs_get_client\n\nNow nfs_get_client returns an nfs_client ready to be used no matter if it was\nfound or created.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "778be232a207e79088ba70d832ac25dfea6fbf1a",
      "tree": "307249459e5ef45c4b3651c7fc5c454cdb3e0c92",
      "parents": [
        "80c30e8de4f81851b1f712bcc596e11d53bc76f1"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Tue Jan 25 15:38:01 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 25 15:26:51 2011 -0500"
      },
      "message": "NFS do not find client in NFSv4 pg_authenticate\n\nThe information required to find the nfs_client cooresponding to the incoming\nback channel request is contained in the NFS layer. Perform minimal checking\nin the RPC layer pg_authenticate method, and push more detailed checking into\nthe NFS layer where the nfs_client can be found.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "36d43a43761b004ad1879ac21471d8fc5f3157ec",
      "tree": "6cb6c6d978f4e58de7f9bf901707d6929f098345",
      "parents": [
        "d18610b0ce9eb48c60649d8fcbf68374c84349d3"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jan 14 18:45:42 2011 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 15 20:07:34 2011 -0500"
      },
      "message": "NFS: Use d_automount() rather than abusing follow_link()\n\nMake NFS use the new d_automount() dentry operation rather than abusing\nfollow_link() on directories.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c36fca52f5e4594ffd0ff175b328966b0d393184",
      "tree": "6d771744cc49f0edc0d2b6b2f9fe919163002346",
      "parents": [
        "2c2618c6f29c41a0a966f14f05c8bf45fcabb750"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Thu Jan 06 02:04:32 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 06 14:46:24 2011 -0500"
      },
      "message": "NFS refactor nfs_find_client and reference client across callback processing\n\nFixes a bug where the nfs_client could be freed during callback processing.\nRefactor nfs_find_client to use minorversion specific means to locate the\ncorrect nfs_client structure.\n\nIn the NFS layer, V4.0 clients are found using the callback_ident field in the\nCB_COMPOUND header.  V4.1 clients are found using the sessionID in the\nCB_SEQUENCE operation which is also compared against the sessionID associated\nwith the back channel thread after a successful CREATE_SESSION.\n\nEach of these methods finds the one an only nfs_client associated\nwith the incoming callback request - so nfs_find_client_next is not needed.\n\nIn the RPC layer, the pg_authenticate call needs to find the nfs_client. For\nthe v4.0 callback service, the callback identifier has not been decoded so a\nsearch by address, version, and minorversion is used.  The sessionid for the\nsessions based callback service has (usually) not been set for the\npg_authenticate on a CB_NULL call which can be sent prior to the return\nof a CREATE_SESSION call, so the sessionid associated with the back channel\nthread is not used to find the client in pg_authenticate for CB_NULL calls.\n\nPass the referenced nfs_client to each CB_COMPOUND operation being proceesed\nvia the new cb_process_state structure. The reference is held across\ncb_compound processing.\n\nUse the new cb_process_state struct to move the NFS4ERR_RETRY_UNCACHED_REP\nprocessing from process_op into nfs4_callback_sequence where it belongs.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f4eecd5da3422e82e88e36c33cbd2595eebcacb1",
      "tree": "8e49bbe401ed4233e1652843489a4360a94dc69b",
      "parents": [
        "ea00528126a701845d7c445e725b271940381e3d"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Thu Jan 06 02:04:30 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 06 14:46:24 2011 -0500"
      },
      "message": "NFS implement v4.0 callback_ident\n\nUse the small id to pointer translator service to provide a unique callback\nidentifier per SETCLIENTID call used to identify the v4.0 callback service\nassociated with the clientid.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "573c4e1ef53a6b891b73cc2257e1604da754a2e4",
      "tree": "b1e01ca46472ac6c936c4a144c3a160d8e1595bb",
      "parents": [
        "8111f373600cd43b3198b48b9238e3ad2fd9908d"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 14 14:58:11 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 16 12:37:24 2010 -0500"
      },
      "message": "NFS: Simplify -\u003edecode_dirent() calling sequence\n\nClean up.\n\nThe pointer returned by -\u003edecode_dirent() is no longer used as a\npointer.  The only call site (xdr_decode() in fs/nfs/dir.c) simply\nextracts the errno value encoded in the pointer.  Replace the\nreturned pointer with a standard integer errno return value.\n\nAlso, pass the \"server\" argument as part of the nfs_entry instead of\nas a separate parameter.  It\u0027s faster to derive \"server\" in\nnfs_readdir_xdr_to_array() since we already have the directory\u0027s inode\nhandy.  \"server\" ought to be invariant for a set of entries in the\nsame directory, right?\n\nThe legacy versions of decode_dirent() don\u0027t use \"server\" anyway, so\nit\u0027s wasted work for them to derive and pass \"server\" for each entry.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nTested-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f796f8b3ae292abb9cb2931e8db6fc1d69bba09d",
      "tree": "80d62906e65bda8fb82b3b9c76a56a2071e99a7e",
      "parents": [
        "858284932462cec260f3d1d7426aeb03f5dbc2ad"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 14 14:55:10 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 16 12:37:21 2010 -0500"
      },
      "message": "NFS: Introduce new-style XDR decoding functions for NFSv2\n\nWe\u0027d like to prevent local buffer overflows caused by malicious or\nbroken servers.  New xdr_stream style decoders can do that.\n\nFor efficiency, we also eventually want to be able to pass xdr_streams\nfrom call_decode() to all XDR decoding functions, rather than building\nan xdr_stream in every XDR decoding function in the kernel.\n\nnfs_decode_dirent() is renamed to follow the naming convention of the\nother two dirent decoders.\n\nStatic helper functions are left without the \"inline\" directive.  This\nallows the compiler to choose automatically how to optimize these for\nsize or speed.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nTested-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "858284932462cec260f3d1d7426aeb03f5dbc2ad",
      "tree": "4091fe326b0b96eaa25fb766111b922ada5b3773",
      "parents": [
        "282ac2a573dd1be4230710932cd471ed5a3a94b8"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 14 14:55:00 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 16 12:37:21 2010 -0500"
      },
      "message": "NFS: Use the \"nfs_stat\" enum for nfs_stat_to_errno()\u0027s argument\n\nClean up.\n\nTo distinguish more clearly between the on-the-wire NFSERR_ value and\nour local errno values, use the proper type for the argument of\nnfs_stat_to_errno().\n\nAdd a documenting comment appropriate for a global function shared\noutside this source file.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nTested-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0b26a0bf6ff398185546432420bb772bcfdf8d94",
      "tree": "705b94c8662cf18cf8cd18c6b8c68d751d87acb7",
      "parents": [
        "3020093f578fb6c9acc6914dfd887a1ebd1db659"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Nov 20 14:26:44 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 22 13:24:48 2010 -0500"
      },
      "message": "NFS: Ensure we return the dirent-\u003ed_type when it is known\n\nStore the dirent-\u003ed_type in the struct nfs_cache_array_entry so that we\ncan use it in getdents() calls.\n\nThis fixes a regression with the new readdir code.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "82f2e5472e2304e531c2fa85e457f4a71070044e",
      "tree": "45e170b0ec64bcc07e51ae36919ca6cba1163703",
      "parents": [
        "ae42c70a60fe330d9c2af7c4b92ce78484308e37"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Oct 21 16:33:18 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:37 2010 -0400"
      },
      "message": "NFS: Readdir plus in v4\n\nBy requsting more attributes during a readdir, we can mimic the readdir plus\noperation that was in NFSv3.\n\nTo test, I ran the command `ls -lU --color\u003dnone` on directories with various\nnumbers of files.  Without readdir plus, I see this:\n\nn files |    100    |   1,000   |  10,000   |  100,000  | 1,000,000\n--------+-----------+-----------+-----------+-----------+----------\nreal    | 0m00.153s | 0m00.589s | 0m05.601s | 0m56.691s | 9m59.128s\nuser    | 0m00.007s | 0m00.007s | 0m00.077s | 0m00.703s | 0m06.800s\nsys     | 0m00.010s | 0m00.070s | 0m00.633s | 0m06.423s | 1m10.005s\naccess  | 3         | 1         | 1         | 4         | 31\ngetattr | 2         | 1         | 1         | 1         | 1\nlookup  | 104       | 1,003     | 10,003    | 100,003   | 1,000,003\nreaddir | 2         | 16        | 158       | 1,575     | 15,749\ntotal   | 111       | 1,021     | 10,163    | 101,583   | 1,015,784\n\nWith readdir plus enabled, I see this:\n\nn files |    100    |   1,000   |  10,000   |  100,000  | 1,000,000\n--------+-----------+-----------+-----------+-----------+----------\nreal    | 0m00.115s | 0m00.206s | 0m01.079s | 0m12.521s | 2m07.528s\nuser    | 0m00.003s | 0m00.003s | 0m00.040s | 0m00.290s | 0m03.296s\nsys     | 0m00.007s | 0m00.020s | 0m00.120s | 0m01.357s | 0m17.556s\naccess  | 3         | 1         | 1         | 1         | 7\ngetattr | 2         | 1         | 1         | 1         | 1\nlookup  | 4         | 3         | 3         | 3         | 3\nreaddir | 6         | 62        | 630       | 6,300     | 62,993\ntotal   | 15        | 67        | 635       | 6,305     | 63,004\n\nReaddir plus disabled has about a 16x increase in the number of rpc calls and\nis 4 - 5 times slower on large directories.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "56e4ebf877b6043c289bda32a5a7385b80c17dee",
      "tree": "160ae8d5b5ee3871d02a9f5283187430c9ec5ffe",
      "parents": [
        "afa8ccc978c24d8ab22e3b3b8cbd1054c84c070b"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Wed Oct 20 15:44:37 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:35 2010 -0400"
      },
      "message": "NFS: readdir with vmapped pages\n\nWe can use vmapped pages to read more information from the network at once.\nThis will reduce the number of calls needed to complete a readdir.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\n[trondmy: Added #include for linux/vmalloc.h\u003e in fs/nfs/dir.c]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "babddc72a9468884ce1a23db3c3d54b0afa299f0",
      "tree": "b176e5795b47c73c47543acdc546da0c38619ddc",
      "parents": [
        "ba8e452a4fe64a51b74d43761e14d99f0666cc45"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Wed Oct 20 15:44:29 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:33 2010 -0400"
      },
      "message": "NFS: decode_dirent should use an xdr_stream\n\nConvert nfs*xdr.c to use an xdr stream in decode_dirent.  This will prevent a\nkernel oops that has been occuring when reading a vmapped page.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5f248c9c251c60af3403902b26e08de43964ea0b",
      "tree": "6d3328e72a7e4015a64017eb30be18095c6a3c64",
      "parents": [
        "f6cec0ae58c17522a7bc4e2f39dae19f199ab534",
        "dca332528bc69e05f67161e1ed59929633d5e63d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (96 commits)\n  no need for list_for_each_entry_safe()/resetting with superblock list\n  Fix sget() race with failing mount\n  vfs: don\u0027t hold s_umount over close_bdev_exclusive() call\n  sysv: do not mark superblock dirty on remount\n  sysv: do not mark superblock dirty on mount\n  btrfs: remove junk sb_dirt change\n  BFS: clean up the superblock usage\n  AFFS: wait for sb synchronization when needed\n  AFFS: clean up dirty flag usage\n  cifs: truncate fallout\n  mbcache: fix shrinker function return value\n  mbcache: Remove unused features\n  add f_flags to struct statfs(64)\n  pass a struct path to vfs_statfs\n  update VFS documentation for method changes.\n  All filesystems that need invalidate_inode_buffers() are doing that explicitly\n  convert remaining -\u003eclear_inode() to -\u003eevict_inode()\n  Make -\u003edrop_inode() just return whether inode needs to be dropped\n  fs/inode.c:clear_inode() is gone\n  fs/inode.c:evict() doesn\u0027t care about delete vs. non-delete paths now\n  ...\n\nFix up trivial conflicts in fs/nilfs2/super.c\n"
    },
    {
      "commit": "b57922d97fd6f79b6dbe6db0c4fd30d219fa08c1",
      "tree": "1d39e9cd8e1c1f502fb7e985a08286859c69aa36",
      "parents": [
        "45321ac54316eaeeebde0b5f728a1791e500974c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 07 14:34:48 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:48:37 2010 -0400"
      },
      "message": "convert remaining -\u003eclear_inode() to -\u003eevict_inode()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5df6b8e65ad0f2eaee202ff002ac00d1ac605315",
      "tree": "2eff6606f8e39dc1fd7eb8a05feb2a9927151805",
      "parents": [
        "fe21ea18c742ab0eb8f6f8ebc543374839a02a87",
        "3dce9a5c3a39a664e372886ea86c42ae7ae33dfc"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 13:19:36 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 13:19:36 2010 -0700"
      },
      "message": "Merge branch \u0027nfs-for-2.6.36\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6\n\n* \u0027nfs-for-2.6.36\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (42 commits)\n  NFS: NFSv4.1 is no longer a \"developer only\" feature\n  NFS: NFS_V4 is no longer an EXPERIMENTAL feature\n  NFS: Fix /proc/mount for legacy binary interface\n  NFS: Fix the locking in nfs4_callback_getattr\n  SUNRPC: Defer deleting the security context until gss_do_free_ctx()\n  SUNRPC: prevent task_cleanup running on freed xprt\n  SUNRPC: Reduce asynchronous RPC task stack usage\n  SUNRPC: Move the bound cred to struct rpc_rqst\n  SUNRPC: Clean up of rpc_bindcred()\n  SUNRPC: Move remaining RPC client related task initialisation into clnt.c\n  SUNRPC: Ensure that rpc_exit() always wakes up a sleeping task\n  SUNRPC: Make the credential cache hashtable size configurable\n  SUNRPC: Store the hashtable size in struct rpc_cred_cache\n  NFS: Ensure the AUTH_UNIX credcache is allocated dynamically\n  NFS: Fix the NFS users of rpc_restart_call()\n  SUNRPC: The function rpc_restart_call() should return success/failure\n  NFSv4: Get rid of the bogus RPC_ASSASSINATED(task) checks\n  NFSv4: Clean up the process of renewing the NFSv4 lease\n  NFSv4.1: Handle NFS4ERR_DELAY on SEQUENCE correctly\n  NFS: nfs_rename() should not have to flush out writebacks\n  ...\n"
    },
    {
      "commit": "d05dd4e98f0dd30ee933e05ac9363614c47df83a",
      "tree": "1b117bc9ffae9cac6de629a85220593b718f4728",
      "parents": [
        "f1f88fc7e818c6678c6799a2edb8f1aeccc124aa"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 31 14:29:07 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 03 22:06:44 2010 -0400"
      },
      "message": "NFS: Fix the NFS users of rpc_restart_call()\n\nFix up those functions that depend on knowing whether or not\nrpc_restart_call is successful or not.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7f8275d0d660c146de6ee3017e1e2e594c49e820",
      "tree": "884db927118b44102750b5168ee36ef4b8b5cb4e",
      "parents": [
        "d0c6f6258478e1dba532bf7c28e2cd6e1047d3a4"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Jul 19 14:56:17 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Mon Jul 19 14:56:17 2010 +1000"
      },
      "message": "mm: add context argument to shrinker callback\n\nThe current shrinker implementation requires the registered callback\nto have global state to work from. This makes it difficult to shrink\ncaches that are not global (e.g. per-filesystem caches). Pass the shrinker\nstructure to the callback so that users can embed the shrinker structure\nin the context the shrinker needs to operate on and get back to it in the\ncallback via container_of().\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "815409d22df870ea0b0d86f2a3bf33c35bcef55c",
      "tree": "99fa8d5ac56d3f14fa1313739d3f9b65176f4e8f",
      "parents": [
        "2d36bfde8565b315e624302d12da5a7c9d195522"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:46 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:21 2010 -0400"
      },
      "message": "NFSv4: Eliminate nfs4_path_walk()\n\nAll we really want is the ability to retrieve the root file handle. We no\nlonger need the ability to walk down the path, since that is now done in\nnfs_follow_remote_path().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a9185b41a4f84971b930c519f0c63bd450c4810d",
      "tree": "268cf4e206cca12fb9e1dd68984e7c190e465b46",
      "parents": [
        "26821ed40b4230259e770c9911180f38fcaa6f59"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Mar 05 09:21:37 2010 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 05 13:25:52 2010 -0500"
      },
      "message": "pass writeback_control to -\u003ewrite_inode\n\nThis gives the filesystem more information about the writeback that\nis happening.  Trond requested this for the NFS unstable write handling,\nand other filesystems might benefit from this too by beeing able to\ndistinguish between the different callers in more detail.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0110ee152b69f8cbde19d8bc1dd59e197e419d76",
      "tree": "f7a70abaaa97f03e358b2fb07103f5af4e98d5a5",
      "parents": [
        "9dfdf404c99347e2e224e25f8626e7b6399a05cd"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Dec 07 09:00:24 2009 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Dec 07 09:00:24 2009 -0500"
      },
      "message": "NFS: Fix up the declaration of nfs4_restart_rpc when NFSv4 not configured\n\nAlso rename it: it is used in generic code, and so should not have a \u0027nfs4\u0027\nprefix.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d61e612a728fb9bf848c4383f8f6645e822d5b57",
      "tree": "b4024efc797fa3b992b042f484574c1d43893a61",
      "parents": [
        "f26468fb9384e73fb357d2e84d3e9c88c7d1129d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Dec 05 19:32:19 2009 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Dec 05 19:32:19 2009 -0500"
      },
      "message": "NFSv41: Clean up slot table management\n\nWe no longer need to maintain a distinction between nfs41_sequence_done and\nnfs41_sequence_free_slot.\n\nThis fixes a number of slot table leakages in the NFSv4.1 code.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2449ea2e191123729b2dc37a06fcb9d6ea7e2736",
      "tree": "f5b71099baefb6c550511b3d5f3da26b8c384454",
      "parents": [
        "7b183d0d432ab3525ae29511a5348ead3e790620"
      ],
      "author": {
        "name": "Alexandros Batsakis",
        "email": "batsakis@netapp.com",
        "time": "Sat Dec 05 13:36:55 2009 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Dec 05 13:36:55 2009 -0500"
      },
      "message": "nfs41: V2 adjust max_rqst_sz, max_resp_sz w.r.t to rsize, wsize\n\nThe v4.1 client should take into account the desired rsize, wsize when\nnegotiating the max size in CREATE_SESSION. Accordingly, it should use\nrsize, wsize that are smaller than the session negotiated values.\n\nSigned-off-by: Alexandros Batsakis \u003cbatsakis@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d8cb1a7ce36d44602946f06af4267da304fb4011",
      "tree": "695622613261f5beba38829db8d8f17d55461ff5",
      "parents": [
        "31f0960778c78198957cf02cc970d92b72b929e4"
      ],
      "author": {
        "name": "Alexandros Batsakis",
        "email": "batsakis@netapp.com",
        "time": "Sat Dec 05 13:29:53 2009 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Dec 05 13:29:53 2009 -0500"
      },
      "message": "nfs41: check if session exists and if it is persistent\n\nSigned-off-by: Alexandros Batsakis \u003cbatsakis@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "07bccc2dd4e8745859f0fa7d120ea39320fbcdbf",
      "tree": "0a06d0689b300842a85c7c8f8605ea86dcb7cf81",
      "parents": [
        "0b9e2d41f1f0360be08809d4e3bb56b67be6241a"
      ],
      "author": {
        "name": "Alexandros Batsakis",
        "email": "batsakis@netapp.com",
        "time": "Sat Dec 05 13:19:01 2009 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Dec 05 13:19:01 2009 -0500"
      },
      "message": "nfs41: add support for callback with RPC version number 4\n\nThe NFSv4.1 spec-29 (18.36.3) says that the server MUST use an ONC RPC\n(program) version number equal to 4 in callbacks sent to the client.\nFor now we allow both versions 1 and 4.\n\nSigned-off-by: Alexandros Batsakis \u003cbatsakis@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e608e79f1bf4b967afcf57777e63b5f0939b00e8",
      "tree": "d649b5714435b7d2d4edd5779fa22122d61ee0c5",
      "parents": [
        "1d9ddde94aed01c4618cf6f70883cc511c3b2b62"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Dec 04 15:55:29 2009 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Dec 04 15:55:29 2009 -0500"
      },
      "message": "nfs41: call free slot from nfs4_restart_rpc\n\nnfs41_sequence_free_slot can be called multiple times on SEQUENCE operation\nerrors.\nNo reason to inline nfs4_restart_rpc\n\nReported-by: Trond Myklebust \u003ctrond.myklebust@netapp.com\u003e\n\nnfs_writeback_done and nfs_readpage_retry call nfs4_restart_rpc outside the\nerror handler, and the slot is not freed prior to restarting in the rpc_prepare\nstate during session reset.\n\nFix this by moving the call to nfs41_sequence_free_slot from the error\npath of nfs41_sequence_done into nfs4_restart_rpc, and by removing the test\nfor NFS4CLNT_SESSION_SETUP.\nAlways free slot and goto the rpc prepare state on async errors.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6df08189ffd33d8357759561dba49d25c0335858",
      "tree": "8f1d38370002cb05534628ee7b6bbfd04242b715",
      "parents": [
        "4d643d1dfa9349164fe928e255f68020d91dbfe0"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Dec 04 15:55:05 2009 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Dec 04 15:55:05 2009 -0500"
      },
      "message": "nfs41: rename cl_state session SETUP bit to RESET\n\nThe bit is no longer used for session setup, only for session reset.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "764302ccb88dd0df062eccd507b6c6de24f1c560",
      "tree": "00f9f1e80c07495e6649eccb17faf7b3d4f2a25a",
      "parents": [
        "a6fe23be90aa78783523a25330e09bfaa43a1581"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Sep 08 19:50:03 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 08 19:50:03 2009 -0400"
      },
      "message": "NFS: Allow the \"nfs\" file system type to support NFSv4\n\nWhen mounting an \"nfs\" type file system, recognize \"v4,\" \"vers\u003d4,\" or\n\"nfsvers\u003d4\" mount options, and convert the file system to \"nfs4\" under\nthe covers.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\n[trondmy: fixed up binary mount code so it sets the \u0027version\u0027 field too]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4cfd74fc99a41fdc161f243e1c16199656d33ab1",
      "tree": "b92cb5a87dfeb13cc042768351ffda6a64d58713",
      "parents": [
        "dbab8360ed8abca38121109feab47c4bea895994"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Sep 08 19:49:47 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 08 19:49:47 2009 -0400"
      },
      "message": "NFS: Mount option parser should detect missing \"port\u003d\"\n\nThe meaning of not specifying the \"port\u003d\" mount option is different\nfor \"-t nfs\" and \"-t nfs4\" mounts.  The default port value for\nNFSv2/v3 mounts is 0, but the default for NFSv4 mounts is 2049.\n\nTo support \"-t nfs -o vers\u003d4\", the mount option parser must detect\nwhen \"port\u003d\" is missing so that the correct default port value can be\nset depending on which NFS version is requested.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "976a6f921cad26651d25e73826c05c7a023f5fa4",
      "tree": "b06e283e3fe342bcf444328390b211bb155fd9dc",
      "parents": [
        "e576e05a73bc1a00cdf56630942dbada1bf280a1",
        "c05988cdb06237738d361ef82fbf4df1020aa3db"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Aug 10 17:45:50 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Aug 10 17:45:50 2009 -0400"
      },
      "message": "Merge branch \u0027patches_cel-for-2.6.32\u0027 into nfs-for-2.6.32\n"
    },
    {
      "commit": "074cc1deec5dee63fcd5d966b36fa4f3765b50fc",
      "tree": "14508949385a168ab2e43ca5bf7423473f25d839",
      "parents": [
        "c140aa91357c415c91269884518fa1d6fdebc20d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Aug 10 08:54:13 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Aug 10 08:54:13 2009 -0400"
      },
      "message": "NFS: Add a -\u003emigratepage() aop for NFS\n\nMake NFS a bit more friendly to NUMA and memory hot removal...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ec6ee61250acfccbc5578dd4014735fb2cbe53b5",
      "tree": "90c93d506b82d7c67ed8208410a1024e872f9c8d",
      "parents": [
        "53a0b9c4c99ab0085a06421f71592722e5b3fd5f"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Sun Aug 09 15:09:37 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Aug 09 15:09:37 2009 -0400"
      },
      "message": "NFS: Replace nfs_set_port() with rpc_set_port()\n\nClean up.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "53a0b9c4c99ab0085a06421f71592722e5b3fd5f",
      "tree": "e1e072cc5e7b8ee9c82966dddb6629923ea11be3",
      "parents": [
        "c877b849d302d1275452af80b7221a2555dc02e1"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Sun Aug 09 15:09:36 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Aug 09 15:09:36 2009 -0400"
      },
      "message": "NFS: Replace nfs_parse_ip_address() with rpc_pton()\n\nClean up: Use the common routine now provided in sunrpc.ko for parsing mount\naddresses.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a02d692611348f11ee1bc37431a883c3ff2de23e",
      "tree": "5a2ad4862784b4337846b44ddd816e495484086f",
      "parents": [
        "0b10bf5e14d856d1d27a2117d07af2bebee81b75"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Sun Aug 09 15:09:34 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Aug 09 15:09:34 2009 -0400"
      },
      "message": "SUNRPC: Provide functions for managing universal addresses\n\nIntroduce a set of functions in the kernel\u0027s RPC implementation for\nconverting between a socket address and either a standard\npresentation address string or an RPC universal address.\n\nThe universal address functions will be used to encode and decode\nRPCB_FOO and NFSv4 SETCLIENTID arguments.  The other functions are\npart of a previous promise to deliver shared functions that can be\nused by upper-layer protocols to display and manipulate IP\naddresses.\n\nThe kernel\u0027s current address printf formatters were designed\nspecifically for kernel to user-space APIs that require a particular\nstring format for socket addresses, thus are somewhat limited for the\npurposes of sunrpc.ko.  The formatter for IPv6 addresses, %pI6, does\nnot support short-handing or scope IDs.  Also, these printf formatters\nare unique per address family, so a separate formatter string is\nrequired for printing AF_INET and AF_INET6 addresses.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0b524123c93893391ec9e6c9b04998a45235f9c8",
      "tree": "6e65a65ecf9968803e712ccc7063cca4385757e0",
      "parents": [
        "f3f4f4ed26b116f621596f74d42d2b736171e968"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Sun Aug 09 15:09:30 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Aug 09 15:09:30 2009 -0400"
      },
      "message": "NFS: Add ability to send MOUNTPROC_UMNT to the kernel\u0027s mountd client\n\nAfter certain failure modes of an NFS mount, an NFS client should send\na MOUNTPROC_UMNT request to remove the just-added mount entry from the\nserver\u0027s mount table.  While no-one should rely on the accuracy of the\nserver\u0027s mount table, sending a UMNT is simply being a good internet\nneighbor.\n\nSince NFS mount processing is handled in the kernel now, we will need\na function in the kernel\u0027s mountd client that can post a MOUNTRPC_UMNT\nrequest, in order to handle these failure modes.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1f84603c0940d5bed17f7e4d2e0b2a4b8b8f1b81",
      "tree": "143956f878290e85de7c9130f465e862f587ee53",
      "parents": [
        "301933a0acfdec837fd8b4884093b3f0fff01d8a",
        "4bf259e3ae5015e73282ba66716c4a917e1264ac"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 17 18:13:00 2009 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jun 18 18:13:44 2009 -0700"
      },
      "message": "Merge branch \u0027devel-for-2.6.31\u0027 into for-2.6.31\n\nConflicts:\n\tfs/nfs/client.c\n\tfs/nfs/super.c\n"
    },
    {
      "commit": "8e02f6b9aae9b265064f929c6df15222b9baf256",
      "tree": "b5f018180a6b130731c085ee6ae7c060decfe538",
      "parents": [
        "a14017db2852f9393a401a0f64053c331003babf"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jun 17 18:02:13 2009 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 17 18:02:13 2009 -0700"
      },
      "message": "NFS: Update MNT and MNT3 reply decoding functions\n\nSolder xdr_stream-based XDR decoding functions into the in-kernel mountd\nclient that are more careful about checking data types and watching for\nbuffer overflows.  The new MNT3 decoder includes support for auth-flavor\nlist decoding.\n\nThe \"_sz\" macro for MNT3 replies was missing the size of the file handle.\nI\u0027ve added this back, and included the size of the auth flavor array.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a14017db2852f9393a401a0f64053c331003babf",
      "tree": "2b9b0859a6435ad4412882a6b469ed4c426136c5",
      "parents": [
        "4fdcd9966d8469be26a6f12122ac21ffce19fc20"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jun 17 18:02:12 2009 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 17 18:02:12 2009 -0700"
      },
      "message": "NFS: add XDR decoder for mountd version 3 auth-flavor lists\n\nIntroduce an xdr_stream-based XDR decoder that can unpack the auth-\nflavor list returned in a MNT3 reply.\n\nThe nfs_mount() function\u0027s caller allocates an array, and passes the\nsize and a pointer to it.  The decoder decodes all the flavors it can\ninto the array, and returns the number of decoded flavors.\n\nIf the caller is not interested in the auth flavors, it can pass a\nvalue of zero as the size of the pre-allocated array.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "008f55d0e019943323c20a03493a2ba5672a4cc8",
      "tree": "9d23ac89a198b307fa39018a228bd365e72a40d2",
      "parents": [
        "b4b82607ffcf09b57301846d154f2c09c0b807c0"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Wed Apr 01 09:22:50 2009 -0400"
      },
      "committer": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Wed Jun 17 12:25:13 2009 -0700"
      },
      "message": "nfs41: recover lease in _nfs4_lookup_root\n\nThis creates the nfsv4.1 session on mount.\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "eedc020e718b8ce45381383ec66030f09eb02a1e",
      "tree": "f29fe9309b67be4d5387c2ced72c063fb4df53c0",
      "parents": [
        "aae2006e9b0c294114915c13022fa348e1a88023"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Wed Apr 01 09:22:41 2009 -0400"
      },
      "committer": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Wed Jun 17 12:25:07 2009 -0700"
      },
      "message": "nfs41: use rpc prepare call state for session reset\n\n[nfs41: change nfs4_restart_rpc argument]\n[nfs41: check for session not minorversion]\n[nfs41: trigger the state manager for session reset]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[always define nfs4_restart_rpc]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "76db6d9500caeaa774a3e32a997eba30bbdc176b",
      "tree": "f1c1c2647ecb67dd519d00938be07f360d7680b1",
      "parents": [
        "ac72b7b3b3263ce64d55094eac1d1bde5f34e64a"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Wed Apr 01 09:22:38 2009 -0400"
      },
      "committer": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Wed Jun 17 12:25:06 2009 -0700"
      },
      "message": "nfs41: add session setup to the state manager\n\nAt mount, nfs_alloc_client sets the cl_state NFS4CLNT_LEASE_EXPIRED bit\nand nfs4_alloc_session sets the NFS4CLNT_SESSION_SETUP bit, so both bits are\nset when nfs4_lookup_root calls nfs4_recover_expired_lease which schedules\nthe nfs4_state_manager and waits for it to complete.\n\nPlace the session setup after the clientid establishment in nfs4_state_manager\nso that the session is setup right after the clientid has been established\nwithout rescheduling the state manager.\n\nUnlike nfsv4.0, the nfs_client struct is not ready to use until the session\nhas been established.  Postpone marking the nfs_client struct to NFS_CS_READY\nuntil after a successful CREATE_SESSION call so that other threads cannot use\nthe client until the session is established.\n\nIf the EXCHANGE_ID call fails and the session has not been setup (the\nNFS4CLNT_SESSION_SETUP bit is set), mark the client with the error and return.\n\nIf the session setup CREATE_SESSION call fails with NFS4ERR_STALE_CLIENTID\nwhich could occur due to server reboot or network partition inbetween the\nEXCHANGE_ID and CREATE_SESSION call, reset the NFS4CLNT_LEASE_EXPIRED and\nNFS4CLNT_SESSION_SETUP bits and try again.\n\nIf the CREATE_SESSION call fails with other errors, mark the client with\nthe error and return.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n\n[nfs41: NFS_CS_SESSION_SETUP cl_cons_state for back channel setup]\n  On session setup, the CREATE_SESSION reply races with the server back channel\n  probe which needs to succeed to setup the back channel. Set a new\n  cl_cons_state NFS_CS_SESSION_SETUP just prior to the CREATE_SESSION call\n  and add it as a valid state to nfs_find_client so that the client back channel\n  can find the nfs_client struct and won\u0027t drop the server backchannel probe.\n  Use a new cl_cons_state so that NFSv4.0 back channel behaviour which only\n  sets NFS_CS_READY is unchanged.\n  Adjust waiting on the nfs_client_active_wq accordingly.\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n\n[nfs41: rename NFS_CS_SESSION_SETUP to NFS_CS_SESSION_INITING]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\n[nfs41: set NFS_CL_SESSION_INITING in alloc_session]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\n[nfs41: move session setup into a function]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[moved nfs4_proc_create_session declaration here]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "def6ed7ef45ed19c3d6ca765f3bfdff1fe4c6bba",
      "tree": "98e072aa00e6c284dac719c6c7f97abd7c930d90",
      "parents": [
        "f11c88af26453aee2823a1fd9120d0cd8dae7b9a"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Wed Apr 01 09:22:26 2009 -0400"
      },
      "committer": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Wed Jun 17 10:46:49 2009 -0700"
      },
      "message": "nfs41 write sequence setup done support\n\nSeparate write calls from nfs41: sequence setup/done support\n\nImplement the write rpc_call_prepare method for\nasynchronuos nfs rpcs, call nfs41_setup_sequence from\nrespective rpc_call_validate_args methods.\n\nCall nfs4_sequence_done from respective rpc_call_done methods.\n\nNote that we need to pass a pointer to the nfs_server in calls data\nfor passing on to nfs4_sequence_done.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[pnfs: client data server write validate and release]\nSigned-off-by: Andy Adamson \u003candros@umich.edu\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[move the nfs4_sequence_free_slot call in nfs_readpage_retry from]\n[nfs41: separate free slot from sequence done\nSigned-off-by: Andy Adamson \u003candros@umich.edu\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfs41: Support sessions with O_DIRECT.]\nSigned-off-by: Dean Hildebrand \u003cdhildeb@us.ibm.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfs41: nfs4_sequence_free_slot use nfs_client for data server]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f11c88af26453aee2823a1fd9120d0cd8dae7b9a",
      "tree": "2a914fad3197bb9c28477e7a6224489acc11ae5d",
      "parents": [
        "472cfbd9b97be210a9b61ac1c6a774cd456ea9d2"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Wed Apr 01 09:22:25 2009 -0400"
      },
      "committer": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Wed Jun 17 10:46:48 2009 -0700"
      },
      "message": "nfs41: read sequence setup/done support\n\nImplement the read rpc_call_prepare method for\nasynchronuos nfs rpcs, call nfs41_setup_sequence from\nrespective rpc_call_validate_args methods.\n\nCall nfs4_sequence_done from respective rpc_call_done methods.\n\nNote that we need to pass a pointer to the nfs_server in calls data\nfor passing on to nfs4_sequence_done.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[pnfs: client data server write validate and release]\nSigned-off-by: Andy Adamson \u003candros@umich.edu\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[move the nfs4_sequence_free_slot call in nfs_readpage_retry from]\n[nfs41: separate free slot from sequence done]\n[remove nfs_readargs.nfs_server, use calldata-\u003einode instead]\nSigned-off-by: Andy Adamson \u003candros@umich.edu\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfs41: Support sessions with O_DIRECT]\nSigned-off-by: Dean Hildebrand \u003cdhildeb@us.ibm.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfs41: nfs4_sequence_free_slot use nfs_client for data server]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "13615871cdf8e8263626a817c350c6978a6483fe",
      "tree": "267069d5067c55d10c2a7b4e02dc5a03243f9967",
      "parents": [
        "e2c4ab3ce2ecc527672bd7e29a594c50d3ec0477"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Wed Apr 01 09:22:17 2009 -0400"
      },
      "committer": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Wed Jun 17 10:46:41 2009 -0700"
      },
      "message": "nfs41: nfs41_sequence_free_slot\n\n[from nfs41: separate free slot from sequence done]\n\nDon\u0027t free the slot until after all rpc_restart_calls have completed.\nSession reset will require more work.\n\nAs noted by Trond, since we\u0027re using rpc_wake_up_next rather than\nrpc_wake_up() we must always wake up the next task in the queue\neither by going through nfs4_free_slot, or just calling\nrpc_wake_up_next if no slot is to be freed.\n\n[nfs41: sequence res use slotid]\n[nfs41: remove SEQ4_STATUS_USE_TK_STATUS]\n[got rid of nfs4_sequence_res.sr_session, use nfs_client.cl_session instead]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfs41: rpc_wake_up_next if sessions slot was not consumed.]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfs41: nfs4_sequence_free_slot use nfs_client for data server]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cccef3b96a4759ae0790452280c00ea505412157",
      "tree": "26e4f93653a5c980cf8bb585d6fc05817a23f4be",
      "parents": [
        "22958463d5dca8548e19430779f379e66fd6e4a4"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Wed Apr 01 09:22:03 2009 -0400"
      },
      "committer": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Wed Jun 17 10:46:28 2009 -0700"
      },
      "message": "nfs41: introduce nfs4_call_sync\n\nUse nfs4_call_sync rather than rpc_call_sync to provide\nfor a nfs41 sessions-enabled interface for sessions manipulation.\n\nThe nfs41 rpc logic uses the rpc_call_prepare method to\nrecover and create the session, as well as selecting a free slot id\nand the rpc_call_done to free the slot and update slot table\nrelated metadata.\n\nIn the coming patches we\u0027ll add rpc prepare and done routines\nfor setting up the sequence op and processing the sequence result.\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfs41: nfs4_call_sync]\nAs per 11-14-08 review.\nSquash into \"nfs41: introduce nfs4_call_sync\" and \"nfs41: nfs4_setup_sequence\"\nDefine two functions one for v4 and one for v41\nadd a pointer to struct nfs4_client to the correct one.\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\n[added BUG() in _nfs4_call_sync_session if !CONFIG_NFS_V4_1]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfs41: check for session not minorversion]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[group minorversion specific stuff together]\nSigned-off-by: Alexandros Batsakis \u003cAlexandros.Batsakis@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\n[nfs41: fixup nfs4_clear_client_minor_version]\n[introduce nfs4_init_client_minor_version() in this patch]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[cleaned-up patch: got rid of nfs_call_sync_t, dprintks, cosmetics, extra server defs]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "557134a39c8d2ab79d8b8d53438e03e29feb5ec4",
      "tree": "3f6999d9601618102413fd535ff95f9be0babd85",
      "parents": [
        "9ff71c3a9827b99699510076dffa0bbe7c36bfd4"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Wed Apr 01 09:21:53 2009 -0400"
      },
      "committer": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Wed Jun 17 10:46:19 2009 -0700"
      },
      "message": "nfs41: sessions client infrastructure\n\nNFSv4.1 Sessions basic data types, initialization, and destruction.\n\nThe session is always associated with a struct nfs_client that holds\nthe exchange_id results.\n\nSigned-off-by: Rahul Iyer \u003ciyer@netapp.com\u003e\nSigned-off-by: Andy Adamson\u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[remove extraneous rpc_clnt pointer, use the struct nfs_client cl_rpcclient.\nremove the rpc_clnt parameter from nfs4 nfs4_init_session]\nSigned-off-by: Andy Adamson\u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[Use the presence of a session to determine behaviour instead of the\nminorversion number.]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\n[constified nfs4_has_session\u0027s struct nfs_client parameter]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[Rename nfs4_put_session() to nfs4_destroy_session() and call it from nfs4_free_client() not nfs4_free_server().\nAlso get rid of nfs4_get_session() and the ref_count in nfs4_session struct as keeping track of nfs_client should be sufficient]\nSigned-off-by: Alexandros Batsakis \u003cAlexandros.Batsakis@netapp.com\u003e\n[nfs41: pass rsize and wsize into nfs4_init_session]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\n[separated out removal of rpc_clnt parameter from nfs4_init_session ot a\n patch of its own]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[Pass the nfs_client pointer into nfs4_alloc_session]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfs41: don\u0027t assign to session-\u003eclp-\u003ecl_session in nfs4_destroy_session]\n[nfs41: fixup nfs4_clear_client_minor_version]\n[introduce nfs4_clear_client_minor_version() in this patch]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[Refactor nfs4_init_session]\n    Moved session allocation into nfs4_init_client_minor_version, called from\n    nfs4_init_client.\n    Leave rwise and wsize initialization in nfs4_init_session, called from\n    nfs4_init_server.\n    Reverted moving of nfs_fsid definition to nfs_fs_sb.h\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfs41: Move NFS4_MAX_SLOT_TABLE define from under CONFIG_NFS_V4_1]\n[Fix comile error when CONFIG_NFS_V4_1 is not set.]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[moved nfs4_init_slot_table definition to \"create_session operation\"]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfs41: alloc session with GFP_KERNEL]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3fd5be9e19921a89d9ed78d6a708a379a6c3c76a",
      "tree": "0eb6e104ef3f9e83b3cbc96fe941cd51e4fa2e9e",
      "parents": [
        "44549dff82753b6a5ffabcefeead34be63e95d96"
      ],
      "author": {
        "name": "Mike Sager",
        "email": "sager@netapp.com",
        "time": "Wed Apr 01 09:21:48 2009 -0400"
      },
      "committer": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Wed Jun 17 10:46:15 2009 -0700"
      },
      "message": "nfs41: add mount command option minorversion\n\nmount -t nfs4 -o minorversion\u003d[0|1] specifies whether to use 4.0 or 4.1.\nBy default, the minorversion is set to 0.\n\nSigned-off-by: Mike Sager \u003csager@netapp.com\u003e\n[set default minorversion to 0 as per Trond and SteveD\u0027s request]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b797cac7487dee6bfddeb161631c1bbc54fa3cdb",
      "tree": "daf0770b33d5705d527e34193480f7eeae58a326",
      "parents": [
        "5d1acff159730770cbab68b19443518c92ab1000"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:48 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:48 2009 +0100"
      },
      "message": "NFS: Add mount options to enable local caching on NFS\n\nAdd NFS mount options to allow the local caching support to be enabled.\n\nThe attached patch makes it possible for the NFS filesystem to be told to make\nuse of the network filesystem local caching service (FS-Cache).\n\nTo be able to use this, a recent nfsutils package is required.\n\nThere are three variant NFS mount options that can be added to a mount command\nto control caching for a mount.  Only the last one specified takes effect:\n\n (*) Adding \"fsc\" will request caching.\n\n (*) Adding \"fsc\u003d\u003cstring\u003e\" will request caching and also specify a uniquifier.\n\n (*) Adding \"nofsc\" will disable caching.\n\nFor example:\n\n\tmount warthog:/ /a -o fsc\n\nThe cache of a particular superblock (NFS FSID) will be shared between all\nmounts of that volume, provided they have the same connection parameters and\nare not marked \u0027nosharecache\u0027.\n\nWhere it is otherwise impossible to distinguish superblocks because all the\nparameters are identical, but the \u0027nosharecache\u0027 option is supplied, a\nuniquifying string must be supplied, else only the first mount will be\npermitted to use the cache.\n\nIf there\u0027s a key collision, then the second mount will disable caching and give\na warning into the kernel log.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Steve Dickson \u003csteved@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nTested-by: Daire Byrne \u003cDaire.Byrne@framestore.com\u003e\n"
    },
    {
      "commit": "08734048b380103f0412f58b84c2f76a2c8b599f",
      "tree": "34a65d40e33b12d36f5c82adb686bcdae6eab0fe",
      "parents": [
        "147272813e043fb44bd112527951da70c1e663de"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:42 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:42 2009 +0100"
      },
      "message": "NFS: Define and create superblock-level objects\n\nDefine and create superblock-level cache index objects (as managed by\nnfs_server structs).\n\nEach superblock object is created in a server level index object and is itself\nan index into which inode-level objects are inserted.\n\nIdeally there would be one superblock-level object per server, and the former\nwould be folded into the latter; however, since the \"nosharecache\" option\nexists this isn\u0027t possible.\n\nThe superblock object key is a sequence consisting of:\n\n (1) Certain superblock s_flags.\n\n (2) Various connection parameters that serve to distinguish superblocks for\n     sget().\n\n (3) The volume FSID.\n\n (4) The security flavour.\n\n (5) The uniquifier length.\n\n (6) The uniquifier text.  This is normally an empty string, unless the fsc\u003dxyz\n     mount option was used to explicitly specify a uniquifier.\n\nThe key blob is of variable length, depending on the length of (6).\n\nThe superblock object is given no coherency data to carry in the auxiliary data\npermitted by the cache.  It is assumed that the superblock is always coherent.\n\nThis patch also adds uniquification handling such that two otherwise identical\nsuperblocks, at least one of which is marked \"nosharecache\", won\u0027t end up\ntrying to share the on-disk cache.  It will be possible to manually provide a\nuniquifier through a mount option with a later patch to avoid the error\notherwise produced.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Steve Dickson \u003csteved@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nTested-by: Daire Byrne \u003cDaire.Byrne@framestore.com\u003e\n"
    },
    {
      "commit": "7fe5c398fc2186ed586db11106a6692d871d0d58",
      "tree": "1133bd775a23fb07ca759e4d6c44132c14576b75",
      "parents": [
        "b1e4adf4ea41bb8b5a7bfc1a7001f137e65495df"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 19 15:35:50 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 19 15:35:50 2009 -0400"
      },
      "message": "NFS: Optimise NFS close()\n\nClose-to-open cache consistency rules really only require us to flush out\nwrites on calls to close(), and require us to revalidate attributes on the\nvery last close of the file.\n\nCurrently we appear to be doing a lot of extra attribute revalidation\nand cache flushes.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "72cb77f4a5ace37b12dcb47a0e8637a2c28ad881",
      "tree": "62fbdd7a34884f3ea9e1b0ba6bd5a4d78263f847",
      "parents": [
        "fb8a1f11b64e213d94dfa1cebb2a42a7b8c115c4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:30 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:30 2009 -0400"
      },
      "message": "NFS: Throttle page dirtying while we\u0027re flushing to disk\n\nThe following patch is a combination of a patch by myself and Peter\nStaubach.\n\nTrond: If we allow other processes to dirty pages while a process is doing\na consistency sync to disk, we can end up never making progress.\n\nPeter: Attached is a patch which addresses a continuing problem with\nthe NFS client generating out of order WRITE requests.  While\nthis is compliant with all of the current protocol\nspecifications, there are servers in the market which can not\nhandle out of order WRITE requests very well.  Also, this may\nlead to sub-optimal block allocations in the underlying file\nsystem on the server.  This may cause the read throughputs to\nbe reduced when reading the file from the server.\n\nPeter: There has been a lot of work recently done to address out of\norder issues on a systemic level.  However, the NFS client is\nstill susceptible to the problem.  Out of order WRITE\nrequests can occur when pdflush is in the middle of writing\nout pages while the process dirtying the pages calls\ngeneric_file_buffered_write which calls\ngeneric_perform_write which calls\nbalance_dirty_pages_rate_limited which ends up calling\nwriteback_inodes which ends up calling back into the NFS\nclient to writes out dirty pages for the same file that\npdflush happens to be working with.\n\nSigned-off-by: Peter Staubach \u003cstaubach@redhat.com\u003e\n[modification by Trond to merge the two similar patches]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "50a737f86dbf99daf3a8dcbdf778a3be36bb2a39",
      "tree": "0abbef9c62457660d22e1dc34409513d83ebc59f",
      "parents": [
        "d740351bf0960e89ce1aef45cfe00167cb0f9e5b"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 23 15:21:37 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:37 2008 -0500"
      },
      "message": "NFS: \"[no]resvport\" mount option changes mountd client too\n\nIf the admin has specified the \"noresvport\" option for an NFS mount\npoint, the kernel\u0027s NFS client uses an unprivileged source port for\nthe main NFS transport.  The kernel\u0027s mountd client should use an\nunprivileged port in this case as well.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c5d120f8e8b464368a7dcb038dc5c077d234d10a",
      "tree": "28ec4ffebf3ebe0cdd1ed9c5ba174457b5960e32",
      "parents": [
        "146ec944bbd31d241a44a00518b054fb01921d22"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 23 15:21:35 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:35 2008 -0500"
      },
      "message": "NFS: introduce nfs_mount_info struct for calling nfs_mount()\n\nClean up: convert nfs_mount() to take a single data structure argument to make\nit simpler to add more arguments.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "146ec944bbd31d241a44a00518b054fb01921d22",
      "tree": "603c2fc810b9ca6cdec363275c18f00a0105e9ec",
      "parents": [
        "7b5d2b98e118716dd1ccc2808fae88f6c4b16d54"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 23 15:21:34 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:34 2008 -0500"
      },
      "message": "NFS: Move declaration of nfs_mount() to fs/nfs/internal.h\n\nClean up:  The nfs_mount() function is not to be used outside of the\nNFS client.  Move its public declaration to fs/nfs/internal.h.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "456018d791ff4ef03d610f72486c637056bcd749",
      "tree": "c278b69dc731a048e3c5a1d350b0d74611fcb791",
      "parents": [
        "03254e65a60d3113164672dbbadc023c4a56ecd1"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Oct 08 15:31:14 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Oct 10 14:41:50 2008 -0400"
      },
      "message": "NFS: Cleanup nfs_set_port\n\nSigned-off-by: \"J. Bruce Fields\" \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ea31a4437c59219bf3ea946d58984b01a45a289c",
      "tree": "d386f91c39461c7505e614f0b281f0e7e9b99298",
      "parents": [
        "f0c929251e01a7a86b6254c775cb6b65c6457f10"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Aug 20 16:10:23 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 07 18:17:47 2008 -0400"
      },
      "message": "nfs: Fix misparsing of nfsv4 fs_locations attribute\n\nThe code incorrectly assumes here that the server name (or ip address)\nis null-terminated.  This can cause referrals to fail in some cases.\n\nAlso support ipv6 addresses.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f0c929251e01a7a86b6254c775cb6b65c6457f10",
      "tree": "18016ca1cffa8ab1bbe2c064bbf76bba443d8b78",
      "parents": [
        "460cdbc83268dd9641b57d893b03ef52fcc3f96d"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Aug 20 16:10:22 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 07 18:17:36 2008 -0400"
      },
      "message": "nfs: prepare to share nfs_set_port\n\nWe plan to use this function elsewhere.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1daef0a868370c5a96d031b9202e3354bea060e6",
      "tree": "a072a8486c67f3d26b576e5bace8aa45def2d328",
      "parents": [
        "d5e66348bbe39dc78509e7561f7252aa443df8c0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jul 27 18:19:01 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 06 20:08:26 2008 -0400"
      },
      "message": "NFS: Clean up nfs_sb_active/nfs_sb_deactive\n\nInstead of causing umount requests to block on server-\u003eactive_wq while the\nasynchronous sillyrename deletes are executing, we can use the sb-\u003es_active\ncounter to obtain a reference to the super_block, and then release that\nreference in nfs_async_unlink_release().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f41f741838480aeaa3a189cff6e210503cf9c42d",
      "tree": "fc4509d47132c28ca211e57d8f59b56accb6db8b",
      "parents": [
        "2e96d2867245668dbdb973729288cf69b9fafa66"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 17:39:04 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 09 12:09:19 2008 -0400"
      },
      "message": "NFS: Ensure we zap only the access and acl caches when setting new acls\n\n...and ensure that we obey the NFS_INO_INVALID_ACL flag when retrieving the\nacls.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ecfc555a8327ff09b07066d73a98c04115007eec",
      "tree": "304691e77d21b8cecfd529eddfdfb2ba3fdfac31",
      "parents": [
        "82d101d58a2312297ee79f96d44c1d8c7fe1032d"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Mar 14 14:14:56 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 19 18:00:34 2008 -0400"
      },
      "message": "NFS: Always enable NFS direct I/O\n\nSince O_DIRECT is a standard feature that is enabled in most distros,\neliminate the CONFIG_NFS_DIRECTIO build option, and change the\nfs/nfs/Makefile to always build in the NFS direct I/O engine.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f22d6d79fe227245363a8849ea8c85fe6c6598c3",
      "tree": "5496ddd3e912a399e0be9a7116fc1a66d6c79a10",
      "parents": [
        "78fa701f341564e60461de91cd08ff5f7fb09b31"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Mar 14 14:10:22 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 19 18:00:19 2008 -0400"
      },
      "message": "NFS: Save the value of the \"port\u003d\" mount option\n\nDuring a remount based on the mount options displayed in /proc/mounts, we\nwant to preserve the original behavior of the mount request.  Let\u0027s save\nthe original setting of the \"port\u003d\" mount option in the mount\u0027s nfs_server\nstructure.\n\nThis allows us to simplify the default behavior of port setting for NFSv4\nmounts: by default, NFSv2/3 mounts first try an RPC bind to determine the\nNFS server\u0027s port, unless the user specified the \"port\u003d\" mount option;\nUsers can force the client to skip the RPC bind by explicitly specifying\n\"port\u003d\u003cvalue\u003e\".\n\nNFSv4, by contrast, assumes the NFS server port is 2049 and skips the RPC\nbind, unless the user specifies \"port\u003d\".  Users can force an RPC bind for\nNFSv4 by explicitly specifying \"port\u003d0\".\n\nI added a couple of extra comments to clarify this behavior.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "78fa701f341564e60461de91cd08ff5f7fb09b31",
      "tree": "f4f3b7bda53af1e016778c9612ccd97097842366",
      "parents": [
        "2d76743227028a26f884284aade03d1e43f4f249"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Mar 14 14:10:15 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 19 18:00:16 2008 -0400"
      },
      "message": "NFS: Fix up data types of fields in nfs_parsed_mount_options\n\nClean up: make data types of fields in nfs_parsed_mount_options more\nconsistent with other uses.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9446389ef612096704fdf18fa79bab423d4110f0",
      "tree": "3e4fda7270be58ae176d20d318e61fb115b325b5",
      "parents": [
        "cdd0972945dbcb8ea24db365d9b0e100af2a27bb",
        "84c6f6046c5a2189160a8f0dca8b90427bf690ea"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 08 11:49:24 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 08 11:49:24 2008 -0500"
      },
      "message": "Merge commit \u0027origin\u0027 into devel\n"
    },
    {
      "commit": "f9c3a3802119a2d30f3e4a69aef30a81e09d0209",
      "tree": "e777be38afbbec60e3c366169395b9fca7226540",
      "parents": [
        "e0007529893c1c064be90bd21422ca0da4a0198e"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Mar 05 14:20:18 2008 -0500"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Thu Mar 06 08:40:59 2008 +1100"
      },
      "message": "NFS: use new LSM interfaces to explicitly set mount options\n\nNFS and SELinux worked together previously because SELinux had NFS\nspecific knowledge built in.  This design was approved by both groups\nback in 2004 but the recent NFS changes to use nfs_parsed_mount_data and\nthe usage of nfs_clone_mount_data showed this to be a poor fragile\nsolution.  This patch fixes the NFS functionality regression by making\nuse of the new LSM interfaces to allow an FS to explicitly set its own\nmount options.\n\nThe explicit setting of mount options is done in the nfs get_sb\nfunctions which are called before the generic vfs hooks try to set mount\noptions for filesystems which use text mount data.\n\nThis does not currently support NFSv4 as that functionality did not\nexist in previous kernels and thus there is no regression.  I will be\nadding the needed code, which I believe to be the exact same as the v3\ncode, in nfs4_get_sb for 2.6.26.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "5746006f1d17d9d5a3015051ea54de4341cb31f9",
      "tree": "fc1d03a1e58a0a0a3cc03c46cbebdebf8cfe054e",
      "parents": [
        "32bfb5c0f495dd88ef6bac4b76885d0820563739"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Feb 19 20:04:22 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 25 21:40:36 2008 -0800"
      },
      "message": "NFS: Add an nfsiod workqueue\n\nNFS post-rpciod cleanups often involve tasks that cannot be safely\nperformed within the rpciod context (due to deadlock concerns). We\ntherefore add a dedicated NFS workqueue that can perform tasks like\ncleaning up state after an interrupted NFSv4 open() call, or calling\nput_nfs_open_context() after an asynchronous read or write call.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3fbd67ad61f6d5a09ea717b56c50bc5c3d8042a8",
      "tree": "ffac0a032211517e9d0bc9ff21a09f8c21fdf1c3",
      "parents": [
        "57bfa89171e50cddf51a4f62c90e47c6259857b4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jan 26 01:06:40 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:06:12 2008 -0500"
      },
      "message": "NFSv4: Iterate through all nfs_clients when the server recalls a delegation\n\nThe same delegation may have been handed out to more than one nfs_client.\nEnsure that if a recall occurs, we return all instances.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4c5680177012a2b5c0f3fdf58f4375dd84a1da67",
      "tree": "d3d9e599291b4f9b738d02c3913b13541b100487",
      "parents": [
        "9412b92772c1d80ea8284583b6aad0260e13515f"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Dec 10 14:59:28 2007 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:57 2008 -0500"
      },
      "message": "NFS: Support non-IPv4 addresses in nfs_parsed_mount_data\n\nReplace the nfs_server and mount_server address fields in the\nnfs_parsed_mount_data structure with a \"struct sockaddr_storage\"\ninstead of a \"struct sockaddr_in\".\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nCc: Aurelien Charbon \u003caurelien.charbon@ext.bull.net\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6677d09513e35ac2f38d3a8c8a26fbd7bbcef192",
      "tree": "c94931a3cb51c62638fe455afbac19f2edb81efa",
      "parents": [
        "dcecae0ff44dceea7adb6bef5c8eb660fe87a93c"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Dec 10 14:59:06 2007 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:56 2008 -0500"
      },
      "message": "NFS: Adjust nfs_clone_mount structure to store \"struct sockaddr *\"\n\nChange the addr field in the nfs_clone_mount structure to store a \"struct\nsockaddr *\" to support non-IPv4 addresses in the NFS client.\n\nNote this is mostly a cosmetic change, and does not actually allow\nreferrals using IPv6 addresses.  The existing referral code assumes that\nthe server returns a string that represents an IPv4 address.  This code\nneeds to support hostnames and IPv6 addresses as well as IPv4 addresses,\nthus it will need to be reorganized completely (to handle DNS resolution\nin user space).\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nCc: Aurelien Charbon \u003caurelien.charbon@ext.bull.net\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ff052645c939b2fd8d467105adf98fa621cc244b",
      "tree": "8f7a3030c8d052952dc08ade77da67395143cd8b",
      "parents": [
        "c1d35866566bc2b270a82445271fcce1e391c4b9"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Dec 10 14:58:44 2007 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:55 2008 -0500"
      },
      "message": "NFS: Change nfs_find_client() to take \"struct sockaddr *\"\n\nAdjust arguments and callers of nfs_find_client() to pass a\n\"struct sockaddr *\" instead of \"struct sockaddr_in *\" to support non-IPv4\naddresses.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nCc: Aurelien Charbon \u003caurelien.charbon@ext.bull.net\u003e\n\nTrond: Also fix up protocol version number argument in nfs_find_client() to\nuse the correct u32 type.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e887cbcf911b2d16742832b38411559273ce5d77",
      "tree": "9a5bf1afb685ada914e441cedcc7285cccecd86b",
      "parents": [
        "ad879cef8554e20f9b5ca356c878712eb671228c"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Oct 26 13:32:29 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:46 2008 -0500"
      },
      "message": "NFS: Remove support for the \u0027mountprog\u0027 option\n\nRemove the mount option that allows users to specify an alternate mountd\nprogram number.  The client hasn\u0027t support setting an alternate mountd\nprogram number for a very long time.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ad879cef8554e20f9b5ca356c878712eb671228c",
      "tree": "a4ced497cfe4223ec84a7bcf292931c9b240ffdb",
      "parents": [
        "0eb2574121ef0ffbebe5335c66c227d1b987fa25"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Oct 26 13:32:24 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:45 2008 -0500"
      },
      "message": "NFS: Remove support for the \u0027nfsprog\u0027 option\n\nRemove the mount option that allows users to specify an alternate NFS\nprogram number.  The client hasn\u0027t support setting an alternate NFS\nprogram number for a very long time.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ef818a28fac9bd214e676986d8301db0582b92a9",
      "tree": "b1825d1ecdfa6b35951a61f6bc54363236c12cd0",
      "parents": [
        "2f74c0a05612b9c2014b5b67833dba9b9f523948"
      ],
      "author": {
        "name": "Steve Dickson",
        "email": "SteveD@redhat.com",
        "time": "Thu Nov 08 04:05:04 2007 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:24 2008 -0500"
      },
      "message": "NFS: Stop sillyname renames and unmounts from racing\n\nAdded an active/deactive mechanism to the nfs_server structure\nallowing async operations to hold off umount until the\noperations are done.\n\nSigned-off-by: Steve Dickson \u003csteved@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "91ea40b9c6303ddab5c84f078f96b29084b45817",
      "tree": "b7f48effc5adbb1b9c36a7e16ce9133d7152aad9",
      "parents": [
        "2283f8d6ed21ea2221df4cc329314b93f35351b0"
      ],
      "author": {
        "name": "\\\"Talpey, Thomas\\",
        "email": "Thomas.Talpey@netapp.com",
        "time": "Mon Sep 10 13:44:33 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:17:28 2007 -0400"
      },
      "message": "NFS: use in-kernel mount argument structure for nfsv4 mounts\n\nThe user-visible nfs4_mount_data does not contain sufficient data to\ndescribe new mount options, and also is now a legacy structure. Replace\nit with the internal nfs_parsed_mount_data for nfsv4 in-kernel use.\n\nSigned-off-by: Tom Talpey \u003ctmt@netapp.com\u003e\nAcked-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2283f8d6ed21ea2221df4cc329314b93f35351b0",
      "tree": "dbf8b87e45b4fa76d50c0fd7ec0b3d4f1afd94ca",
      "parents": [
        "6b18eaa0821a559c5e2b7ed4b90f8aca5a8e6228"
      ],
      "author": {
        "name": "\\\"Talpey, Thomas\\",
        "email": "Thomas.Talpey@netapp.com",
        "time": "Mon Sep 10 13:43:56 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:17:26 2007 -0400"
      },
      "message": "NFS: use in-kernel mount argument structure for nfsv[23] mounts\n\nThe user-visible nfs_mount_data does not contain sufficient data to\ndescribe new mount options, and also is now a legacy structure. Replace\nit with the internal nfs_parsed_mount_data for nfsv[23] in-kernel use.\n\nSigned-off-by: Tom Talpey \u003ctmt@netapp.com\u003e\nAcked-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6b18eaa0821a559c5e2b7ed4b90f8aca5a8e6228",
      "tree": "25f02ce2813cf7bc37b73b5a14a9a037c187eab7",
      "parents": [
        "4417c8c41a51a2ae95b2a2fa2811640b368c4151"
      ],
      "author": {
        "name": "\\\"Talpey, Thomas\\",
        "email": "Thomas.Talpey@netapp.com",
        "time": "Mon Sep 10 13:43:29 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:17:23 2007 -0400"
      },
      "message": "NFS: move nfs_parsed_mount_data structure definition\n\nIn preparation for rearranging the nfs mount argument passing, make the\nnfs_parsed_mount_data struct visible across nfs kernel files.\n\nSigned-off-by: Tom Talpey \u003ctmt@netapp.com\u003e\nAcked-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9eaa67c6a5b77f248c4703d81c4a6c6434e35385",
      "tree": "acc90ec1e457b8583f8a9eafc6142152d8b41228",
      "parents": [
        "433c92379d9c2c59c2ebc7628fe4fb02cfc2daf8"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Sun Jul 01 12:12:19 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:44 2007 -0400"
      },
      "message": "NFS: Clean-up: use correct type when converting NFS blocks to local blocks\n\ninode-\u003ei_blocks is a blkcnt_t these days, which can be a u64 or unsigned\nlong, depending on the setting of CONFIG_LSF.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8d5658c949e6d89edc579a1f112aeee3bc232a8e",
      "tree": "f206d3f6809eeb0ca23c1999cf79aa294968b113",
      "parents": [
        "c63c7b051395368573779c8309aa5c990dcf2f96"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Apr 10 09:26:35 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 30 22:17:07 2007 -0700"
      },
      "message": "NFS: Fix a buffer overflow in the allocation of struct nfs_read/writedata\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c228fd3aeef55637354167faead74c579d5da28b",
      "tree": "44abf437f19a3f182e00a42de6cf853fef8cc0f6",
      "parents": [
        "faebf4e2bb0efad9dda396ea13d5c6ad15d7d7fb"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jan 13 02:28:11 2007 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Feb 03 15:35:06 2007 -0800"
      },
      "message": "NFSv4: Cleanups for fs_locations code.\n\nStart long arduous project...  What the hell is\n\n\tstruct dentry \u003d {};\n\nall about?\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "49a70f278658894d2899824cd4037095fb6711fe",
      "tree": "8fc0e55be04a421ee9091a989c30807d891d7930",
      "parents": [
        "277459d2e2cd40594967757e8fd016c4c7016614"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 05 00:35:38 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:36 2006 -0500"
      },
      "message": "NFS: Cleanup: add common helper nfs_page_length()\n\nClean up a lot of ad-hoc page length calculations in fs/nfs/write.c\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0dbb4c6799cf8fa8c5ba1926153a30960117477d",
      "tree": "9d8f75f2f407a5758fa4ef3d8c03694f138c3304",
      "parents": [
        "8687b63afbe42103730bff4d3f7bfff3463c303e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Thu Oct 19 23:28:49 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 20 10:26:40 2006 -0700"
      },
      "message": "[PATCH] xdr annotations: NFS readdir entries\n\non-the-wire data is big-endian\n\n[in large part pulled from Alexey\u0027s patch]\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nAcked-by: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6aaca566503296a73f956908ec98173946134fe2",
      "tree": "7625bbfa14cddd93ed3e2afa03caf4b553116f76",
      "parents": [
        "54ceac4515986030c2502960be620198dd8fe25b"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:13 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:37 2006 -0400"
      },
      "message": "NFS: Add server and volume lists to /proc\n\nMake two new proc files available:\n\n\t/proc/fs/nfsfs/servers\n\t/proc/fs/nfsfs/volumes\n\nThe first lists the servers with which we are currently dealing (struct\nnfs_client), and the second lists the volumes we have on those servers (struct\nnfs_server).\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "54ceac4515986030c2502960be620198dd8fe25b",
      "tree": "b4ae4305c5652c0fe883ef5ea3243da91dbd2b34",
      "parents": [
        "cf6d7b5de8535a9f0088c5cc28ee2dae87371b4a"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:13 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:37 2006 -0400"
      },
      "message": "NFS: Share NFS superblocks per-protocol per-server per-FSID\n\nThe attached patch makes NFS share superblocks between mounts from the same\nserver and FSID over the same protocol.\n\nIt does this by creating each superblock with a false root and returning the\nreal root dentry in the vfsmount presented by get_sb(). The root dentry set\nstarts off as an anonymous dentry if we don\u0027t already have the dentry for its\ninode, otherwise it simply returns the dentry we already have.\n\nWe may thus end up with several trees of dentries in the superblock, and if at\nsome later point one of anonymous tree roots is discovered by normal filesystem\nactivity to be located in another tree within the superblock, the anonymous\nroot is named and materialises attached to the second tree at the appropriate\npoint.\n\nWhy do it this way? Why not pass an extra argument to the mount() syscall to\nindicate the subpath and then pathwalk from the server root to the desired\ndirectory? You can\u0027t guarantee this will work for two reasons:\n\n (1) The root and intervening nodes may not be accessible to the client.\n\n     With NFS2 and NFS3, for instance, mountd is called on the server to get\n     the filehandle for the tip of a path. mountd won\u0027t give us handles for\n     anything we don\u0027t have permission to access, and so we can\u0027t set up NFS\n     inodes for such nodes, and so can\u0027t easily set up dentries (we\u0027d have to\n     have ghost inodes or something).\n\n     With this patch we don\u0027t actually create dentries until we get handles\n     from the server that we can use to set up their inodes, and we don\u0027t\n     actually bind them into the tree until we know for sure where they go.\n\n (2) Inaccessible symbolic links.\n\n     If we\u0027re asked to mount two exports from the server, eg:\n\n\tmount warthog:/warthog/aaa/xxx /mmm\n\tmount warthog:/warthog/bbb/yyy /nnn\n\n     We may not be able to access anything nearer the root than xxx and yyy,\n     but we may find out later that /mmm/www/yyy, say, is actually the same\n     directory as the one mounted on /nnn. What we might then find out, for\n     example, is that /warthog/bbb was actually a symbolic link to\n     /warthog/aaa/xxx/www, but we can\u0027t actually determine that by talking to\n     the server until /warthog is made available by NFS.\n\n     This would lead to having constructed an errneous dentry tree which we\n     can\u0027t easily fix. We can end up with a dentry marked as a directory when\n     it should actually be a symlink, or we could end up with an apparently\n     hardlinked directory.\n\n     With this patch we need not make assumptions about the type of a dentry\n     for which we can\u0027t retrieve information, nor need we assume we know its\n     place in the grand scheme of things until we actually see that place.\n\nThis patch reduces the possibility of aliasing in the inode and page caches for\ninodes that may be accessed by more than one NFS export. It also reduces the\nnumber of superblocks required for NFS where there are many NFS exports being\nused from a server (home directory server + autofs for example).\n\nThis in turn makes it simpler to do local caching of network filesystems, as it\ncan then be guaranteed that there won\u0027t be links from multiple inodes in\nseparate superblocks to the same cache file.\n\nObviously, cache aliasing between different levels of NFS protocol could still\nbe a problem, but at least that gives us another key to use when indexing the\ncache.\n\nThis patch makes the following changes:\n\n (1) The server record construction/destruction has been abstracted out into\n     its own set of functions to make things easier to get right.  These have\n     been moved into fs/nfs/client.c.\n\n     All the code in fs/nfs/client.c has to do with the management of\n     connections to servers, and doesn\u0027t touch superblocks in any way; the\n     remaining code in fs/nfs/super.c has to do with VFS superblock management.\n\n (2) The sequence of events undertaken by NFS mount is now reordered:\n\n     (a) A volume representation (struct nfs_server) is allocated.\n\n     (b) A server representation (struct nfs_client) is acquired.  This may be\n     \t allocated or shared, and is keyed on server address, port and NFS\n     \t version.\n\n     (c) If allocated, the client representation is initialised.  The state\n     \t member variable of nfs_client is used to prevent a race during\n     \t initialisation from two mounts.\n\n     (d) For NFS4 a simple pathwalk is performed, walking from FH to FH to find\n     \t the root filehandle for the mount (fs/nfs/getroot.c).  For NFS2/3 we\n     \t are given the root FH in advance.\n\n     (e) The volume FSID is probed for on the root FH.\n\n     (f) The volume representation is initialised from the FSINFO record\n     \t retrieved on the root FH.\n\n     (g) sget() is called to acquire a superblock.  This may be allocated or\n     \t shared, keyed on client pointer and FSID.\n\n     (h) If allocated, the superblock is initialised.\n\n     (i) If the superblock is shared, then the new nfs_server record is\n     \t discarded.\n\n     (j) The root dentry for this mount is looked up from the root FH.\n\n     (k) The root dentry for this mount is assigned to the vfsmount.\n\n (3) nfs_readdir_lookup() creates dentries for each of the entries readdir()\n     returns; this function now attaches disconnected trees from alternate\n     roots that happen to be discovered attached to a directory being read (in\n     the same way nfs_lookup() is made to do for lookup ops).\n\n     The new d_materialise_unique() function is now used to do this, thus\n     permitting the whole thing to be done under one set of locks, and thus\n     avoiding any race between mount and lookup operations on the same\n     directory.\n\n (4) The client management code uses a new debug facility: NFSDBG_CLIENT which\n     is set by echoing 1024 to /proc/net/sunrpc/nfs_debug.\n\n (5) Clone mounts are now called xdev mounts.\n\n (6) Use the dentry passed to the statfs() op as the handle for retrieving fs\n     statistics rather than the root dentry of the superblock (which is now a\n     dummy).\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5006a76cca8f86c6975c16fcf67e83b8b0eee2b6",
      "tree": "fbe711871729ddfc921e91ba86202a15c5a1a55f",
      "parents": [
        "8fa5c000d7f986ef9cdc6d95f9f7fcee20e0a7d6"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:12 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:36 2006 -0400"
      },
      "message": "NFS: Eliminate client_sys in favour of cl_rpcclient\n\nEliminate nfs_server::client_sys in favour of nfs_client::cl_rpcclient as we\nonly really need one per server that we\u0027re talking to since it doesn\u0027t have any\nsecurity on it.\n\nThe retransmission management variables are also moved to the common struct as\nthey\u0027re required to set up the cl_rpcclient connection.\n\nThe NFS2/3 client and client_acl connections are thenceforth derived by cloning\nthe cl_rpcclient connection and post-applying the authorisation flavour.\n\nThe code for setting up the initial common connection has been moved to\nclient.c as nfs_create_rpc_client().  All the NFS program definition tables are\nalso moved there as that\u0027s where they\u0027re now required rather than super.c.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "24c8dbbb5f777187d660393599641ab3307b4b97",
      "tree": "9d50fdd57c7593d925a21e4bb049095a4e4ead6f",
      "parents": [
        "e9326dcab413848e70ab746c7c5363da13e5f801"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:10 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:33 2006 -0400"
      },
      "message": "NFS: Generalise the nfs_client structure\n\nGeneralise the nfs_client structure by:\n\n (1) Moving nfs_client to a more general place (nfs_fs_sb.h).\n\n (2) Renaming its maintenance routines to be non-NFS4 specific.\n\n (3) Move those maintenance routines to a new non-NFS4 specific file (client.c)\n     and move the declarations to internal.h.\n\n (4) Make nfs_find/get_client() take a full sockaddr_in to include the port\n     number (will be required for NFS2/3).\n\n (5) Make nfs_find/get_client() take the NFS protocol version (again will be\n     required to differentiate NFS2, 3 \u0026 4 client records).\n\nAlso:\n\n (6) Make nfs_client construction proceed akin to inodes, marking them as under\n     construction and providing a function to indicate completion.\n\n (7) Make nfs_get_client() wait interruptibly if it finds a client that it can\n     share, but that client is currently being constructed.\n\n (8) Make nfs4_create_client() use (6) and (7) instead of locking cl_sem.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7d4e2747a0412583526a162fbbd6edeeafcceb08",
      "tree": "756180b37a02b504998c646ff027652f80e10bab",
      "parents": [
        "770bfad846ab6628444428467b11fa6773ae9ea1"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:07 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:30 2006 -0400"
      },
      "message": "NFS: Fix up split of fs/nfs/inode.c\n\nFix ups for the splitting of the superblock stuff out of fs/nfs/inode.c,\nincluding:\n\n (*) Move the callback tcpport module param into callback.c.\n\n (*) Move the idmap cache timeout module param into idmap.c.\n\n (*) Changes to internal.h:\n\n     (*) namespace-nfs4.c was renamed to nfs4namespace.c.\n\n     (*) nfs_stat_to_errno() is in nfs2xdr.c, not nfs4xdr.c.\n\n     (*) nfs4xdr.c is contingent on CONFIG_NFS_V4.\n\n     (*) nfs4_path() is only uses if CONFIG_NFS_V4 is set.\n\nPlus also:\n\n (*) The sec_flavours[] table should really be const.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    }
  ],
  "next": "979df72e6f963b42ee484f2eca049c3344da0ba7"
}
