)]}'
{
  "log": [
    {
      "commit": "0522f6adedd2736cbca3c0e16ca51df668993eee",
      "tree": "36ff5ee208fa97cf86b717ed0eb2e9ca4251315d",
      "parents": [
        "c5efa5fc91f1f6d1d47e65f39e7ec6d1157c777d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 26 08:42:24 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 26 08:43:53 2010 -0400"
      },
      "message": "NFS: Fix another nfs_wb_page() deadlock\n\nJ.R. Okajima reports that the call to sync_inode() in nfs_wb_page() can\ndeadlock with other writeback flush calls. It boils down to the fact\nthat we cannot ever call writeback_single_inode() while holding a page\nlock (even if we do set nr_to_write to zero) since another process may\nalready be waiting in the call to do_writepages(), and so will deny us\nthe I_SYNC lock.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c5efa5fc91f1f6d1d47e65f39e7ec6d1157c777d",
      "tree": "614e6098c92ba9d240ec2b8ea4d9d79ff9334077",
      "parents": [
        "59844a9bd73e084b0ffefc0e13226098e28c71ad"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 26 08:42:11 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 26 08:43:52 2010 -0400"
      },
      "message": "NFS: Ensure that we mark the inode as dirty if we exit early from commit\n\nIf we exit from nfs_commit_inode() without ensuring that the COMMIT rpc\ncall has been completed, we must re-mark the inode as dirty. Otherwise,\nfuture calls to sync_inode() with the WB_SYNC_ALL flag set will fail to\nensure that the data is on the disk.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "59844a9bd73e084b0ffefc0e13226098e28c71ad",
      "tree": "7b897c2530fe7083d57755df684d1d808fb18f8b",
      "parents": [
        "0a68b0bed08eeb7ec62e0125f17856b1ccb1ea4b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 26 08:42:24 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 26 08:43:51 2010 -0400"
      },
      "message": "NFS: Fix a lock imbalance typo in nfs_access_cache_shrinker\n\nCommit 9c7e7e23371e629dbb3b341610a418cdf1c19d91 (NFS: Don\u0027t call iput() in\nnfs_access_cache_shrinker) unintentionally removed the spin unlock for the\ninode-\u003ei_lock.\n\nReported-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4be929be34f9bdeffa40d815d32d7d60d2c7f03b",
      "tree": "4d2c6e2b8ef766e565e2e050ee151de2e02081d3",
      "parents": [
        "940370fc86b920b51a34217a1facc3e9e97c2456"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon May 24 14:33:03 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 08:07:02 2010 -0700"
      },
      "message": "kernel-wide: replace USHORT_MAX, SHORT_MAX and SHORT_MIN with USHRT_MAX, SHRT_MAX and SHRT_MIN\n\n- C99 knows about USHRT_MAX/SHRT_MAX/SHRT_MIN, not\n  USHORT_MAX/SHORT_MAX/SHORT_MIN.\n\n- Make SHRT_MIN of type s16, not int, for consistency.\n\n[akpm@linux-foundation.org: fix drivers/dma/timb_dma.c]\n[akpm@linux-foundation.org: fix security/keys/keyring.c]\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9c7e7e23371e629dbb3b341610a418cdf1c19d91",
      "tree": "c211183b99860d232500bf99d12775e47c4f0f9c",
      "parents": [
        "1a81bb8a1fa62ccb9b2411ac10ce702ca4ed302a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 13 12:51:06 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:36 2010 -0400"
      },
      "message": "NFS: Don\u0027t call iput() in nfs_access_cache_shrinker\n\niput() can potentially attempt to allocate memory, so we should avoid\ncalling it in a memory shrinker. Instead, rely on the fact that iput() will\ncall nfs_access_zap_cache().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1a81bb8a1fa62ccb9b2411ac10ce702ca4ed302a",
      "tree": "7a4d29a36c2646b8cdd67d50f3b7778636e1dfbe",
      "parents": [
        "61d5eb2985b3b1d69fd53d7dc9789037c27f8d91"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 13 12:51:06 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:35 2010 -0400"
      },
      "message": "NFS: Clean up nfs_access_zap_cache()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "61d5eb2985b3b1d69fd53d7dc9789037c27f8d91",
      "tree": "6e73d0e7adcda510ec47d0cd50c57d4461e7fbdf",
      "parents": [
        "20673406534176ead9b984a84b662928110f77b1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 13 12:51:06 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:35 2010 -0400"
      },
      "message": "NFS: Don\u0027t run nfs_access_cache_shrinker() when the mask is GFP_NOFS\n\nBoth iput() and put_rpccred() might allocate memory under certain\ncircumstances, so make sure that we don\u0027t recurse and deadlock...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "93870d76fee22e887aa6e7e1fc904dbeca976928",
      "tree": "4548fe7633326a9a4e39986ea94b11a36c47f831",
      "parents": [
        "18eb884282bbaf99700ba5b60ded782807d52408"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 13 12:51:03 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:34 2010 -0400"
      },
      "message": "NFS: Read requests can use GFP_KERNEL.\n\nThere is no danger of deadlock should the allocation trigger page\nwriteback.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "18eb884282bbaf99700ba5b60ded782807d52408",
      "tree": "acdea072568b715ca56873df774e1402a882a890",
      "parents": [
        "1f4c86c0be9064ab4eebd9e67c84606c1cfeec4b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 13 12:51:02 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:34 2010 -0400"
      },
      "message": "NFS: Clean up nfs_create_request()\n\nThere is no point in looping if we\u0027re out of memory.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8535b2be5181fc3019e4150567ef53210fe3b04f",
      "tree": "ba366f5304f12876f1e45d3c2b423d12f9ec0c90",
      "parents": [
        "712a4338669d7d57f952244abb608e6ac07e39da"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 13 12:51:01 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:33 2010 -0400"
      },
      "message": "NFSv4: Don\u0027t use GFP_KERNEL allocations in state recovery\n\nWe do not want to have the state recovery thread kick off and wait for a\nmemory reclaim, since that may deadlock when the writebacks end up\nwaiting for the state recovery thread to complete.\n\nThe safe thing is therefore to use GFP_NOFS in all open, close,\ndelegation return, lock, etc. operations that may be called by the\nstate recovery thread.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9bc4e3ca46e4eb9cb434de4175c6041d00bbdca3",
      "tree": "a1677884fe5779008243a083f7a8455f43990c0a",
      "parents": [
        "dfe52c0419b8324bacd69bd28aae77e2d6ee0379"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri May 07 13:34:17 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:32 2010 -0400"
      },
      "message": "NFS: Calldata for nfs4_renew_done()\n\nI\u0027m about to change task-\u003etk_start from a jiffies value to a ktime_t\nvalue in order to make RPC RTT reporting more precise.\n\nRecently (commit dc96aef9) nfs4_renew_done() started to reference\ntask-\u003etk_start so that a jiffies value no longer had to be passed\nfrom nfs4_proc_async_renew().  This allowed the calldata to point to\nan nfs_client instead.\n\nChanging task-\u003etk_start to a ktime_t value makes it effectively\nuseless for renew timestamps, so we need to restore the pre-dc96aef9\nlogic that provided a jiffies \"start\" timestamp to nfs4_renew_done().\n\nBoth an nfs_client pointer and a timestamp need to be passed to\nnfs4_renew_done(), so create a new nfs_renewdata structure that\ncontains both, resembling what is already done for delegreturn,\nlock, and unlock.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "dfe52c0419b8324bacd69bd28aae77e2d6ee0379",
      "tree": "f9e099617bd44fd7f63d56bbc86adf30d422158b",
      "parents": [
        "a6d5ff64bae02438d914f088672cab1916153954"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri May 07 13:34:08 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:31 2010 -0400"
      },
      "message": "NFS: Squelch compiler warning in nfs_add_server_stats()\n\nClean up:\n\nfs/nfs/iostat.h: In function ‘nfs_add_server_stats’:\nfs/nfs/iostat.h:41: warning: comparison between signed and unsigned integer expressions\nfs/nfs/iostat.h:41: warning: comparison between signed and unsigned integer expressions\nfs/nfs/iostat.h:41: warning: comparison between signed and unsigned integer expressions\nfs/nfs/iostat.h:41: warning: comparison between signed and unsigned integer expressions\n\nCommit fce22848 replaced the open-coded per-cpu logic in several\nfunctions in fs/nfs/iostat.h with a single invocation of\nthis_cpu_ptr().  This macro assumes its second argument is signed,\nnot unsigned.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a6d5ff64bae02438d914f088672cab1916153954",
      "tree": "67bccbe16525ac357a99f6e5f696c5ec4cee1d88",
      "parents": [
        "0f15c53d5b1829c10dd901f37b8263aa25ecf864"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri May 07 13:33:58 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:31 2010 -0400"
      },
      "message": "NFS: Clean up fscache_uniq mount option\n\nClean up: fscache_uniq takes a string, so it should be included\nwith the other string mount option definitions, by convention.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0f15c53d5b1829c10dd901f37b8263aa25ecf864",
      "tree": "63c9b3f8505b97f7397bccf134d0c8655b33d71e",
      "parents": [
        "9605a069f83d999e60cd57dc8010708fe08291c0"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri May 07 13:33:48 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:31 2010 -0400"
      },
      "message": "NFS: Squelch compiler warning\n\nSeen with -Wextra:\n\n/home/cel/linux/fs/nfs/fscache.c: In function ‘__nfs_readpages_from_fscache’:\n/home/cel/linux/fs/nfs/fscache.c:479: warning: comparison between signed and unsigned integer expressions\n\nThe comparison implicitly converts \"int\" to \"unsigned\", making it\nsafe.  But there\u0027s no need for the implicit type conversions here, and\nthe dfprintk() already uses a \"%u\" formatter for \"npages.\"  Better to\nreduce confusion.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bb8b27e504c0f0463535fea31b42bcaa393c3fb0",
      "tree": "fbf18d599a4a1bb5b509632ad9c906db288faeb3",
      "parents": [
        "d7cf8dd01289b3c64057e38d34c2857f6633d52c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:43:06 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:30 2010 -0400"
      },
      "message": "NFSv4: Clean up the NFSv4 setclientid operation\n\nReviewed-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d7cf8dd01289b3c64057e38d34c2857f6633d52c",
      "tree": "600143a42314da064fc0b8dec236c85f2f45d16b",
      "parents": [
        "a8ce4a8f37fef0a09a1e920c2e09f67a80426c7e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:42:46 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:30 2010 -0400"
      },
      "message": "NFSv4: Allow attribute caching with \u0027noac\u0027 mounts if client holds a delegation\n\nIf the server has given us a delegation on a file, we _know_ that we can\ncache the attribute information even when the user has specified \u0027noac\u0027.\n\nReviewed-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fd86dfd2637db1aef9ebf96ba41aeedb87521e78",
      "tree": "d2a5447410d6c738db7c0be05b465d591bef8fbd",
      "parents": [
        "1b4c6065b903390067c1b49bd616db5994c0d51c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 19 19:26:23 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:29 2010 -0400"
      },
      "message": "NFSv4: Fix up the documentation for nfs_do_refmount\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1b4c6065b903390067c1b49bd616db5994c0d51c",
      "tree": "23c6526bbabab6599de6db589898e8b574481831",
      "parents": [
        "b157b06ca24514ef4b766cabb8e852c950040923"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 19 19:14:28 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:28 2010 -0400"
      },
      "message": "NFS: Replace nfsroot on-stack filehandle\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b157b06ca24514ef4b766cabb8e852c950040923",
      "tree": "646478c1a0481ed5ee20ead8313f36a5368bf4d8",
      "parents": [
        "ce587e07ba2e25b5c9d286849885b82676661f3e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 19 19:05:48 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:28 2010 -0400"
      },
      "message": "NFS: Cleanup file handle allocations in fs/nfs/super.c\n\nUse the new helper functions instead of open coding.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ce587e07ba2e25b5c9d286849885b82676661f3e",
      "tree": "5bb91822d82fa9a26f7846edcc48bf01fad4411f",
      "parents": [
        "6e94d62993cb79397856f3330577917ca79cffa2"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:52 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:28 2010 -0400"
      },
      "message": "NFS: Prevent the mount code from looping forever on broken exports\n\nKeep a global count of how many referrals that the current task has\ntraversed on a path lookup. Return ELOOP if the count exceeds\nMAX_NESTED_LINKS.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6e94d62993cb79397856f3330577917ca79cffa2",
      "tree": "cfcc0698490f9973173fcb247f6ef5c10b5d432f",
      "parents": [
        "ca7e9a0df263493bbdf76f47fd9e9ac48ad6f331"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:52 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:28 2010 -0400"
      },
      "message": "NFS: Reduce stack footprint of nfs3_proc_getacl() and nfs3_proc_setacl()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ca7e9a0df263493bbdf76f47fd9e9ac48ad6f331",
      "tree": "2bf783ccad3d6169219cac5b6751f51b31fab7ff",
      "parents": [
        "987f8dfc9862f2c7b59594089793dedeebf0cf5e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:52 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:27 2010 -0400"
      },
      "message": "NFS: Reduce stack footprint of nfs_statfs()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "987f8dfc9862f2c7b59594089793dedeebf0cf5e",
      "tree": "2aa0d3687898edcf26b81770e356a90a3358f9df",
      "parents": [
        "0ab64e0e147e45c07e33d344401cf898a6c181c0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:52 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:27 2010 -0400"
      },
      "message": "NFS: Reduce stack footprint of nfs_setattr()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0ab64e0e147e45c07e33d344401cf898a6c181c0",
      "tree": "452c7df444c680ebd5721d14e94fbc8782c6de7e",
      "parents": [
        "23a306120fcb2879ed2b814716c1cb2a8eb74f72"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:51 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:27 2010 -0400"
      },
      "message": "NFS: Reduce stack footprint of nfs4_proc_create()\n\nMove the O_EXCL open handling into _nfs4_do_open() where it belongs. Doing\nso also allows us to reuse the struct fattr from the opendata.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "23a306120fcb2879ed2b814716c1cb2a8eb74f72",
      "tree": "d2c8dfc11351be67956a095f82ee97417177f7d2",
      "parents": [
        "eb872f0c8e5c9801da05d5c2a6e402af8e27160e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:51 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:27 2010 -0400"
      },
      "message": "NFS: Reduce the stack footprint of nfs_proc_symlink()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "eb872f0c8e5c9801da05d5c2a6e402af8e27160e",
      "tree": "b9fb68d0ff9eb920471be0e292766532f250a247",
      "parents": [
        "39967ddf19ff98b6e0d7b43fe60bcbf2c254c478"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:51 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:26 2010 -0400"
      },
      "message": "NFS: Reduce the stack footprint of nfs_proc_create\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "39967ddf19ff98b6e0d7b43fe60bcbf2c254c478",
      "tree": "6667b24c063da2422680a3d4a7b8670e9ef116d6",
      "parents": [
        "d346890bea062d697e24fb4e34591428021ad011"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:50 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:26 2010 -0400"
      },
      "message": "NFS: Reduce the stack footprint of nfs_rmdir\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d346890bea062d697e24fb4e34591428021ad011",
      "tree": "9d644b18500a146c51c6e0d2f68bdb636f67fa11",
      "parents": [
        "3b14d6542d7efbec614277d1cd7d6f5b5a2be9ca"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:50 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:26 2010 -0400"
      },
      "message": "NFS: Reduce stack footprint of nfs_proc_remove()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3b14d6542d7efbec614277d1cd7d6f5b5a2be9ca",
      "tree": "9813c08c5e85a4f435997125a9ec9fc6eef9d68f",
      "parents": [
        "136f2627c932da5835e67e464e191d8c43c3f3fd"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:50 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:25 2010 -0400"
      },
      "message": "NFS: Reduce stack footprint of nfs3_proc_readlink()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "136f2627c932da5835e67e464e191d8c43c3f3fd",
      "tree": "5f6aff24fe7163a260c553f3d4899c4ef51abbf7",
      "parents": [
        "aa49b4cf7dbf45438563f0ff6a2d23a68b70a7b9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:49 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:25 2010 -0400"
      },
      "message": "NFS: Reduce the stack footprint of nfs_link()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "aa49b4cf7dbf45438563f0ff6a2d23a68b70a7b9",
      "tree": "39304ffe1812f5407dc20bc77c6dccfa2d060912",
      "parents": [
        "011fff7239eb90e33e7bebba48bf596fced06eb9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:49 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:25 2010 -0400"
      },
      "message": "NFS: Reduce stack footprint of nfs_readdir()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "011fff7239eb90e33e7bebba48bf596fced06eb9",
      "tree": "9bee14976f711a6445d766ab51651244767c6181",
      "parents": [
        "a3cba2aad9c0a63279716d377efbf37c176ed400"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:49 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:25 2010 -0400"
      },
      "message": "NFS: Reduce stack footprint of nfs3_proc_rename() and nfs4_proc_rename()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a3cba2aad9c0a63279716d377efbf37c176ed400",
      "tree": "fdd2291d67c611947bb93022ff8e2d17a093f4ae",
      "parents": [
        "c407d41a1612aa487f5a9cb5338ed7dc60fe1da2"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:49 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:24 2010 -0400"
      },
      "message": "NFS: Reduce stack footprint of nfs_revalidate_inode()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c407d41a1612aa487f5a9cb5338ed7dc60fe1da2",
      "tree": "c5ad78292ca176a223bf9ea71703a5a372118f8c",
      "parents": [
        "4f727296d2428b60138793a0a1207a4085eacf99"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:48 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:24 2010 -0400"
      },
      "message": "NFSv4: Reduce stack footprint of nfs4_proc_access() and nfs3_proc_access()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4f727296d2428b60138793a0a1207a4085eacf99",
      "tree": "52c69d21dd90164fed413925ed194866d7a11136",
      "parents": [
        "8bac9db9cf85f2518cb523bb1d69c481975c1f9a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:48 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:23 2010 -0400"
      },
      "message": "NFSv4: Reduce the stack footprint of nfs4_remote_referral_get_sb\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8bac9db9cf85f2518cb523bb1d69c481975c1f9a",
      "tree": "30c3d3cd02d34386e28f07b0fb3d172e1088cc47",
      "parents": [
        "04ffdbe2e69beb0f1745f921871fbe0f97dc4697"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:48 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:23 2010 -0400"
      },
      "message": "NFSv4: Reduce stack footprint of nfs4_get_root()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "04ffdbe2e69beb0f1745f921871fbe0f97dc4697",
      "tree": "b977a04f4f9a62bdadfc74e2a8669833d65db714",
      "parents": [
        "e1fb4d05d5a3265f1f6769bee034175f91ecc2dd"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:48 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:23 2010 -0400"
      },
      "message": "NFS: Reduce the stack footprint of nfs_follow_remote_path()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e1fb4d05d5a3265f1f6769bee034175f91ecc2dd",
      "tree": "b5a1d30b2f57e0b9c1d021ed653030fb5c699147",
      "parents": [
        "364d015e5208e4669a4ae9fab2ab104ff26bc159"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:47 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:23 2010 -0400"
      },
      "message": "NFS: Reduce the stack footprint of nfs_lookup\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "364d015e5208e4669a4ae9fab2ab104ff26bc159",
      "tree": "33d949fe10f70dda0d9ab018e6c47595c25b700b",
      "parents": [
        "fbca779a8d240d82ef1439247033fd491f81547c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:46 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:22 2010 -0400"
      },
      "message": "NFSv4: Reduce the stack footprint of try_location()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fbca779a8d240d82ef1439247033fd491f81547c",
      "tree": "10e4a7469326c63127f6d5f419dd8048fb743cff",
      "parents": [
        "a4d7f16806e98cee752006d3a8c10067a7c2aa6b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:46 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:22 2010 -0400"
      },
      "message": "NFS: Reduce the stack footprint of nfs_create_server\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a4d7f16806e98cee752006d3a8c10067a7c2aa6b",
      "tree": "b7acd9998abaa6f25edc2f40fd5ce0cd996a3934",
      "parents": [
        "815409d22df870ea0b0d86f2a3bf33c35bcef55c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:46 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:22 2010 -0400"
      },
      "message": "NFS: Reduce the stack footprint of nfs_follow_mountpoint()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "815409d22df870ea0b0d86f2a3bf33c35bcef55c",
      "tree": "99fa8d5ac56d3f14fa1313739d3f9b65176f4e8f",
      "parents": [
        "2d36bfde8565b315e624302d12da5a7c9d195522"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:46 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:21 2010 -0400"
      },
      "message": "NFSv4: Eliminate nfs4_path_walk()\n\nAll we really want is the ability to retrieve the root file handle. We no\nlonger need the ability to walk down the path, since that is now done in\nnfs_follow_remote_path().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2d36bfde8565b315e624302d12da5a7c9d195522",
      "tree": "5760ff58853027df0343c6bab0530025cd7a6fa1",
      "parents": [
        "fc54a0c65fc8cae6b0355512f0b619c1515e7d7f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:45 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:21 2010 -0400"
      },
      "message": "NFS: Add helper functions for allocating filehandles and fattr structs\n\nNFS Filehandles and struct fattr are really too large to be allocated on\nthe stack. This patch adds in a couple of helper functions to allocate them\ndynamically instead.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "17d2c0a0c4d4e074f0a2a5c0090ff6d88f5e1d44",
      "tree": "f658bdd3a88849f76dcbab16129321eacd604a5d",
      "parents": [
        "8f649c376254755f2261a693b3d48d09126218dc"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat May 01 12:37:18 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 01 12:37:18 2010 -0400"
      },
      "message": "NFS: Fix RCU issues in the NFSv4 delegation code\n\nFix a number of RCU issues in the NFSv4 delegation code.\n\n (1) delegation-\u003ecred doesn\u0027t need to be RCU protected as it\u0027s essentially an\n     invariant refcounted structure.\n\n     By the time we get to nfs_free_delegation(), the delegation is being\n     released, so no one else should be attempting to use the saved\n     credentials, and they can be cleared.\n\n     However, since the list of delegations could still be under traversal at\n     this point by such as nfs_client_return_marked_delegations(), the cred\n     should be released in nfs_do_free_delegation() rather than in\n     nfs_free_delegation().  Simply using rcu_assign_pointer() to clear it is\n     insufficient as that doesn\u0027t stop the cred from being destroyed, and nor\n     does calling put_rpccred() after call_rcu(), given that the latter is\n     asynchronous.\n\n (2) nfs_detach_delegation_locked() and nfs_inode_set_delegation() should use\n     rcu_derefence_protected() because they can only be called if\n     nfs_client::cl_lock is held, and that guards against anyone changing\n     nfsi-\u003edelegation under it.  Furthermore, the barrier imposed by\n     rcu_dereference() is superfluous, given that the spin_lock() is also a\n     barrier.\n\n (3) nfs_detach_delegation_locked() is now passed a pointer to the nfs_client\n     struct so that it can issue lockdep advice based on clp-\u003ecl_lock for (2).\n\n (4) nfs_inode_return_delegation_noreclaim() and nfs_inode_return_delegation()\n     should use rcu_access_pointer() outside the spinlocked region as they\n     merely examine the pointer and don\u0027t follow it, thus rendering unnecessary\n     the need to impose a partial ordering over the one item of interest.\n\n     These result in an RCU warning like the following:\n\n[ INFO: suspicious rcu_dereference_check() usage. ]\n---------------------------------------------------\nfs/nfs/delegation.c:332 invoked rcu_dereference_check() without protection!\n\nother info that might help us debug this:\n\nrcu_scheduler_active \u003d 1, debug_locks \u003d 0\n2 locks held by mount.nfs4/2281:\n #0:  (\u0026type-\u003es_umount_key#34){+.+...}, at: [\u003cffffffff810b25b4\u003e] deactivate_super+0x60/0x80\n #1:  (iprune_sem){+.+...}, at: [\u003cffffffff810c332a\u003e] invalidate_inodes+0x39/0x13a\n\nstack backtrace:\nPid: 2281, comm: mount.nfs4 Not tainted 2.6.34-rc1-cachefs #110\nCall Trace:\n [\u003cffffffff8105149f\u003e] lockdep_rcu_dereference+0xaa/0xb2\n [\u003cffffffffa00b4591\u003e] nfs_inode_return_delegation_noreclaim+0x5b/0xa0 [nfs]\n [\u003cffffffffa0095d63\u003e] nfs4_clear_inode+0x11/0x1e [nfs]\n [\u003cffffffff810c2d92\u003e] clear_inode+0x9e/0xf8\n [\u003cffffffff810c3028\u003e] dispose_list+0x67/0x10e\n [\u003cffffffff810c340d\u003e] invalidate_inodes+0x11c/0x13a\n [\u003cffffffff810b1dc1\u003e] generic_shutdown_super+0x42/0xf4\n [\u003cffffffff810b1ebe\u003e] kill_anon_super+0x11/0x4f\n [\u003cffffffffa009893c\u003e] nfs4_kill_super+0x3f/0x72 [nfs]\n [\u003cffffffff810b25bc\u003e] deactivate_super+0x68/0x80\n [\u003cffffffff810c6744\u003e] mntput_no_expire+0xbb/0xf8\n [\u003cffffffff810c681b\u003e] release_mounts+0x9a/0xb0\n [\u003cffffffff810c689b\u003e] put_mnt_ns+0x6a/0x79\n [\u003cffffffffa00983a1\u003e] nfs_follow_remote_path+0x5a/0x146 [nfs]\n [\u003cffffffffa0098334\u003e] ? nfs_do_root_mount+0x82/0x95 [nfs]\n [\u003cffffffffa00985a9\u003e] nfs4_try_mount+0x75/0xaf [nfs]\n [\u003cffffffffa0098874\u003e] nfs4_get_sb+0x291/0x31a [nfs]\n [\u003cffffffff810b2059\u003e] vfs_kern_mount+0xb8/0x177\n [\u003cffffffff810b2176\u003e] do_kern_mount+0x48/0xe8\n [\u003cffffffff810c810b\u003e] do_mount+0x782/0x7f9\n [\u003cffffffff810c8205\u003e] sys_mount+0x83/0xbe\n [\u003cffffffff81001eeb\u003e] system_call_fastpath+0x16/0x1b\n\nAlso on:\n\nfs/nfs/delegation.c:215 invoked rcu_dereference_check() without protection!\n [\u003cffffffff8105149f\u003e] lockdep_rcu_dereference+0xaa/0xb2\n [\u003cffffffffa00b4223\u003e] nfs_inode_set_delegation+0xfe/0x219 [nfs]\n [\u003cffffffffa00a9c6f\u003e] nfs4_opendata_to_nfs4_state+0x2c2/0x30d [nfs]\n [\u003cffffffffa00aa15d\u003e] nfs4_do_open+0x2a6/0x3a6 [nfs]\n ...\n\nAnd:\n\nfs/nfs/delegation.c:40 invoked rcu_dereference_check() without protection!\n [\u003cffffffff8105149f\u003e] lockdep_rcu_dereference+0xaa/0xb2\n [\u003cffffffffa00b3bef\u003e] nfs_free_delegation+0x3d/0x6e [nfs]\n [\u003cffffffffa00b3e71\u003e] nfs_do_return_delegation+0x26/0x30 [nfs]\n [\u003cffffffffa00b406a\u003e] __nfs_inode_return_delegation+0x1ef/0x1fe [nfs]\n [\u003cffffffffa00b448a\u003e] nfs_client_return_marked_delegations+0xc9/0x124 [nfs]\n ...\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8f649c376254755f2261a693b3d48d09126218dc",
      "tree": "818338eca6dea5c7e022a3a6df51c3b2aa9e54b7",
      "parents": [
        "be1066bbcd443a65df312fdecea7e4959adedb45"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 01 12:36:18 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 01 12:36:18 2010 -0400"
      },
      "message": "NFSv4: Fix the locking in nfs_inode_reclaim_delegation()\n\nEnsure that we correctly rcu-dereference the delegation itself, and that we\nprotect against removal while we\u0027re changing the contents.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "27fb8d7b1fe7c2fa2d7c1f243b899793e1b080e0",
      "tree": "25a8ca59a3743459bbd48674731becea89a16318",
      "parents": [
        "f80a0ca6ad8f2800453e819dafa09a0ed9e56850",
        "9699eda6bc1f708a28acb716e1477aa351362fe2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 29 10:23:44 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 29 10:23:44 2010 -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: fix memory leak in nfs_get_sb with CONFIG_NFS_V4\n  nfs: fix some issues in nfs41_proc_reclaim_complete()\n  NFS: Ensure that nfs_wb_page() waits for Pg_writeback to clear\n  NFS: Fix an unstable write data integrity race\n  nfs: testing for null instead of ERR_PTR()\n  NFS: rsize and wsize settings ignored on v4 mounts\n  NFSv4: Don\u0027t attempt an atomic open if the file is a mountpoint\n  SUNRPC: Fix a bug in rpcauth_prune_expired\n"
    },
    {
      "commit": "d9e80b7de91db05c1c4d2e5ebbfd70b3b3ba0e0f",
      "tree": "0ca15a8b9250337c810e18756422c17b5f651b08",
      "parents": [
        "1d16b0f2f3edf05f12a9e3960588e0d4854157bb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Thu Apr 29 03:10:43 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 28 20:40:03 2010 -0700"
      },
      "message": "nfs d_revalidate() is too trigger-happy with d_drop()\n\nIf dentry found stale happens to be a root of disconnected tree, we\ncan\u0027t d_drop() it; its d_hash is actually part of s_anon and d_drop()\nwould simply hide it from shrink_dcache_for_umount(), leading to\nall sorts of fun, including busy inodes on umount and oopsen after\nthat.\n\nBug had been there since at least 2006 (commit c636eb already has it),\nso it\u0027s definitely -stable fodder.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9699eda6bc1f708a28acb716e1477aa351362fe2",
      "tree": "61d6841d38f047c9cb80e2efd08acea67f80b223",
      "parents": [
        "acf82b85a70f39786e3cbb1ffed8655bcc972424"
      ],
      "author": {
        "name": "Xiaotian Feng",
        "email": "dfeng@redhat.com",
        "time": "Thu Apr 22 18:56:17 2010 +0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Apr 28 13:46:28 2010 -0400"
      },
      "message": "nfs: fix memory leak in nfs_get_sb with CONFIG_NFS_V4\n\nWith CONFIG_NFS_V4 and data version 4, nfs_get_sb will allocate memory for\nexport_path in nfs4_validate_text_mount_data, so we need to free it then.\nThis is addressed in following kmemleak report:\n\nunreferenced object 0xffff88016bf48a50 (size 16):\n  comm \"mount.nfs\", pid 22567, jiffies 4651574704 (age 175471.200s)\n  hex dump (first 16 bytes):\n    2f 6f 70 74 2f 77 6f 72 6b 00 6b 6b 6b 6b 6b a5  /opt/work.kkkkk.\n  backtrace:\n    [\u003cffffffff814b34f9\u003e] kmemleak_alloc+0x60/0xa7\n    [\u003cffffffff81102c76\u003e] kmemleak_alloc_recursive.clone.5+0x1b/0x1d\n    [\u003cffffffff811046b3\u003e] __kmalloc_track_caller+0x18f/0x1b7\n    [\u003cffffffff810e1b08\u003e] kstrndup+0x37/0x54\n    [\u003cffffffffa0336971\u003e] nfs_parse_devname+0x152/0x204 [nfs]\n    [\u003cffffffffa0336af3\u003e] nfs4_validate_text_mount_data+0xd0/0xdc [nfs]\n    [\u003cffffffffa0338deb\u003e] nfs_get_sb+0x325/0x736 [nfs]\n    [\u003cffffffff81113671\u003e] vfs_kern_mount+0xbd/0x17c\n    [\u003cffffffff81113798\u003e] do_kern_mount+0x4d/0xed\n    [\u003cffffffff81129a87\u003e] do_mount+0x787/0x7fe\n    [\u003cffffffff81129b86\u003e] sys_mount+0x88/0xc2\n    [\u003cffffffff81009b42\u003e] system_call_fastpath+0x16/0x1b\n\nSigned-off-by: Xiaotian Feng \u003cdfeng@redhat.com\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nCc: Benny Halevy \u003cbhalevy@panasas.com\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "acf82b85a70f39786e3cbb1ffed8655bcc972424",
      "tree": "99e1a7b0815aa1ca1d9196a323c9c28df185d2aa",
      "parents": [
        "ba8b06e67ed7a560b0e7c80091bcadda4f4727a5"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Thu Apr 22 11:28:39 2010 +0200"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Apr 28 13:45:12 2010 -0400"
      },
      "message": "nfs: fix some issues in nfs41_proc_reclaim_complete()\n\nThe original code passed an ERR_PTR() to rpc_put_task() and instead of\nreturning zero on success it returned -ENOMEM.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ba8b06e67ed7a560b0e7c80091bcadda4f4727a5",
      "tree": "cd737661ffb38a614697b1e055d68e7b41a7e982",
      "parents": [
        "71d0a6112a363e703e383ae5b12c492485c39701"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Apr 27 18:33:54 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Apr 27 18:33:54 2010 -0400"
      },
      "message": "NFS: Ensure that nfs_wb_page() waits for Pg_writeback to clear\n\nNeil Brown reports that he is seeing the BUG_ON(ret \u003d\u003d 0) trigger in\nnfs_page_async_flush. According to the trace in\n     https://bugzilla.novell.com/show_bug.cgi?id\u003d599628\nthe problem appears to be due to nfs_wb_page() not waiting for the\nPG_writeback flag to clear.\n\nThere is a ditto problem in nfs_wb_page_cancel()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "71d0a6112a363e703e383ae5b12c492485c39701",
      "tree": "fc22ab92565fb61a37a77f829a82fa9b8ea6497f",
      "parents": [
        "cdd29ecfcb9554132cd94b82ae8b69ba37adb3b5"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Apr 22 15:35:57 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Apr 22 15:35:57 2010 -0400"
      },
      "message": "NFS: Fix an unstable write data integrity race\n\nCommit 2c61be0a9478258f77b66208a0c4b1f5f8161c3c (NFS: Ensure that the WRITE\nand COMMIT RPC calls are always uninterruptible) exposed a race on file\nclose. In order to ensure correct close-to-open behaviour, we want to wait\nfor all outstanding background commit operations to complete.\n\nThis patch adds an inode flag that indicates if a commit operation is under\nway, and provides a mechanism to allow -\u003ewrite_inode() to wait for its\ncompletion if this is a data integrity flush.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cdd29ecfcb9554132cd94b82ae8b69ba37adb3b5",
      "tree": "c99d810b3346989b8dbd88c469aa5bd0c9871f5c",
      "parents": [
        "356e76b855bdbfd8d1c5e75bcf0c6bf0dfe83496"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Thu Apr 22 15:35:56 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Apr 22 15:35:56 2010 -0400"
      },
      "message": "nfs: testing for null instead of ERR_PTR()\n\nnfs_path() returns an ERR_PTR(), it doesn\u0027t return null.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "356e76b855bdbfd8d1c5e75bcf0c6bf0dfe83496",
      "tree": "426179d91ee28629e781496ae90ececad1405422",
      "parents": [
        "1f063d2cdf332a8a5722006b1345d15d16007c6e"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Apr 22 15:35:56 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Apr 22 15:35:56 2010 -0400"
      },
      "message": "NFS: rsize and wsize settings ignored on v4 mounts\n\nNFSv4 mounts ignore the rsize and wsize mount options, and always use\nthe default transfer size for both.  This seems to be because all\nNFSv4 mounts are now cloned, and the cloning logic doesn\u0027t copy the\nrsize and wsize settings from the parent nfs_server.\n\nI tested Fedora\u0027s 2.6.32.11-99 and it seems to have this problem as\nwell, so I\u0027m guessing that .33, .32, and perhaps older kernels have\nthis issue as well.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nCc: Stable \u003cstable@kernel.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1f063d2cdf332a8a5722006b1345d15d16007c6e",
      "tree": "4295c3fd46390f12e1ed2354998a91007f85fb13",
      "parents": [
        "3d7b08945e54a3a5358d5890240619a013cb7388"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Apr 22 15:35:55 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Apr 22 15:35:55 2010 -0400"
      },
      "message": "NFSv4: Don\u0027t attempt an atomic open if the file is a mountpoint\n\nFix https://bugzilla.kernel.org/show_bug.cgi?id\u003d15789\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0df5dd4aae211edeeeb84f7f84f6d093406d7c22",
      "tree": "6e58bc436b873cf582f20cf0dbd21461c0a56837",
      "parents": [
        "2c61be0a9478258f77b66208a0c4b1f5f8161c3c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Apr 11 16:48:44 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 12 07:55:15 2010 -0400"
      },
      "message": "NFSv4: fix delegated locking\n\nArnaud Giersch reports that NFSv4 locking is broken when we hold a\ndelegation since commit 8e469ebd6dc32cbaf620e134d79f740bf0ebab79 (NFSv4:\nDon\u0027t allow posix locking against servers that don\u0027t support it).\n\nAccording to Arnaud, the lock succeeds the first time he opens the file\n(since we cannot do a delegated open) but then fails after we start using\ndelegated opens.\n\nThe following patch fixes it by ensuring that locking behaviour is\ngoverned by a per-filesystem capability flag that is initially set, but\ngets cleared if the server ever returns an OPEN without the\nNFS4_OPEN_RESULT_LOCKTYPE_POSIX flag being set.\n\nReported-by: Arnaud Giersch \u003carnaud.giersch@iut-bm.univ-fcomte.fr\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "2c61be0a9478258f77b66208a0c4b1f5f8161c3c",
      "tree": "84654744fc5f43f1b21f8fa484aba0a15787d5df",
      "parents": [
        "a6305ddb080fb483ca41ca56cacb6f96089f0c8e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 09 19:54:50 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 09 19:54:50 2010 -0400"
      },
      "message": "NFS: Ensure that the WRITE and COMMIT RPC calls are always uninterruptible\n\nWe always want to ensure that WRITE and COMMIT completes, whether or not\nthe user presses ^C. Do this by making the call asynchronous, and allowing\nthe user to do an interruptible wait for rpc_task completion.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a6305ddb080fb483ca41ca56cacb6f96089f0c8e",
      "tree": "82c41752da42726ad1d7ed27203acbf06892dbaa",
      "parents": [
        "b80c3cb628f0ebc241b02e38dd028969fb8026a2"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 09 19:07:08 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 09 19:08:17 2010 -0400"
      },
      "message": "NFS: Fix a race with the new commit code\n\nThis patch fixes a race which occurs due to the fact that we release the\nPG_writeback flag while still holding the nfs_page locked.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b80c3cb628f0ebc241b02e38dd028969fb8026a2",
      "tree": "12b0b9a7d8c4dbac5ab17b5cef9f3d5e32df16b1",
      "parents": [
        "1544fa0f7a46241582abc48f07b74f3d846379e4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 09 19:07:07 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 09 19:08:17 2010 -0400"
      },
      "message": "NFS: Ensure that writeback_single_inode() calls write_inode() when syncing\n\nSince writeback_single_inode() checks the inode-\u003ei_state flags _before_ it\nflushes out the data, we need to ensure that the I_DIRTY_DATASYNC flag is\nalready set. Otherwise we risk not seeing a call to write_inode(), which\nagain means that we break fsync() et al...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1544fa0f7a46241582abc48f07b74f3d846379e4",
      "tree": "2557435df56c5beadf9ad8c3dabc93b07a78aed9",
      "parents": [
        "80e60639f1b7c121a7fea53920c5a4b94009361a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 25 13:54:49 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 09 19:08:16 2010 -0400"
      },
      "message": "NFS: Fix the mode calculation in nfs_find_open_context\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "80e60639f1b7c121a7fea53920c5a4b94009361a",
      "tree": "ee7f01512859dd5d5ff5d46b37a79d88bfc3af4c",
      "parents": [
        "0eddb519b9127c73d53db4bf3ec1d45b13f844d1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 25 13:51:05 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 09 19:08:16 2010 -0400"
      },
      "message": "NFSv4: Fall back to ordinary lookup if nfs4_atomic_open() returns EISDIR\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "04287f975e68038051eb9c79896866d36610b8e0",
      "tree": "e87af9a47942a187a06b63aa3600511f4bc11ad8",
      "parents": [
        "48de8cb7847d040c8892701c1ff3c55eff1f46b4"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Thu Apr 08 00:06:07 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 07 16:10:16 2010 -0700"
      },
      "message": "Have nfs -\u003ed_revalidate() report errors properly\n\n\tIf nfs atomic open implementation ends up doing open request from\n-\u003ed_revalidate() codepath and gets an error from server, return that error\nto caller explicitly and don\u0027t bother with lookup_instantiate_filp() at all.\n-\u003ed_revalidate() can return an error itself just fine...\n\nSee\n\thttp://bugzilla.kernel.org/show_bug.cgi?id\u003d15674\n\thttp://marc.info/?l\u003dlinux-kernel\u0026m\u003d126988782722711\u0026w\u003d2\n\nfor original report.\n\nReported-by: Daniel J Blueman \u003cdaniel.blueman@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "556ae3bb32cabe483375b857dda1322384c57b65",
      "tree": "bad9e8bbf7dbb8d194346c8904dcfe172a94c7f0",
      "parents": [
        "f1f0abe192a72e75d7c59972e30784d043fd8d73"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Sun Mar 21 12:10:36 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 22 05:34:13 2010 -0400"
      },
      "message": "NFS: don\u0027t try to decode GETATTR if DELEGRETURN returned error\n\nThe reply parsing code attempts to decode the GETATTR response even if\nthe DELEGRETURN portion of the compound returned an error. The GETATTR\nresponse won\u0027t actually exist if that\u0027s the case and we\u0027re asking the\nparser to read past the end of the response.\n\nThis bug is fairly benign. The parser catches this without reading past\nthe end of the response and decode_getfattr returns -EIO. Earlier\nkernels however had decode_op_hdr using the READ_BUF macro, and this\nbug would make this printk pop any time the client got an error from\na delegreturn:\n\nkernel: decode_op_hdr: reply buffer overflowed in line XXXX\n\nMore recent kernels seem to have replaced this printk with a dprintk.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d812e575822a2b7ab1a7cadae2571505ec6ec2bd",
      "tree": "b94dad3a91d968a7851b65ce9f3f4960d9d99d6b",
      "parents": [
        "fc7f99cf36ebae853639dabb43bc2f0098c59aef"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 19 13:55:17 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 19 13:55:17 2010 -0400"
      },
      "message": "NFS: Prevent another deadlock in nfs_release_page()\n\nWe should not attempt to free the page if __GFP_FS is not set. Otherwise we\ncan deadlock as per\n\n  http://bugzilla.kernel.org/show_bug.cgi?id\u003d15578\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "cfbc0683af235106e7dabe92003870b82ad6f0ba",
      "tree": "6668f249999c9fde9d6f97e6307e414159bacfcf",
      "parents": [
        "bb6fbc4548b9ae7ebbd06ef72f00229df259d217"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Mar 11 11:20:17 2010 +1100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 15 15:37:45 2010 -0400"
      },
      "message": "NFS: ensure bdi_unregister is called on mount failure.\n\nbdi_unregister is called by nfs_put_super which is only called by\ngeneric_shutdown_super if -\u003es_root is not NULL.  So if we error out\nin a circumstance where we called nfs_bdi_register (i.e. server !\u003d\nNULL) but have not set s_root, then we need to call bdi_unregister\nexplicitly in nfs_get_sb and various other *_get_sb() functions.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bb6fbc4548b9ae7ebbd06ef72f00229df259d217",
      "tree": "8125009a70bda766ac27fd4cb4368b04816f7662",
      "parents": [
        "b4d2314bb88b07e5a04e6c75b442a1dfcd60e340"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 11 09:19:35 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 11 09:19:35 2010 -0500"
      },
      "message": "NFS: Avoid a deadlock in nfs_release_page\n\nJ.R. Okajima reports the following deadlock:\n\nINFO: task kswapd0:305 blocked for more than 120 seconds.\n\"echo 0 \u003e /proc/sys/kernel/hung_task_timeout_secs\" disables this message.\nkswapd0       D 0000000000000001     0   305      2 0x00000000\n ffff88001f21d4f0 0000000000000046 ffff88001fdea680 ffff88001f21c000\n ffff88001f21dfd8 ffff88001f21c000 ffff88001f21dfd8 ffff88001f21dfd8\n ffff88001fdea040 0000000000014c00 0000000000000001 ffff88001fdea040\nCall Trace:\n [\u003cffffffff8146155d\u003e] io_schedule+0x4d/0x70\n [\u003cffffffff810d2be5\u003e] sync_page+0x65/0xa0\n [\u003cffffffff81461b12\u003e] __wait_on_bit_lock+0x52/0xb0\n [\u003cffffffff810d2b80\u003e] ? sync_page+0x0/0xa0\n [\u003cffffffff810d2b64\u003e] __lock_page+0x64/0x70\n [\u003cffffffff81070ce0\u003e] ? wake_bit_function+0x0/0x40\n [\u003cffffffff810df1d4\u003e] truncate_inode_pages_range+0x344/0x4a0\n [\u003cffffffff810df340\u003e] truncate_inode_pages+0x10/0x20\n [\u003cffffffff8112cbfe\u003e] generic_delete_inode+0x15e/0x190\n [\u003cffffffff8112cc8d\u003e] generic_drop_inode+0x5d/0x80\n [\u003cffffffff8112bb88\u003e] iput+0x78/0x80\n [\u003cffffffff811bc908\u003e] nfs_dentry_iput+0x38/0x50\n [\u003cffffffff811285f4\u003e] dentry_iput+0x84/0x110\n [\u003cffffffff811286ae\u003e] d_kill+0x2e/0x60\n [\u003cffffffff8112912a\u003e] dput+0x7a/0x170\n [\u003cffffffff8111e925\u003e] path_put+0x15/0x40\n [\u003cffffffff811c3a44\u003e] __put_nfs_open_context+0xa4/0xb0\n [\u003cffffffff811cb5d0\u003e] ? nfs_free_request+0x0/0x50\n [\u003cffffffff811c3b0b\u003e] put_nfs_open_context+0xb/0x10\n [\u003cffffffff811cb5f9\u003e] nfs_free_request+0x29/0x50\n [\u003cffffffff81234b7e\u003e] kref_put+0x8e/0xe0\n [\u003cffffffff811cb594\u003e] nfs_release_request+0x14/0x20\n [\u003cffffffff811cf769\u003e] nfs_find_and_lock_request+0x89/0xa0\n [\u003cffffffff811d1180\u003e] nfs_wb_page+0x80/0x110\n [\u003cffffffff811c0770\u003e] nfs_release_page+0x70/0x90\n [\u003cffffffff810d18ee\u003e] try_to_release_page+0x5e/0x80\n [\u003cffffffff810e1178\u003e] shrink_page_list+0x638/0x860\n [\u003cffffffff810e19de\u003e] shrink_zone+0x63e/0xc40\n\nWe can fix this by making the call to put_nfs_open_context() happen when we\nactually remove the write request from the inode (which is done by the\nnfsiod thread in this case).\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "b4d2314bb88b07e5a04e6c75b442a1dfcd60e340",
      "tree": "9727944bf30a47cf02f9b9547adcaeafeee25843",
      "parents": [
        "49697ee79242d5f8ac88f1ebc62e583d16bcc687"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 10 15:21:44 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 10 15:21:44 2010 -0500"
      },
      "message": "NFSv4: Don\u0027t ignore the NFS_INO_REVAL_FORCED flag in nfs_revalidate_inode()\n\nIf the NFS_INO_REVAL_FORCED flag is set, that means that we don\u0027t yet have\nan up to date attribute cache. Even if we hold a delegation, we must\nput a GETATTR on the wire.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "49697ee79242d5f8ac88f1ebc62e583d16bcc687",
      "tree": "9b607ce2c3c6a4d874f201b534b13038983af28e",
      "parents": [
        "7dd08a570dcf45d52155996fee688405635ee481"
      ],
      "author": {
        "name": "Steve Dickson",
        "email": "SteveD@redhat.com",
        "time": "Tue Oct 13 16:07:33 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 08 14:56:42 2010 -0500"
      },
      "message": "nfs4: Make the v4 callback service hidden\n\nTo avoid hangs in the svc_unregister(), on version 4 mounts\n(and unmounts), when rpcbind is not running, make the nfs4 callback\nprogram an \u0027hidden\u0027 service by setting the \u0027vs_hidden\u0027 flag in the\nnfs4_callback_version structure.\n\nSigned-off-by: Steve Dickson \u003csteved@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7dd08a570dcf45d52155996fee688405635ee481",
      "tree": "7458eddbaabf695fbaadbbc35d7deb71bfa45ab5",
      "parents": [
        "5fe46e9d733f19a880ef7e516002bd4c2b833e14"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Sat Mar 06 15:02:22 2010 +0300"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 08 14:10:00 2010 -0500"
      },
      "message": "nfs: fix unlikely memory leak\n\nI\u0027ll admit that it\u0027s unlikely for the first allocation to fail and\nthe second one to succeed.  I won\u0027t be offended if you ignore this\npatch.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "05c5cb31ec47cacf38db56d9efaa37ca9d473132",
      "tree": "03f900679819abd8700d5ea93c22e3a59d3af7ca",
      "parents": [
        "4582a30c2fdca5d2b40f63a20ea082b93230ff2b",
        "4ea41e2de5bba756858bb40f964e3490b6d1a25c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:31:38 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:31:38 2010 -0800"
      },
      "message": "Merge branch \u0027for-2.6.34\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.34\u0027 of git://linux-nfs.org/~bfields/linux: (22 commits)\n  nfsd4: fix minor memory leak\n  svcrpc: treat uid\u0027s as unsigned\n  nfsd: ensure sockets are closed on error\n  Revert \"sunrpc: move the close processing after do recvfrom method\"\n  Revert \"sunrpc: fix peername failed on closed listener\"\n  sunrpc: remove unnecessary svc_xprt_put\n  NFSD: NFSv4 callback client should use RPC_TASK_SOFTCONN\n  xfs_export_operations.commit_metadata\n  commit_metadata export operation replacing nfsd_sync_dir\n  lockd: don\u0027t clear sm_monitored on nsm_reboot_lookup\n  lockd: release reference to nsm_handle in nlm_host_rebooted\n  nfsd: Use vfs_fsync_range() in nfsd_commit\n  NFSD: Create PF_INET6 listener in write_ports\n  SUNRPC: NFS kernel APIs shouldn\u0027t return ENOENT for \"transport not found\"\n  SUNRPC: Bury \"#ifdef IPV6\" in svc_create_xprt()\n  NFSD: Support AF_INET6 in svc_addsock() function\n  SUNRPC: Use rpc_pton() in ip_map_parse()\n  nfsd: 4.1 has an rfc number\n  nfsd41: Create the recovery entry for the NFSv4.1 client\n  nfsd: use vfs_fsync for non-directories\n  ...\n"
    },
    {
      "commit": "3fa04ecd72780da31ba8b329e148179bc24a9c7d",
      "tree": "f5d462fd4aee086952d18f159f737c450ab46b3b",
      "parents": [
        "180b62a3d837613fcac3ce89576526423926c3c3",
        "1cda707d52e51a6cafac0aef12d2bd7052d572e6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:46:18 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:46:18 2010 -0500"
      },
      "message": "Merge branch \u0027writeback-for-2.6.34\u0027 into nfs-for-2.6.34\n"
    },
    {
      "commit": "1cda707d52e51a6cafac0aef12d2bd7052d572e6",
      "tree": "7a63b005631cca98f62ea199fef739eddce85d32",
      "parents": [
        "5cf95214ccb915591e2214f81de4659302d3e452"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 17:03:30 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:56 2010 -0500"
      },
      "message": "NFS: Remove requirement for inode-\u003ei_mutex from nfs_invalidate_mapping\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5cf95214ccb915591e2214f81de4659302d3e452",
      "tree": "3afcc0d8db911b117a3537846d81d5a5172827cc",
      "parents": [
        "7f2f12d963e7c33a93bfb0b22f0178eb1e6a4196"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 17:03:29 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:56 2010 -0500"
      },
      "message": "NFS: Clean up nfs_sync_mapping\n\nRemove the redundant call to filemap_write_and_wait().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7f2f12d963e7c33a93bfb0b22f0178eb1e6a4196",
      "tree": "cfc2694fd38f40bc22d22c3ef228f871ed827fe2",
      "parents": [
        "acdc53b2146c7ee67feb1f02f7bc3020126514b8"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 17:03:28 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:55 2010 -0500"
      },
      "message": "NFS: Simplify nfs_wb_page()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "acdc53b2146c7ee67feb1f02f7bc3020126514b8",
      "tree": "3d8b087e8526c4caed87229fe12c2a2b261dd0a5",
      "parents": [
        "c988950eb6dd6f8e6d98503ca094622729e9aa13"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 17:03:26 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:55 2010 -0500"
      },
      "message": "NFS: Replace __nfs_write_mapping with sync_inode()\n\nNow that we have correct COMMIT semantics in writeback_single_inode, we can\nreduce and simplify nfs_wb_all(). Also replace nfs_wb_nocommit() with a\ncall to filemap_write_and_wait(), which doesn\u0027t need to hold the\ninode-\u003ei_mutex.\n\nWith that done, we can eliminate nfs_write_mapping() altogether.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c988950eb6dd6f8e6d98503ca094622729e9aa13",
      "tree": "5a5b34050d4f20909e7378108aa131e615ef52cd",
      "parents": [
        "2928db1ffeacc9717c2d5c230d450bcc377b3ae9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 17:03:21 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:55 2010 -0500"
      },
      "message": "NFS: Simplify nfs_wb_page_cancel()\n\nIn all cases we should be able to just remove the request and call\ncancel_dirty_page().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2928db1ffeacc9717c2d5c230d450bcc377b3ae9",
      "tree": "c0dea3d26d45c3ea1a3602984ed4738b93373f67",
      "parents": [
        "5bad5abec4058c5214bfc72cec418348d6747977"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 17:03:18 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:54 2010 -0500"
      },
      "message": "NFS: Ensure inode is always marked I_DIRTY_DATASYNC, if it has unstable pages\n\nSince nfs_scan_list() doesn\u0027t wait for locked pages, we have a race in\nwhich it is possible to end up with an inode that needs to send a COMMIT,\nbut which does not have the I_DIRTY_DATASYNC flag set.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5bad5abec4058c5214bfc72cec418348d6747977",
      "tree": "dab4b4916a3709632da7d3f43df63a5b8601414c",
      "parents": [
        "420e3646bb7d93a571734034249fbb1ae1a7a5c7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 17:02:24 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:54 2010 -0500"
      },
      "message": "NFS: Run COMMIT as an asynchronous RPC call when wbc-\u003efor_background is set\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "420e3646bb7d93a571734034249fbb1ae1a7a5c7",
      "tree": "dc3328f6df5769e275253c23d862cb0a16ab50f1",
      "parents": [
        "ff778d02bf867e1733a09b34ad6dbb723b024814"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 17:00:02 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:54 2010 -0500"
      },
      "message": "NFS: Reduce the number of unnecessary COMMIT calls\n\nIf the caller is doing a non-blocking flush, and there are still writebacks\npending on the wire, we can usually defer the COMMIT call until those\nwrites are done.\n\nAlso ensure that we honour the wbc-\u003enonblocking flag.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ff778d02bf867e1733a09b34ad6dbb723b024814",
      "tree": "d22e33628b93f31c08089a3bf0ec4cc00a409b7a",
      "parents": [
        "8fc795f703c5138e1a8bfb88c69f52632031aa6a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 16:53:39 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:54 2010 -0500"
      },
      "message": "NFS: Add a count of the number of unstable writes carried by an inode\n\nIn order to know when we should do opportunistic commits of the unstable\nwrites, when the VM is doing a background flush, we add a field to count\nthe number of unstable writes.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8fc795f703c5138e1a8bfb88c69f52632031aa6a",
      "tree": "aed975562fe5557ff552bc0fe45b5d2b6f5e56c9",
      "parents": [
        "9467c4fdd66f6810cecef0f1173330f3c6e67d45"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 16:46:56 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:53 2010 -0500"
      },
      "message": "NFS: Cleanup - move nfs_write_inode() into fs/nfs/write.c\n\nThe sole purpose of nfs_write_inode is to commit unstable writes, so\nmove it into fs/nfs/write.c, and make nfs_commit_inode static.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a9185b41a4f84971b930c519f0c63bd450c4810d",
      "tree": "268cf4e206cca12fb9e1dd68984e7c190e465b46",
      "parents": [
        "26821ed40b4230259e770c9911180f38fcaa6f59"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Mar 05 09:21:37 2010 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 05 13:25:52 2010 -0500"
      },
      "message": "pass writeback_control to -\u003ewrite_inode\n\nThis gives the filesystem more information about the writeback that\nis happening.  Trond requested this for the NFS unstable write handling,\nand other filesystems might benefit from this too by beeing able to\ndistinguish between the different callers in more detail.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "26821ed40b4230259e770c9911180f38fcaa6f59",
      "tree": "40cd0fed705ec59dd3c909b96452bae1fc532796",
      "parents": [
        "64ba9926759792cf7b95f823402e2781edd1b5d4"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Mar 05 09:21:21 2010 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 05 13:25:10 2010 -0500"
      },
      "message": "make sure data is on disk before calling -\u003ewrite_inode\n\nSimilar to the fsync issue fixed a while ago in commit\n2daea67e966dc0c42067ebea015ddac6834cef88 we need to write for data to\nactually hit the disk before writing out the metadata to guarantee\ndata integrity for filesystems that modify the inode in the data I/O\ncompletion path.  Currently XFS and NFS handle this manually, and AFS\nhas a write_inode method that does nothing but waiting for data, while\nothers are possibly missing out on this.\n\nFortunately this change has a lot less impact than the fsync change\nas none of the write_inode methods starts data writeout of any form\nby itself.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4ea41e2de5bba756858bb40f964e3490b6d1a25c",
      "tree": "51a688be321dd42f80d8a0c966eb6a60408d50b3",
      "parents": [
        "8d75da8afd068fa58b35e69c7c8c46770d9e7a98",
        "398007f863a4af2b4a5a07219c5a617f1a098115"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Thu Mar 04 12:03:16 2010 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Thu Mar 04 12:04:51 2010 -0500"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs into for-2.6.34-incoming\n\nResolve merge conflict in fs/xfs/linux-2.6/xfs_export.c.\n"
    },
    {
      "commit": "0f2cc4ecd81dc1917a041dc93db0ada28f8356fa",
      "tree": "f128b50f48f50f0cda6d2b20b53e9ad6e2dfded3",
      "parents": [
        "1fae4cfb97302289bb5df6a8195eb28385d0b002",
        "9643f5d94aadd47a5fa9754fb60f2c957de05903"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 04 08:15:33 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 04 08:15:33 2010 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (52 commits)\n  init: Open /dev/console from rootfs\n  mqueue: fix typo \"failues\" -\u003e \"failures\"\n  mqueue: only set error codes if they are really necessary\n  mqueue: simplify do_open() error handling\n  mqueue: apply mathematics distributivity on mq_bytes calculation\n  mqueue: remove unneeded info-\u003emessages initialization\n  mqueue: fix mq_open() file descriptor leak on user-space processes\n  fix race in d_splice_alias()\n  set S_DEAD on unlink() and non-directory rename() victims\n  vfs: add NOFOLLOW flag to umount(2)\n  get rid of -\u003emnt_parent in tomoyo/realpath\n  hppfs can use existing proc_mnt, no need for do_kern_mount() in there\n  Mirror MS_KERNMOUNT in -\u003emnt_flags\n  get rid of useless vfsmount_lock use in put_mnt_ns()\n  Take vfsmount_lock to fs/internal.h\n  get rid of insanity with namespace roots in tomoyo\n  take check for new events in namespace (guts of mounts_poll()) to namespace.c\n  Don\u0027t mess with generic_permission() under -\u003ed_lock in hpfs\n  sanitize const/signedness for udf\n  nilfs: sanitize const/signedness in dealing with -\u003ed_name.name\n  ...\n\nFix up fairly trivial (famous last words...) conflicts in\ndrivers/infiniband/core/uverbs_main.c and security/tomoyo/realpath.c\n"
    },
    {
      "commit": "f694869709cc39a5fbde21aa40f22999ddad0e6e",
      "tree": "ae80e04b5577f86dadcb8361f1c754e667e6dc2d",
      "parents": [
        "6eae7974d0490a9dbc3091f702ea1650871652a9"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 30 13:51:04 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 03 14:07:56 2010 -0500"
      },
      "message": "a couple of mntget+dget -\u003e path_get in nfs4proc\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6eae7974d0490a9dbc3091f702ea1650871652a9",
      "tree": "0882fbc397ee3b54d12a78b256354fc9f2b4cc96",
      "parents": [
        "2096f759abcb42200a81d776f597362fd9265024"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 30 13:44:07 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 03 14:07:56 2010 -0500"
      },
      "message": "Switch alloc_nfs_open_context() to struct path\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0a135ba14d71fb84c691a5386aff5049691fe6d7",
      "tree": "adb1de887dd6839d69d2fc16ffa2a10ff63298fa",
      "parents": [
        "4850f524b2c4c8a4e9f8ef4dd9c7c4afde2f2b2c",
        "a29d8b8e2d811a24bbe49215a0f0c536b72ebc18"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 03 07:34:18 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 03 07:34:18 2010 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu:\n  percpu: add __percpu sparse annotations to what\u0027s left\n  percpu: add __percpu sparse annotations to fs\n  percpu: add __percpu sparse annotations to core kernel subsystems\n  local_t: Remove leftover local.h\n  this_cpu: Remove pageset_notifier\n  this_cpu: Page allocator conversion\n  percpu, x86: Generic inc / dec percpu instructions\n  local_t: Move local.h include to ringbuffer.c and ring_buffer_benchmark.c\n  module: Use this_cpu_xx to dynamically allocate counters\n  local_t: Remove cpu_local_xx macros\n  percpu: refactor the code in pcpu_[de]populate_chunk()\n  percpu: remove compile warnings caused by __verify_pcpu_ptr()\n  percpu: make accessors check for percpu pointer in sparse\n  percpu: add __percpu for sparse.\n  percpu: make access macros universal\n  percpu: remove per_cpu__ prefix.\n"
    },
    {
      "commit": "180b62a3d837613fcac3ce89576526423926c3c3",
      "tree": "cff928b1125667b2bb7d4df569a88b01e8c12091",
      "parents": [
        "ebed9203b68a4f333ce5d17e874b26c3afcfeff1"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Tue Mar 02 13:19:36 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 02 13:45:33 2010 -0500"
      },
      "message": "nfs41 fix NFS4ERR_CLID_INUSE for exchange id\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ebed9203b68a4f333ce5d17e874b26c3afcfeff1",
      "tree": "ec0c24396061eb662594a3b879acc760e41532b7",
      "parents": [
        "9fcfe0c83c3b04a759cde6b8c5f961237f17808b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 02 13:06:22 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 02 13:06:22 2010 -0500"
      },
      "message": "NFS: Fix an allocation-under-spinlock bug\n\nsunrpc_cache_update() will always call detail-\u003eupdate() from inside the\ndetail-\u003ehash_lock, so it cannot allocate memory.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "0f79fd6f5c52e05918e44996b0a1b18383d0fbc2",
      "tree": "480eebbdc554dfacdfd5da1897e6f704ab14bd79",
      "parents": [
        "0851de06174e9800e76b26e4be0ca94294c09c8c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 02 13:06:21 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 02 13:06:21 2010 -0500"
      },
      "message": "NFSv4.1: Various fixes to the sequence flag error handling\n\nEnsure that we change the EXCHANGE_ID verifier (i.e. clp-\u003ecl_boot_time)\nwhen we want to reset all state. This is mainly needed when the server\ntells us that it is revoking our open or lock stateids.\n\nHandle revoking of recallable state by expiring the delegations.\n\nHandle callback path issues by expiring the delegations and then resetting\nthe session.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0851de06174e9800e76b26e4be0ca94294c09c8c",
      "tree": "4049cd2aaa462eb0f4d206d3f8a07afa13f2c96d",
      "parents": [
        "7135840fc74699513d50e0c9c64922f2d38aa5e3"
      ],
      "author": {
        "name": "Alexandros Batsakis",
        "email": "batsakis@netapp.com",
        "time": "Fri Feb 05 03:45:06 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 02 13:00:03 2010 -0500"
      },
      "message": "nfs4: renewd renew operations should take/put a client reference\n\nrenewd sends RENEW requests to the NFS server in order to renew state.\nAs the request is asynchronous, renewd should take a reference to the\nnfs_client to prevent concurrent umounts from freeing the client\n\nSigned-off-by: Alexandros Batsakis \u003cbatsakis@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7135840fc74699513d50e0c9c64922f2d38aa5e3",
      "tree": "565b03cebb1bff5fde1cc54418eb56d54e5bd743",
      "parents": [
        "dc96aef96a75348b4d1b01c4c0429ab52780683e"
      ],
      "author": {
        "name": "Alexandros Batsakis",
        "email": "batsakis@netapp.com",
        "time": "Fri Feb 05 03:45:05 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 02 12:54:30 2010 -0500"
      },
      "message": "nfs41: renewd sequence operations should take/put client reference\n\nrenewd sends SEQUENCE requests to the NFS server in order to renew state.\nAs the request is asynchronous, renewd should take a reference to the\nnfs_client to prevent concurrent umounts from freeing the session/client\n\nSigned-off-by: Alexandros Batsakis \u003cbatsakis@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "dc96aef96a75348b4d1b01c4c0429ab52780683e",
      "tree": "1bd4755b97367a8db0e2ea949cb3a4fd84ec3a66",
      "parents": [
        "888ef2e3f8b7b8daeb031bfb4ad1fd4fa817e193"
      ],
      "author": {
        "name": "Alexandros Batsakis",
        "email": "batsakis@netapp.com",
        "time": "Fri Feb 05 03:45:04 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 02 12:44:07 2010 -0500"
      },
      "message": "nfs: prevent backlogging of renewd requests\n\nIf the renewd send queue gets backlogged (e.g., if the server goes down),\nwe will keep filling the queue with periodic RENEW/SEQUENCE requests.\n\nThis patch schedules a new renewd request if and only if the previous one\nreturns (either success or failure)\n\nSigned-off-by: Alexandros Batsakis \u003cbatsakis@netapp.com\u003e\n[Trond.Myklebust@netapp.com: moved nfs4_schedule_state_renewal() into\nseparate nfs4_renew_release() and nfs41_sequence_release() callbacks\nto ensure correct behaviour on call setup failure]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "888ef2e3f8b7b8daeb031bfb4ad1fd4fa817e193",
      "tree": "d50044d998e636232f1110324d6485a92c20daf2",
      "parents": [
        "f895c53f8ace3c3e49ebf9def90e63fc6d46d2bf"
      ],
      "author": {
        "name": "Alexandros Batsakis",
        "email": "batsakis@netapp.com",
        "time": "Fri Feb 05 03:45:03 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 02 12:16:12 2010 -0500"
      },
      "message": "nfs: kill renewd before clearing client minor version\n\nrenewd should be synchronously killed before we destroy the session in\nnfs4_clear_minor_version\n\nSigned-off-by: Alexandros Batsakis \u003cbatsakis@netapp.com\u003e\n[Trond.Myklebust@netapp.com: clean up to remove \u0027unused function\nwarning when !CONFIG_NFS_V4]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4912002fffa377e66c5caefc2c311732a4ad5fb8",
      "tree": "52b9028af4886dcc7507c121dd27d8b9a143728a",
      "parents": [
        "98723153dc32106e5be701da15551853c9f785a9"
      ],
      "author": {
        "name": "Christian Kujau",
        "email": "lists@nerdbynature.de",
        "time": "Fri Feb 26 17:25:14 2010 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 26 17:22:35 2010 -0800"
      },
      "message": "Remove EXPERIMENTAL from NFS_FSCACHE\n\nThere\u0027s currently an open Ubuntu bug[0], with the intent to compile NFS_FSCACHE\n(and possibly AFS_FSCACHE, 9P_FSCACHE) into the standard Ubuntu kernel.\nHowever, since *_FSCACHE still depends on EXPERIMENTAL, this won\u0027t happen.\n\nAs Arjan van de Ven pointed out[1], the EXPERIMENTAL flag doesn\u0027t mean that\nmuch any more, I propose the following patch to fs/nfs/Kconfig.  I\u0027d do the\nsame for fs/9p/Kconfig and fs/afs/Kconfig, but as I did not test 9p or AFS, I\nfeel it would not be appropriate for me to remove the flag.\n\n[0] https://bugs.launchpad.net/ubuntu/+source/linux/+bug/440522/comments/5\n[1] http://lkml.org/lkml/2010/1/23/145\n\nSigned-off-by: Christian Kujau \u003clists@nerdbynature.de\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "003cb608a2533d0927a83bc4e07e46d7a622eda9",
      "tree": "19347ffcec1c09cda9c4fd01addd8797cf8e31c4",
      "parents": [
        "43cf38eb5cea91245502df3fcee4dbfc1c74dd1c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 02 14:39:01 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 17 11:17:38 2010 +0900"
      },
      "message": "percpu: add __percpu sparse annotations to fs\n\nAdd __percpu sparse annotations to fs.\n\nThese annotations are to make sparse consider percpu variables to be\nin a different address space and warn if accessed without going\nthrough percpu accessors.  This patch doesn\u0027t affect normal builds.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "65d269538a1129495ac45a14a777cd11cfe881d8",
      "tree": "2bdc886ed8cfc18fe6ee62ac1c86d7c7360ca649",
      "parents": [
        "7d0bab9dfecb3717f7e704b60a9f11631cb6636e"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Feb 15 12:19:53 2010 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 15 19:53:43 2010 -0800"
      },
      "message": "NFS: Too many GETATTR and ACCESS calls after direct I/O\n\nThe cached read and write paths initialize fattr-\u003etime_start in their\nsetup procedures.  The value of fattr-\u003etime_start is propagated to\nread_cache_jiffies by nfs_update_inode().  Subsequent calls to\nnfs_attribute_timeout() will then use a good time stamp when\ncomputing the attribute cache timeout, and squelch unneeded GETATTR\ncalls.\n\nSince the direct I/O paths erroneously leave the inode\u0027s\nfattr-\u003etime_start field set to zero, read_cache_jiffies for that inode\nis set to zero after any direct read or write operation.  This\ntriggers an otw GETATTR or ACCESS call to update the file\u0027s attribute\nand access caches properly, even when the NFS READ or WRITE replies\nhave usable post-op attributes.\n\nMake sure the direct read and write setup code performs the same fattr\ninitialization as the cached I/O paths to prevent unnecessary GETATTR\ncalls.\n\nThis was likely introduced by commit 0e574af1 in 2.6.15, which appears\nto add new nfs_fattr_init() call sites in the cached read and write\npaths, but not in the equivalent places in fs/nfs/direct.c.  A\nsubsequent commit in the same series, 33801147, introduces the\nfattr-\u003etime_start field.\n\nInterestingly, the direct write reschedule path already has a call to\nnfs_fattr_init() in the right place.\n\nReported-by: Quentin Barnes \u003cqbarnes@yahoo-inc.com\u003e\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f895c53f8ace3c3e49ebf9def90e63fc6d46d2bf",
      "tree": "93a6c17949a0e0bf194127be7cd0fa2a3bdd300f",
      "parents": [
        "7e381172cf6e0282a56374e50667515aed55166a"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Feb 01 14:17:50 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Feb 10 08:31:05 2010 -0500"
      },
      "message": "NFS: Make close(2) asynchronous when closing NFS O_DIRECT files\n\nFor NFSv2 and v3:\n\nO_DIRECT writes are always synchronous, and aren\u0027t cached, so nothing\nshould be flushed when closing an NFS O_DIRECT file descriptor.  Thus\nthere are no write errors to report on close(2).\n\nIn addition, there\u0027s no cached data to verify on the next open(2),\nso we don\u0027t need clean GETATTR results at close time to compare with.\n\nThus, there\u0027s no need for the nfs_revalidate_inode() call when closing\nan NFS O_DIRECT file.  This reduces the number of synchronous\non-the-wire requests for a simple open-write-close of an NFS O_DIRECT\nfile by roughly 20%.\n\nFor NFSv4:\n\nCall nfs4_do_close() with wait set to zero when closing an NFS\nO_DIRECT file.  The CLOSE will go on the wire, but the application\nwon\u0027t wait for it to complete.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7e381172cf6e0282a56374e50667515aed55166a",
      "tree": "46d41f354f1bb58153b0bdbea883e7abe94ebddc",
      "parents": [
        "aa2f1ef10e6ad65c9138ec576f82c08f32e6f32c"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Feb 01 14:17:41 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Feb 10 08:31:04 2010 -0500"
      },
      "message": "NFS: Improve NFS iostat byte count accuracy for writes\n\nThe bytes counted by the performance counters for NFS writes should\nreflect write and sync errors.  If the write(2) system call reports\nan error, the bytes should not be counted.  And, if the write is\nshort, the actual number of bytes that was written should be counted,\nnot the number of bytes that was requested.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    }
  ],
  "next": "aa2f1ef10e6ad65c9138ec576f82c08f32e6f32c"
}
