)]}'
{
  "log": [
    {
      "commit": "6f5bbff9a1b7d6864a495763448a363bbfa96324",
      "tree": "0067dca46f40def1c55541c34c262e06aeb8c4c8",
      "parents": [
        "74dbbdd7fdc11763f4698d2f3e684cf4446951e6"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 06 01:34:22 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 09 10:49:40 2009 -0400"
      },
      "message": "Convert obvious places to deactivate_locked_super()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "67e55205ec55cc7899f1d783f217961596798419",
      "tree": "45dd7351f9721a46ecb448f0571fb10db3259147",
      "parents": [
        "091bf7624d1c90cec9e578a18529f615213ff847"
      ],
      "author": {
        "name": "Alessio Igor Bogani",
        "email": "abogani@texware.it",
        "time": "Fri Apr 24 09:06:53 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 09 10:49:38 2009 -0400"
      },
      "message": "vfs: umount_begin BKL pushdown\n\nPush BKL down into -\u003eumount_begin()\n\nSigned-off-by: Alessio Igor Bogani \u003cabogani@texware.it\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7fdf523067666b0eaff330f362401ee50ce187c4",
      "tree": "83088db2c3e9b61fd08bdcd0bbba5ace5a35b943",
      "parents": [
        "b4348f32dae3cb6eb4bc21c7ed8f76c0b11e9d6a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 24 17:32:22 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 02 19:42:39 2009 -0700"
      },
      "message": "NFS: Close page_mkwrite() races\n\nFollow up to Nick Piggin\u0027s patches to ensure that nfs_vm_page_mkwrite\nreturns with the page lock held, and sets the VM_FAULT_LOCKED flag.\n\nSee http://bugzilla.kernel.org/show_bug.cgi?id\u003d12913\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8340437210390676f687633a80e3748c40885dc8",
      "tree": "844b16bd6c152c8632b6a5f032c36d09bd1baf18",
      "parents": [
        "608faf1ff2341dd89307eea649c8efaa6d08b911"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 20 14:58:35 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 21 07:46:49 2009 -0700"
      },
      "message": "NFS: Fix the XDR iovec calculation in nfs3_xdr_setaclargs\n\nCommit ae46141ff08f1965b17c531b571953c39ce8b9e2 (NFSv3: Fix posix ACL code)\nintroduces a bug in the calculation of the XDR header iovec. In the case\nwhere we are inlining the acls, we need to adjust the length of the iovec\nreq-\u003erq_svec, in addition to adjusting the total buffer length.\n\nTested-by: Leonardo Chiquitto \u003cleonardo.lists@gmail.com\u003e\nTested-by: Suresh Jayaraman \u003csjayaraman@suse.de\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2b2ec7554cf7ec5e4412f89a5af6abe8ce950700",
      "tree": "373355d53c547896ec1fbc8486311efa37dbd18e",
      "parents": [
        "8e2c4f2844c0e8dcdfe312e5f2204854ca8532c6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Apr 07 14:02:53 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 14:07:03 2009 -0700"
      },
      "message": "NFS: Fix the return value in nfs_page_mkwrite()\n\nCommit c2ec175c39f62949438354f603f4aa170846aabb (\"mm: page_mkwrite\nchange prototype to match fault\") exposed a bug in the NFS\nimplementation of page_mkwrite.  We should be returning 0 on success...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d508afb437daee7cf07da085b635c44a4ebf9b38",
      "tree": "98b7ad238275bef428ac47204a7ce2fe6f14199c",
      "parents": [
        "bbae8bcc49bc4d002221dab52c79a50a82e7cd1f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 06 16:41:35 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 17:19:48 2009 -0700"
      },
      "message": "NFS: Fix a double free in nfs_parse_mount_options()\n\nDue to an apparent typo, commit a67d18f89f5782806135aad4ee012ff78d45aae7\n(NFS: load the rpc/rdma transport module automatically) lead to the\n\u0027proto\u003d\u0027 mount option doing a double free, while Opt_mountproto leaks a\nstring.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\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": "5d1acff159730770cbab68b19443518c92ab1000",
      "tree": "71969ce63215ffb636aa539ab049b71eac43da0d",
      "parents": [
        "7f8e05f60c87646e12c761fef61dd71a7e67112e"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:47 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:47 2009 +0100"
      },
      "message": "NFS: Display local caching state\n\nDisplay the local caching state in /proc/fs/nfsfs/volumes.\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": "7f8e05f60c87646e12c761fef61dd71a7e67112e",
      "tree": "f33bfcd5b4662a48890e8245362b381437be76fb",
      "parents": [
        "9a9fc1c03315f1606596e55b4096d39e2079a041"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:45 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:45 2009 +0100"
      },
      "message": "NFS: Store pages from an NFS inode into a local cache\n\nStore pages from an NFS inode into the cache data storage object associated\nwith that inode.\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": "9a9fc1c03315f1606596e55b4096d39e2079a041",
      "tree": "0eb9a2d9844a821e515baeb59e6d5e38384d5915",
      "parents": [
        "f42b293d6d5259043a8944b556eeab427c695d57"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:44 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:44 2009 +0100"
      },
      "message": "NFS: Read pages from FS-Cache into an NFS inode\n\nRead pages from an FS-Cache data storage object representing an inode into an\nNFS inode.\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": "f42b293d6d5259043a8944b556eeab427c695d57",
      "tree": "9427fb985f5426062c11755c47bbf4ba7606ee65",
      "parents": [
        "1fcdf534885b65e6d39780a5a89e9dfc5431cf68"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:44 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:44 2009 +0100"
      },
      "message": "NFS: nfs_readpage_async() needs to be accessible as a fallback for local caching\n\nnfs_readpage_async() needs to be non-static so that it can be used as a\nfallback for the local on-disk caching should an EIO crop up when reading the\ncache.\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": "1fcdf534885b65e6d39780a5a89e9dfc5431cf68",
      "tree": "2710681cd36e5ba1a6460082061464242c175772",
      "parents": [
        "545db45f0fc0d4203b045047798ce156972a3056"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:44 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:44 2009 +0100"
      },
      "message": "NFS: Add read context retention for FS-Cache to call back with\n\nAdd read context retention so that FS-Cache can call back into NFS when a read\noperation on the cache fails EIO rather than reading data.  This permits NFS to\nthen fetch the data from the server instead using the appropriate security\ncontext.\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": "545db45f0fc0d4203b045047798ce156972a3056",
      "tree": "783db1091f5d6f21dafece81f6c94caf0aec98b8",
      "parents": [
        "6a51091d0775cdc4a923f2172c61925ad416aa32"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:44 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:44 2009 +0100"
      },
      "message": "NFS: FS-Cache page management\n\nFS-Cache page management for NFS.  This includes hooking the releasing and\ninvalidation of pages marked with PG_fscache (aka PG_private_2) and waiting for\ncompletion of the write-to-cache flag (PG_fscache_write aka PG_owner_priv_2).\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": "6a51091d0775cdc4a923f2172c61925ad416aa32",
      "tree": "288fafe724eee5a0c67ff4c9bd437d35d3bbb9ab",
      "parents": [
        "d599064a1bca7bcbaabe54b94fa73ea86952cae3"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:43 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:43 2009 +0100"
      },
      "message": "NFS: Add some new I/O counters for FS-Cache doing things for NFS\n\nAdd some new NFS I/O counters for FS-Cache doing things for NFS.  A new line is\nemitted into /proc/pid/mountstats if caching is enabled that looks like:\n\n\tfsc: \u003crok\u003e \u003crfl\u003e \u003cwok\u003e \u003cwfl\u003e \u003cunc\u003e\n\nWhere \u003crok\u003e is the number of pages read successfully from the cache, \u003crfl\u003e is\nthe number of failed page reads against the cache, \u003cwok\u003e is the number of\nsuccessful page writes to the cache, \u003cwfl\u003e is the number of failed page writes\nto the cache, and \u003cunc\u003e is the number of NFS pages that have been disconnected\nfrom the cache.\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": "d599064a1bca7bcbaabe54b94fa73ea86952cae3",
      "tree": "f2b6d6b79053ea8a8b8178219203f30cc9c1c0b4",
      "parents": [
        "ef79c097bbe9724e13937271b3457df560e00370"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:43 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:43 2009 +0100"
      },
      "message": "NFS: Invalidate FsCache page flags when cache removed\n\nInvalidate the FsCache page flags on the pages belonging to an inode when the\ncache backing that NFS inode is removed.\n\nThis allows a live cache to be withdrawn.\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": "ef79c097bbe9724e13937271b3457df560e00370",
      "tree": "a8671781cc0c9deb85fa76a8b4211c5e693b4343",
      "parents": [
        "10329a5d48f5abc14a37d30b706e330f8598297a"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:43 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:43 2009 +0100"
      },
      "message": "NFS: Use local disk inode cache\n\nBind data storage objects in the local cache to NFS inodes.\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": "10329a5d48f5abc14a37d30b706e330f8598297a",
      "tree": "2423424d5faa9a9c3933bd1041d9f28f210aa1f2",
      "parents": [
        "08734048b380103f0412f58b84c2f76a2c8b599f"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:43 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:43 2009 +0100"
      },
      "message": "NFS: Define and create inode-level cache objects\n\nDefine and create inode-level cache data storage objects (as managed by\nnfs_inode structs).\n\nEach inode-level object is created in a superblock-level index object and is\nitself a data storage object into which pages from the inode are stored.\n\nThe inode object key is the NFS file handle for the inode.\n\nThe inode object is given coherency data to carry in the auxiliary data\npermitted by the cache.  This is a sequence made up of:\n\n (1) i_mtime from the NFS inode.\n\n (2) i_ctime from the NFS inode.\n\n (3) i_size from the NFS inode.\n\n (4) change_attr from the NFSv4 attribute data.\n\nAs the cache is a persistent cache, the auxiliary data is checked when a new\nNFS in-memory inode is set up that matches an already existing data storage\nobject in the cache.  If the coherency data is the same, the on-disk object is\nretained and used; if not, it is scrapped and a new one created.\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": "147272813e043fb44bd112527951da70c1e663de",
      "tree": "4b67df2bb809c7b661e7c6f4b1692ab8af41a996",
      "parents": [
        "8ec442ae4c6577ed181682e534d4eef524e30b3c"
      ],
      "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 server-level objects\n\nDefine and create server-level cache index objects (as managed by nfs_client\nstructs).\n\nEach server object is created in the NFS top-level index object and is itself\nan index into which superblock-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 server object key is a sequence consisting of:\n\n (1) NFS version\n\n (2) Server address family (eg: AF_INET or AF_INET6)\n\n (3) Server port.\n\n (4) Server IP address.\n\nThe key blob is of variable length, depending on the length of (4).\n\nThe server object is given no coherency data to carry in the auxiliary data\npermitted by the cache.\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": "8ec442ae4c6577ed181682e534d4eef524e30b3c",
      "tree": "44fb9013929f7227781525d1904ac16d6723ce6e",
      "parents": [
        "3b9ce977b2f31b6c396b6fb620df9881a30fac9d"
      ],
      "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: Register NFS for caching and retrieve the top-level index\n\nRegister NFS for caching and retrieve the top-level cache index object cookie.\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": "3b9ce977b2f31b6c396b6fb620df9881a30fac9d",
      "tree": "136b6e29a0a0edc1cefe8588d25c7cb1c0e68cd6",
      "parents": [
        "c6a6f19e22da0a3d74214ee010224c9a30a794c1"
      ],
      "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: Permit local filesystem caching to be enabled for NFS\n\nPermit local filesystem caching to be enabled for NFS in the kernel\nconfiguration.\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": "6b9b3514aa188183e74049853be43380ad49314f",
      "tree": "738f333421c2f57447dc4534ae83a19708e487cf",
      "parents": [
        "9b3f26c9110dcea62716aca9b8c68ceb482227ef"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:41 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:41 2009 +0100"
      },
      "message": "NFS: Add comment banners to some NFS functions\n\nAdd comment banners to some NFS functions so that they can be modified by the\nNFS fscache patches for further information.\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": "8fe74cf053de7ad2124a894996f84fa890a81093",
      "tree": "77dcd8fbf33ce53a3821942233962fb28c6f2848",
      "parents": [
        "c2eb2fa6d2b6fe122d3479ec5b28d978418b2698",
        "ced117c73edc917e96dea7cca98c91383f0792f7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 21:09:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 21:09:10 2009 -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:\n  Remove two unneeded exports and make two symbols static in fs/mpage.c\n  Cleanup after commit 585d3bc06f4ca57f975a5a1f698f65a45ea66225\n  Trim includes of fdtable.h\n  Don\u0027t crap into descriptor table in binfmt_som\n  Trim includes in binfmt_elf\n  Don\u0027t mess with descriptor table in load_elf_binary()\n  Get rid of indirect include of fs_struct.h\n  New helper - current_umask()\n  check_unsafe_exec() doesn\u0027t care about signal handlers sharing\n  New locking/refcounting for fs_struct\n  Take fs_struct handling to new file (fs/fs_struct.c)\n  Get rid of bumping fs_struct refcount in pivot_root(2)\n  Kill unsharing fs_struct in __set_personality()\n"
    },
    {
      "commit": "cc85906110e26fe8537c3bdbc08a74ae8110030b",
      "tree": "891813098ede3dba4d5ff3b83b1f7b491367ad2f",
      "parents": [
        "c09bca786ff941ed17c5f381c4eca5b106808c51",
        "c69da774b28e01e062e0a3aba7509f2dcfd2a11a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Apr 01 13:28:15 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Apr 01 13:28:15 2009 -0400"
      },
      "message": "Merge branch \u0027devel\u0027 into for-linus\n"
    },
    {
      "commit": "c2ec175c39f62949438354f603f4aa170846aabb",
      "tree": "f2c9bf1bec2deabe2d3a5092405b027637b6ead3",
      "parents": [
        "c2fdf3a9b2d52842808a8e551b53b55dd9b45030"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Mar 31 15:23:21 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:14 2009 -0700"
      },
      "message": "mm: page_mkwrite change prototype to match fault\n\nChange the page_mkwrite prototype to take a struct vm_fault, and return\nVM_FAULT_xxx flags.  There should be no functional change.\n\nThis makes it possible to return much more detailed error information to\nthe VM (and also can provide more information eg.  virtual_address to the\ndriver, which might be important in some special cases).\n\nThis is required for a subsequent fix.  And will also make it easier to\nmerge page_mkwrite() with fault() in future.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: Artem Bityutskiy \u003cdedekind@infradead.org\u003e\nCc: Felix Blyakher \u003cfelixb@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ce3b0f8d5c2203301fc87f3aaaed73e5819e2a48",
      "tree": "ab952affafe18e604f6aaf6b13315b9435588e60",
      "parents": [
        "f1191b50ec11c8e2ca766d6d99eb5bb9d2c084a3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 29 19:08:22 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 31 23:00:26 2009 -0400"
      },
      "message": "New helper - current_umask()\n\ncurrent-\u003efs-\u003eumask is what most of fs_struct users are doing.\nPut that into a helper function.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "99b76233803beab302123d243eea9e41149804f3",
      "tree": "398178210fe66845ccd6fa4258ba762a87e023ad",
      "parents": [
        "3dec7f59c370c7b58184d63293c3dc984d475840"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Mar 25 22:48:06 2009 +0300"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Mar 31 01:14:44 2009 +0400"
      },
      "message": "proc 2/2: remove struct proc_dir_entry::owner\n\nSetting -\u003eowner as done currently (pde-\u003eowner \u003d THIS_MODULE) is racy\nas correctly noted at bug #12454. Someone can lookup entry with NULL\n-\u003eowner, thus not pinning enything, and release it later resulting\nin module refcount underflow.\n\nWe can keep -\u003eowner and supply it at registration time like -\u003eproc_fops\nand -\u003edata.\n\nBut this leaves -\u003eowner as easy-manipulative field (just one C assignment)\nand somebody will forget to unpin previous/pin current module when\nswitching -\u003eowner. -\u003eproc_fops is declared as \"const\" which should give\nsome thoughts.\n\n-\u003eread_proc/-\u003ewrite_proc were just fixed to not require -\u003eowner for\nprotection.\n\nrmmod\u0027ed directories will be empty and return \".\" and \"..\" -- no harm.\nAnd directories with tricky enough readdir and lookup shouldn\u0027t be modular.\nWe definitely don\u0027t want such modular code.\n\nRemoving -\u003eowner will also make PDE smaller.\n\nSo, let\u0027s nuke it.\n\nKudos to Jeff Layton for reminding about this, let\u0027s say, oversight.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12454\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "3c8c45dfab78a1919f6f8a3ea46998c487eb7e12",
      "tree": "532baa9e2ca4a11dcf36bf7542b92e30f8908011",
      "parents": [
        "d188262d60e879800d3a0a768ecbb216d6ef0d40"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Mar 18 20:48:14 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 28 16:51:04 2009 -0400"
      },
      "message": "NFS: Simplify logic to compare socket addresses in client.c\n\nCallback requests from IPv4 servers are now always guaranteed to be\nAF_INET, and never mapped IPv4 AF_INET6 addresses.  Both\nnfs_match_client() and nfs_find_client() can now share the same\naddress comparison logic, so fold them together.\n\nWe can also dispense with of most of the conditional compilation\nin here.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d188262d60e879800d3a0a768ecbb216d6ef0d40",
      "tree": "4416aba693ff03551987addb3de626920b212f5d",
      "parents": [
        "f738f5170367b367e38b2d75a413e7b3c52d46a5",
        "9f4c899c0d90e1b51b6864834f3877b47c161a0e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 28 16:50:58 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 28 16:50:58 2009 -0400"
      },
      "message": "Merge commit \u00279f4c899c0d90e1b51b6864834f3877b47c161a0e\u0027 into devel\n"
    },
    {
      "commit": "f738f5170367b367e38b2d75a413e7b3c52d46a5",
      "tree": "3552d487e54e8c555e4f7083194d46b6eb95fc66",
      "parents": [
        "eb16e907781a9da7f272a3e8284c26bc4e4aeb9d"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Mar 18 20:48:06 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 28 16:02:43 2009 -0400"
      },
      "message": "NFS: Start PF_INET6 callback listener only if IPv6 support is available\n\nApparently a lot of people need to disable IPv6 completely on their\ndistributor-built systems, which have CONFIG_IPV6_MODULE enabled at\nbuild time.\n\nThey do this by blacklisting the ipv6.ko module.  This causes the\ncreation of the NFSv4 callback service listener to fail if\nCONFIG_IPV6_MODULE is set, but the module cannot be loaded.\n\nNow that the kernel\u0027s PF_INET6 RPC listeners are completely separate\nfrom PF_INET listeners, we can always start PF_INET.  Then the NFS\nclient can try to start a PF_INET6 listener, but it isn\u0027t required\nto be available.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "26298caacac3e4754194b13aef377706d5de6cf6",
      "tree": "ca5bcec9c81af2ad5f7d8b4dc91fd3a22aee71f4",
      "parents": [
        "49a9072f29a1039f142ec98b44a72d7173651c02"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Mar 18 20:46:36 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 28 15:55:06 2009 -0400"
      },
      "message": "NFS: Revert creation of IPv6 listeners for lockd and NFSv4 callbacks\n\nWe\u0027re about to convert over to using separate PF_INET and PF_INET6\nlisteners, instead of a single PF_INET6 listener that also receives\nAF_INET requests and maps them to AF_INET6.\n\nClear the way by removing the logic in lockd and the NFSv4 callback\nserver that creates an AF_INET6 service listener.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "49a9072f29a1039f142ec98b44a72d7173651c02",
      "tree": "d2a87541cb699fb6b1fbdef492f3dc6c305aa541",
      "parents": [
        "9652ada3fb5914a67d8422114e8a76388330fa79"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Mar 18 20:46:29 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 28 15:54:48 2009 -0400"
      },
      "message": "SUNRPC: Remove @family argument from svc_create() and svc_create_pooled()\n\nSince an RPC service listener\u0027s protocol family is specified now via\nsvc_create_xprt(), it no longer needs to be passed to svc_create() or\nsvc_create_pooled().  Remove that argument from the synopsis of those\nfunctions, and remove the sv_family field from the svc_serv struct.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9652ada3fb5914a67d8422114e8a76388330fa79",
      "tree": "b37d77bf972dda04b46794c4e50ec6f6d044dc79",
      "parents": [
        "baf01caf09e87579c2d157e5ee29975db8551522"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Mar 18 20:46:21 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 28 15:54:36 2009 -0400"
      },
      "message": "SUNRPC: Change svc_create_xprt() to take a @family argument\n\nThe sv_family field is going away.  Pass a protocol family argument to\nsvc_create_xprt() instead of extracting the family from the passed-in\nsvc_serv struct.\n\nAgain, as this is a listener socket and not an address, we make this\nnew argument an \"int\" protocol family, instead of an \"sa_family_t.\"\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f786aa90e026f2174bb0c26d49f338c5c46ede55",
      "tree": "6b50684e5b43149cfdb8e4220a3e84b5ea71ec3f",
      "parents": [
        "e56980d451904b623573ef4966cbab768e433c79"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 20 05:51:22 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:43:59 2009 -0400"
      },
      "message": "constify dentry_operations: NFS\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\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": "b1e4adf4ea41bb8b5a7bfc1a7001f137e65495df",
      "tree": "2e244acb15347bfe749cd8758466e3351fde0cb6",
      "parents": [
        "47c62564200609b6de60f535f61f0c73dd10c7c9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 19 15:35:49 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 19 15:35:49 2009 -0400"
      },
      "message": "NFS: Fix the notifications when renaming onto an existing file\n\nNFS appears to be returning an unnecessary \"delete\" notification when\nwe\u0027re doing an atomic rename. See\n\n  http://bugzilla.gnome.org/show_bug.cgi?id\u003d575684\n\nThe fix is to get rid of the redundant call to d_delete().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "47c62564200609b6de60f535f61f0c73dd10c7c9",
      "tree": "9d21b42cd34b14e75574dcb22eb945aefccfe345",
      "parents": [
        "2e3c230bc7149a6af65d26a0c312e230e0c33cc3"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 16 08:13:41 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 19 15:17:40 2009 -0400"
      },
      "message": "NFS: Fix up a mismerged patch\n\nMove the definition of nfs_need_commit() into the #ifdef CONFIG_NFS_V3\nsection as originally intended in the patch \"NFS: cleanup - remove\nstruct nfs_inode-\u003encommit\"\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9f4c899c0d90e1b51b6864834f3877b47c161a0e",
      "tree": "862f6b59919392fbf7a82200a7c478b51defeaa9",
      "parents": [
        "01d37c428ae080563c0a3bb8bdfa88c65a6891d3"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 12 14:51:32 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 12 14:51:32 2009 -0400"
      },
      "message": "NFS: Fix the fix to Bugzilla #11061, when IPv6 isn\u0027t defined...\n\nStephen Rothwell reports:\n\nToday\u0027s linux-next build (powerpc ppc64_defconfig) failed like this:\n\nfs/built-in.o: In function `.nfs_get_client\u0027:\nclient.c:(.text+0x115010): undefined reference to `.__ipv6_addr_type\u0027\n\nFix by moving the IPV6 specific parts of commit\nd7371c41b0cda782256b1df759df4e8d4724584c (\"Bug 11061, NFS mounts dropped\")\ninto the \u0027#ifdef IPV6...\" section.\n\nAlso fix up a couple of formatting issues.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a67d18f89f5782806135aad4ee012ff78d45aae7",
      "tree": "8ee9712d4217d585199a95da7388dd0761c3e32d",
      "parents": [
        "441e3e242903f9b190d5764bed73edb58f977413"
      ],
      "author": {
        "name": "Tom Talpey",
        "email": "tmtalpey@gmail.com",
        "time": "Wed Mar 11 14:37:56 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:37:56 2009 -0400"
      },
      "message": "NFS: load the rpc/rdma transport module automatically\n\nWhen mounting an NFS/RDMA server with the \"-o proto\u003drdma\" or\n\"-o rdma\" options, attempt to dynamically load the necessary\n\"xprtrdma\" client transport module. Doing so improves usability,\nwhile avoiding a static module dependency and any unnecesary\nresources.\n\nSigned-off-by: Tom Talpey \u003ctmtalpey@gmail.com\u003e\nCc: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e1ebfd33be068ec933f8954060a499bd22ad6f69",
      "tree": "eede58106b4c2e10198a73f47ad14850d617f4c1",
      "parents": [
        "72cb77f4a5ace37b12dcb47a0e8637a2c28ad881"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:37:54 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:37:54 2009 -0400"
      },
      "message": "NFS: Kill the \"defined but not used\" compile error on nommu machines\n\nBryan Wu reports that when compiling NFS on nommu machines he gets a\n\"defined but not used\" error on nfs_file_mmap().\n\nThe easiest fix is simply to get rid of the special casing in NFS, and\njust always call generic_file_mmap() to set up the file.\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": "fb8a1f11b64e213d94dfa1cebb2a42a7b8c115c4",
      "tree": "4b21038fae0e1a8a763d4118bd6543dc77e9b5aa",
      "parents": [
        "a65318bf3afc93ce49227e849d213799b072c5fd"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:29 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:29 2009 -0400"
      },
      "message": "NFS: cleanup - remove struct nfs_inode-\u003encommit\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a65318bf3afc93ce49227e849d213799b072c5fd",
      "tree": "754aad8596310825b96956012b7f584fff5b7a54",
      "parents": [
        "69aaaae18f7027d9594bce100378f102926cc0be"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:28 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:28 2009 -0400"
      },
      "message": "NFSv4: Simplify some cache consistency post-op GETATTRs\n\nCertain asynchronous operations such as write() do not expect\n(or care) that other metadata such as the file owner, mode, acls, ...\nchange. All they want to do is update and/or check the change attribute,\nctime, and mtime.\nBy skipping the file owner and group update, we also avoid having to do a\npotential idmapper upcall for these asynchronous RPC calls.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "69aaaae18f7027d9594bce100378f102926cc0be",
      "tree": "151c903e1a1eae360f9cf22870dcec6c41295467",
      "parents": [
        "409924e4c943072a63c43bb6b77576bf12f1896b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:28 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:28 2009 -0400"
      },
      "message": "NFSv4: A referral is assumed to always point to a directory.\n\nFix a bug whereby we would fail to create a mount point for a referral.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "409924e4c943072a63c43bb6b77576bf12f1896b",
      "tree": "cf598400a995a61c1566db9b1e552a39d5a1dc53",
      "parents": [
        "f26c7a78876ccd6c9b477ab4ca127aa1a4ef68c7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:27 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:27 2009 -0400"
      },
      "message": "NFSv4: Make decode_getfattr() set fattr-\u003evalid to reflect what was decoded\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f26c7a78876ccd6c9b477ab4ca127aa1a4ef68c7",
      "tree": "6a51ae1f642883a1c63616d7872ec6f7d87e20e7",
      "parents": [
        "bca794785c2c12ecddeb09e70165b8ff80baa6ae"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:26 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:26 2009 -0400"
      },
      "message": "NFSv4: Clean up decode_getfattr()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bca794785c2c12ecddeb09e70165b8ff80baa6ae",
      "tree": "8e8fefa535c799240846082ba580dc87d0a98cbf",
      "parents": [
        "1ca277d88dafdbc3c5a69d32590e7184b9af6371"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:26 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:26 2009 -0400"
      },
      "message": "NFS: Fix the type of struct nfs_fattr-\u003emode\n\nThere is no point in using anything other than umode_t, since we copy the\ncontent pretty much directly into inode-\u003ei_mode.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1ca277d88dafdbc3c5a69d32590e7184b9af6371",
      "tree": "8cd36f442796e7e83c1dfcd72a036846f1b3950f",
      "parents": [
        "9e6e70f8d8b6698e0017c56b86525aabe9c7cd4c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:25 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:25 2009 -0400"
      },
      "message": "NFS: Shrink the struct nfs_fattr\n\nWe don\u0027t need the bitmap[] field anymore, since the \u0027valid\u0027 field tells us\nall we need to know about which attributes were filled in...\nAlso move the pre-op attributes in order to improve the structure packing.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9e6e70f8d8b6698e0017c56b86525aabe9c7cd4c",
      "tree": "3364c61dc3fdb1cc69b18e0cf16947abc49c0be5",
      "parents": [
        "78f945f88ef83dcc7c962614a080e0a9a2db5889"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:24 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:24 2009 -0400"
      },
      "message": "NFSv4: Support NFSv4 optional attributes in the struct nfs_fattr\n\nCurrently, filling struct nfs_fattr is more or less an all or nothing\noperation, since NFSv2 and NFSv3 have only mandatory attributes.\nIn NFSv4, some attributes are optional, and so we may simply not be able to\nfill in those fields. Furthermore, NFSv4 allows you to specify which\nattributes you are interested in retrieving, thus permitting you to\noptimise away retrieval of attributes that you know will no change...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "78f945f88ef83dcc7c962614a080e0a9a2db5889",
      "tree": "1a3ab02259b3b6ddce570aa8afcd3375de71a0cc",
      "parents": [
        "37d9d76d8b3a2ac5817e1fa3263cfe0fdb439e51"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:23 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:23 2009 -0400"
      },
      "message": "NFSv4: Ignore errors on the post-op attributes in SETATTR calls\n\nThere is no need to fail or retry a SETATTR call just because the post-op\nGETATTR failed.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "37d9d76d8b3a2ac5817e1fa3263cfe0fdb439e51",
      "tree": "ccbf57ce8f85ad8277838c50f723cbe79950eebc",
      "parents": [
        "2b57dc6cf9bf31edc0df430ea18dd1dbd3028975"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Mar 11 14:10:23 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:23 2009 -0400"
      },
      "message": "NFS: flush cached directory information slightly more readily.\n\nIf cached directory contents becomes incorrect, there is no way to\nflush the contents.  This contrasts with files where file locking is\nthe recommended way to ensure cache consistency between multiple\napplications (a read-lock always flushes the cache).\n\nAlso while changes to files often change the size of the file (thus\ntriggering a cache flush), changes to directories often do not change\nthe apparent size (as the size is often rounded to a block size).\n\nSo it is particularly important with directories to avoid the\npossibility of an incorrect cache wherever possible.\n\nWhen the link count on a directory changes it implies a change in the\nnumber of child directories, and so a change in the contents of this\ndirectory.  So use that as a trigger to flush cached contents.\n\nWhen the ctime changes but the mtime does not, there are two possible\nreasons.\n 1/ The owner/mode information has been changed.\n 2/ utimes has been used to set the mtime backwards.\n\nIn the first case, a data-cache flush is not required.\nIn the second case it is.\n\nSo on the basis that correctness trumps performance, flush the\ndirectory contents cache in this case also.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2b57dc6cf9bf31edc0df430ea18dd1dbd3028975",
      "tree": "3d70e9e220fd665fa08b2d0566eb35bf593cfcd7",
      "parents": [
        "fe315e76fc3a3f9f7e1581dc22fec7e7719f0896"
      ],
      "author": {
        "name": "Suresh Jayaraman",
        "email": "sjayaraman@suse.de",
        "time": "Wed Mar 11 14:10:22 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:22 2009 -0400"
      },
      "message": "NFS: Minor __nfs_revalidate_inode cleanup\n\nRemove redundant NFS_STALE() check, a leftover due to the commit\n691beb13cdc88358334ef0ba867c080a247a760f\n\nSigned-off-by: Suresh Jayaraman \u003csjayaraman@suse.de\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d7371c41b0cda782256b1df759df4e8d4724584c",
      "tree": "c5807f0cb163db7bb4a03cdd6c986d8fa40545e0",
      "parents": [
        "a71ee337b31271e701f689d544b6153b75609bc5"
      ],
      "author": {
        "name": "Ian Dall",
        "email": "ian@beware.dropbear.id.au",
        "time": "Tue Mar 10 20:33:22 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 10 20:33:22 2009 -0400"
      },
      "message": "Bug 11061, NFS mounts dropped\n\nAddresses: http://bugzilla.kernel.org/show_bug.cgi?id\u003d11061\n\nsockaddr structures can\u0027t be reliably compared using memcmp() because\nthere are padding bytes in the structure which can\u0027t be guaranteed to\nbe the same even when the sockaddr structures refer to the same\nsocket. Instead compare all the relevant fields. In the case of IPv6\nsin6_flowinfo is not compared because it only affects QoS and\nsin6_scope_id is only compared if the address is \"link local\" because\n\"link local\" addresses need only be unique to a specific link.\n\nSigned-off-by: Ian Dall \u003cian@beware.dropbear.id.au\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a71ee337b31271e701f689d544b6153b75609bc5",
      "tree": "56871bcec70c8f46a1fcc4b2f76763e948b508f0",
      "parents": [
        "57df675c60c5cf0748ddba9c7f85afde1530d74d"
      ],
      "author": {
        "name": "Suresh Jayaraman",
        "email": "sjayaraman@suse.de",
        "time": "Tue Mar 10 20:33:21 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 10 20:33:21 2009 -0400"
      },
      "message": "NFS: Handle -ESTALE error in access()\n\nHi Trond,\n\nI have been looking at a bugreport where trying to open applications on KDE\non a NFS mounted home fails temporarily. There have been multiple reports on\ndifferent kernel versions pointing to this common issue:\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12557\nhttps://bugs.launchpad.net/ubuntu/+source/linux/+bug/269954\nhttp://bugs.debian.org/cgi-bin/bugreport.cgi?bug\u003d508866.html\n\nThis issue can be reproducible consistently by doing this on a NFS mounted\nhome (KDE):\n1. Open 2 xterm sessions\n2. From one of the xterm session, do \"ssh -X \u003cremote host\u003e\"\n3. \"stat ~/.Xauthority\" on the remote SSH session\n4. Close the two xterm sessions\n5. On the server do a \"stat ~/.Xauthority\"\n6. Now on the client, try to open xterm\nThis will fail.\n\nEven if the filehandle had become stale, the NFS client should invalidate\nthe cache/inode and should repeat LOOKUP. Looking at the packet capture when\nthe failure occurs shows that there were two subsequent ACCESS() calls with\nthe same filehandle and both fails with -ESTALE error.\n\nI have tested the fix below. Now the client issue a LOOKUP after the\nACCESS() call fails with -ESTALE. If all this makes sense to you, can you\nconsider this for inclusion?\n\nThanks,\n\n\nIf the server returns an -ESTALE error due to stale filehandle in response to\nan ACCESS() call, we need to invalidate the cache and inode so that LOOKUP()\ncan be retried. Without this change, the nfs client retries ACCESS() with the\nsame filehandle, fails again and could lead to temporary failure of\napplications running on nfs mounted home.\n\nSigned-off-by: Suresh Jayaraman \u003csjayaraman@suse.de\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ae46141ff08f1965b17c531b571953c39ce8b9e2",
      "tree": "12e9b19461fb00c7ba21d93272ddd470ca0e82b0",
      "parents": [
        "ef95d31e6de6be9602ce950b85fb7ab8af46ae42"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 10 20:33:18 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 10 20:33:18 2009 -0400"
      },
      "message": "NFSv3: Fix posix ACL code\n\nFix a memory leak due to allocation in the XDR layer. In cases where the\nRPC call needs to be retransmitted, we end up allocating new pages without\nclearing the old ones. Fix this by moving the allocation into\nnfs3_proc_setacls().\n\nAlso fix an issue discovered by Kevin Rudd, whereby the amount of memory\nreserved for the acls in the xdr_buf-\u003ehead was miscalculated, and causing\ncorruption.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ef95d31e6de6be9602ce950b85fb7ab8af46ae42",
      "tree": "aeb7d7a9893374a0c8975a5d060f07ab05283319",
      "parents": [
        "eb9b55ab4d73280597fd183b367d50452f4d7846"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 10 20:33:17 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 10 20:33:17 2009 -0400"
      },
      "message": "NFS: Fix misparsing of nfsv4 fs_locations attribute (take 2)\n\nThe changeset ea31a4437c59219bf3ea946d58984b01a45a289c (nfs: Fix\nmisparsing of nfsv4 fs_locations attribute) causes the mountpath that is\ncalculated at the beginning of try_location() to be clobbered when we\nlater strncpy a non-nul terminated hostname using an incorrect buffer\nlength.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "97afe47ac378615d727fc2f0ffa1b58e9837f438",
      "tree": "ce32e5c861a5671add024d235e896fa2cc66ea97",
      "parents": [
        "a276a52f9f1b1059bddade71df18ceb6481534a6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Jan 22 11:07:41 2009 +0300"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Jan 22 13:16:00 2009 +0300"
      },
      "message": "fs/Kconfig: move nfs out\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "54566b2c1594c2326a645a3551f9d989f7ba3c5e",
      "tree": "b373f3283fe5e197d0df29cd6b645c35adf1076c",
      "parents": [
        "e687d691cb3790d25e31c74f5941fd7c565e9df5"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sun Jan 04 12:00:53 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 04 13:33:20 2009 -0800"
      },
      "message": "fs: symlink write_begin allocation context fix\n\nWith the write_begin/write_end aops, page_symlink was broken because it\ncould no longer pass a GFP_NOFS type mask into the point where the\nallocations happened.  They are done in write_begin, which would always\nassume that the filesystem can be entered from reclaim.  This bug could\ncause filesystem deadlocks.\n\nThe funny thing with having a gfp_t mask there is that it doesn\u0027t really\nallow the caller to arbitrarily tinker with the context in which it can be\ncalled.  It couldn\u0027t ever be GFP_ATOMIC, for example, because it needs to\ntake the page lock.  The only thing any callers care about is __GFP_FS\nanyway, so turn that into a single flag.\n\nAdd a new flag for write_begin, AOP_FLAG_NOFS.  Filesystems can now act on\nthis flag in their write_begin function.  Change __grab_cache_page to\naccept a nofs argument as well, to honour that flag (while we\u0027re there,\nchange the name to grab_cache_page_write_begin which is more instructive\nand does away with random leading underscores).\n\nThis is really a more flexible way to go in the end anyway -- if a\nfilesystem happens to want any extra allocations aside from the pagecache\nones in ints write_begin function, it may now use GFP_KERNEL (rather than\nGFP_NOFS) for common case allocations (eg.  ocfs2_alloc_write_ctxt, for a\nrandom example).\n\n[kosaki.motohiro@jp.fujitsu.com: fix ubifs]\n[kosaki.motohiro@jp.fujitsu.com: fix fuse]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.28.x]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n[ Cleaned up the calling convention: just pass in the AOP flags\n  untouched to the grab_cache_page_write_begin() function.  That\n  just simplifies everybody, and may even allow future expansion of the\n  logic.   - Linus ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "08cc36cbd1ee7d86422713bb21551eed1326b894",
      "tree": "52cc683387f903b34a7f6f798dcdbae385b58db8",
      "parents": [
        "3c92ec8ae91ecf59d88c798301833d7cf83f2179",
        "46f72f57d279688c4524df78edb5738db730eeef"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 30 16:51:43 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 30 16:51:43 2008 -0500"
      },
      "message": "Merge branch \u0027devel\u0027 into next\n"
    },
    {
      "commit": "46f72f57d279688c4524df78edb5738db730eeef",
      "tree": "cdd3d28f37f91bed3467e7f2da53c942d4eeb122",
      "parents": [
        "2efef7080f471d312a9c4feb3dc5ee038039c7ed"
      ],
      "author": {
        "name": "WANG Cong",
        "email": "wangcong@zeuux.org",
        "time": "Tue Dec 30 16:35:55 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 30 16:35:55 2008 -0500"
      },
      "message": "fs/nfs/nfs4proc.c: make nfs4_map_errors() static\n\nnfs4_map_errors() can become static.\n\nSigned-off-by: WANG Cong \u003cwangcong@zeuux.org\u003e\nCc: J. Bruce Fields \u003cbfields@fieldses.org\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "945b34a7725a5f0741de7775132aafc58bfecfbb",
      "tree": "89f209caa8ee7154fe80de1bd02dd81eaadd3bd6",
      "parents": [
        "608207e8884e083ad8b8d33eda868da70f0d63e8"
      ],
      "author": {
        "name": "Olga Kornievskaia",
        "email": "aglo@citi.umich.edu",
        "time": "Tue Dec 23 16:18:34 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 16:18:34 2008 -0500"
      },
      "message": "rpc: allow gss callbacks to client\n\nThis patch adds client-side support to allow for callbacks other than\nAUTH_SYS.\n\nSigned-off-by: Olga Kornievskaia \u003caglo@citi.umich.edu\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cf8cdbe5bd662eeaece96b017a4d6676ae416537",
      "tree": "2fc6d8cac856dfa8ada685b752bf70ceafa6677f",
      "parents": [
        "d017931cff77f2a1603c9c76e96477743abc9f41"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Tue Dec 23 16:06:18 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 16:06:18 2008 -0500"
      },
      "message": "NFS: remove unused status from encode routines\n\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": "d017931cff77f2a1603c9c76e96477743abc9f41",
      "tree": "da9c7f8d95d244c40141bef3d73d62ffc142af4d",
      "parents": [
        "49c2559e29884fbb13fd273a108b213decd1d8a5"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Tue Dec 23 16:06:17 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 16:06:17 2008 -0500"
      },
      "message": "NFS: increment number of operations in each encode routine\n\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": "49c2559e29884fbb13fd273a108b213decd1d8a5",
      "tree": "825ae090d1e4a8518eda56a899d45bd75c920017",
      "parents": [
        "05d564fe00c05bf8ff93948057ca1acb5bc68e10"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Tue Dec 23 16:06:16 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 16:06:16 2008 -0500"
      },
      "message": "NFS: fix comment placement in nfs4xdr.c\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "05d564fe00c05bf8ff93948057ca1acb5bc68e10",
      "tree": "a2f4ea4222cd687fc1acb30e903e3fe4d59815d4",
      "parents": [
        "6c0195a4681c08335a33a483be801aaf0ed7f192"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Tue Dec 23 16:06:15 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 16:06:15 2008 -0500"
      },
      "message": "NFS: fix tabs in nfs4xdr.c\n\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": "6c0195a4681c08335a33a483be801aaf0ed7f192",
      "tree": "bf3e94cb04077a0d106ee420b94bcc2594555373",
      "parents": [
        "374130770efc80418b155b2966ff958495e03948"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Tue Dec 23 16:06:15 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 16:06:15 2008 -0500"
      },
      "message": "NFS: remove white space from nfs4xdr.c\n\nClean-up\n\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": "374130770efc80418b155b2966ff958495e03948",
      "tree": "ca6f284a742ee1c6165beb10ca19cd919596bcee",
      "parents": [
        "aadf61521199e5c0b2976002213819cafa41b897"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Tue Dec 23 16:06:14 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 16:06:14 2008 -0500"
      },
      "message": "nfs: remove incorrect usage of nfs4 compound response hdr.status\n\n3 call sites look at hdr.status before returning success.\nhdr.status must be zero in this case so there\u0027s no point in this.\n\nCurrently, hdr.status is correctly processed at decode_op_hdr time\nif the op status cannot be decoded.\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "aadf61521199e5c0b2976002213819cafa41b897",
      "tree": "65cf6521934b7aed16b0b832e45f85ec560100d5",
      "parents": [
        "c977a2ef40a38c45537ad03823d0a004f06373f0"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Tue Dec 23 16:06:13 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 16:06:13 2008 -0500"
      },
      "message": "nfs: return compound hdr.status when there are no op replies\n\nWhen there are no op replies encoded in the compound reply\nhdr.status still contains the overall status of the compound\nrpc.  This can happen, e.g., when the server returns a\nNFS4ERR_MINOR_VERS_MISMATCH error.\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "027b6ca02192f381a5a91237ba8a8cf625dc6f6a",
      "tree": "f8ece785b53cbb8978bab734e348972aa5ed022f",
      "parents": [
        "6dcd3926b214a1fb081df18305921dedae269977"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 16:04:13 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 16:04:13 2008 -0500"
      },
      "message": "NFSv4: Fix an infinite loop in the NFS state recovery code\n\nMarten Gajda \u003cmarten.gajda@fernuni-hagen.de\u003e states:\n\nI tracked the problem down to the function nfs4_do_open_expired.\nWithin this function _nfs4_open_expired is called and may return\n-NFS4ERR_DELAY. When a further call to _nfs4_open_expired is\nexecuted and does not return -NFS4ERR_DELAY the \"exception.retry\"\nvariable is not reset to 0, causing the loop to iterate again\n(and as long as err !\u003d -NFS4ERR_DELAY, probably forever)\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "64672d55d93c26fb4035fd1a84a803cbc09cb058",
      "tree": "6873f9335b925e4c6a5336544a6f6fc1d789604f",
      "parents": [
        "dc0b027dfadfcb8a5504f7d8052754bf8d501ab9"
      ],
      "author": {
        "name": "Peter Staubach",
        "email": "staubach@redhat.com",
        "time": "Tue Dec 23 15:21:56 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:56 2008 -0500"
      },
      "message": "optimize attribute timeouts for \"noac\" and \"actimeo\u003d0\"\n\nHi.\n\nI\u0027ve been looking at a bugzilla which describes a problem where\na customer was advised to use either the \"noac\" or \"actimeo\u003d0\"\nmount options to solve a consistency problem that they were\nseeing in the file attributes.  It turned out that this solution\ndid not work reliably for them because sometimes, the local\nattribute cache was believed to be valid and not timed out.\n(With an attribute cache timeout of 0, the cache should always\nappear to be timed out.)\n\nIn looking at this situation, it appears to me that the problem\nis that the attribute cache timeout code has an off-by-one\nerror in it.  It is assuming that the cache is valid in the\nregion, [read_cache_jiffies, read_cache_jiffies + attrtimeo].  The\ncache should be considered valid only in the region,\n[read_cache_jiffies, read_cache_jiffies + attrtimeo).  With this\nchange, the options, \"noac\" and \"actimeo\u003d0\", work as originally\nexpected.\n\nThis problem was previously addressed by special casing the\nattrtimeo \u003d\u003d 0 case.  However, since the problem is only an off-\nby-one error, the cleaner solution is address the off-by-one\nerror and thus, not require the special case.\n\n    Thanx...\n\n        ps\n\nSigned-off-by: Peter Staubach \u003cstaubach@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "dc0b027dfadfcb8a5504f7d8052754bf8d501ab9",
      "tree": "f27f81794950b8a159e8045b7b6a74f19f2ac26e",
      "parents": [
        "7a50c60e461f6ff97428da9448c3dad5b7bef491"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:56 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:56 2008 -0500"
      },
      "message": "NFSv4: Convert the open and close ops to use fmode\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7a50c60e461f6ff97428da9448c3dad5b7bef491",
      "tree": "311c584f990377c1cb16b178db4ad54ede3bea03",
      "parents": [
        "15860ab1d7700249ebe3b0b8ca86ce43dfd0d66f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:55 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:55 2008 -0500"
      },
      "message": "NFS: Use delegations to optimise ACCESS calls\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "15860ab1d7700249ebe3b0b8ca86ce43dfd0d66f",
      "tree": "a4ca20956b2dec71d1d2f269f36160fdcc5d6618",
      "parents": [
        "5584c30630f8a4aac557093b1603e166fe7385be"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:54 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:54 2008 -0500"
      },
      "message": "NFSv4: Ensure that we set the verifier when revalidating delegated dentries\n\nThis ensures that we don\u0027t have to look up the dentry again after we return\nthe delegation if we know that the directory didn\u0027t change.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5584c30630f8a4aac557093b1603e166fe7385be",
      "tree": "c19db130a3b69bcc6a68eade044732571857db94",
      "parents": [
        "bd7bf9d540c001055fba796ebf146d90e4dd2eb2"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:54 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:54 2008 -0500"
      },
      "message": "NFSv4: Clean up is_atomic_open()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bd7bf9d540c001055fba796ebf146d90e4dd2eb2",
      "tree": "29f49d2244d390055126280903e9d647e10cdbd8",
      "parents": [
        "9082a5cc1e33d081f091f54e6ed69a0628a4bdcc"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:53 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:53 2008 -0500"
      },
      "message": "NFSv4: Convert delegation-\u003etype field to fmode_t\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9082a5cc1e33d081f091f54e6ed69a0628a4bdcc",
      "tree": "faf4be402e80546c55f721f87ea363cc4881d5a5",
      "parents": [
        "b7391f44f26b17ad25c7183a3d6ad50f0a9305ff"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:53 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:53 2008 -0500"
      },
      "message": "NFSv4: Fix up delegation callbacks\n\nCurrently, the callback server is listening on IPv6 if it is enabled. This\nmeans that IPv4 addresses will always be mapped.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b7391f44f26b17ad25c7183a3d6ad50f0a9305ff",
      "tree": "8e09a5714587a8bde2a805819501d10bae4787b7",
      "parents": [
        "6411bd4a471893ab2af103d96253ba97c92d4777"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:52 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:52 2008 -0500"
      },
      "message": "NFSv4: Return unreferenced delegations more promptly\n\nIf the client is not using a delegation, the right thing to do is to return\nit as soon as possible. This helps reduce the amount of state the server\nhas to track, as well as reducing the potential for conflicts with other\nclients.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6411bd4a471893ab2af103d96253ba97c92d4777",
      "tree": "573c6a571d1dd500a98f51f3341d031354a17013",
      "parents": [
        "b0d3ded1a21dc3057daff5a488469d9e6aa1b567"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:51 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:51 2008 -0500"
      },
      "message": "NFSv4: Clean up the asynchronous delegation return\n\nReuse the state management thread in order to return delegations when we\nget a callback.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b0d3ded1a21dc3057daff5a488469d9e6aa1b567",
      "tree": "1e30c75402d091e19219d73850879317bb345b87",
      "parents": [
        "0d62f85a81216f30a0ba1479b93e84103a5d535b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:50 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:50 2008 -0500"
      },
      "message": "NFSv4: Clean up nfs_expire_all_delegations()\n\nLet the actual delegreturn stuff be run in the state manager thread rather\nthan allocating a separate kthread.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0d62f85a81216f30a0ba1479b93e84103a5d535b",
      "tree": "623a726d992341788a6e68440c2d31c80ea8c58b",
      "parents": [
        "f3c76491e7ecacbb7942633f3b2a3514b7476ef9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:49 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:49 2008 -0500"
      },
      "message": "NFSv4: Fix a BAD_SEQUENCEID condition.\n\nWe really shouldn\u0027t be resetting the sequence ids when doing state\nexpiration recovery, since we don\u0027t know if the server still remembers our\nprevious state owners. There are servers out there that do attempt to\npreserve client state even if the lease has expired. Such a server would\nonly release that state if a conflicting OPEN request occurs.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f3c76491e7ecacbb7942633f3b2a3514b7476ef9",
      "tree": "1b09c70b850639790b1d4cb908a574f549729617",
      "parents": [
        "e005e8041c132af9f70862e1387a222198f95e7f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:48 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:48 2008 -0500"
      },
      "message": "NFSv4: Don\u0027t exit the state management if there are still tasks to do\n\nFix up a potential race...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e005e8041c132af9f70862e1387a222198f95e7f",
      "tree": "2e151e4d7e4e76dd889a0212aaa07460aec6e0a6",
      "parents": [
        "707fb4b324371f1b4bea5eb29e39d265c66086ae"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:48 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:48 2008 -0500"
      },
      "message": "NFSv4: Rename the state reclaimer thread\n\nIt is really a more general purpose state management thread at this point.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "707fb4b324371f1b4bea5eb29e39d265c66086ae",
      "tree": "fdd11b731073e0eda3966390c263e31af9ef5a5d",
      "parents": [
        "515d86117724abe39d7d57d7ccc7cc5c44480529"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:47 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:47 2008 -0500"
      },
      "message": "NFSv4: Clean up NFS4ERR_CB_PATH_DOWN error management...\n\nAdd a delegation cleanup phase to the state management loop, and do the\nNFS4ERR_CB_PATH_DOWN recovery there.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "515d86117724abe39d7d57d7ccc7cc5c44480529",
      "tree": "dce297acebc94355217219893a5c6a81ca281ff7",
      "parents": [
        "9e33bed55239bdcee1746c31a11177d239bac1b5"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:46 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:46 2008 -0500"
      },
      "message": "NFSv4: Clean up the support for returning multiple delegations\n\nAdd a flag to mark delegations as requiring return, then run a garbage\ncollector. In the future, this will allow for more flexible delegation\nmanagement, where delegations may be marked for return if it turns out\nthat they are not being referenced.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9e33bed55239bdcee1746c31a11177d239bac1b5",
      "tree": "b6ff90aa50b1d71722ce8eb3f2cecc28dafc3e4d",
      "parents": [
        "95d35cb4c473c754824967c0b069bbeb7efa4847"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:46 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:46 2008 -0500"
      },
      "message": "NFSv4: Add recovery for individual stateids\n\nNFSv4 defines a number of state errors which the client does not currently\nhandle. Among those we should worry about are:\n  NFS4ERR_ADMIN_REVOKED - the server\u0027s administrator revoked our locks\n  \t\t\t  and/or delegations.\n  NFS4ERR_BAD_STATEID - the client and server are out of sync, possibly\n                        due to a delegation return racing with an OPEN\n\t\t\trequest.\n  NFS4ERR_OPENMODE - the client attempted to do something not sanctioned\n  \t\t     by the open mode of the stateid. Should normally just\n\t\t     occur as a result of a delegation return race.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "95d35cb4c473c754824967c0b069bbeb7efa4847",
      "tree": "bd46a5b0e4d35f9256cf44ca2706493fc3dd2819",
      "parents": [
        "19e03c570e6099ffaf24e5628d4fe1a8acbe820d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:45 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:45 2008 -0500"
      },
      "message": "NFSv4: Remove nfs_client-\u003ecl_sem\n\nNow that we\u0027re using the flags to indicate state that needs to be\nrecovered, as well as having implemented proper refcounting and spinlocking\non the state and open_owners, we can get rid of nfs_client-\u003ecl_sem. The\nonly remaining case that was dubious was the file locking, and that case is\nnow covered by the nfsi-\u003erwsem.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "19e03c570e6099ffaf24e5628d4fe1a8acbe820d",
      "tree": "6e7eb831bbfe732044105f7f7a477fda5e912b6c",
      "parents": [
        "65de872ed6501a68e918a49a5c2fa7fca9c6ce21"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:44 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:44 2008 -0500"
      },
      "message": "NFSv4: Ensure that file unlock requests don\u0027t conflict with state recovery\n\nThe unlock path is currently failing to take the nfs_client-\u003ecl_sem read\nlock, and hence the recovery path may see locks disappear from underneath\nit.\nAlso ensure that it takes the nfs_inode-\u003erwsem read lock so that it there\nis no conflict with delegation recalls.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "65de872ed6501a68e918a49a5c2fa7fca9c6ce21",
      "tree": "45fa63d65829c67fa6716adac2801acbf9a2b68f",
      "parents": [
        "fe1d81952e7f62b9da7dc438caaa07e35ec2b908"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:44 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:44 2008 -0500"
      },
      "message": "NFS: Remove the unnecessary argument to nfs4_wait_clnt_recover()\n\n...and move some code around in order to clear out an unnecessary\nforward declaration.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fe1d81952e7f62b9da7dc438caaa07e35ec2b908",
      "tree": "177ba2a04c9ff9d040f87da7e6099e6009db7cd6",
      "parents": [
        "7eff03aec917e17f733471d7e12c262c0c96409f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:43 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:43 2008 -0500"
      },
      "message": "NFSv4: Ensure that nfs4_reclaim_open_state() doesn\u0027t depend on cl_sem\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7eff03aec917e17f733471d7e12c262c0c96409f",
      "tree": "6f0e7b53cbf55689cd37cfe3b1b087b8c61ac4cd",
      "parents": [
        "0f605b56008c4b6b075217480c36ba395ca4eaa4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:43 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:43 2008 -0500"
      },
      "message": "NFSv4: Add a recovery marking scheme for state owners\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0f605b56008c4b6b075217480c36ba395ca4eaa4",
      "tree": "1f7c5cb0b0446dba2c78b3430f6c85e1c01b5383",
      "parents": [
        "e598d843c08a7ab6bdfa8098de49afb017fc6c6a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:42 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:42 2008 -0500"
      },
      "message": "NFSv4: Don\u0027t tell server we rebooted when not necessary\n\nInstead of doing a full setclientid, try doing a RENEW call first.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e598d843c08a7ab6bdfa8098de49afb017fc6c6a",
      "tree": "2e4862252744b4b8f0a9d43b371e0df6a1d3fcee",
      "parents": [
        "b79a4a1b45b2543e38026303a1956bdc0aababa0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:42 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:42 2008 -0500"
      },
      "message": "NFSv4: Remove redundant RENEW calls if we know the lease has expired\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b79a4a1b45b2543e38026303a1956bdc0aababa0",
      "tree": "73c7dba187dbe05f5527f47ccb42523f4655f77b",
      "parents": [
        "6dc9d57af9917f5c7faa13c17b770dce17c3972b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:41 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:41 2008 -0500"
      },
      "message": "NFSv4: Fix state recovery when the client runs over the grace period\n\nIf the client for some reason is not able to recover all its state within\nthe time allotted for the grace period, and the server reboots again, the\nclient is not allowed to recover the state that was \u0027lost\u0027 using reboot\nrecovery.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6dc9d57af9917f5c7faa13c17b770dce17c3972b",
      "tree": "8d51f023311912eca8b0d9ccd448a0b7176bccba",
      "parents": [
        "028600143079c8e8f8366bbc2eb29977743baf3a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:41 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:41 2008 -0500"
      },
      "message": "NFSv4: Callers to nfs4_get_renew_cred() need to hold nfs_client-\u003ecl_lock\n\nDitto for nfs4_get_setclientid_cred().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "028600143079c8e8f8366bbc2eb29977743baf3a",
      "tree": "51ad9fe965ee22fe649b9db1a45b2c2318e2062e",
      "parents": [
        "15c831bf1a3f8cab9812a96228145200726fea33"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:40 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:40 2008 -0500"
      },
      "message": "NFSv4: Clean up for the state loss reclaimer\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "15c831bf1a3f8cab9812a96228145200726fea33",
      "tree": "6133811e099f223d17aaa46c9672bfb367435b26",
      "parents": [
        "86e894899820f2b3094d5557124fc22743ae0fc7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:39 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:39 2008 -0500"
      },
      "message": "NFS: Use atomic bitops when changing struct nfs_delegation-\u003eflags\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "86e894899820f2b3094d5557124fc22743ae0fc7",
      "tree": "7cca2c88701f8e5480a364e838fa3c66dcc6a707",
      "parents": [
        "343104308a33c4f1e23c8e841ede95e97b870842"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:39 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:39 2008 -0500"
      },
      "message": "NFSv4: Fix up the dereferencing of delegation-\u003einode\n\nWithout an extra lock, we cannot just assume that the delegation-\u003einode is\nvalid when we\u0027re traversing the rcu-protected nfs_client lists. Use the\ndelegation-\u003elock to ensure that it is truly valid.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "343104308a33c4f1e23c8e841ede95e97b870842",
      "tree": "e7772538627a0a2176bd23cd3b2f1acbacd24592",
      "parents": [
        "0cb2659b818eca99235e17c04291cfa9985c14f7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:38 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:38 2008 -0500"
      },
      "message": "NFSv4: Fix up another delegation related race\n\nWhen we can update_open_stateid(), we need to be certain that we don\u0027t\nrace with a delegation return. While we could do this by grabbing the\nnfs_client-\u003ecl_lock, a dedicated spin lock in the delegation structure\nwill scale better.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0cb2659b818eca99235e17c04291cfa9985c14f7",
      "tree": "48fc176e1e1e8a6f771e664799c26df1d72e9f69",
      "parents": [
        "50a737f86dbf99daf3a8dcbdf778a3be36bb2a39"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 23 15:21:38 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:38 2008 -0500"
      },
      "message": "NLM: allow lockd requests from an unprivileged port\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 lockd 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": "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"
    }
  ],
  "next": "d740351bf0960e89ce1aef45cfe00167cb0f9e5b"
}
