)]}'
{
  "log": [
    {
      "commit": "94c8a984ae2adbd9a9626fb42e0f2faf3e36e86f",
      "tree": "a4beddd64501ef00ad41c8fd5974340bec2fcf73",
      "parents": [
        "f9fa0bc1fabe1d861e46d80ecbe7e85da359195c",
        "37adb89fadd65ce47f7e5cfd564938a76b351948"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 08 11:47:35 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 08 11:47:35 2011 -0700"
      },
      "message": "Merge branch \u0027bugfixes\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6\n\n* \u0027bugfixes\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6:\n  NFS: Change initial mount authflavor only when server returns NFS4ERR_WRONGSEC\n  NFS: Fix a signed vs. unsigned secinfo bug\n  Revert \"net/sunrpc: Use static const char arrays\"\n"
    },
    {
      "commit": "37adb89fadd65ce47f7e5cfd564938a76b351948",
      "tree": "b935bde3f61965a8e0810f9d12281b97b2376351",
      "parents": [
        "418875900e3de4831c84f86ae4756690dac5be77"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Apr 07 16:02:20 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Apr 07 13:19:40 2011 -0700"
      },
      "message": "NFS: Change initial mount authflavor only when server returns NFS4ERR_WRONGSEC\n\nWhen attempting an initial mount, we should only attempt other\nauthflavors if AUTH_UNIX receives a NFS4ERR_WRONGSEC error.\nThis allows other errors to be passed back to userspace programs.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "418875900e3de4831c84f86ae4756690dac5be77",
      "tree": "d0609f12b62962806adc092867350b7bfcfed5a3",
      "parents": [
        "0867659fa3c245bf203d837a82e0f6ea5079c2c5"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Wed Apr 06 14:33:28 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Apr 06 13:25:04 2011 -0700"
      },
      "message": "NFS: Fix a signed vs. unsigned secinfo bug\n\nrpc_authflavor_t is cast from an unsigned int, but the\ninitial code tried to use it as a signed int.  I fix\nthis by passing an rpc_authflavor_t pointer around, and\nreturning signed integers from functions.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nReported-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "0444d76ae64fffc7851797fc1b6ebdbb44ac504a",
      "tree": "d0678f0f8c82f3c2b2c66a6b47242eef1b323142",
      "parents": [
        "cb1817b37313b4b6c7f8f93c730553dd3cb6ac57"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 29 18:08:50 2011 +1100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 29 07:50:34 2011 -0700"
      },
      "message": "fs: don\u0027t use igrab() while holding i_lock\n\nFix the incorrect use of igrab() inside the i_lock in NFS and Ceph‥\n\nIf we are already holding the i_lock, we have a reference to the\ninode so we can safely use ihold() to gain an extra reference. This\navoids hangs due to lock recursion on the i_lock now that the\ninode_lock is gone and igrab() uses the i_lock itself.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: linux-fsdevel@vger.kernel.org\nCc: Ryan Mallon \u003cryan@bluewatersys.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a0e7e3cf7932d6c77de0dc79a40dbaeb8060b544",
      "tree": "fcc8ab44418afe356b683674fcd2c1589b7c6efa",
      "parents": [
        "4d65c520fb4abed970069d18c119cfe85624f46d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 26 02:24:35 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Mar 27 17:48:17 2011 +0200"
      },
      "message": "NFS: Don\u0027t leak RPC clients in NFSv4 secinfo negotiation\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4d65c520fb4abed970069d18c119cfe85624f46d",
      "tree": "74671eb263380317f1e4a958a6a7f73749e98eec",
      "parents": [
        "16c29dafcc86024048f1dbb8349d31cb22c7c55a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 25 14:15:11 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Mar 27 17:48:07 2011 +0200"
      },
      "message": "NFS: Fix a hang in the writeback path\n\nNow that the inode scalability patches have been merged, it is no longer\nsafe to call igrab() under the inode-\u003ei_lock.\nNow that we no longer call nfs_clear_request() until the nfs_page is\nbeing freed, we know that we are always holding a reference to the\nnfs_open_context, which again holds a reference to the path, and so\nthe inode cannot be freed until the last nfs_page has been removed\nfrom the radix tree and freed.\n\nWe can therefore skip the igrab()/iput() altogether.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0acd2201920d0968919f4f5797d63f7b6f2b19d4",
      "tree": "9b241d264f42eff3ff4eeffb67616fca0490e460",
      "parents": [
        "8f70e95f9f4159184f557a1db60c909d7c1bd2e3",
        "35124a0994fc02545b14b9fa3aad000b3331f1c0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 17:03:14 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 17:03:14 2011 -0400"
      },
      "message": "Merge branch \u0027nfs-for-2.6.39\u0027 into nfs-for-next\n"
    },
    {
      "commit": "35124a0994fc02545b14b9fa3aad000b3331f1c0",
      "tree": "5149267f387199fd9ca2718c74d86b6779013501",
      "parents": [
        "ef31153786bc1e4304e6b9422cc8b9efef455611"
      ],
      "author": {
        "name": "Weston Andros Adamson",
        "email": "dros@netapp.com",
        "time": "Thu Mar 24 16:48:21 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 17:01:41 2011 -0400"
      },
      "message": "Cleanup XDR parsing for LAYOUTGET, GETDEVICEINFO\n\nchanges LAYOUTGET and GETDEVICEINFO XDR parsing to:\n - not use vmap, which doesn\u0027t work on incoherent archs\n - use xdr_stream parsing for all xdr\n\nSigned-off-by: Weston Andros Adamson \u003cdros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ef31153786bc1e4304e6b9422cc8b9efef455611",
      "tree": "32739af2c6b0f2ab0fdf05e84b674d94721ffa6d",
      "parents": [
        "de4b15c7e9fe9fdd1eb6333be0a08c822db1ca0e"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Sat Mar 12 02:58:10 2011 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 15:49:48 2011 -0400"
      },
      "message": "NFSv4.1 convert layoutcommit sync to boolean\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "de4b15c7e9fe9fdd1eb6333be0a08c822db1ca0e",
      "tree": "5851c3352d20c6433677da072d2fdbc63d303b8e",
      "parents": [
        "cccb4d063b263ac0713ab27d98460fda3b4f83ff"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Sat Mar 12 02:58:09 2011 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 15:49:48 2011 -0400"
      },
      "message": "NFSv4.1 pnfs_layoutcommit_inode fixes\n\nTest NFS_INO_LAYOUTCOMMIT before kzalloc\nMark inode dirty to retry LAYOUTCOMMIT on kzalloc failure.\nAdd comments.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8f70e95f9f4159184f557a1db60c909d7c1bd2e3",
      "tree": "80acf6fa7d35d29ba03798fb6745ad9791f965c9",
      "parents": [
        "7ebb931598cd95cccea10d4bc4c0123a464ea565"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Mar 24 17:12:31 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 13:52:42 2011 -0400"
      },
      "message": "NFS: Determine initial mount security\n\nWhen sec\u003d\u003csomething\u003e is not presented as a mount option,\nwe should attempt to determine what security flavor the\nserver is using.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7ebb931598cd95cccea10d4bc4c0123a464ea565",
      "tree": "dec1af6eefdbbc3ce42346d7c6d407088eaf509e",
      "parents": [
        "5a5ea0d485c9715c86bf858bbdc5f6d373b3db88"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Mar 24 17:12:30 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 13:52:42 2011 -0400"
      },
      "message": "NFS: use secinfo when crossing mountpoints\n\nA submount may use different security than the parent\nmount does.  We should figure out what sec flavor the\nsubmount uses at mount time.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5a5ea0d485c9715c86bf858bbdc5f6d373b3db88",
      "tree": "0aef824c36b7eb6eac6ea706c4c9a33930128ee3",
      "parents": [
        "7c5130588d691a3b34d02312f1bd1b6d56fe0100"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Mar 24 17:12:29 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 13:52:41 2011 -0400"
      },
      "message": "NFS: Add secinfo procedure\n\nThis patch adds the nfs4 operation secinfo as a\nvalid nfs rpc operation.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7c5130588d691a3b34d02312f1bd1b6d56fe0100",
      "tree": "154ccea3a837ca1aae2c5676e0946b79fb4bb671",
      "parents": [
        "e73b83f270828630a9ce33728f6ef61c37a82340"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Mar 24 17:12:24 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 13:52:41 2011 -0400"
      },
      "message": "NFS: lookup supports alternate client\n\nA later patch will need to perform a lookup using an\nalternate client with a different security flavor.\nThis patch adds support for doing that on NFS v4.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e73b83f270828630a9ce33728f6ef61c37a82340",
      "tree": "2a2c707b7248ad1bca741a96ec736852776d2822",
      "parents": [
        "4bbba111d94781d34081c37856bbc5eb33f6c72a"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Mar 24 17:12:23 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 13:52:41 2011 -0400"
      },
      "message": "NFS: convert call_sync() to a function\n\nThis patch changes nfs4_call_sync() from a macro into a\nstatic inline function.  As a macro, the call_sync()\nfunction will not do any type checking and depends\non the sequence arguments always having the same name.\nAs a function, we get to have type checking and can\nrename the arguments if we so choose.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cccb4d063b263ac0713ab27d98460fda3b4f83ff",
      "tree": "4ffa88b6f6b0cc1ec76509d2fc44e67e9453e7ee",
      "parents": [
        "863a3c6c686d5773f7192a4818769e15db12ce08"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Wed Mar 23 13:27:55 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:29:04 2011 -0400"
      },
      "message": "NFSv4.1 remove temp code that prevented ds commits\n\nNow that all the infrastructure is in place, we will do the\nright thing if we remove this special casing.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "863a3c6c686d5773f7192a4818769e15db12ce08",
      "tree": "3ff8bf04c583aa0c16ae30b0821bc9148d49a47a",
      "parents": [
        "e0c2b3801828aadb65dec9f67f7c6b7a675ad007"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Wed Mar 23 13:27:54 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:29:04 2011 -0400"
      },
      "message": "NFSv4.1: layoutcommit\n\nThe filelayout driver sends LAYOUTCOMMIT only when COMMIT goes to\nthe data server (as opposed to the MDS) and the data server WRITE\nis not NFS_FILE_SYNC.\n\nOnly whole file layout support means that there is only one IOMODE_RW layout\nsegment.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Alexandros Batsakis \u003cbatsakis@netapp.com\u003e\nSigned-off-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Dean Hildebrand \u003cdhildeb@us.ibm.com\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@citi.umich.edu\u003e\nSigned-off-by: Mingyang Guo \u003cguomingyang@nrchpc.ac.cn\u003e\nSigned-off-by: Tao Guo \u003cguotao@nrchpc.ac.cn\u003e\nSigned-off-by: Zhang Jingwang \u003czhangjingwang@nrchpc.ac.cn\u003e\nTested-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e0c2b3801828aadb65dec9f67f7c6b7a675ad007",
      "tree": "547d70967ad8f41a18f2d3112dbd12e64f972af2",
      "parents": [
        "988b6dceb0ae6d642587c8594529b94f6be0c5ea"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Wed Mar 23 13:27:53 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:29:04 2011 -0400"
      },
      "message": "NFSv4.1: filelayout driver specific code for COMMIT\n\nImplement all the hooks created in the previous patches.\nThis requires exporting quite a few functions and adding a few\nstructure fields.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "988b6dceb0ae6d642587c8594529b94f6be0c5ea",
      "tree": "78438f297eb2f8c9058872ac8a0f33d1a99b461c",
      "parents": [
        "a861a1e1c398fe34701569fd8ac9225dfe0a9a7e"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Wed Mar 23 13:27:52 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:29:03 2011 -0400"
      },
      "message": "NFSv4.1: remove GETATTR from ds commits\n\nAny COMMIT compound directed to a data server needs to have the\nGETATTR calls suppressed.  We here, make sure the field we are testing\n(data-\u003elseg) is set and refcounted correctly.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a861a1e1c398fe34701569fd8ac9225dfe0a9a7e",
      "tree": "fe28b8cfa4b8a6066ee6f2feeaa2b61e9bfaa0c0",
      "parents": [
        "425eb736cd905181a4dd4dc8d66342a7c7ab2f27"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Wed Mar 23 13:27:51 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:29:03 2011 -0400"
      },
      "message": "NFSv4.1: add generic layer hooks for pnfs COMMIT\n\nWe create three major hooks for the pnfs code.\n\npnfs_mark_request_commit() is called during writeback_done from\nnfs_mark_request_commit, which gives the driver an opportunity to\nclaim it wants control over commiting a particular req.\n\npnfs_choose_commit_list() is called from nfs_scan_list\nto choose which list a given req should be added to, based on\nwhere we intend to send it for COMMIT.  It is up to the driver\nto have preallocated list headers for each destination it may need.\n\npnfs_commit_list() is how the driver actually takes control, it is\nused instead of nfs_commit_list().\n\nIn order to pass information between the above functions, we create\na union in nfs_page to hold a lseg (which is possible because the req is\nnot on any list while in transition), and add some flags to indicate\nif we need to use the pnfs code.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "425eb736cd905181a4dd4dc8d66342a7c7ab2f27",
      "tree": "0e6b9288f91532b940e3a62cf50e5397f5e5dafc",
      "parents": [
        "c879513e91c9e38957f0d9647d22469f1887e4da"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Wed Mar 23 13:27:50 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:29:03 2011 -0400"
      },
      "message": "NFSv4.1: alloc and free commit_buckets\n\nCreate a preallocated list header to hold nfs_pages for each\nnon-MDS COMMIT destination.  Note this is not necessarily each DS,\nbut is basically each \u003cDS, fh\u003e pair.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c879513e91c9e38957f0d9647d22469f1887e4da",
      "tree": "d15cec7abd2a6c56559e261203b3e1de256c9283",
      "parents": [
        "5917ce8440ba0b3f2adee613b5f1258ac5efff02"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Wed Mar 23 13:27:49 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:29:03 2011 -0400"
      },
      "message": "NFSv4.1: shift filelayout_free_lseg\n\nMove it up to avoid forward declaration in later patch.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5917ce8440ba0b3f2adee613b5f1258ac5efff02",
      "tree": "39292e35e834db27bad2164ee5cab05082ecca2a",
      "parents": [
        "64bfeb49bd1c2351a8415f7fe6b25eef208872a5"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Wed Mar 23 13:27:48 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:29:03 2011 -0400"
      },
      "message": "NFSv4.1: pull out code from nfs_commit_release\n\nCreate a separate support function for later use by data server\ncommit code.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "64bfeb49bd1c2351a8415f7fe6b25eef208872a5",
      "tree": "2d0bd4540611ef09f1143779fe88ee49c5491d8d",
      "parents": [
        "5f452431e229ea14df61b0ac89eed5881414eef9"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Wed Mar 23 13:27:47 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:29:03 2011 -0400"
      },
      "message": "NFSv4.1: pull error handling out of nfs_commit_list\n\nCreate a separate support function for later use by data server\ncommit code.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5f452431e229ea14df61b0ac89eed5881414eef9",
      "tree": "f4b364eb70f23f22806c51e063a599bd91fce57a",
      "parents": [
        "9ace33cdc6562699a780b4716d9d52c55dd2151a"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Wed Mar 23 13:27:46 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:29:03 2011 -0400"
      },
      "message": "NFSv4.1: add callback to nfs4_commit_done\n\nAdd a callback that the pnfs layout driver can use to do its own\nerror handling of the data server\u0027s COMMIT response.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9ace33cdc6562699a780b4716d9d52c55dd2151a",
      "tree": "911f8661b4565fbe2b870a8ab488ede32d2841e3",
      "parents": [
        "465d52437d5ce8d4eb9da0d3e3818b51cff163a1"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Wed Mar 23 13:27:45 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:29:02 2011 -0400"
      },
      "message": "NFSv4.1: rearrange nfs_commit_rpcsetup\n\nReorder nfs_commit_rpcsetup, preparing for a pnfs entry point.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "465d52437d5ce8d4eb9da0d3e3818b51cff163a1",
      "tree": "eb78b7c5e1e07a6a726e6b7d5dbc683eaad26902",
      "parents": [
        "8ef2ce3e16d9bec6cf015207c1c82a5b864046ac"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Wed Mar 23 13:27:44 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:29:02 2011 -0400"
      },
      "message": "NFSv4.1: don\u0027t send COMMIT to ds for data sync writes\n\nBased on consensus reached in Feb 2011 interim IETF meeting regarding\nuse of LAYOUTCOMMIT, it has been decided that a NFS_DATA_SYNC return\nfrom a WRITE to data server should not initiate a COMMIT.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8ef2ce3e16d9bec6cf015207c1c82a5b864046ac",
      "tree": "35441fd695c4f5215ab0061d8df26b4cfd9a44f5",
      "parents": [
        "480c2006ebb44ae03165695db7b3e38c04e0d102"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Wed Mar 23 15:04:31 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:14:27 2011 -0400"
      },
      "message": "NFS: Detect loops in a readdir due to bad cookies\n\nSome filesystems (such as ext4) can return the same cookie value for\nmultiple files.  If we try to start a readdir with one of these cookies,\nthe server will return the first file found with a cookie of the same\nvalue.  This can cause the client to enter an infinite loop.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "480c2006ebb44ae03165695db7b3e38c04e0d102",
      "tree": "20bb22ea6db986e91017734f6c0390e1211b1765",
      "parents": [
        "e47c085afb3d16cbc6a4bfb10a3b074bb7c58998"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Wed Mar 23 14:48:29 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:13:11 2011 -0400"
      },
      "message": "NFS: Create nfs_open_dir_context\n\nnfs_opendir() created a context that held much more information than we\nneed for a readdir.  This patch introduces a slimmed-down\nnfs_open_dir_context that contains only the cookie and the cred used for\nRPC operations.  The new context will eventually be used to help detect\nreaddir loops.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e47c085afb3d16cbc6a4bfb10a3b074bb7c58998",
      "tree": "67472d29b894b285bc6cc3bb7802b57c3d295bca",
      "parents": [
        "51e816564db151f7f08c739ad69b9d1dbd166663"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 08:43:09 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:12:12 2011 -0400"
      },
      "message": "NFS: Ensure that we update the readdir filp-\u003ef_pos correctly\n\nIf we\u0027re doing a search by readdir cookie, we need to ensure that the\nresulting f_pos is updated. To do so, we need to update the\ndesc-\u003ecurrent_index, in the same way that we do in the search by\nfile offset case.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4667058b772857069378aa8f417203156e315e82",
      "tree": "07c6aa01118f2a36748d29917029884b095e000c",
      "parents": [
        "246408dcd5dfeef2df437ccb0ef4d6ee87805f58"
      ],
      "author": {
        "name": "Gusev Vitaliy",
        "email": "gusev.vitaliy@nexenta.com",
        "time": "Wed Mar 23 00:40:25 2011 +0300"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 22 20:00:25 2011 -0400"
      },
      "message": "nfs4: Fix NULL dereference at d_alloc_and_lookup()\n\nd_alloc_and_lookup() calls i_op-\u003elookup method due to\nrootfh changes his fsid.\n\nDuring mount i_op of NFS root inode is set to\nnfs_mountpoint_inode_operations, if rpc_ops-\u003egetroot()\nand rpc_ops-\u003egetattr() return different fsid.\n\nAfter that  nfs_follow_remote_path() raised oops:\n\n   BUG: unable to handle kernel NULL pointer dereference at (null)\n   IP: [\u003c          (null)\u003e]           (null)\n\nstack trace:\n\n     d_alloc_and_lookup+0x4c/0x74\n     do_lookup+0x1e3/0x280\n     link_path_walk+0x12e/0xab0\n     nfs4_remote_get_sb+0x56/0x2c0 [nfs]\n     path_walk+0x67/0xe0\n     vfs_path_lookup+0x8e/0x100\n     nfs_follow_remote_path+0x16f/0x3e0 [nfs]\n     nfs4_try_mount+0x6f/0xd0 [nfs]\n     nfs_get_sb+0x269/0x400 [nfs]\n     vfs_kern_mount+0x8a/0x1f0\n     do_kern_mount+0x52/0x130\n     do_mount+0x20a/0x260\n     sys_mount+0x90/0xe0\n     system_call_fastpath+0x16/0x1b\n\nSo just refresh fsid, as RFC3530 doesn\u0027t specify behavior\nin case of rootfh changes fsid.\n\nSigned-off-by: Vitaliy Gusev \u003cgusev.vitaliy@nexenta.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b8413f98f997bb3ed7327e6d7117e7e91ce010c3",
      "tree": "9921bcb0dc978d2c7fe549e81080c0539fef8c71",
      "parents": [
        "b31268ac793fd300da66b9c28bbf0a200339ab96"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 21 15:37:01 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 21 21:09:24 2011 -0400"
      },
      "message": "NFS: Fix a hang/infinite loop in nfs_wb_page()\n\nWhen one of the two waits in nfs_commit_inode() is interrupted, it\nreturns a non-negative value, which causes nfs_wb_page() to think\nthat the operation was successful causing it to busy-loop rather\nthan exiting.\nIt also causes nfs_file_fsync() to incorrectly report the file as\nbeing successfully committed to disk.\n\nThis patch fixes both problems by ensuring that we return an error\nif the attempts to wait fail.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "b31268ac793fd300da66b9c28bbf0a200339ab96",
      "tree": "910978e11c5e6d94fb5be82f38cbc6d3ef65c020",
      "parents": [
        "8e26de238fd794c8ea56a5c98bf67c40cfeb051d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 21 17:02:00 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 21 21:08:17 2011 -0400"
      },
      "message": "FS: Use stable writes when not doing a bulk flush\n\nIf we\u0027re only doing a single write, and there are no other unstable\nwrites being queued up, we might want to just flip to using a stable\nwrite RPC call.\n\nReviewed-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1c34092adf1feaba25b7c739cc4def2751f4fa05",
      "tree": "4950fc9c2476eb07c590bb9156906004b6a3c1ad",
      "parents": [
        "a872d5101008b091035d579897bccefdeff70def"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Sun Mar 20 14:22:07 2011 +0300"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Mar 21 00:45:50 2011 -0400"
      },
      "message": "nfs: lock() vs unlock() typo\n\nThese should be spin_unlock() instead of spin_lock().  It\u0027s a typo.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "179198373cf374f0ef793f1023c1cdd83b53674d",
      "tree": "9c7f9e82b936864b9d8cf91b3d4121a3c8d2671c",
      "parents": [
        "374e55251cacfb68d331bb8a574b2de8160aacc2",
        "8e26de238fd794c8ea56a5c98bf67c40cfeb051d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 17 17:40:00 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 17 17:40:00 2011 -0700"
      },
      "message": "Merge branch \u0027nfs-for-2.6.39\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6\n\n* \u0027nfs-for-2.6.39\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (54 commits)\n  RPC: killing RPC tasks races fixed\n  xprt: remove redundant check\n  SUNRPC: Convert struct rpc_xprt to use atomic_t counters\n  SUNRPC: Ensure we always run the tk_callback before tk_action\n  sunrpc: fix printk format warning\n  xprt: remove redundant null check\n  nfs: BKL is no longer needed, so remove the include\n  NFS: Fix a warning in fs/nfs/idmap.c\n  Cleanup: Factor out some cut-and-paste code.\n  cleanup: save 60 lines/100 bytes by combining two mostly duplicate functions.\n  NFS: account direct-io into task io accounting\n  gss:krb5 only include enctype numbers in gm_upcall_enctypes\n  RPCRDMA: Fix FRMR registration/invalidate handling.\n  RPCRDMA: Fix to XDR page base interpretation in marshalling logic.\n  NFSv4: Send unmapped uid/gids to the server when using auth_sys\n  NFSv4: Propagate the error NFS4ERR_BADOWNER to nfs4_do_setattr\n  NFSv4: cleanup idmapper functions to take an nfs_server argument\n  NFSv4: Send unmapped uid/gids to the server if the idmapper fails\n  NFSv4: If the server sends us a numeric uid/gid then accept it\n  NFSv4.1: reject zero layout with zeroed stripe unit\n  ...\n"
    },
    {
      "commit": "054cfaacf88865bff1dd58d305443d5d6c068a08",
      "tree": "39cd85f0f5966ed8c501740359b1d03d48f5ea41",
      "parents": [
        "dc113c1f1d4b47af1b1ca701c5a39e24d296c2ac",
        "1a102ff92579edeff5e3d5d3c76ca49977898f00"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 19:09:57 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 19:09:57 2011 -0700"
      },
      "message": "Merge branch \u0027mnt_devname\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027mnt_devname\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  vfs: bury -\u003eget_sb()\n  nfs: switch NFS from -\u003eget_sb() to -\u003emount()\n  nfs: stop mangling -\u003emnt_devname on NFS\n  vfs: new superblock methods to override /proc/*/mount{s,info}\n  nfs: nfs_do_{ref,sub}mount() superblock argument is redundant\n  nfs: make nfs_path() work without vfsmount\n  nfs: store devname at disconnected NFS roots\n  nfs: propagate devname to nfs{,4}_get_root()\n"
    },
    {
      "commit": "011949811b946bd3b72fca71200f197c6168a5f8",
      "tree": "21e9fc3727de86bda7dc41cc90c331c6240239fc",
      "parents": [
        "fd462fb51db46c84bea0fc377c11b9a7e16bc1a0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 07:25:36 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 16:48:06 2011 -0400"
      },
      "message": "nfs: switch NFS from -\u003eget_sb() to -\u003emount()\n\nThe last remaining instances of -\u003eget_sb() can be converted -\u003emount()\nnow - nothing in them uses new vfsmount anymore.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "fd462fb51db46c84bea0fc377c11b9a7e16bc1a0",
      "tree": "6b7c8ae99ebc26a663b765034985256b944eeef4",
      "parents": [
        "c7f404b40a3665d9f4e9a927cc5c1ee0479ed8f9"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 07:05:45 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 16:48:06 2011 -0400"
      },
      "message": "nfs: stop mangling -\u003emnt_devname on NFS\n\nnow we can do that - nobody cares about its value anymore.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c7f404b40a3665d9f4e9a927cc5c1ee0479ed8f9",
      "tree": "2d6fa2bef00efa759f36b17f3be0d4fab3ac9bb5",
      "parents": [
        "f8ad9c4bae99854c961ca79ed130a0d11d9ab53c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 06:59:40 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 16:48:06 2011 -0400"
      },
      "message": "vfs: new superblock methods to override /proc/*/mount{s,info}\n\na) -\u003eshow_devname(m, mnt) - what to put into devname columns in mounts,\nmountinfo and mountstats\nb) -\u003eshow_path(m, mnt) - what to put into relative path column in mountinfo\n\nLeaving those NULL gives old behaviour.  NFS switched to using those.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f8ad9c4bae99854c961ca79ed130a0d11d9ab53c",
      "tree": "de466d67c6413ba5a0fed1733768f21e1ffc2acf",
      "parents": [
        "b514f872f86d4b0c13fed74a1fe1f7ab500c4fd0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 06:32:07 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 16:48:06 2011 -0400"
      },
      "message": "nfs: nfs_do_{ref,sub}mount() superblock argument is redundant\n\nIt\u0027s always equal to dentry-\u003ed_sb\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b514f872f86d4b0c13fed74a1fe1f7ab500c4fd0",
      "tree": "a54821b3e2363150e4e9b180e097a8092f884dda",
      "parents": [
        "b1942c5f8cf3bea3a3c88a7498ae4c4361f31afe"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 06:26:11 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 16:47:55 2011 -0400"
      },
      "message": "nfs: make nfs_path() work without vfsmount\n\npart 3: now we have everything to get nfs_path() just by dentry -\njust follow to (disconnected) root and pick the rest of the thing\nthere.\n\nStart killing propagation of struct vfsmount * on the paths that\nused to bring it to nfs_path().\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b1942c5f8cf3bea3a3c88a7498ae4c4361f31afe",
      "tree": "0ff98cbdf75b23104df97344dcd6a35a86bbe9ec",
      "parents": [
        "0d5839ad05acd0fe2a84a39f33ac5efdf634a5a5"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 05:44:14 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 16:44:24 2011 -0400"
      },
      "message": "nfs: store devname at disconnected NFS roots\n\npart 2: make sure that disconnected roots have corresponding mnt_devname\nvalues stashed into them.\n\nHave nfs*_get_root() stuff a copy of devname into -\u003ed_fsdata of the\nfound root, provided that it is disconnected.\n\nHave -\u003ed_release() free it when dentry goes away.\n\nHave the places where NFS uses -\u003ed_fsdata for sillyrename (and that\ncan *never* happen to a disconnected root - dentry will be attached\nto its parent) free old devname copies if they find those.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0d5839ad05acd0fe2a84a39f33ac5efdf634a5a5",
      "tree": "a84d6d3a1169a8ff4598cf1337c5e5e75863f6e2",
      "parents": [
        "60ed8cf78f886753e454b671841c0a3a0e55e915"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 05:27:27 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 16:27:04 2011 -0400"
      },
      "message": "nfs: propagate devname to nfs{,4}_get_root()\n\nstep 1 of -\u003emnt_devname fixes: make sure we have the value of devname\navailable in ..._get_root().\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bd2895eeade5f11f3e5906283c630bbdb4b57454",
      "tree": "4d98f4fcd80c7d062afce28823d08aee53e66f82",
      "parents": [
        "016aa2ed1cc9cf704cf76d8df07751b6daa9750f",
        "24d51add7438f9696a7205927bf9de3c5c787a58"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 08:20:19 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 08:20:19 2011 -0700"
      },
      "message": "Merge branch \u0027for-2.6.39\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq\n\n* \u0027for-2.6.39\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:\n  workqueue: fix build failure introduced by s/freezeable/freezable/\n  workqueue: add system_freezeable_wq\n  rds/ib: use system_wq instead of rds_ib_fmr_wq\n  net/9p: replace p9_poll_task with a work\n  net/9p: use system_wq instead of p9_mux_wq\n  xfs: convert to alloc_workqueue()\n  reiserfs: make commit_wq use the default concurrency level\n  ocfs2: use system_wq instead of ocfs2_quota_wq\n  ext4: convert to alloc_workqueue()\n  scsi/scsi_tgt_lib: scsi_tgtd isn\u0027t used in memory reclaim path\n  scsi/be2iscsi,qla2xxx: convert to alloc_workqueue()\n  misc/iwmc3200top: use system_wq instead of dedicated workqueues\n  i2o: use alloc_workqueue() instead of create_workqueue()\n  acpi: kacpi*_wq don\u0027t need WQ_MEM_RECLAIM\n  fs/aio: aio_wq isn\u0027t used in memory reclaim path\n  input/tps6507x-ts: use system_wq instead of dedicated workqueue\n  cpufreq: use system_wq instead of dedicated workqueues\n  wireless/ipw2x00: use system_wq instead of dedicated workqueues\n  arm/omap: use system_wq in mailbox\n  workqueue: use WQ_MEM_RECLAIM instead of WQ_RESCUER\n"
    },
    {
      "commit": "8f68cd42d85f31fb58dd2cabf3ff4aad0a2bafd9",
      "tree": "55cdbf087e418b83a539b4d12e53dbf26fbbfbbc",
      "parents": [
        "e0dca7a05df4e23a8f5b07742e99e2a6f7d67db1"
      ],
      "author": {
        "name": "Stephen Rothwell",
        "email": "sfr@canb.auug.org.au",
        "time": "Tue Mar 15 18:37:09 2011 +1100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 15 08:44:35 2011 -0400"
      },
      "message": "nfs: BKL is no longer needed, so remove the include\n\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c5cb09b6f898609922f9b873661f6cbc26cb29e1",
      "tree": "1884ba8be6455fd45cf4ef8ecf2afb74aa10b41a",
      "parents": [
        "c12bacec458bef16d843c052f38422862f3da8fe"
      ],
      "author": {
        "name": "Rob Landley",
        "email": "rlandley@parallels.com",
        "time": "Wed Mar 09 16:02:37 2011 -0600"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:39:28 2011 -0500"
      },
      "message": "Cleanup: Factor out some cut-and-paste code.\n\nFactor out some cut-and-paste code in options parsing.\nSaves about 800 bytes on x86-64.\n\nSigned-off-by: Rob Landley \u003crlandley@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c12bacec458bef16d843c052f38422862f3da8fe",
      "tree": "6a65f6ecbe0868aba14fb95f033a532b21fa64ba",
      "parents": [
        "7ec10f26e1fd5fcceb9c96e508c1292a816199f7"
      ],
      "author": {
        "name": "Rob Landley",
        "email": "rlandley@parallels.com",
        "time": "Wed Mar 09 15:54:13 2011 -0600"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:39:28 2011 -0500"
      },
      "message": "cleanup: save 60 lines/100 bytes by combining two mostly duplicate functions.\n\nEliminate two mostly duplicate functions (nfs_parse_simple_hostname()\nand nfs_parse_protected_hostname()) and instead just make the calling\nfunction (nfs_parse_devname()) do everything.\n\nSigned-off-by: Rob Landley \u003crlandley@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7ec10f26e1fd5fcceb9c96e508c1292a816199f7",
      "tree": "20cdd3ae42fe5ed123c71fe0ce4b5b8787198c81",
      "parents": [
        "f8628220bb395104697be9c447c1085846dfc97c"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue Feb 22 00:28:34 2011 +0300"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:39:27 2011 -0500"
      },
      "message": "NFS: account direct-io into task io accounting\n\nAccount NFS direct-io reads and writes into Task I/O Accounting.\nDo it before complition to handle aio.\n\nNFS have unusual direct-io implementation,\nthus accounting in generic code does not work.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b064eca2cf6440bf9d5843b24cc4010624031694",
      "tree": "f1024db40bf0afb7b764d6ee825d24cd715d1cc5",
      "parents": [
        "3ddeb7c5c61d0d6bfd837487d3454ffdb788bb91"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Feb 22 15:44:32 2011 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:39:27 2011 -0500"
      },
      "message": "NFSv4: Send unmapped uid/gids to the server when using auth_sys\n\nThe new behaviour is enabled using the new module parameter\n\u0027nfs4_disable_idmapping\u0027.\n\nNote that if the server rejects an unmapped uid or gid, then\nthe client will automatically switch back to using the idmapper.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3ddeb7c5c61d0d6bfd837487d3454ffdb788bb91",
      "tree": "029694613b605d3bf4ed748d1c28d6831f9978b4",
      "parents": [
        "e4fd72a17d2703cfd626c55893ac4ca7e7d81ce9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Feb 22 15:44:31 2011 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:39:27 2011 -0500"
      },
      "message": "NFSv4: Propagate the error NFS4ERR_BADOWNER to nfs4_do_setattr\n\nThis will be required in order to switch uid/gid mapping back on if the\nadmin has tried to disable it.\n\nNote that we also propagate NFS4ERR_BADNAME at the same time, in order to\nwork around a Linux server bug.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e4fd72a17d2703cfd626c55893ac4ca7e7d81ce9",
      "tree": "6e605693b5dbd9369b6dfc1ccd83cebcacfe9dc1",
      "parents": [
        "f0b851689a5da2354f19bcbbac30cd2cab45c4a1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Feb 22 15:44:31 2011 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:39:26 2011 -0500"
      },
      "message": "NFSv4: cleanup idmapper functions to take an nfs_server argument\n\n...instead of the nfs_client.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f0b851689a5da2354f19bcbbac30cd2cab45c4a1",
      "tree": "3084bdb2c1ceb99888952371c2b19b66064889df",
      "parents": [
        "5cf36cfdc8caa2724738ad0842c5c3dd02f309dc"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Feb 22 15:44:31 2011 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:39:26 2011 -0500"
      },
      "message": "NFSv4: Send unmapped uid/gids to the server if the idmapper fails\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5cf36cfdc8caa2724738ad0842c5c3dd02f309dc",
      "tree": "2a863892f48d4f437c9cf2f3cad5951bf6962bc4",
      "parents": [
        "75247affd7930cc3dcf57f850f0d7898379ef3b3"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Feb 22 15:44:31 2011 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:39:26 2011 -0500"
      },
      "message": "NFSv4: If the server sends us a numeric uid/gid then accept it\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "75247affd7930cc3dcf57f850f0d7898379ef3b3",
      "tree": "b0a9f986d5d209d4ab422525a16cfdc38da917da",
      "parents": [
        "36fe432d33e078caee5c954e15e929819c2cacae"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Tue Feb 22 15:56:01 2011 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:45 2011 -0500"
      },
      "message": "NFSv4.1: reject zero layout with zeroed stripe unit\n\nAllowing stripe_unit\u003d\u003d0 causes the client to crash later on\nwhen dividing by zero.\n\nReported-by: Marc Eshel \u003ceshel@almaden.ibm.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "36fe432d33e078caee5c954e15e929819c2cacae",
      "tree": "84bccc3434a423f8eabae42d543fad5914124ae2",
      "parents": [
        "c76069bda0f17cd3e153e54d9ac01242909c6b15"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Thu Mar 03 15:13:49 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:45 2011 -0500"
      },
      "message": "NFSv4.1: Clear lseg pointer in -\u003edoio function\n\nNow that we have access to the pointer, clear it immediately after\nthe put, instead of in caller.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c76069bda0f17cd3e153e54d9ac01242909c6b15",
      "tree": "b21a8844fdcfbda430cda191c84597393398e461",
      "parents": [
        "a69aef1496726ed88386dad65abfcc8cd3195304"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Thu Mar 03 15:13:48 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:44 2011 -0500"
      },
      "message": "NFSv4.1: rearrange -\u003edoio args\n\nThis will make it possible to clear the lseg pointer in the same\nfunction as it is put, instead of in the caller nfs_pageio_doio().\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a69aef1496726ed88386dad65abfcc8cd3195304",
      "tree": "66766c9eed54e6dc7ddf9ecaf8765a7bc833685e",
      "parents": [
        "7ffd10640dc008f6d5a375bd6450755745c63c7d"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Thu Mar 03 15:13:47 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:44 2011 -0500"
      },
      "message": "NFSv4.1: pnfs filelayout driver write\n\nAllows the pnfs filelayout driver to write to the data servers.\n\nNote that COMMIT to data servers will be implemented in a future\npatch.  To avoid improper behavior, for the moment any WRITE to a data\nserver that would also require a COMMIT to the data server is sent\nNFS_FILE_SYNC.\n\nSigned-off-by: Andy Adamson \u003candros@citi.umich.edu\u003e\nSigned-off-by: Dean Hildebrand \u003cdhildeb@us.ibm.com\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@citi.umich.edu\u003e\nSigned-off-by: Mingyang Guo \u003cguomingyang@nrchpc.ac.cn\u003e\nSigned-off-by: Oleg Drokin \u003cgreen@linuxhacker.ru\u003e\nSigned-off-by: Ricardo Labiaga \u003cRicardo.Labiaga@netapp.com\u003e\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7ffd10640dc008f6d5a375bd6450755745c63c7d",
      "tree": "d63a12d4319ab8e6c95c6be9c99756800ba38f91",
      "parents": [
        "0382b74409c6b9ef12c952b50bb44f557a361a43"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Thu Mar 03 15:13:46 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:44 2011 -0500"
      },
      "message": "NFSv4.1: remove GETATTR from ds writes\n\nAny WRITE compound directed to a data server needs to have the\nGETATTR calls suppressed.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0382b74409c6b9ef12c952b50bb44f557a361a43",
      "tree": "0eebc04006a3b70fb6605c42ee89cdc0ccd8b1cf",
      "parents": [
        "44b83799a922a153957c65ccfc985a8c902958c8"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Thu Mar 03 15:13:45 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:44 2011 -0500"
      },
      "message": "NFSv4.1: implement generic pnfs layer write switch\n\nSigned-off-by: Andy Adamson \u003candros@citi.umich.edu\u003e\nSigned-off-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Dean Hildebrand \u003cdhildeb@us.ibm.com\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@citi.umich.edu\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@fieldses.org\u003e\nSigned-off-by: Mike Sager \u003csager@netapp.com\u003e\nSigned-off-by: Ricardo Labiaga \u003cRicardo.Labiaga@netapp.com\u003e\nSigned-off-by: Tao Guo \u003cguotao@nrchpc.ac.cn\u003e\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "44b83799a922a153957c65ccfc985a8c902958c8",
      "tree": "4dad6ec4655a876c3f12a15919fad407fd22ef59",
      "parents": [
        "5053aa568d4017aeb1fa35247d4ad96be262920f"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Thu Mar 03 15:13:44 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:44 2011 -0500"
      },
      "message": "NFSv4.1: trigger LAYOUTGET for writes\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5053aa568d4017aeb1fa35247d4ad96be262920f",
      "tree": "a15850e0465c555310a41880c7e9454109a1f952",
      "parents": [
        "b029bc9b0880cbaf999f580c0ea8f06dd274fc77"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Thu Mar 03 15:13:43 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:44 2011 -0500"
      },
      "message": "NFSv4.1: Send lseg down into nfs_write_rpcsetup\n\nWe grab the lseg sent in from the doio function and attach it to\neach struct nfs_write_data created.  This is how the lseg will be\nsent to the layout driver.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b029bc9b0880cbaf999f580c0ea8f06dd274fc77",
      "tree": "3dc527df82e2bb76ee91dc3f511f40f7ded6e747",
      "parents": [
        "d138d5d17be6a60d883e8bd4e22bc218d3adfab3"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Thu Mar 03 15:13:42 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:43 2011 -0500"
      },
      "message": "NFSv4.1: add callback to nfs4_write_done\n\nAdd callback that pnfs layout driver can use to do its own handling\nof data server WRITE response.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d138d5d17be6a60d883e8bd4e22bc218d3adfab3",
      "tree": "157dcb197e44823b0dc7500b9ba5f691b536402c",
      "parents": [
        "80fe2b192dbc53261e385dc26d90f5195f1c62e7"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Thu Mar 03 15:13:41 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:43 2011 -0500"
      },
      "message": "NFSv4.1: rearrange nfs_write_rpcsetup\n\nReorder nfs_write_rpcsetup, preparing for a pnfs entry point.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "568e8c494ded95a28c5dd8b79b4d3ffb95b6d845",
      "tree": "00e71f79575635c0ddfcd1210e263088cc121da2",
      "parents": [
        "ea8eecdd11ee6becd09c095c8efa88aa7df95961"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Tue Mar 01 01:34:22 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:43 2011 -0500"
      },
      "message": "NFSv4.1: turn off pNFS on ds connection failure\n\nIf a data server is unavailable, go through MDS.\n\nMark the deviceid containing the data server as a negative cache entry.\nDo not try to connect to any data server on a deviceid marked as a negative\ncache entry. Mark any layout that tries to use the marked deviceid as failed.\n\nInodes with a layout marked as fails will not use the layout for I/O, and will\nnot perform any more layoutgets.\nInodes without a layout will still do layoutget, but the layout will get\nmarked immediately.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ea8eecdd11ee6becd09c095c8efa88aa7df95961",
      "tree": "4db9c584989d006790637e255657a010c8243cb9",
      "parents": [
        "cbdabc7f8bf14ca1d40ab1cb86f64b3bc09716e8"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Mar 01 01:34:21 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:43 2011 -0500"
      },
      "message": "NFSv4.1 move deviceid cache to filelayout driver\n\nNo need for generic cache with only one user.\nKeep a simple hash of deviceids in the filelayout driver.\n\nSigned-off-by: Christoph Hellwig \u003chch@infradead.org\u003e\nAcked-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cbdabc7f8bf14ca1d40ab1cb86f64b3bc09716e8",
      "tree": "16939b96996e8380d91d7e2743e811cf5c49f629",
      "parents": [
        "dc70d7b3189597f313df7bd2da849cfc39063b15"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Tue Mar 01 01:34:20 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:43 2011 -0500"
      },
      "message": "NFSv4.1: filelayout async error handler\n\nUse our own async error handler.\nMark the layout as failed and retry i/o through the MDS on specified errors.\n\nUpdate the mds_offset in nfs_readpage_retry so that a failed short-read retry\nto a DS gets correctly resent through the MDS.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "dc70d7b3189597f313df7bd2da849cfc39063b15",
      "tree": "c739f2c3a2213b1bc028f1599ee0efcbeabd9b81",
      "parents": [
        "cfe7f4120f8b1b9465c333d1e42efd4669b1799f"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Tue Mar 01 01:34:19 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:43 2011 -0500"
      },
      "message": "NFSv4.1: filelayout read\n\nAttempt a pNFS file layout read by setting up the nfs_read_data struct and\ncalling nfs_initiate_read with the data server rpc client and the\nfilelayout rpc call ops.\n\nError handling is implemented in a subsequent patch.\n\nSigned-off-by: Andy Adamson \u003candros@citi.umich.edu\u003e\nSigned-off-by: Dean Hildebrand \u003cdhildeb@us.ibm.com\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@citi.umich.edu\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Mingyang Guo \u003cguomingyang@nrchpc.ac.cn\u003e\nSigned-off-by: Oleg Drokin \u003cgreen@linuxhacker.ru\u003e\nSigned-off-by: Ricardo Labiaga \u003cRicardo.Labiaga@netapp.com\u003e\nTested-by: Guo Mingyang \u003cguomingyang@nrchpc.ac.cn\u003e\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cfe7f4120f8b1b9465c333d1e42efd4669b1799f",
      "tree": "a55e5fc7dbafdf43588a480a0348da0ad8e1eb9e",
      "parents": [
        "d83217c13531fd59730d77b5c2284e90e56c0a50"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Tue Mar 01 01:34:18 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:42 2011 -0500"
      },
      "message": "NFSv4.1: filelayout i/o helpers\n\nPrepare for filelayout_read_pagelist with helper functions that find the correct\ndata server, filehandle, and offset.\n\nSigned-off-by: Andy Adamson \u003candros@citi.umich.edu\u003e\nSigned-off-by: Dean Hildebrand \u003cdhildeb@us.ibm.com\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Marc Eshel \u003ceshel@almaden.ibm.com\u003e\nSigned-off-by: Mike Sager \u003csager@netapp.com\u003e\nSigned-off-by: Oleg Drokin \u003cgreen@linuxhacker.ru\u003e\nSigned-off-by: Tao Guo \u003cguotao@nrchpc.ac.cn\u003e\nSigned-off-by: Tigran Mkrtchyan \u003ctigran@anahit.desy.de\u003e\nSigned-off-by: Tigran Mkrtchyan \u003ctigran.mkrtchyan@desy.de\u003e\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d83217c13531fd59730d77b5c2284e90e56c0a50",
      "tree": "e347037afc91fdb81e0e2fcf7225d30462fb90af",
      "parents": [
        "64419a9b20938d9070fdd8c58c2fa23c911915f8"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Tue Mar 01 01:34:17 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:42 2011 -0500"
      },
      "message": "NFSv4.1: data server connection\n\nIntroduce a data server set_client and init session following the\nnfs4_set_client and  nfs4_init_session convention.\n\nOnce a new nfs_client is on the nfs_client_list, the nfs_client cl_cons_state\nserializes access to creating an nfs_client struct with matching properties.\n\nUse the new nfs_get_client() that initializes new clients.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "64419a9b20938d9070fdd8c58c2fa23c911915f8",
      "tree": "182c1eaebcfb9b8e02fc75d807b346209757ace1",
      "parents": [
        "bae724ef95b0d0a1f4518f5451e7c8aabc41f820"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Tue Mar 01 01:34:16 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:42 2011 -0500"
      },
      "message": "NFSv4.1: generic read\n\nSeparate the rpc run portion of nfs_read_rpcsetup into a new function\nnfs_initiate_read that is called for normal NFS I/O.\n\nAdd a pNFS read_pagelist function that is called instead of nfs_intitate_read\nfor pNFS reads.\n\nSigned-off-by: Andy Adamson \u003candros@citi.umich.edu\u003e\nSigned-off-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Dean Hildebrand \u003cdhildeb@us.ibm.com\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@citi.umich.edu\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Mike Sager \u003csager@netapp.com\u003e\nSigned-off-by: Mingyang Guo \u003cguomingyang@nrchpc.ac.cn\u003e\nSigned-off-by: Ricardo Labiaga \u003cRicardo.Labiaga@netapp.com\u003e\nSigned-off-by: Tao Guo \u003cguotao@nrchpc.ac.cn\u003e\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bae724ef95b0d0a1f4518f5451e7c8aabc41f820",
      "tree": "07a2c1866698f183235f7133ac7c004121717bf8",
      "parents": [
        "94ad1c80e28f9700c84b4d28d1e5302ddf63a6fd"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Tue Mar 01 01:34:15 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:42 2011 -0500"
      },
      "message": "NFSv4.1: shift pnfs_update_layout locations\n\nMove the pnfs_update_layout call location to nfs_pageio_do_add_request().\nGrab the lseg sent in the doio function to nfs_read_rpcsetup and attach\nit to each nfs_read_data so it can be sent to the layout driver.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Andy Adamson \u003candros@citi.umich.edu\u003e\nSigned-off-by: Dean Hildebrand \u003cdhildeb@us.ibm.com\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@citi.umich.edu\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Oleg Drokin \u003cgreen@linuxhacker.ru\u003e\nSigned-off-by: Tao Guo \u003cguotao@nrchpc.ac.cn\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "94ad1c80e28f9700c84b4d28d1e5302ddf63a6fd",
      "tree": "2c600c1f8e85648c7693b5f0018b5d0b7e960b5f",
      "parents": [
        "d684d2ae10a4f95d3035abf698d7d611ff2cd279"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Tue Mar 01 01:34:14 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:42 2011 -0500"
      },
      "message": "NFSv4.1: coelesce across layout stripes\n\nAdd a pg_test layout driver hook which is used to avoid coelescing I/O across\nlayout stripes.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Andy Adamson \u003candros@citi.umich.edu\u003e\nSigned-off-by: Dean Hildebrand \u003cdhildeb@us.ibm.com\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@citi.umich.edu\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Oleg Drokin \u003cgreen@linuxhacker.ru\u003e\nSigned-off-by: Tao Guo \u003cguotao@nrchpc.ac.cn\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d684d2ae10a4f95d3035abf698d7d611ff2cd279",
      "tree": "9bae2d1808b8e2a0d153d8d1d13f0d9a01408de0",
      "parents": [
        "94de8b27d0dcb2608d56a7e5c2941b87e6da7ce3"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Tue Mar 01 01:34:13 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:42 2011 -0500"
      },
      "message": "NFSv4.1: lseg refcounting\n\nPrepare put_lseg and get_lseg to be called from the pNFS I/O code.\nPull common code from pnfs_lseg_locked to call from pnfs_lseg.\nInline pnfs_lseg_locked into it\u0027s only caller.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "94de8b27d0dcb2608d56a7e5c2941b87e6da7ce3",
      "tree": "bd4b98e229bfbb9d6276e663b2eaca4c70b5bba1",
      "parents": [
        "d6fb79d433d0a34c36bdf74eaf90857193a6261f"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Tue Mar 01 01:34:12 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:41 2011 -0500"
      },
      "message": "NFSv4.1: add MDS mount DS only check\n\nThe DS only role cannot be used to mount.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d6fb79d433d0a34c36bdf74eaf90857193a6261f",
      "tree": "bf7686b2bd65d598ef1a4e5ceaebb0432302a726",
      "parents": [
        "d3b4c9d76738df49a7db7682c2518a0ef9f7391d"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Tue Mar 01 01:34:11 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:41 2011 -0500"
      },
      "message": "NFSv4.1: new flag for lease time check\n\nData servers cannot send nfs4_proc_get_lease_time. but still need to setup\nstate renewal. Add the NFS_CS_CHECK_LEASE_TIME bit to indicate if the lease\ntime can be checked.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d3b4c9d76738df49a7db7682c2518a0ef9f7391d",
      "tree": "69ab2ccad799bee8a00ad901b57739be44747fcd",
      "parents": [
        "89d1ea65798953b251e399b17f32d31033889ae0"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Tue Mar 01 01:34:10 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:41 2011 -0500"
      },
      "message": "NFSv4.1: new flag for state renewal check\n\nData servers not sharing a session with the mount MDS always have an empty\ncl_superblocks list.\nReplace the cl_superblocks empty list check to see if it is time to shut down\nrenewd with the NFS_CS_STOP_RENEW bit which is not set by such a data server.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "89d1ea65798953b251e399b17f32d31033889ae0",
      "tree": "6ab0e98c1b9723539dca3c4879f705e486c2b497",
      "parents": [
        "45a52a02072b2a7e265f024cfdb00127e08dd9f2"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Tue Mar 01 01:34:09 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:41 2011 -0500"
      },
      "message": "NFSv4.1: send zero stateid seqid on v4.1 i/o\n\nData servers require a zero stateid seqid, and there is no advantage to not\ndoing the same for all NFSv4.1\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "45a52a02072b2a7e265f024cfdb00127e08dd9f2",
      "tree": "33c98f48d5b652297f45406f47d9545cca37c7c5",
      "parents": [
        "bf9c1387ca80deac792c9ecf1c64dfcc5d1cc768"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Tue Mar 01 01:34:08 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:41 2011 -0500"
      },
      "message": "NFS move nfs_client initialization into nfs_get_client\n\nNow nfs_get_client returns an nfs_client ready to be used no matter if it was\nfound or created.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bf9c1387ca80deac792c9ecf1c64dfcc5d1cc768",
      "tree": "4a06245d796db913a2a137d6498149e047a84283",
      "parents": [
        "6f78befc417dd7122249706b49520da29ba58451"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Tue Mar 01 01:34:07 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:41 2011 -0500"
      },
      "message": "NFSv4.1: put_layout_hdr can remove nfsi-\u003elayout\n\nPrevents an Oops triggered by CB_LAYOUTRECALL and LAYOUTGET race on a\npnfs_layout_hdr first pnfs_layout_segment.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "136028967a283929c6f01518d0700b73fa622d56",
      "tree": "14c55e191897a726c6cedb09a988d2f07e0e3da4",
      "parents": [
        "83762c56c1ba7c5b4b92fb32d570661633228bc6"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Fri Feb 11 15:42:38 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:40 2011 -0500"
      },
      "message": "NFS: change nfs_writeback_done to return void\n\nThe return values are not used by any callers.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "83762c56c1ba7c5b4b92fb32d570661633228bc6",
      "tree": "96d0868be2b18efea6ffb1fe43c75b35db1be698",
      "parents": [
        "eabf5baaaaf41b6a0273043cfb06d53dca67acef"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Fri Feb 11 15:42:37 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:40 2011 -0500"
      },
      "message": "NFS: remove pointless if statement in nfs_direct_write_result\n\nThe code was doing nothing more in either branch of the if.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f49f9baac8f63de9cbc17a0a84e04060496e8e76",
      "tree": "e3e544247ec5e85c47915d34737f278772d15c73",
      "parents": [
        "9f52c2525e09854ed6aa4cbd83915a56226d86c1"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Thu Feb 03 18:28:52 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:40 2011 -0500"
      },
      "message": "pnfs: fix pnfs lock inversion of i_lock and cl_lock\n\nThe pnfs code was using throughout the lock order i_lock, cl_lock.\nThis conflicts with the nfs delegation code.  Rework the pnfs code\nto avoid taking both locks simultaneously.\n\nCurrently the code takes the double lock to add/remove the layout to a\nnfs_client list, while atomically checking that the list of lsegs is\nempty.  To avoid this, we rely on existing serializations.  When a\nlayout is initialized with lseg count equal zero, LAYOUTGET\u0027s\nopenstateid serialization is in effect, making it safe to assume it\nstays zero unless we change it.  And once a layout\u0027s lseg count drops\nto zero, it is set as DESTROYED and so will stay at zero.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9f52c2525e09854ed6aa4cbd83915a56226d86c1",
      "tree": "9f1c873ed57e943c88d1f6fbb394dbbba0934a88",
      "parents": [
        "38511722446993d926861696194c39ef135d85a4"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Thu Feb 03 18:28:51 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:40 2011 -0500"
      },
      "message": "pnfs: do not need to clear NFS_LAYOUT_BULK_RECALL flag\n\nWe do not need to clear the NFS_LAYOUT_BULK_RECALL, as setting it\nguarantees that NFS_LAYOUT_DESTROYED will be set once any outstanding\nio is finished.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "38511722446993d926861696194c39ef135d85a4",
      "tree": "56ca01a34aea70cfc3473996bd3712cda3022166",
      "parents": [
        "53d4737580535e073963b91ce87d4216e434fab5"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Thu Feb 03 18:28:50 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:39 2011 -0500"
      },
      "message": "pnfs: avoid incorrect use of layout stateid\n\nThe code could violate the following from RFC5661, section 12.5.3:\n\"Once a client has no more layouts on a file, the layout stateid is no\nlonger valid and MUST NOT be used.\"\n\nThis can occur when a layout already has a lseg, starts another\nnon-everlapping LAYOUTGET, and a CB_LAYOUTRECALL for the existing lseg\nis processed before we hit pnfs_layout_process().\n\nSolve by setting, each time the client has no more lsegs for a file, a\nflag which blocks further use of the layout and triggers its removal.\n\nThis also fixes a second bug which occurs in the same instance as\nabove.  If we actually use pnfs_layout_process, we add the new lseg to\nthe layout, but the layout has been removed from the nfs_client list\nby the intervening CB_LAYOUTRECALL and will not be added back.  Thus\nthe newly acquired lseg will not be properly returned in the event of\na subsequent CB_LAYOUTRECALL.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "53d4737580535e073963b91ce87d4216e434fab5",
      "tree": "5dcecfe07d5f9ea1ec3a4b5678d8710c155ca340",
      "parents": [
        "57df216bd8c8813a79a6a618e3d2ec937d532b86"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Mar 11 15:31:06 2011 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:07 2011 -0500"
      },
      "message": "NFS: NFSROOT should default to \"proto\u003dudp\"\n\nThere have been a number of recent reports that NFSROOT is no longer\nworking with default mount options, but fails only with certain NICs.\n\nBrian Downing \u003cbdowning@lavos.net\u003e bisected to commit 56463e50 \"NFS:\nUse super.c for NFSROOT mount option parsing\".  Among other things,\nthis commit changes the default mount options for NFSROOT to use TCP\ninstead of UDP as the underlying transport.\n\nTCP seems less able to deal with NICs that are slow to initialize.\nThe system logs that have accompanied reports of problems all show\nthat NFSROOT attempts to establish a TCP connection before the NIC is\nfully initialized, and thus the TCP connection attempt fails.\n\nWhen a TCP connection attempt fails during a mount operation, the\nNFS stack needs to fail the operation.  Usually user space knows how\nand when to retry it.  The network layer does not report a distinct\nerror code for this particular failure mode.  Thus, there isn\u0027t a\nclean way for the RPC client to see that it needs to retry in this\ncase, but not in others.\n\nBecause NFSROOT is used in some environments where it is not possible\nto update the kernel command line to specify \"udp\", the proper thing\nto do is change NFSROOT to use UDP by default, as it did before commit\n56463e50.\n\nTo make it easier to see how to change default mount options for\nNFSROOT and to distinguish default settings from mandatory settings,\nI\u0027ve adjusted a couple of areas to document the specifics.\n\nroot_nfs_cat() is also modified to deal with commas properly when\nconcatenating strings containing mount option lists.  This keeps\nroot_nfs_cat() call sites simpler, now that we may be concatenating\nmultiple mount option strings.\n\nTested-by: Brian Downing \u003cbdowning@lavos.net\u003e\nTested-by: Mark Brown \u003cbroonie@opensource.wolfsonmicro.com\u003e\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nCc: \u003cstable@kernel.org\u003e # 2.6.37\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "57df216bd8c8813a79a6a618e3d2ec937d532b86",
      "tree": "ee3eddc164a7a1942a3239883336f90eeab6ee62",
      "parents": [
        "f9feab1e180d1392f2f59d692826c6da2e57adf4"
      ],
      "author": {
        "name": "Huang Weiyi",
        "email": "weiyi.huang@gmail.com",
        "time": "Tue Mar 08 23:11:30 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:18:37 2011 -0500"
      },
      "message": "nfs4: remove duplicated #include\n\nRemove duplicated #include(\u0027s) in\n  fs/nfs/nfs4proc.c\n\nSigned-off-by: Huang Weiyi \u003cweiyi.huang@gmail.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f9feab1e180d1392f2f59d692826c6da2e57adf4",
      "tree": "1af4e0012ddb1d74b0cd44fc4461bd5b78f5adf5",
      "parents": [
        "ecac799a5ecc364006f0db6f2db15e77ed4d63e2"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 09 16:12:46 2011 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:18:36 2011 -0500"
      },
      "message": "NFSv4: nfs4_state_mark_reclaim_nograce() should be static\n\nThere are no more external users of nfs4_state_mark_reclaim_nograce() or\nnfs4_state_mark_reclaim_reboot(), so mark them as static.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ecac799a5ecc364006f0db6f2db15e77ed4d63e2",
      "tree": "200a71e8c3d564bb26e31cda2c4283142c380ee7",
      "parents": [
        "b4410c2f7f775b03da31566c05bb8d2383c7dc27"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 09 16:00:56 2011 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:18:36 2011 -0500"
      },
      "message": "NFSv4: Fix the setlk error handler\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b4410c2f7f775b03da31566c05bb8d2383c7dc27",
      "tree": "7d16c41557c7aa17489a222a660ad71bd7fb370b",
      "parents": [
        "0400a6b0cb756f976bae32ae8db47bfa9853897c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 09 16:00:55 2011 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:18:35 2011 -0500"
      },
      "message": "NFSv4.1: Fix the handling of the SEQUENCE status bits\n\nWe want SEQUENCE status bits to be handled by the state manager in order\nto avoid threading issues.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0400a6b0cb756f976bae32ae8db47bfa9853897c",
      "tree": "ec1393f7e5eeec02a0cc4504d98a138ae458f443",
      "parents": [
        "c34c32ea97718bb24fc06158733580003ba89211"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 09 16:00:53 2011 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:18:22 2011 -0500"
      },
      "message": "NFSv4/4.1: Fix nfs4_schedule_state_recovery abuses\n\nnfs4_schedule_state_recovery() should only be used when we need to force\nthe state manager to check the lease. If we just want to start the\nstate manager in order to handle a state recovery situation, we should be\nusing nfs4_schedule_state_manager().\n\nThis patch fixes the abuses of nfs4_schedule_state_recovery() by replacing\nits use with a set of helper functions that do the right thing.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c34c32ea97718bb24fc06158733580003ba89211",
      "tree": "e11ca3f95ecc237499cd5d06f2377cc327c208b1",
      "parents": [
        "114f64b5f24abac33a42f4f1856eb3a9766d497e"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Wed Mar 09 13:13:46 2011 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 10 15:05:01 2011 -0500"
      },
      "message": "NFSv4.1 reclaim complete must wait for completion\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\n[Trond: fix whitespace errors]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "114f64b5f24abac33a42f4f1856eb3a9766d497e",
      "tree": "a3f5129bec4e2d7cf2afa0848798a5e74f422a3e",
      "parents": [
        "7d6d63d6427090cbb1d282364b65b12634ca59bd"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Wed Mar 09 13:13:45 2011 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 10 15:05:00 2011 -0500"
      },
      "message": "NFSv4: remove duplicate clientid in struct nfs_client\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7d6d63d6427090cbb1d282364b65b12634ca59bd",
      "tree": "b75f3278469f86453e8b90ced1a5c3698a9c4a93",
      "parents": [
        "4cea288aaf0e11647880cc487350b1dc45d9febc"
      ],
      "author": {
        "name": "Ricardo Labiaga",
        "email": "Ricardo.Labiaga@netapp.com",
        "time": "Wed Mar 09 13:13:44 2011 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 10 15:04:59 2011 -0500"
      },
      "message": "NFSv4.1: Retry CREATE_SESSION on NFS4ERR_DELAY\n\nFix bug where we currently retry the EXCHANGEID call again, eventhough\nwe already have a valid clientid.  Instead, delay and retry the CREATE_SESSION\ncall.\n\nSigned-off-by: Ricardo Labiaga \u003cRicardo.Labiaga@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3fa0b4e201d254b52a251fa348bd53e53000cff6",
      "tree": "ad5e41b45d5c8603901b34631b688ae5e3793942",
      "parents": [
        "43b7c3f051dea504afccc39bcb56d8e26c2e0b77"
      ],
      "author": {
        "name": "Frank Filz",
        "email": "ffilzlnx@us.ibm.com",
        "time": "Thu Dec 02 19:31:23 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 10 15:04:58 2011 -0500"
      },
      "message": "(try3-resend) Fix nfs_compat_user_ino64 so it doesn\u0027t cause problems if bit 31 or 63 are set in fileid\n\nThe problem was use of an int32, which when converted to a uint64\nis sign extended resulting in a fileid that doesn\u0027t fit in 32 bits\neven though the intent of the function is to fit the fileid into\n32 bits.\n\nSigned-off-by: Frank Filz \u003cffilzlnx@us.ibm.com\u003e\nReviewed-by: Jeff Layton \u003cjlayton@redhat.com\u003e\n[Trond: Added an include for compat.h]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "43b7c3f051dea504afccc39bcb56d8e26c2e0b77",
      "tree": "6d031d1804acf9a5abeeb6b1597cb6821f96e493",
      "parents": [
        "b9f810570d9cc13177128e11a74e22d37aa68a1a"
      ],
      "author": {
        "name": "Jovi Zhang",
        "email": "bookjovi@gmail.com",
        "time": "Wed Mar 02 23:19:37 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 10 15:04:56 2011 -0500"
      },
      "message": "nfs: fix compilation warning\n\nthis commit fix compilation warning as following:\nlinux-2.6/fs/nfs/nfs4proc.c:3265: warning: comparison of distinct pointer types lacks a cast\n\nSigned-off-by: Jovi Zhang \u003cbookjovi@gmail.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b9f810570d9cc13177128e11a74e22d37aa68a1a",
      "tree": "91c120b297c357695ae4be5dcd373ce220d0dedd",
      "parents": [
        "a5e502681007779d4762fb3ef7e80a3ecd1cfe6b"
      ],
      "author": {
        "name": "Stanislav Fomichev",
        "email": "kernel@fomichev.me",
        "time": "Sat Feb 05 23:13:01 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 10 15:04:55 2011 -0500"
      },
      "message": "nfs: add kmalloc return value check in decode_and_add_ds\n\nadd kmalloc return value check in decode_and_add_ds\n\nSigned-off-by: Stanislav Fomichev \u003ckernel@fomichev.me\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d2224e7afbf2a6556f4f8f25bc0e96d99ec4d2bd",
      "tree": "e8eea0db32178870bee34073547b982216035e45",
      "parents": [
        "bf294b41cefcb22fc3139e0f42c5b3f06728bd5e"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Sun Mar 06 17:14:13 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 10 15:04:53 2011 -0500"
      },
      "message": "nfs: close NFSv4 COMMIT vs. CLOSE race\n\nI\u0027ve been adding in more artificial delays in the NFSv4 commit and close\ncodepaths to uncover races. The kernel I\u0027m testing has the patch to\nclose the race in __rpc_wait_for_completion_task that\u0027s in Trond\u0027s\ncthon2011 branch. The reproducer I\u0027ve been using does this in a loop:\n\n\tmkdir(\"DIR\");\n\tfd \u003d open(\"DIR/FILE\", O_WRONLY|O_CREAT|O_EXCL, 0644);\n\twrite(fd, \"abcdefg\", 7);\n\tclose(fd);\n\tunlink(\"DIR/FILE\");\n\trmdir(\"DIR\");\n\nThe above reproducer shouldn\u0027t result in any silly-renaming. However,\nwhen I add a \"msleep(100)\" just after the nfs_commit_clear_lock call in\nnfs_commit_release, I can almost always force one to occur. If I can\nforce it to occur with that, then it can happen without that delay\ngiven the right timing.\n\nnfs_commit_inode waits for the NFS_INO_COMMIT bit to clear when called\nwith FLUSH_SYNC set. nfs_commit_rpcsetup on the other hand does not wait\nfor the task to complete before putting its reference to it, so the last\nreference get put in rpc_release task and gets queued to a workqueue.\n\nIn this situation, the last open context reference may be put by the\nCOMMIT release instead of the close() syscall. The close() syscall\nreturns too quickly and the unlink runs while the d_count is still\nhigh since the COMMIT release hasn\u0027t put its dentry reference yet.\n\nFix this by having rpc_commit_rpcsetup wait for the RPC call to complete\nbefore putting the task reference when FLUSH_SYNC is set. With this, the\nlast reference is put by the process that\u0027s initiating the FLUSH_SYNC\ncommit and the race is closed.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bf294b41cefcb22fc3139e0f42c5b3f06728bd5e",
      "tree": "250251c040a2d2e278b5a2ddd03c8d20a27be129",
      "parents": [
        "214d93b02c4fe93638ad268613c9702a81ed9192"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 21 11:05:41 2011 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 10 15:04:52 2011 -0500"
      },
      "message": "SUNRPC: Close a race in __rpc_wait_for_completion_task()\n\nAlthough they run as rpciod background tasks, under normal operation\n(i.e. no SIGKILL), functions like nfs_sillyrename(), nfs4_proc_unlck()\nand nfs4_do_close() want to be fully synchronous. This means that when we\nexit, we want all references to the rpc_task to be gone, and we want\nany dentry references etc. held by that task to be released.\n\nFor this reason these functions call __rpc_wait_for_completion_task(),\nfollowed by rpc_put_task() in the expectation that the latter will be\nreleasing the last reference to the rpc_task, and thus ensuring that the\ncallback_ops-\u003erpc_release() has been called synchronously.\n\nThis patch fixes a race which exists due to the fact that\nrpciod calls rpc_complete_task() (in order to wake up the callers of\n__rpc_wait_for_completion_task()) and then subsequently calls\nrpc_put_task() without ensuring that these two steps are done atomically.\n\nIn order to avoid adding new spin locks, the patch uses the existing\nwaitqueue spin lock to order the rpc_task reference count releases between\nthe waiting process and rpciod.\nThe common case where nobody is waiting for completion is optimised for by\nchecking if the RPC_TASK_ASYNC flag is cleared and/or if the rpc_task\nreference count is 1: in those cases we drop trying to grab the spin lock,\nand immediately free up the rpc_task.\n\nThose few processes that need to put the rpc_task from inside an\nasynchronous context and that do not care about ordering are given a new\nhelper: rpc_put_task_async().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e9e3d724e2145f5039b423c290ce2b2c3d8f94bc",
      "tree": "9b0ff4de361fe358a5a2400b35a48206688b5f71",
      "parents": [
        "3256f80fbbc25bd2504bd564844c615227621e56"
      ],
      "author": {
        "name": "Neil Horman",
        "email": "nhorman@tuxdriver.com",
        "time": "Fri Mar 04 19:26:03 2011 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 04 17:28:52 2011 -0800"
      },
      "message": "nfs4: Ensure that ACL pages sent over NFS were not allocated from the slab (v3)\n\nThe \"bad_page()\" page allocator sanity check was reported recently (call\nchain as follows):\n\n  bad_page+0x69/0x91\n  free_hot_cold_page+0x81/0x144\n  skb_release_data+0x5f/0x98\n  __kfree_skb+0x11/0x1a\n  tcp_ack+0x6a3/0x1868\n  tcp_rcv_established+0x7a6/0x8b9\n  tcp_v4_do_rcv+0x2a/0x2fa\n  tcp_v4_rcv+0x9a2/0x9f6\n  do_timer+0x2df/0x52c\n  ip_local_deliver+0x19d/0x263\n  ip_rcv+0x539/0x57c\n  netif_receive_skb+0x470/0x49f\n  :virtio_net:virtnet_poll+0x46b/0x5c5\n  net_rx_action+0xac/0x1b3\n  __do_softirq+0x89/0x133\n  call_softirq+0x1c/0x28\n  do_softirq+0x2c/0x7d\n  do_IRQ+0xec/0xf5\n  default_idle+0x0/0x50\n  ret_from_intr+0x0/0xa\n  default_idle+0x29/0x50\n  cpu_idle+0x95/0xb8\n  start_kernel+0x220/0x225\n  _sinittext+0x22f/0x236\n\nIt occurs because an skb with a fraglist was freed from the tcp\nretransmit queue when it was acked, but a page on that fraglist had\nPG_Slab set (indicating it was allocated from the Slab allocator (which\nmeans the free path above can\u0027t safely free it via put_page.\n\nWe tracked this back to an nfsv4 setacl operation, in which the nfs code\nattempted to fill convert the passed in buffer to an array of pages in\n__nfs4_proc_set_acl, which gets used by the skb-\u003efrags list in\nxs_sendpages.  __nfs4_proc_set_acl just converts each page in the buffer\nto a page struct via virt_to_page, but the vfs allocates the buffer via\nkmalloc, meaning the PG_slab bit is set.  We can\u0027t create a buffer with\nkmalloc and free it later in the tcp ack path with put_page, so we need\nto either:\n\n1) ensure that when we create the list of pages, no page struct has\n   PG_Slab set\n\n or\n\n2) not use a page list to send this data\n\nGiven that these buffers can be multiple pages and arbitrarily sized, I\nthink (1) is the right way to go.  I\u0027ve written the below patch to\nallocate a page from the buddy allocator directly and copy the data over\nto it.  This ensures that we have a put_page free-able page for every\nentry that winds up on an skb frag list, so it can be safely freed when\nthe frame is acked.  We do a put page on each entry after the\nrpc_call_sync call so as to drop our own reference count to the page,\nleaving only the ref count taken by tcp_sendpages.  This way the data\nwill be properly freed when the ack comes in\n\nSuccessfully tested by myself to solve the above oops.\n\nNote, as this is the result of a setacl operation that exceeded a page\nof data, I think this amounts to a local DOS triggerable by an\nuprivlidged user, so I\u0027m CCing security on this as well.\n\nSigned-off-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nCC: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCC: security@kernel.org\nCC: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "43d133c18b44e7d82d82ef0dcc2bddd55d5dfe81"
}
