)]}'
{
  "log": [
    {
      "commit": "ae2bb03236fc978bdf673c19d39832500793b83c",
      "tree": "e88215f4a387fdcc6ef9183f61d12477b5b7e2bd",
      "parents": [
        "bbd3a8eee82a2a6f4aa1cce60ccb014f25e5c560"
      ],
      "author": {
        "name": "Weston Andros Adamson",
        "email": "dros@netapp.com",
        "time": "Tue Oct 02 14:49:52 2012 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 14:56:19 2012 -0700"
      },
      "message": "NFSv4: don\u0027t put ACCESS in OPEN compound if O_EXCL\n\nDon\u0027t put an ACCESS op in OPEN compound if O_EXCL, because ACCESS\nwill return permission denied for all bits until close.\n\nFixes a regression due to commit 6168f62c (NFSv4: Add ACCESS operation to\nOPEN compound)\n\nSigned-off-by: Weston Andros Adamson \u003cdros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bbd3a8eee82a2a6f4aa1cce60ccb014f25e5c560",
      "tree": "b8fb68e90af256e20bb25454a3574326c9824dae",
      "parents": [
        "ddfc4e171292d63d7e3f8c95ff9c3ef9932870ce"
      ],
      "author": {
        "name": "Weston Andros Adamson",
        "email": "dros@netapp.com",
        "time": "Tue Oct 02 14:49:51 2012 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 14:55:41 2012 -0700"
      },
      "message": "NFSv4: don\u0027t check MAY_WRITE access bit in OPEN\n\nDon\u0027t check MAY_WRITE as a newly created file may not have write mode bits,\nbut POSIX allows the creating process to write regardless.\nThis is ok because NFSv4 OPEN ops handle write permissions correctly -\nthe ACCESS in the OPEN compound is to differentiate READ v EXEC permissions.\n\nFixes a regression due to commit 6168f62c (NFSv4: Add ACCESS operation to\nOPEN compound)\n\nSigned-off-by: Weston Andros Adamson \u003cdros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ddfc4e171292d63d7e3f8c95ff9c3ef9932870ce",
      "tree": "1464e97f079348fdff1f77eb8eb1dca9fc6cd88a",
      "parents": [
        "fd4835708ffd3387a76df2d1d3021717b0b63761"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Tue Oct 02 16:01:38 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 13:04:09 2012 -0700"
      },
      "message": "NFS: Set key construction data for the legacy upcall\n\nThis prevents a null pointer dereference when\nnfs_idmap_complete_pipe_upcall_locked() calls complete_request_key().\n\nFixes a regression caused by commit 0cac12023 (NFSv4: Ensure that\nidmap_pipe_downcall sanity-checks the downcall data).\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fd4835708ffd3387a76df2d1d3021717b0b63761",
      "tree": "c47e28f44d10d10b96e7ab9aa8024aa613c3dbd5",
      "parents": [
        "c2ccc084eb46ae718a200ad9c2606c258bf79a25"
      ],
      "author": {
        "name": "Weston Andros Adamson",
        "email": "dros@netapp.com",
        "time": "Tue Oct 02 11:33:22 2012 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 11:35:47 2012 -0700"
      },
      "message": "NFSv4.1: don\u0027t do two EXCHANGE_IDs on mount\n\nSince the addition of NFSv4 server trunking detection the mount context\ncalls nfs4_proc_exchange_id then schedules the state manager, which also\ncalls nfs4_proc_exchange_id. Setting the NFS4CLNT_LEASE_CONFIRM bit\nmakes the state manager skip the unneeded EXCHANGE_ID and continue on\nwith session creation.\n\nReported-by: Jorge Mora \u003cmora@netapp.com\u003e\nSigned-off-by: Weston Andros Adamson \u003cdros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c2ccc084eb46ae718a200ad9c2606c258bf79a25",
      "tree": "b7699623a38b969f21265310f5796bdb34f48b3c",
      "parents": [
        "ee314c2a35ee7ea7ffa72e2aca83b041138f3358"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Oct 02 09:18:12 2012 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 09:25:02 2012 -0700"
      },
      "message": "NFS: nfs41_walk_client_list(): re-lock before iterating\n\nSparse identified an execution path in nfs41_walk_client_list()\nwhere the nfs_client_lock is not re-acquired before taking the next\nloop iteration.\n\nfs/nfs/nfs4client.c:437:9: sparse: context imbalance in\n \u0027nfs41_walk_client_list\u0027 - different lock contexts for basic block\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nCc: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ee314c2a35ee7ea7ffa72e2aca83b041138f3358",
      "tree": "eda86a9d173d4e7113bdf5b62924b08c2d9cf5d5",
      "parents": [
        "6f018efac14eb267d3ba0aa4294594b556147dba"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 17:25:48 2012 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 08:34:29 2012 -0700"
      },
      "message": "NFSv4.1: Handle BAD_STATEID and EXPIRED errors in layoutget\n\nIf the layoutget call returns a stateid error, we want to invalidate the\nlayout stateid, and/or recover the open stateid.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6f018efac14eb267d3ba0aa4294594b556147dba",
      "tree": "2c44bdd222be27fea52bc3f83cf2be9e151ecf69",
      "parents": [
        "4e437e95ae8fce164a97f4d67866c9a7e7ed9335"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 08:29:14 2012 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 08:34:29 2012 -0700"
      },
      "message": "NFSv4.1: bl_pg_init_write should be static\n\nReported-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4e437e95ae8fce164a97f4d67866c9a7e7ed9335",
      "tree": "5fa816f1c77c8b0e112519b591c1a57433706a80",
      "parents": [
        "22e243096104a741a0872328160c89d121a648c2"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Tue Oct 02 14:19:14 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 08:17:04 2012 -0700"
      },
      "message": "nfs: include internal.h in getroot.h\n\nSparse warning:\nfs/nfs/nfs4getroot.c:11:5: warning: symbol \u0027nfs4_get_rootfh\u0027 was not declared.\nShould it be static?\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "22e243096104a741a0872328160c89d121a648c2",
      "tree": "5be602f12df5ca02de7384f5c39c5c117f6bc41f",
      "parents": [
        "3dd4f8ef7b26d5d4ada6e2f4b92d99b5e2255f72"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Tue Oct 02 14:19:09 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 08:17:03 2012 -0700"
      },
      "message": "nfs: include nfs4_fh.h in nfs4sysctl.c\n\nSparse warnings:\nfs/nfs/nfs4sysctl.c:56:5: warning: symbol \u0027nfs4_register_sysctl\u0027 was not\ndeclared. Should it be static?\nfs/nfs/nfs4sysctl.c:64:6: warning: symbol \u0027nfs4_unregister_sysctl\u0027 was not\ndeclared. Should it be static?\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3dd4f8ef7b26d5d4ada6e2f4b92d99b5e2255f72",
      "tree": "89f7e55d7d02e952eeb11259bae6bff1ca6e118e",
      "parents": [
        "0b37d20ca225f57fff9237bc75d11d3995c8fed6"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Tue Oct 02 14:19:04 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 08:17:03 2012 -0700"
      },
      "message": "nfs: declare nfs_xdev_mount as static\n\nSparse warning:\nfs/nfs/super.c:2517:15: warning: symbol \u0027nfs_xdev_mount\u0027 was not declared.\nShould it be static?\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0b37d20ca225f57fff9237bc75d11d3995c8fed6",
      "tree": "7b7fa627f4cd6d3954e118dabad1726c292ca997",
      "parents": [
        "ca57ccc48f6a9a3ec655f87acebab82bf01088e7"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Tue Oct 02 14:18:59 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 08:17:02 2012 -0700"
      },
      "message": "nfs: declare nfs_callback_tcp_port in header\n\nSparse warning:\nfs/nfs/super.c:2638:16: sparse: symbol \u0027nfs_callback_tcpport\u0027 was not\ndeclared. Should it be static?\n\nReported-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ca57ccc48f6a9a3ec655f87acebab82bf01088e7",
      "tree": "05700c0c7eb9c424e5bbacc84e06333a209b9ec3",
      "parents": [
        "47b803c8d2e0545221397d175e3563f9f3695628"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Tue Oct 02 14:18:54 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 08:17:02 2012 -0700"
      },
      "message": "nfs: include NFSv4 header in netns.h\n\nBuild error:\nfs/nfs/netns.h:27:15: error: \u0027NFS4_MAX_MINOR_VERSION\u0027 undeclared here (not in\na function)\n\nReported-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "47b803c8d2e0545221397d175e3563f9f3695628",
      "tree": "53ba68192b9e1f13ab9c69133ca4873c36e404ee",
      "parents": [
        "f9d640f3a4f043f7dff66ad7bd8cb29ec145c41d"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Mon Oct 01 20:42:32 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 18:12:41 2012 -0700"
      },
      "message": "NFSv4.0 reclaim reboot state when re-establishing clientid\n\nWe should reclaim reboot state when the clientid is stale.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f9d640f3a4f043f7dff66ad7bd8cb29ec145c41d",
      "tree": "d57a9914d80262324b62ff328d398a0119e88b8a",
      "parents": [
        "758201e2c94b7d26ea0ac64e55cab1d53742780a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 16:37:51 2012 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 16:58:48 2012 -0700"
      },
      "message": "NFSv4: nfs4_match_clientids is only used by NFSv4.1\n\nFix another compiler warning.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "758201e2c94b7d26ea0ac64e55cab1d53742780a",
      "tree": "0298ab5bf31e8def1ea10285217ab8e311b8aab4",
      "parents": [
        "9f62387d6e26532bcbfb15606956074192ee526a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 16:33:18 2012 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 16:58:39 2012 -0700"
      },
      "message": "NFSv4: Fix the minor version callback channel startup\n\nThe current spaghetti code confuses some versions of gcc (and just\nlooks ugly as hell)! Clean up...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9f62387d6e26532bcbfb15606956074192ee526a",
      "tree": "9102b0babaa7918bcc87f11a8986deee092be908",
      "parents": [
        "2afdfa5a846246de50e1881f71ba5c0aac0b415f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 16:17:31 2012 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 16:17:31 2012 -0700"
      },
      "message": "NFSv4: Fix up a merge conflict between migration and container changes\n\nnfs_callback_tcpport is now per-net_namespace.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2afdfa5a846246de50e1881f71ba5c0aac0b415f",
      "tree": "ec9feec128aa105cabb1122806a8078a39be4ebb",
      "parents": [
        "7297cb682acb506ada2e01fbc9b447b04d69936c",
        "0cac120233305b614cfe3ad419f3655876066017"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:42:14 2012 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:42:14 2012 -0700"
      },
      "message": "Merge branch \u0027bugfixes\u0027 into nfs-for-next\n"
    },
    {
      "commit": "7297cb682acb506ada2e01fbc9b447b04d69936c",
      "tree": "9babf7878f4a34552fd452e1e30a4d38f24add6e",
      "parents": [
        "ee34e13620d0678d420ce50101aaef94ab81fc74"
      ],
      "author": {
        "name": "Daniel Walter",
        "email": "sahne@0x90.at",
        "time": "Wed Sep 26 21:51:46 2012 +0200"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:40:05 2012 -0700"
      },
      "message": "nfs: replace strict_strto* with kstrto*\n\n[nfs] replace strict_str* with kstr* variants\n\n * replace string conversions with newer kstr* functions\n\nSigned-off-by: Daniel Walter \u003csahne@0x90.at\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ee34e13620d0678d420ce50101aaef94ab81fc74",
      "tree": "b5247dd8ac424057f126c20c19f25e7a497dc52a",
      "parents": [
        "4e266229dbb0782d91b75633322edd632794b86d"
      ],
      "author": {
        "name": "Yanchuan Nian",
        "email": "ycnian@gmail.com",
        "time": "Mon Sep 10 08:40:16 2012 +0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:40:03 2012 -0700"
      },
      "message": "NFS: Remove unnecessary semicolons (fs/nfs/client.c)\n\nThere are some unnecessary semicolons in function find_nfs_version. Just remove them.\n\nSigned-off-by: Yanchuan Nian \u003cycnian@gmail.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4e266229dbb0782d91b75633322edd632794b86d",
      "tree": "9f677ece4ca723c4f036d25b77f133785adc57ed",
      "parents": [
        "96c9eae638765c2bf2ca4f5a6325484f9bb69aa7"
      ],
      "author": {
        "name": "Wei Yongjun",
        "email": "yongjun_wei@trendmicro.com.cn",
        "time": "Wed Sep 05 14:38:03 2012 +0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:39:05 2012 -0700"
      },
      "message": "pnfsblock: use list_move_tail instead of list_del/list_add_tail\n\nUsing list_move_tail() instead of list_del() + list_add_tail().\n\nspatch with a semantic match is used to found this problem.\n(http://coccinelle.lip6.fr/)\n\nSigned-off-by: Wei Yongjun \u003cyongjun_wei@trendmicro.com.cn\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "96c9eae638765c2bf2ca4f5a6325484f9bb69aa7",
      "tree": "9824f378029107b3f7be58df63a8c17a08f9b84b",
      "parents": [
        "f742dc4a32587bff50b13dde9d8894b96851951a"
      ],
      "author": {
        "name": "Peng Tao",
        "email": "bergwolf@gmail.com",
        "time": "Fri Aug 24 00:27:53 2012 +0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:38:35 2012 -0700"
      },
      "message": "pnfsblock: fix non-aligned DIO write\n\nFor DIO writes, if it is not blocksize aligned, we need to do\ninternal serialization. It may slow down writers anyway. So we\njust bail them out and resend to MDS.\n\nCc: stable \u003cstable@vger.kernel.org\u003e [since v3.4]\nSigned-off-by: Peng Tao \u003ctao.peng@emc.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f742dc4a32587bff50b13dde9d8894b96851951a",
      "tree": "beedd26b6424ab5bc8dd63fcc04644c5023a4803",
      "parents": [
        "fe6e1e8d9fad86873eb74a26e80a8f91f9e870b5"
      ],
      "author": {
        "name": "Peng Tao",
        "email": "bergwolf@gmail.com",
        "time": "Fri Aug 24 00:27:52 2012 +0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:38:29 2012 -0700"
      },
      "message": "pnfsblock: fix non-aligned DIO read\n\nFor DIO read, if it is not sector aligned, we should reject it\nand resend via MDS. Otherwise there might be data corruption.\nAlso teach bl_read_pagelist to handle partial page reads for DIO.\n\nCc: stable \u003cstable@vger.kernel.org\u003e [since v3.4]\nSigned-off-by: Peng Tao \u003ctao.peng@emc.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fe6e1e8d9fad86873eb74a26e80a8f91f9e870b5",
      "tree": "d09ce2464d48894ec12d39571d79e1176b493cfb",
      "parents": [
        "5d0e3a004f02bffab51f542fa1d5b2e2854d8545"
      ],
      "author": {
        "name": "Peng Tao",
        "email": "bergwolf@gmail.com",
        "time": "Fri Aug 24 00:27:51 2012 +0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:38:24 2012 -0700"
      },
      "message": "pnfsblock: fix partial page buffer wirte\n\nIf applications use flock to protect its write range, generic NFS\nwill not do read-modify-write cycle at page cache level. Therefore\nLD should know how to handle non-sector aligned writes. Otherwise\nthere will be data corruption.\n\nCc: stable \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Peng Tao \u003ctao.peng@emc.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5d0e3a004f02bffab51f542fa1d5b2e2854d8545",
      "tree": "da2a97bb6593aa3393ef17ad3c97d9af5595a455",
      "parents": [
        "dc182549d439f60c332bf74d7f220a1bccf37da6"
      ],
      "author": {
        "name": "Peng Tao",
        "email": "bergwolf@gmail.com",
        "time": "Fri Aug 24 00:27:50 2012 +0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:38:16 2012 -0700"
      },
      "message": "Revert \"pnfsblock: bail out partial page IO\"\n\nThis reverts commit 159e0561e322dd8008fff59e36efff8d2bdd0b0e, in favor\nof a more complete fix to the alignment issue.\n\nSigned-off-by: Peng Tao \u003ctao.peng@emc.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "dc182549d439f60c332bf74d7f220a1bccf37da6",
      "tree": "45732a9c480dbad56262e8e91504d4069248b628",
      "parents": [
        "7acdb026818455638543b04b68d4a580c367fba8"
      ],
      "author": {
        "name": "Peng Tao",
        "email": "bergwolf@gmail.com",
        "time": "Fri Aug 24 00:27:49 2012 +0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:37:39 2012 -0700"
      },
      "message": "NFS41: fix error of setting blocklayoutdriver\n\nAfter commit e38eb650 (NFS: set_pnfs_layoutdriver() from\nnfs4_proc_fsinfo()), set_pnfs_layoutdriver() is called inside\nnfs4_proc_fsinfo(), but pnfs_blksize is not set. It causes setting\nblocklayoutdriver failure and pnfsblock mount failure.\n\nCc: stable \u003cstable@vger.kernel.org\u003e [since v3.5]\nSigned-off-by: Peng Tao \u003ctao.peng@emc.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7acdb026818455638543b04b68d4a580c367fba8",
      "tree": "a765a5fe13553aad3fc1aeb8c4e8685242654bde",
      "parents": [
        "6f2ea7f2a3ff3cd342bface43f8b4bf5e431cf36"
      ],
      "author": {
        "name": "Peng Tao",
        "email": "bergwolf@gmail.com",
        "time": "Fri Aug 24 00:27:48 2012 +0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:37:34 2012 -0700"
      },
      "message": "NFSv41: fix DIO write_io calculation\n\npnfs_within_mdsthreshold() is called inside pg_init. We need to set\nread_io/write_io before that. Otherwise we fail pnfs_within_mdsthreshold()\nand IO goes to MDS.\nA simple test case:\ndd if\u003dfoo of\u003d/mnt/pnfs/bar bs\u003d10M count\u003d1 oflag\u003ddirect\n\nSigned-off-by: Peng Tao \u003ctao.peng@emc.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6f2ea7f2a3ff3cd342bface43f8b4bf5e431cf36",
      "tree": "c20a5610aa8f934cb46bbb38c901e16d43ea602a",
      "parents": [
        "05f4c350ee02e9461c6ae3a880ea326a06835e37"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Sep 14 17:24:41 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:33:33 2012 -0700"
      },
      "message": "NFS: Add nfs4_unique_id boot parameter\n\nAn optional boot parameter is introduced to allow client\nadministrators to specify a string that the Linux NFS client can\ninsert into its nfs_client_id4 id string, to make it both more\nglobally unique, and to ensure that it doesn\u0027t change even if the\nclient\u0027s nodename changes.\n\nIf this boot parameter is not specified, the client\u0027s nodename is\nused, as before.\n\nClient installation procedures can create a unique string (typically,\na UUID) which remains unchanged during the lifetime of that client\ninstance.  This works just like creating a UUID for the label of the\nsystem\u0027s root and boot volumes.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "05f4c350ee02e9461c6ae3a880ea326a06835e37",
      "tree": "847e24e55e47c06fcb46106b4922b915bb0109e6",
      "parents": [
        "e984a55a7418f777407c7edbb2bdf5eb9559b5e2"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Sep 14 17:24:32 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:33:33 2012 -0700"
      },
      "message": "NFS: Discover NFSv4 server trunking when mounting\n\n\"Server trunking\" is a fancy named for a multi-homed NFS server.\nTrunking might occur if a client sends NFS requests for a single\nworkload to multiple network interfaces on the same server.  There\nare some implications for NFSv4 state management that make it useful\nfor a client to know if a single NFSv4 server instance is\nmulti-homed.  (Note this is only a consideration for NFSv4, not for\nlegacy versions of NFS, which are stateless).\n\nIf a client cares about server trunking, no NFSv4 operations can\nproceed until that client determines who it is talking to.  Thus\nserver IP trunking discovery must be done when the client first\nencounters an unfamiliar server IP address.\n\nThe nfs_get_client() function walks the nfs_client_list and matches\non server IP address.  The outcome of that walk tells us immediately\nif we have an unfamiliar server IP address.  It invokes\nnfs_init_client() in this case.  Thus, nfs4_init_client() is a good\nspot to perform trunking discovery.\n\nDiscovery requires a client to establish a fresh client ID, so our\nclient will now send SETCLIENTID or EXCHANGE_ID as the first NFS\noperation after a successful ping, rather than waiting for an\napplication to perform an operation that requires NFSv4 state.\n\nThe exact process for detecting trunking is different for NFSv4.0 and\nNFSv4.1, so a minorversion-specific init_client callout method is\nintroduced.\n\nCLID_INUSE recovery is important for the trunking discovery process.\nCLID_INUSE is a sign the server recognizes the client\u0027s nfs_client_id4\nid string, but the client is using the wrong principal this time for\nthe SETCLIENTID operation.  The SETCLIENTID must be retried with a\nseries of different principals until one works, and then the rest of\ntrunking discovery can proceed.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e984a55a7418f777407c7edbb2bdf5eb9559b5e2",
      "tree": "75374f581c61cde0910d37c089e9b871e121b4af",
      "parents": [
        "896526174ce2b6a773e187ebe5a047b68230e2c4"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Sep 14 17:24:21 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:33:33 2012 -0700"
      },
      "message": "NFS: Use the same nfs_client_id4 for every server\n\nCurrently, when identifying itself to NFS servers, the Linux NFS\nclient uses a unique nfs_client_id4.id string for each server IP\naddress it talks with.  For example, when client A talks to server X,\nthe client identifies itself using a string like \"AX\".  The\nrequirements for these strings are specified in detail by RFC 3530\n(and bis).\n\nThis form of client identification presents a problem for Transparent\nState Migration.  When client A\u0027s state on server X is migrated to\nserver Y, it continues to be associated with string \"AX.\"  But,\naccording to the rules of client string construction above, client\nA will present string \"AY\" when communicating with server Y.\n\nServer Y thus has no way to know that client A should be associated\nwith the state migrated from server X.  \"AX\" is all but abandoned,\ninterfering with establishing fresh state for client A on server Y.\n\nTo support transparent state migration, then, NFSv4.0 clients must\ninstead use the same nfs_client_id4.id string to identify themselves\nto every NFS server; something like \"A\".\n\nNow a client identifies itself as \"A\" to server X.  When a file\nsystem on server X transitions to server Y, and client A identifies\nitself as \"A\" to server Y, Y will know immediately that the state\nassociated with \"A,\" whether it is native or migrated, is owned by\nthe client, and can merge both into a single lease.\n\nAs a pre-requisite to adding support for NFSv4 migration to the Linux\nNFS client, this patch changes the way Linux identifies itself to NFS\nservers via the SETCLIENTID (NFSv4 minor version 0) and EXCHANGE_ID\n(NFSv4 minor version 1) operations.\n\nIn addition to removing the server\u0027s IP address from nfs_client_id4,\nthe Linux NFS client will also no longer use its own source IP address\nas part of the nfs_client_id4 string.  On multi-homed clients, the\nvalue of this address depends on the address family and network\nrouting used to contact the server, thus it can be different for each\nserver.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "896526174ce2b6a773e187ebe5a047b68230e2c4",
      "tree": "0f994ab0746003d4a6355086b24051664c89612d",
      "parents": [
        "ba9b584c1dc37851d9c6ca6d0d2ccba55d9aad04"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Sep 14 17:24:11 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:33:33 2012 -0700"
      },
      "message": "NFS: Introduce \"migration\" mount option\n\nCurrently, the Linux client uses a unique nfs_client_id4.id string\nwhen identifying itself to distinct NFS servers.\n\nTo support transparent state migration, the Linux client will have to\nuse the same nfs_client_id4 string for all servers it communicates\nwith (also known as the \"uniform client string\" approach).  Otherwise\nNFS servers can not recognize that open and lock state need to be\nmerged after a file system transition.\n\nUnfortunately, there are some NFSv4.0 servers currently in the field\nthat do not tolerate the uniform client string approach.\n\nThus, by default, our NFSv4.0 mounts will continue to use the current\napproach, and we introduce a mount option that switches them to use\nthe uniform model.  Client administrators must identify which servers\ncan be mounted with this option.  Eventually most NFSv4.0 servers will\nbe able to handle the uniform approach, and we can change the default.\n\nThe first mount of a server controls the behavior for all subsequent\nmounts for the lifetime of that set of mounts of that server.  After\nthe last mount of that server is gone, the client erases the data\nstructure that tracks the lease.  A subsequent lease may then honor\na different \"migration\" setting.\n\nThis patch adds only the infrastructure for parsing the new mount\noption.  Support for uniform client strings is added in a subsequent\npatch.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ba9b584c1dc37851d9c6ca6d0d2ccba55d9aad04",
      "tree": "d74fa5a04f928d5c508594f285381b41bfe4ac3c",
      "parents": [
        "1b63a75180c6c65c71655c250a4e6b578ba7d1c0"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Sep 14 17:24:02 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:33:33 2012 -0700"
      },
      "message": "SUNRPC: Introduce rpc_clone_client_set_auth()\n\nAn ULP is supposed to be able to replace a GSS rpc_auth object with\nanother GSS rpc_auth object using rpcauth_create().  However,\nrpcauth_create() in 3.5 reliably fails with -EEXIST in this case.\nThis is because when gss_create() attempts to create the upcall pipes,\nsometimes they are already there.  For example if a pipe FS mount\nevent occurs, or a previous GSS flavor was in use for this rpc_clnt.\n\nIt turns out that\u0027s not the only problem here.  While working on a\nfix for the above problem, we noticed that replacing an rpc_clnt\u0027s\nrpc_auth is not safe, since dereferencing the cl_auth field is not\nprotected in any way.\n\nSo we\u0027re deprecating the ability of rpcauth_create() to switch an\nrpc_clnt\u0027s security flavor during normal operation.  Instead, let\u0027s\nadd a fresh API that clones an rpc_clnt and gives the clone a new\nflavor before it\u0027s used.\n\nThis makes immediate use of the new __rpc_clone_client() helper.\n\nThis can be used in a similar fashion to rpcauth_create() when a\nclient is hunting for the correct security flavor.  Instead of\nreplacing an rpc_clnt\u0027s security flavor in a loop, the ULP replaces\nthe whole rpc_clnt.\n\nTo fix the -EEXIST problem, any ULP logic that relies on replacing\nan rpc_clnt\u0027s rpc_auth with rpcauth_create() must be changed to use\nthis API instead.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1b63a75180c6c65c71655c250a4e6b578ba7d1c0",
      "tree": "85743d02287e488622cf0504281973b455af8387",
      "parents": [
        "632f0d0503accb8ab749a1165af99d344579c37b"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Sep 14 17:23:52 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:32:07 2012 -0700"
      },
      "message": "SUNRPC: Refactor rpc_clone_client()\n\nrpc_clone_client() does most of the same tasks as rpc_new_client(),\nso there is an opportunity for code re-use.  Create a generic helper\nthat makes it easy to clone an RPC client while replacing any of the\nclnt\u0027s parameters.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "632f0d0503accb8ab749a1165af99d344579c37b",
      "tree": "1112d5c86a3afafcd5fadfdc48c4aa1a43d74ffd",
      "parents": [
        "d8af9bc16c9e9506c10581111f897be04486218f"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Sep 14 17:23:43 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:32:02 2012 -0700"
      },
      "message": "SUNRPC: Use __func__ in dprintk() in auth_gss.c\n\nClean up: Some function names have changed, but debugging messages\nwere never updated.  Automate the construction of the function name\nin debugging messages.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d8af9bc16c9e9506c10581111f897be04486218f",
      "tree": "443e477d9766e47688e3f294d239c1ce12ce4a2c",
      "parents": [
        "ffe5a83005b0d23575ab109755b4cb5518a5d91f"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Sep 14 17:23:34 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:31:57 2012 -0700"
      },
      "message": "SUNRPC: Clean up dprintk messages in rpc_pipe.c\n\nClean up: The blank space in front of the message must be spaces.\nTabs show up on the console as a graphical character.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ffe5a83005b0d23575ab109755b4cb5518a5d91f",
      "tree": "be0a3c83446995a129f040c3bcb7c94b806b768c",
      "parents": [
        "8cb7f74eeeb5441811d93f94b6138d4a5a9d8b20"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Sep 14 17:23:23 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:31:51 2012 -0700"
      },
      "message": "NFS: Slow down state manager after an unhandled error\n\nIf the state manager thread is not actually able to fully recover from\nsome situation, it wakes up waiters, who kick off a new state manager\nthread.  Quite often the fresh invocation of the state manager is just\nas successful.\n\nThis results in a livelock as the client dumps thousands of NFS\nrequests a second on the network in a vain attempt to recover.  Not\nvery friendly.\n\nTo mitigate this situation, add a delay in the state manager after\nan unhandled error, so that the client sends just a few requests\nevery second in this case.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8cb7f74eeeb5441811d93f94b6138d4a5a9d8b20",
      "tree": "f840cc8a9ab44cbb9d69b8bc83a8a621b370de95",
      "parents": [
        "cb7323fffa85df37161f4d3be45e1f787808309c"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Sep 14 17:23:14 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:31:41 2012 -0700"
      },
      "message": "NFS: nfs_parsed_mount_options can use unsigned int\n\nfs/nfs/super.c: In function ‘nfs_compare_remount_data’:\nfs/nfs/super.c:2042:18: warning: comparison between signed and\n    unsigned integer expressions [-Wsign-compare]\nfs/nfs/super.c:2043:18: warning: comparison between signed and\n    unsigned integer expressions [-Wsign-compare]\nfs/nfs/super.c:2044:20: warning: comparison between signed and\n    unsigned integer expressions [-Wsign-compare]\nfs/nfs/super.c:2046:21: warning: comparison between signed and\n    unsigned integer expressions [-Wsign-compare]\nfs/nfs/super.c:2047:21: warning: comparison between signed and\n    unsigned integer expressions [-Wsign-compare]\nfs/nfs/super.c:2048:21: warning: comparison between signed and\n    unsigned integer expressions [-Wsign-compare]\nfs/nfs/super.c:2049:21: warning: comparison between signed and\n    unsigned integer expressions [-Wsign-compare]\nfs/nfs/super.c:2050:18: warning: comparison between signed and\n    unsigned integer expressions [-Wsign-compare]\n\nSeen with gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2).\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cb7323fffa85df37161f4d3be45e1f787808309c",
      "tree": "e981d8fb5bc7d10a8118a9d2e0805a4c5fbd4545",
      "parents": [
        "303a7ce92064c285a04c870f2dc0192fdb2968cb"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Tue Sep 18 13:37:23 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:27:43 2012 -0700"
      },
      "message": "lockd: create and use per-net NSM RPC clients on MON/UNMON requests\n\nNSM RPC client can be required on NFSv3 umount, when child reaper is dying\n(and destroying it\u0027s mount namespace). It means, that current nsproxy is set\nto NULL already, but creation of RPC client requires UTS namespace for gaining\nhostname string.\n\nThis patch creates reference-counted per-net NSM client on first monitor\nrequest and destroys it after last unmonitor request.\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "303a7ce92064c285a04c870f2dc0192fdb2968cb",
      "tree": "314e49df1536acc5b7752a1f8609392a13a890a8",
      "parents": [
        "e9406db20fecbfcab646bad157b4cfdc7cadddfb"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Tue Sep 18 13:37:18 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:27:38 2012 -0700"
      },
      "message": "lockd: use rpc client\u0027s cl_nodename for id encoding\n\nTaking hostname from uts namespace if not safe, because this cuold be\nperformind during umount operation on child reaper death. And in this case\ncurrent-\u003ensproxy is NULL already.\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e9406db20fecbfcab646bad157b4cfdc7cadddfb",
      "tree": "292fcb0062d86eb7170de559fdd211b21dbe40da",
      "parents": [
        "1dc42e04b75779d321f1d17dca3873004066f667"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Tue Sep 18 13:37:12 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:27:34 2012 -0700"
      },
      "message": "lockd: per-net NSM client creation and destruction helpers introduced\n\nNSM RPC client can be required on NFSv3 umount, when child reaper is dying (and\ndestroying it\u0027s mount namespace). It means, that current nsproxy is set to\nNULL already, but creation of RPC client requires UTS namespace for gaining\nhostname string.\nThis patch introduces reference counted NFS RPC clients creation and\ndestruction helpers (similar to RPCBIND RPC clients).\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1dc42e04b75779d321f1d17dca3873004066f667",
      "tree": "bcc237f2567f5988b81caf45b4bb22befa82d47e",
      "parents": [
        "b3d19c51723be69fddb64723bebb5a30fb57a483"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Mon Aug 20 18:00:51 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:26:06 2012 -0700"
      },
      "message": "NFS: add debug messages to callback down function\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b3d19c51723be69fddb64723bebb5a30fb57a483",
      "tree": "af7bd8cc8db0fd669f8edd794f062b32f63c5aa4",
      "parents": [
        "29dcc16a8e29371e11fb58fc1292e01f30ff13c5"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Mon Aug 20 18:00:46 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:25:57 2012 -0700"
      },
      "message": "NFS: callback per-net usage counting introduced\n\nThis patch also introduces refcount-aware nfs_callback_down_net() wrapper for\nsvc_shutdown_net().\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "29dcc16a8e29371e11fb58fc1292e01f30ff13c5",
      "tree": "c5e901f6c5c76dbf916ecb5196c6cdb527f38ef8",
      "parents": [
        "bbe0a3aa4e227c8aae02a484ce1c0b655cd19055"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Mon Aug 20 18:00:41 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:25:51 2012 -0700"
      },
      "message": "NFS: make nfs_callback_tcpport6 per network context\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bbe0a3aa4e227c8aae02a484ce1c0b655cd19055",
      "tree": "22b02b554f7b3abea3fabb92f3856aec7e84b762",
      "parents": [
        "23c20ecd44750dd42e5fd53285a17ca8d8a9b0a3"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Mon Aug 20 18:00:36 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:25:47 2012 -0700"
      },
      "message": "NFS: make nfs_callback_tcpport per network context\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "23c20ecd44750dd42e5fd53285a17ca8d8a9b0a3",
      "tree": "36940b99df871bd80fbb0d99fbaf9c3ef037abd8",
      "parents": [
        "8e2461444319b8f3fe47b94ea9b5d2e1dd8adadb"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Mon Aug 20 18:00:31 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:25:38 2012 -0700"
      },
      "message": "NFS: callback up - users counting cleanup\n\nUsage coutner now increased only is the service was started sccessfully.\nEven if service is running already, then goto is not required anymore, because\nservice creation and start will be skipped.\nWith this patch code looks clearer.\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8e2461444319b8f3fe47b94ea9b5d2e1dd8adadb",
      "tree": "6f0bf79be0c107aa419398af2fb4f0ff6bdddbe0",
      "parents": [
        "691c457ae635a063e0e4c8551ba4566eab9a17e3"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Mon Aug 20 18:00:26 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:25:35 2012 -0700"
      },
      "message": "NFS: callback service start function introduced\n\nThis is just a code move, which from my POW makes code looks better.\nI.e. now on start we have 3 different stages:\n1) Service creation.\n2) Service per-net data allocation.\n3) Service start.\n\nPatch also renames goto label \"out_err:\" into \"err_start:\" to reflect new\nchanges.\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "691c457ae635a063e0e4c8551ba4566eab9a17e3",
      "tree": "deb020038dbf6f9c0bb5c76c7ba46053a0266192",
      "parents": [
        "c946556b8749beb357e2d2860e7dac757972dd3d"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Mon Aug 20 18:00:21 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:25:29 2012 -0700"
      },
      "message": "NFS: callback up - transport backchannel cleanup\n\nNo need to assign transports backchannel server explicitly in\nnfs41_callback_up() -  there is nfs_callback_bc_serv() function for this.\nBy using it, nfs4_callback_up() and nfs41_callback_up() can be called without\ntransport argument.\n\nNote: service have to be passed to nfs_callback_bc_serv() instead of callback,\nsince callback link can be uninitialized.\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c946556b8749beb357e2d2860e7dac757972dd3d",
      "tree": "63a7a403984febfcaab31a13726b68be1f627486",
      "parents": [
        "dd018428dce087b72d9e6a0b32e93cb8088b3aaa"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Mon Aug 20 18:00:16 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:25:24 2012 -0700"
      },
      "message": "NFS: move per-net callback thread initialization to nfs_callback_up_net()\n\nv4:\n1) Callback transport creation routine selection by version simlified.\n\nThis new function in now called before nfs_minorversion_callback_svc_setup()).\n\nAlso few small changes:\n1) current network namespace in nfs_callback_up() was replaced by transport net.\n2) svc_shutdown_net() was moved prior to callback usage counter decrement\n(because in case of per-net data allocation faulure svc_shutdown_net() have to\nbe skipped).\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "dd018428dce087b72d9e6a0b32e93cb8088b3aaa",
      "tree": "ffb555c77f9553fe01267ff26b452085c9a11999",
      "parents": [
        "c8ceb4124b53a439edfe3fe89a646be1e067ef17"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Mon Aug 20 18:00:11 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:25:11 2012 -0700"
      },
      "message": "NFS: callback service creation function introduced\n\nThis function creates service if it\u0027s not exist, or increase usage counter of\nthe existent, and returns pointer to it.\nUsage counter will be droppepd by svc_destroy() later in nfs_callback_up().\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c8ceb4124b53a439edfe3fe89a646be1e067ef17",
      "tree": "2944c8451992b92f32672bdfeb00683580999b7b",
      "parents": [
        "6168f62cbde8dcf4f58255794efbcdb8df603959"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Mon Aug 20 18:00:06 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:24:51 2012 -0700"
      },
      "message": "NFS: pass net to nfs_callback_down()\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6168f62cbde8dcf4f58255794efbcdb8df603959",
      "tree": "897bac0b7539172aa171365337d964f7984b1a80",
      "parents": [
        "57a51048da742c764b6ce5d028c7f334ae04d363"
      ],
      "author": {
        "name": "Weston Andros Adamson",
        "email": "dros@netapp.com",
        "time": "Mon Sep 10 14:00:46 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:20:11 2012 -0700"
      },
      "message": "NFSv4: Add ACCESS operation to OPEN compound\n\nThe OPEN operation has no way to differentiate an open for read and an\nopen for execution - both look like read to the server. This allowed\nusers to read files that didn\u0027t have READ access but did have EXEC access,\nwhich is obviously wrong.\n\nThis patch adds an ACCESS call to the OPEN compound to handle the\ndifference between OPENs for reading and execution.  Since we\u0027re going\nthrough the trouble of calling ACCESS, we check all possible access bits\nand cache the results hopefully avoiding an ACCESS call in the future.\n\nSigned-off-by: Weston Andros Adamson \u003cdros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "57a51048da742c764b6ce5d028c7f334ae04d363",
      "tree": "21a35aa29c1d04b25b7e00bc375e1cc198a01fe8",
      "parents": [
        "6938867edba929a65a167a97581231e76aeb10b4"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Aug 09 14:05:51 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:18:44 2012 -0700"
      },
      "message": "NFS: Use kzalloc() instead of kmalloc() in the idmapper\n\nThis will allocate memory that has already been zeroed, allowing us to\nremove the memset later on.\n\nSigned-off-by: Bryan Schumaker \u003cbjchuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6938867edba929a65a167a97581231e76aeb10b4",
      "tree": "9f1fcee1c9dc22515d335c69db0f01e5eb9f4bb1",
      "parents": [
        "fcb6d9c6b719b633e9b98d26d8a7937209e8bf21"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Wed Sep 26 15:25:52 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:17:25 2012 -0700"
      },
      "message": "NFS: Remove bad delegations during open recovery\n\nI put the client into an open recovery loop by:\n\tClient: Open file\n\t\tread half\n\tServer: Expire client (echo 0 \u003e /sys/kernel/debug/nfsd/forget_clients)\n\tClient: Drop vm cache (echo 3 \u003e /proc/sys/vm/drop_caches)\n\t\tfinish reading file\n\nThis causes a loop because the client never updates the nfs4_state after\ndiscovering that the delegation is invalid.  This means it will keep\ntrying to read using the bad delegation rather than attempting to re-open\nthe file.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nCC: stable@vger.kernel.org [3.4+]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fcb6d9c6b719b633e9b98d26d8a7937209e8bf21",
      "tree": "09a1aee073057d0f06ab94dc59c8b7b8963f1e4d",
      "parents": [
        "9b96ce71974127af0304514d310abe596426c112"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Wed Sep 26 15:25:53 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 15:17:17 2012 -0700"
      },
      "message": "NFS: Always use the open stateid when checking for expired opens\n\nIf we are reading through a delegation, and the delegation is OK then\nstate-\u003estateid will still point to a delegation stateid and not an open\nstateid.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9b96ce71974127af0304514d310abe596426c112",
      "tree": "fd43e1006feaa0a4c061e073057c1f276f5ff935",
      "parents": [
        "849b286fd026a6924cc6a4315e446ed88ab983d2"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 20:24:16 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 20:24:16 2012 -0400"
      },
      "message": "SUNRPC: Limit the rpciod workqueue concurrency\n\nWe shouldn\u0027t need more than 1 worker thread per cpu, since rpciod\nis designed to run without sleeping in most cases.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "849b286fd026a6924cc6a4315e446ed88ab983d2",
      "tree": "a8d07243fb453ece5b04078cc6715ec9e78971f3",
      "parents": [
        "65857d5768f7716da539933c2075d384b117812d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Sep 24 14:18:39 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:18 2012 -0400"
      },
      "message": "NFSv4.1: nfs4_proc_layoutreturn must always drop the plh_block_lgets count\n\nCurrently it does not do so if the RPC call failed to start. Fix is to\nmove the decrement of plh_block_lgets into nfs4_layoutreturn_release.\n\nAlso remove a redundant test of task-\u003etk_status in nfs4_layoutreturn_done:\nif lrp-\u003eres.lrs_present is set, then obviously the RPC call succeeded.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "65857d5768f7716da539933c2075d384b117812d",
      "tree": "fd35ec5174e52388c870c4b23bd8a3c4153ad232",
      "parents": [
        "e5929f3cff05e84f20c68df235f4768920e2e89e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Sep 24 13:49:27 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:18 2012 -0400"
      },
      "message": "NFSv4.1: _pnfs_return_layout() shouldn\u0027t invalidate the layout on failure\n\nFailure of the layoutreturn allocation fails is not a good reason to\nmark the pnfs_layout_hdr as having failed a layoutget or i/o. Just\nexit cleanly.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e5929f3cff05e84f20c68df235f4768920e2e89e",
      "tree": "849a2fec772d7c8d9a54288659f9d4ba9c8a915f",
      "parents": [
        "173f77e9c5cbddb02eebe17dd9c48d39e5eb86b9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 21 16:37:02 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:17 2012 -0400"
      },
      "message": "NFSv4.1: Remove the NFS_LAYOUT_RETURNED state\n\nIt serves no purpose that the test for whether or not we have valid\nlayout segments doesn\u0027t already serve.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "173f77e9c5cbddb02eebe17dd9c48d39e5eb86b9",
      "tree": "648a0e78eb1316f5ebe3cee659a4aac0b8ffa48c",
      "parents": [
        "8006bfba36d42b6976ed92979f51e5f9bef2625c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 21 15:49:42 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:17 2012 -0400"
      },
      "message": "NFSv4.1: Clear NFS_LAYOUT_BULK_RECALL when the layout segments are freed\n\nOnce all the affected layout segments have been freed up, clear the\nNFS_LAYOUT_BULK_RECALL flag so that we can reuse the pnfs_layout_hdr\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8006bfba36d42b6976ed92979f51e5f9bef2625c",
      "tree": "83b5c3761408b6cbfef4112431ef466b5392f909",
      "parents": [
        "579342785f7069d32e9637ef30d59c4256dcec3d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 21 14:48:04 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:16 2012 -0400"
      },
      "message": "NFSv4.1: Get rid of the NFS_LAYOUT_DESTROYED state\n\nWe already have a mechanism for blocking LAYOUTGET by means of the\nplh_block_lgets counter. The only \"service\" that NFS_LAYOUT_DESTROYED\nprovides at this point is to block layoutget once the layout segment\nlist is empty, which basically means that you have to wait until\nthe pnfs_layout_hdr is destroyed before you can do pNFS on that file\nagain.\n\nThis patch enables the reuse of the pnfs_layout_hdr if the layout\nsegment list is empty.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "579342785f7069d32e9637ef30d59c4256dcec3d",
      "tree": "343497ec99e6aa8f1ba2e08f02f0ca0b185f2768",
      "parents": [
        "a9136d4914f61110ca9897ec65ab620075c50298"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 20 20:37:23 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:16 2012 -0400"
      },
      "message": "NFSv4.1: Remove unused \u0027default allocation\u0027 for pnfs_alloc_layout_hdr()\n\n...and ditto for pnfs_free_layout_hdr()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a9136d4914f61110ca9897ec65ab620075c50298",
      "tree": "e631e5eac17a7375fe4f5452e371892e4f4833d4",
      "parents": [
        "8f0d27dc5d77b084b2e2fe6d883c4d5776287842"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 20 20:01:56 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:16 2012 -0400"
      },
      "message": "NFSv4.1: Get rid of pNFS spin lock debugging asserts...\n\nThese are all in static declared functions that are called only once.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8f0d27dc5d77b084b2e2fe6d883c4d5776287842",
      "tree": "b3dcc9cb6076fca8204288535cf1789b108a71fc",
      "parents": [
        "905ca191cfe1ab18822d86e3ddef1b1b38832fdc"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 20 20:57:11 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:15 2012 -0400"
      },
      "message": "NFSv4.1: Balance pnfs_layout_hdr refcount in pnfs_layout_(insert|remove)_lseg\n\nEnsure that the reference count for pnfs_layout_hdr reverts to the\noriginal value after a call to pnfs_layout_remove_lseg().\n\nNote that the caller is expected to hold a reference to the struct\npnfs_layout_hdr.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "905ca191cfe1ab18822d86e3ddef1b1b38832fdc",
      "tree": "b8e6a5056878adf3f0f3423f3f8c859467e16112",
      "parents": [
        "9c6263819f25254f2ed48f076b50096dd5893dfb"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 20 20:46:49 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:15 2012 -0400"
      },
      "message": "NFSv4.1: Clean up pnfs_put_lseg()\n\nThere is no longer a need to use pnfs_free_lseg_list(). Just call\npnfs_free_lseg() directly.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9c6263819f25254f2ed48f076b50096dd5893dfb",
      "tree": "d95527cbeba0d44973f286602a35ff2c21c811bd",
      "parents": [
        "6622c3ea059b2fed49924b74db41d1e0f065fbd3"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 20 17:31:43 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:14 2012 -0400"
      },
      "message": "NFSv4.1: Clean up the removal of pnfs_layout_hdr from the server list\n\nMove the code into pnfs_free_layout_hdr(), and add checks to\nget_layout_by_fh_locked to ensure that they don\u0027t reference a layout\nthat is being freed.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6622c3ea059b2fed49924b74db41d1e0f065fbd3",
      "tree": "d8b362ec56159a57f7402e8d4f70d704f06a612b",
      "parents": [
        "01d39ce82b565961abaf1930f54ccf7b32c96b15"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 20 17:23:11 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:14 2012 -0400"
      },
      "message": "NFSv4.1: Free the pnfs_layout_hdr outside the inode-\u003ei_lock\n\nNone of the existing pNFS layout drivers seem to require the inode\nto be locked while they free the layout header.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "01d39ce82b565961abaf1930f54ccf7b32c96b15",
      "tree": "452fcdbcfe1673c5c0d0b2e0a137bc56775a172c",
      "parents": [
        "57036a377600ec0900b13f29814aa19072ad3e52"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 20 17:02:32 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:13 2012 -0400"
      },
      "message": "NFSv4.1: Remove redundant reference to the pnfs_layout_hdr\n\nEach layout segment already holds a reference to the pnfs_layout_hdr,\nso there is no need to hold an extra reference that is released once\nthe last layout segment is freed.\n\nEnsure that pnfs_find_alloc_layout() always returns a reference\nto the pnfs_layout_hdr, which will be matched by the final call to\npnfs_put_layout_hdr() in pnfs_update_layout().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "57036a377600ec0900b13f29814aa19072ad3e52",
      "tree": "d9509d3e0611e47247354056af549ffa3bcb4364",
      "parents": [
        "bb346f63976823c2959b0c5917928f12cbf96e4a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 20 16:33:30 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:13 2012 -0400"
      },
      "message": "NFSv4.1: Rename the pnfs_put_lseg_common to pnfs_layout_remove_lseg\n\nThe latter name is more descriptive of the actual function.\nAlso rename pnfs_insert_layout to pnfs_layout_insert_lseg.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bb346f63976823c2959b0c5917928f12cbf96e4a",
      "tree": "ff9fdcdc22165d111469e2ebeb395a1d5c47d4a5",
      "parents": [
        "965938b83b19aeffdc1d16ce9947c8c127e8f59b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 20 15:52:13 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:12 2012 -0400"
      },
      "message": "NFSv4.1: reset the inode MDS threshold counters on layout destruction\n\nInstead of resetting the inode MDS threshold counters when we mark\nthe layout for destruction, do it as part of freeing the layout.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "965938b83b19aeffdc1d16ce9947c8c127e8f59b",
      "tree": "40288cb09fb91d508cc7e43ce565aa9b3a2a6137",
      "parents": [
        "1f7977c1368afc483908281daaffd31bca5a8d1e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 20 15:07:45 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:12 2012 -0400"
      },
      "message": "NFSv4.1: Get rid of pNFS layout state \"NFS_LAYOUT_INVALID\"\n\nIn all cases where we set NFS_LAYOUT_INVALID, we also set NFS_LAYOUT_DESTROYED.\nFurthermore, in all cases where we test for NFS_LAYOUT_INVALID, we should\nalso be testing for NFS_LAYOUT_DESTROYED, since the latter means that\nwe hold no valid layout segments.\nErgo the two are redundant.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1f7977c1368afc483908281daaffd31bca5a8d1e",
      "tree": "ab8bcc2e66719825ee91a5559250fc21882cf397",
      "parents": [
        "7fdab069b7172f2348cf3d87e19c6c24340292bf"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 20 20:31:51 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:12 2012 -0400"
      },
      "message": "NFSv4.1: Simplify the pNFS return-on-close code\n\nConfine it to the nfs4_do_close() code.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7fdab069b7172f2348cf3d87e19c6c24340292bf",
      "tree": "487de5c39bb8be13be52091acc83139435943000",
      "parents": [
        "115ce575cb10918514d053ef15f597a4e6ff60e9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 20 20:15:57 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:11 2012 -0400"
      },
      "message": "NFSv4.1: Fix a race in the pNFS return-on-close code\n\nIf we sleep after dropping the inode-\u003ei_lock, then we are no longer\natomic with respect to the rpc_wake_up() call in pnfs_layout_remove_lseg().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "115ce575cb10918514d053ef15f597a4e6ff60e9",
      "tree": "8eef5b764740c41aaa41a628f24d0bced750b6e3",
      "parents": [
        "3e6212149304eaf9289d5bc56e003068660f3476"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 20 21:19:43 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:11 2012 -0400"
      },
      "message": "NFSv4.1: pnfs_layout_io_set_failed must clear invalid lsegs\n\nIf pnfs_layout_io_test_failed() authorises a retry of the failed layoutgets,\nwe should clear the existing layout segments so that we start afresh. Do\nthis in pnfs_layout_io_set_failed().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3e6212149304eaf9289d5bc56e003068660f3476",
      "tree": "e1b9f72afd21b68e3a8c76a6b341183fe2001a5a",
      "parents": [
        "830ffb565760234eb984e4343ad82575e96728de"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Sep 24 13:07:16 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:10 2012 -0400"
      },
      "message": "NFSv4.1: Don\u0027t drop the pnfs_layout_hdr after a layoutget failure\n\nWe want to cache the pnfs_layout_hdr after a layoutget or i/o\nfailure so that pnfs_update_layout() can find it and know when\nit is time to retry.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "830ffb565760234eb984e4343ad82575e96728de",
      "tree": "b4d1be236d51d30624bc9b2bb5cacb75a640d7fd",
      "parents": [
        "1dfed2737d8cfe2f2378fddfb3bed126ff5474e7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 20 21:25:19 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:10 2012 -0400"
      },
      "message": "NFSv4.1: Fix a reference leak in pnfs_update_layout\n\nIf we exit after the call to pnfs_find_alloc_layout(), we have to ensure\nthat we put the struct pnfs_layout_hdr.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1dfed2737d8cfe2f2378fddfb3bed126ff5474e7",
      "tree": "865edd1618f525a66a30eac1e017a896b4f2bb8c",
      "parents": [
        "25c7533357a4c4a9311d40cc92e9648c8a7e763e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 18 19:51:12 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:09 2012 -0400"
      },
      "message": "NFSv4.1: pNFS data servers may be temporarily offline\n\nIn cases where the pNFS data server is just temporarily out of service,\nwe want to mark it as such, and then try again later. Typically that will\nbe in cases of network connection errors etc.\nThis patch allows us to mark the devices as being \"unavailable\" for such\ntransient errors, and will make them available for retries after a\n2 minute timeout period.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "25c7533357a4c4a9311d40cc92e9648c8a7e763e",
      "tree": "e38cc8e24d50ba9390dc669b448e8bb644def788",
      "parents": [
        "b9e028fd89d6834558aa2a5bb30e5cff5c6c1059"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 18 17:01:12 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:09 2012 -0400"
      },
      "message": "NFSv4.1: Retry pNFS after a 2 minute timeout\n\nIf we had to fall back to read/write through MDS, then assume that we should\nretry pNFS after a suitable timeout period.\nThe following patch sets a timeout of 2 minutes.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b9e028fd89d6834558aa2a5bb30e5cff5c6c1059",
      "tree": "7333094e4b4e388c36bfb7f69683f46ae714051b",
      "parents": [
        "f86bbcf85db32596a0484477d1b8042005709049"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 18 16:41:18 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:09 2012 -0400"
      },
      "message": "NFSv4.1: Add helpers for setting/reading the I/O fail bit\n\n...and make them local to the pnfs.c file.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f86bbcf85db32596a0484477d1b8042005709049",
      "tree": "38c8e879c737cc4a333fc44ca37430e07706b941",
      "parents": [
        "78e4e05c643768af170e5a4b21712d9a7a26cce5"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Sep 26 11:21:40 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:08 2012 -0400"
      },
      "message": "NFSv4.1: Replace dprintk() in pnfs_update_layout with something less buggy\n\nDereferencing nfsi-\u003elayout in order to read plh_flags without holding\na spin lock is bug prone. Furthermore, the dprintk() tells you nothing\nabout whether or not the call succeeded.\nReplace it with something that tells you about whether or not a valid\nlayout segment was returned for the inode in question.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "78e4e05c643768af170e5a4b21712d9a7a26cce5",
      "tree": "877b3f47c16a9e027fe5453418c9d54f339a3aa5",
      "parents": [
        "9369a431bce1e985597eda32992960c969b27c5b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 18 21:02:29 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:08 2012 -0400"
      },
      "message": "NFSv4.1: Replace get_device_info() with filelayout_get_device_info()\n\nFix the namespace pollution issue.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9369a431bce1e985597eda32992960c969b27c5b",
      "tree": "09e566777480749f44c54c642f5d31d8b91e9d44",
      "parents": [
        "70c3bd2bdf9a3c7c9282c362a4ec9ec88c713e13"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 18 20:57:08 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:07 2012 -0400"
      },
      "message": "NFSv4.1: Cleanup; add \"pnfs_\" prefix to put_lseg() and get_lseg()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "70c3bd2bdf9a3c7c9282c362a4ec9ec88c713e13",
      "tree": "cd1bbe74ec866d820b344b3d6d4c4c25e4c2e960",
      "parents": [
        "49a85061b0bc9cb26361096482c81172c666c937"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 18 20:51:13 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:07 2012 -0400"
      },
      "message": "NFSv4.1: Cleanup; add \"pnfs_\" prefix to get_layout_hdr() and put_layout_hdr()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "49a85061b0bc9cb26361096482c81172c666c937",
      "tree": "ec64b83a0fdde6ede6d93e3bed776428206d4fb6",
      "parents": [
        "a0b0a6e39bd1bb4a0922086feee73627cbd53ba4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 18 20:43:31 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:06 2012 -0400"
      },
      "message": "NFSv4.1: Cleanup add a \"pnfs_\" prefix to mark_matching_lsegs_invalid\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a0b0a6e39bd1bb4a0922086feee73627cbd53ba4",
      "tree": "51921888aee9b74c3d6ad62b3546c858434f8925",
      "parents": [
        "d19751e7b9bd8a01d00372325439589886674f79"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Sep 17 17:12:15 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:06 2012 -0400"
      },
      "message": "NFS: Clean up the pNFS layoutget interface\n\nEnsure that we do return errors from nfs4_proc_layoutget() and that we\ndon\u0027t mark the layout as having failed if the error was due to a\nsignal or resource problem on the client side.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d19751e7b9bd8a01d00372325439589886674f79",
      "tree": "71ea849e8dc6021a455f2de1a76601e8db2255c7",
      "parents": [
        "dcfc4f25461813e8a2dd43b052aa1e0be155742f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 11 17:21:25 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:05 2012 -0400"
      },
      "message": "SUNRPC: Get rid of the redundant xprt-\u003eshutdown bit field\n\nIt is only set after everyone has dereferenced the transport,\nand serves no useful purpose: setting it is racy, so all the\nsocket code, etc still needs to be able to cope with the cases\nwhere they miss reading it.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "dcfc4f25461813e8a2dd43b052aa1e0be155742f",
      "tree": "82edc73de99f2ce16fa9072964337699158abd34",
      "parents": [
        "05990d1bf2708b9e84d67074551f964d3738eedc"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 11 16:19:38 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:05 2012 -0400"
      },
      "message": "NFS: Write the entire file if a server reboot occurs during fsync()\n\nThis is to ensure that we don\u0027t clear the NFS_CONTEXT_RESEND_WRITES\nflag while there are still writes that haven\u0027t been resent.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "05990d1bf2708b9e84d67074551f964d3738eedc",
      "tree": "b4133627b503563eadea21aab695df78080402e1",
      "parents": [
        "795a88c968eef031f370973512b42124bacb2f17"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 11 16:01:22 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:05 2012 -0400"
      },
      "message": "NFS: Fix fdatasync/fsync() when confronted with a server reboot\n\nIf the server reboots before it can commit the unstable writes to disk,\nthen nfs_commit_release_pages() will detect this when it compares the\nverifier returned by COMMIT to the one returned by WRITE. When this\nhappens, the client needs to resend those writes in order to guarantee\nthat they make it to stable storage.\n\nThis patch adds a signalling mechanism to notify fsync() that it\nneeds to retry all writes before it can exit.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "795a88c968eef031f370973512b42124bacb2f17",
      "tree": "4a75a204bea7b2ada2155038d7f8aa19d444fc2d",
      "parents": [
        "2a369153c82e0c83621b3e71d8f0c53394705bda"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Sep 10 13:26:49 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:04 2012 -0400"
      },
      "message": "NFSv4: Convert the nfs4_lock_state-\u003els_flags to a bit field\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2a369153c82e0c83621b3e71d8f0c53394705bda",
      "tree": "bed0f7bfde6d8eac2b58bf0f7c452afb5f906b40",
      "parents": [
        "b3c54de6f82d01637796bcc1f667a45f3b32e814"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Aug 13 18:54:45 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:04 2012 -0400"
      },
      "message": "NFS: Clean up helper function nfs4_select_rw_stateid()\n\nWe want to be able to pass on the information that the page was not\ndirtied under a lock. Instead of adding a flag parameter, do this\nby passing a pointer to a \u0027struct nfs_lock_owner\u0027 that may be NULL.\n\nAlso reuse this structure in struct nfs_lock_context to carry the\nfl_owner_t and pid_t.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b3c54de6f82d01637796bcc1f667a45f3b32e814",
      "tree": "9b0e87f60b2815ca20ef47eceed6da0f16b799ef",
      "parents": [
        "a11a2bf4de5679fa0b63474c7d39bea2dac7d061"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Aug 13 17:15:50 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 16:03:03 2012 -0400"
      },
      "message": "NFS: Convert nfs_get_lock_context to return an ERR_PTR on failure\n\nWe want to be able to distinguish between allocation failures, and\nthe case where the lock context is not needed (because there are no\nlocks).\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a11a2bf4de5679fa0b63474c7d39bea2dac7d061",
      "tree": "d59f027797b629d029596f968ccf65dc7916509f",
      "parents": [
        "13fe4ba1b64c099843c75b4f0633ad30a4526637"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Aug 02 13:21:43 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 15:58:42 2012 -0400"
      },
      "message": "SUNRPC: Optimise away unnecessary data moves in xdr_align_pages\n\nWe only have to call xdr_shrink_pagelen() if the remaining RPC\nmessage does not fit in the page buffer length that we supplied\nto xdr_align_pages().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0cac120233305b614cfe3ad419f3655876066017",
      "tree": "131f7c1d4dc97124397bdb86759842fe22052227",
      "parents": [
        "e9ab41b620e4b679ed069ab05cb85e67870b7c87"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 27 16:15:00 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 13:43:34 2012 -0400"
      },
      "message": "NFSv4: Ensure that idmap_pipe_downcall sanity-checks the downcall data\n\nUse the idmapper upcall data to verify that the legacy idmapper daemon\nis indeed responding to an upcall that we sent.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\n"
    },
    {
      "commit": "e9ab41b620e4b679ed069ab05cb85e67870b7c87",
      "tree": "4b61840469aadfc05296e8b6859b6640e9d43193",
      "parents": [
        "0e24d849c4ea777c59955b241fd3af14a1b84af5"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 27 15:44:19 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 13:42:41 2012 -0400"
      },
      "message": "NFSv4: Clean up the legacy idmapper upcall\n\nReplace the BUG_ON(idmap-\u003eidmap_key_cons !\u003d NULL) with a\nWARN_ON_ONCE(). Then get rid of the ACCESS_ONCE(idmap-\u003eidmap_key_cons).\n\nThen add helper functions for starting, finishing and aborting the\nlegacy upcall.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\n"
    },
    {
      "commit": "0e24d849c4ea777c59955b241fd3af14a1b84af5",
      "tree": "040025f1f7439395233591cdece544708e8ec333",
      "parents": [
        "62d98c935456ee121b03d6a68aa3091a04085b7e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 12:03:09 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 12:27:11 2012 -0400"
      },
      "message": "NFSv4: Remove BUG_ON() and ACCESS_ONCE() calls in the idmapper\n\nThe use of ACCESS_ONCE() is wrong, since the various routines that set/clear\nidmap-\u003eidmap_key_cons should be strictly ordered w.r.t. each other, and\nthe idmap-\u003eidmap_mutex ensures that only one thread at a time may be in\nan upcall situation.\n\nAlso replace the BUG_ON()s with WARN_ON_ONCE() where appropriate.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "13fe4ba1b64c099843c75b4f0633ad30a4526637",
      "tree": "28d579d3ed2cccf72f77963fbf6e5f15eff4ee92",
      "parents": [
        "8a9a8b8332b92b13316cf49685b5dc5257cfe115"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Aug 01 14:21:12 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Sep 26 12:43:10 2012 -0400"
      },
      "message": "NFSv4.1: decode_getdeviceinfo should check xdr_read_pages() return value\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8a9a8b8332b92b13316cf49685b5dc5257cfe115",
      "tree": "e3a0d5b5d0b9191e3a21f488dedd1f7aeb4dc968",
      "parents": [
        "62d98c935456ee121b03d6a68aa3091a04085b7e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Aug 01 14:32:13 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Sep 26 12:43:10 2012 -0400"
      },
      "message": "SUNRPC: Fix the return value of xdr_align_pages()\n\nThe callers of xdr_align_pages() expect it to return the number of bytes\nof actual XDR data remaining in the pages.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "62d98c935456ee121b03d6a68aa3091a04085b7e",
      "tree": "09f58145bc10308f4672ee156a0ed23ea87c4f7b",
      "parents": [
        "e8d920c58ddb45126e1b306854f6e34b88446baf"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Sep 17 16:46:34 2012 +1000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 25 10:38:54 2012 -0400"
      },
      "message": "NFS4: avoid underflow when converting error to pointer.\n\nIn nfs4_create_sec_client, \u0027flavor\u0027 can hold a negative error\ncode (returned from nfs4_negotiate_security), even though it\nis an \u0027enum\u0027 and hence unsigned.\n\nThe code is careful to cast it to an (int) before testing if it\nis negative, however it doesn\u0027t cast to an (int) before calling\nERR_PTR.\n\nOn a machine where \"void*\" is larger than \"int\", this results in\nthe unsigned equivalent of -1 (e.g. 0xffffffff) being converted\nto a pointer.  Subsequent code determines that this is not\nnegative, and so  dereferences it with predictable results.\n\nSo: cast \u0027flavor\u0027 to a (signed) int before passing to ERR_PTR.\n\ncc: Benny Halevy \u003cbhalevy@tonian.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e8d920c58ddb45126e1b306854f6e34b88446baf",
      "tree": "9022863bcb9fa0ee7218f1d1f878846e222ab41e",
      "parents": [
        "84e28a307e376f271505af65a7b7e212dd6f61f4"
      ],
      "author": {
        "name": "Wei Yongjun",
        "email": "yongjun_wei@trendmicro.com.cn",
        "time": "Fri Sep 21 12:27:41 2012 +0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 25 10:36:37 2012 -0400"
      },
      "message": "NFS: fix the return value check by using IS_ERR\n\nIn case of error, the function rpcauth_create() returns ERR_PTR()\nand never returns NULL pointer. The NULL test in the return value\ncheck should be replaced with IS_ERR().\n\ndpatch engine is used to auto generated this patch.\n(https://github.com/weiyj/dpatch)\n\nSigned-off-by: Wei Yongjun \u003cyongjun_wei@trendmicro.com.cn\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "84e28a307e376f271505af65a7b7e212dd6f61f4",
      "tree": "8b84708aebcd196381e1f01bc41b8320e082c489",
      "parents": [
        "a519fc7a70d1a918574bb826cc6905b87b482eb9"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Sep 24 13:39:01 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 25 10:33:59 2012 -0400"
      },
      "message": "SUNRPC: Set alloc_slot for backchannel tcp ops\n\nf39c1bfb5a03e2d255451bff05be0d7255298fa4 (SUNRPC: Fix a UDP transport\nregression) introduced the \"alloc_slot\" function for xprt operations,\nbut never created one for the backchannel operations.  This patch fixes\na null pointer dereference when mounting NFS over v4.1.\n\nCall Trace:\n [\u003cffffffffa0207957\u003e] ? xprt_reserve+0x47/0x50 [sunrpc]\n [\u003cffffffffa02023a4\u003e] call_reserve+0x34/0x60 [sunrpc]\n [\u003cffffffffa020e280\u003e] __rpc_execute+0x90/0x400 [sunrpc]\n [\u003cffffffffa020e61a\u003e] rpc_async_schedule+0x2a/0x40 [sunrpc]\n [\u003cffffffff81073589\u003e] process_one_work+0x139/0x500\n [\u003cffffffff81070e70\u003e] ? alloc_worker+0x70/0x70\n [\u003cffffffffa020e5f0\u003e] ? __rpc_execute+0x400/0x400 [sunrpc]\n [\u003cffffffff81073d1e\u003e] worker_thread+0x15e/0x460\n [\u003cffffffff8145c839\u003e] ? preempt_schedule+0x49/0x70\n [\u003cffffffff81073bc0\u003e] ? rescuer_thread+0x230/0x230\n [\u003cffffffff81079603\u003e] kthread+0x93/0xa0\n [\u003cffffffff81465d04\u003e] kernel_thread_helper+0x4/0x10\n [\u003cffffffff81079570\u003e] ? kthread_freezable_should_stop+0x70/0x70\n [\u003cffffffff81465d00\u003e] ? gs_change+0x13/0x13\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a519fc7a70d1a918574bb826cc6905b87b482eb9",
      "tree": "c83f9217abc40b69e10f6288e78285238bf6a9e1",
      "parents": [
        "c46de2263f42fb4bbde411b9126f471e9343cb22"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Sep 12 16:49:15 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Sep 19 18:16:10 2012 -0400"
      },
      "message": "SUNRPC: Ensure that the TCP socket is closed when in CLOSE_WAIT\n\nInstead of doing a shutdown() call, we need to do an actual close().\nDitto if/when the server is sending us junk RPC headers.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nTested-by: Simon Kirby \u003csim@hostway.ca\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "c46de2263f42fb4bbde411b9126f471e9343cb22",
      "tree": "7e7209d5d70bdeac3e26234c357474aad461e4b7",
      "parents": [
        "077fee003624c06a1349895d8c0f89cc625cc39e",
        "2453f5f992717251cfadab6184fbb3ec2f2e8b40"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 19 11:04:34 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 19 11:04:34 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-block\n\nPull block fixes from Jens Axboe:\n \"A small collection of driver fixes/updates and a core fix for 3.6.  It\n  contains:\n\n   - Bug fixes for mtip32xx, and support for new hardware (just addition\n     of IDs).  They have been queued up for 3.7 for a few weeks as well.\n\n   - rate-limit a failing command error message in block core.\n\n   - A fix for an old cciss bug from Stephen.\n\n   - Prevent overflow of partition count from Alan.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-block:\n  cciss: fix handling of protocol error\n  blk: add an upper sanity check on partition adding\n  mtip32xx: fix user_buffer check in exec_drive_command\n  mtip32xx: Remove dead code\n  mtip32xx: Change printk to pr_xxxx\n  mtip32xx: Proper reporting of write protect status on big-endian\n  mtip32xx: Increase timeout for standby command\n  mtip32xx: Handle NCQ commands during the security locked state\n  mtip32xx: Add support for new devices\n  block: rate-limit the error message from failing commands\n"
    }
  ],
  "next": "077fee003624c06a1349895d8c0f89cc625cc39e"
}
