)]}'
{
  "log": [
    {
      "commit": "419f4319495043a9507ac3e616be9ca60af09744",
      "tree": "0f747d80d11a6d4cd726ad6556839d5cd40b23ac",
      "parents": [
        "fb21affa49204acd409328415b49bfe90136653c",
        "6eccece90b6addf80ef9e6db79b0bc873301034b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 08:32:58 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 08:32:58 2012 -0700"
      },
      "message": "Merge branch \u0027for-3.5\u0027 of git://linux-nfs.org/~bfields/linux\n\nPull the rest of the nfsd commits from Bruce Fields:\n \"... and then I cherry-picked the remainder of the patches from the\n  head of my previous branch\"\n\nThis is the rest of the original nfsd branch, rebased without the\ndelegation stuff that I thought really needed to be redone.\n\nI don\u0027t like rebasing things like this in general, but in this situation\nthis was the lesser of two evils.\n\n* \u0027for-3.5\u0027 of git://linux-nfs.org/~bfields/linux: (50 commits)\n  nfsd4: fix, consolidate client_has_state\n  nfsd4: don\u0027t remove rebooted client record until confirmation\n  nfsd4: remove some dprintk\u0027s and a comment\n  nfsd4: return \"real\" sequence id in confirmed case\n  nfsd4: fix exchange_id to return confirm flag\n  nfsd4: clarify that renewing expired client is a bug\n  nfsd4: simpler ordering of setclientid_confirm checks\n  nfsd4: setclientid: remove pointless assignment\n  nfsd4: fix error return in non-matching-creds case\n  nfsd4: fix setclientid_confirm same_cred check\n  nfsd4: merge 3 setclientid cases to 2\n  nfsd4: pull out common code from setclientid cases\n  nfsd4: merge last two setclientid cases\n  nfsd4: setclientid/confirm comment cleanup\n  nfsd4: setclientid remove unnecessary terms from a logical expression\n  nfsd4: move rq_flavor into svc_cred\n  nfsd4: stricter cred comparison for setclientid/exchange_id\n  nfsd4: move principal name into svc_cred\n  nfsd4: allow removing clients not holding state\n  nfsd4: rearrange exchange_id logic to simplify\n  ...\n"
    },
    {
      "commit": "a00b6151a2ae4c52576c35d3998e144a993d50b8",
      "tree": "fc312be05c4deb4dead7a6afa09e88017d3a0146",
      "parents": [
        "08615d7d85e5aa02c05bf6c4dde87d940e7f85f6",
        "b108fe6b08f3f61c2c465649b20b7d4b4c185728"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 18:18:11 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 18:18:11 2012 -0700"
      },
      "message": "Merge branch \u0027for-3.5-take-2\u0027 of git://linux-nfs.org/~bfields/linux\n\nPull nfsd update from Bruce Fields.\n\n* \u0027for-3.5-take-2\u0027 of git://linux-nfs.org/~bfields/linux: (23 commits)\n  nfsd: trivial: use SEEK_SET instead of 0 in vfs_llseek\n  SUNRPC: split upcall function to extract reusable parts\n  nfsd: allocate id-to-name and name-to-id caches in per-net operations.\n  nfsd: make name-to-id cache allocated per network namespace context\n  nfsd: make id-to-name cache allocated per network namespace context\n  nfsd: pass network context to idmap init/exit functions\n  nfsd: allocate export and expkey caches in per-net operations.\n  nfsd: make expkey cache allocated per network namespace context\n  nfsd: make export cache allocated per network namespace context\n  nfsd: pass pointer to export cache down to stack wherever possible.\n  nfsd: pass network context to export caches init/shutdown routines\n  Lockd: pass network namespace to creation and destruction routines\n  NFSd: remove hard-coded dereferences to name-to-id and id-to-name caches\n  nfsd: pass pointer to expkey cache down to stack wherever possible.\n  nfsd: use hash table from cache detail in nfsd export seq ops\n  nfsd: pass svc_export_cache pointer as private data to \"exports\" seq file ops\n  nfsd: use exp_put() for svc_export_cache put\n  nfsd: use cache detail pointer from svc_export structure on cache put\n  nfsd: add link to owner cache detail to svc_export structure\n  nfsd: use passed cache_detail pointer expkey_parse()\n  ...\n"
    },
    {
      "commit": "8dbf28e495337b0c66657e3e278ae0ff175b7140",
      "tree": "f38d8d72ef7845e7064ec4e46665eaef8fed26e0",
      "parents": [
        "3d1221dfa95ca876535c5947626f3834343e8fbc"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Wed Apr 25 18:23:16 2012 +0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu May 31 20:29:44 2012 -0400"
      },
      "message": "LockD: add debug message to start and stop functions\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "3d1221dfa95ca876535c5947626f3834343e8fbc",
      "tree": "e5a9f3d51b287129d9dc2599a524a752a2fdbadd",
      "parents": [
        "7d13ec761ae45d5e401965c73d855840ff8cdd23"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Wed Apr 25 18:23:09 2012 +0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu May 31 20:29:44 2012 -0400"
      },
      "message": "LockD: service start function introduced\n\nThis is just a code move, which from my POV makes the code look better.\nI.e. now on start we have 3 different stages:\n1) Service creation.\n2) Service per-net data allocation.\n3) Service start.\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "7d13ec761ae45d5e401965c73d855840ff8cdd23",
      "tree": "687f136f3ebec65f3700aab47f6c82bf48797c9e",
      "parents": [
        "24452239094a8b52f54fd4403f6e177837cecf67"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Wed Apr 25 18:23:02 2012 +0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu May 31 20:29:43 2012 -0400"
      },
      "message": "LockD: move global usage counter manipulation from error path\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "24452239094a8b52f54fd4403f6e177837cecf67",
      "tree": "4eac5ff5946cb30416ff23157ea861cdfbc1ca96",
      "parents": [
        "dbf9b5d74ceae787607e3d7db626fffa8be3c03d"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Wed Apr 25 18:22:54 2012 +0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu May 31 20:29:42 2012 -0400"
      },
      "message": "LockD: service creation function introduced\n\nThis function creates service if it doesn\u0027t exist, or increases usage\ncounter if it does, and returns a pointer to it.  The usage counter will\nbe droppepd by svc_destroy() later in lockd_up().\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "dbf9b5d74ceae787607e3d7db626fffa8be3c03d",
      "tree": "3a5418506b7066642b49e28f94d696114bc57e44",
      "parents": [
        "4db77695bf5738bdafa83d1b58b64cbecc6f55e7"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Wed Apr 25 18:22:47 2012 +0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu May 31 20:29:42 2012 -0400"
      },
      "message": "LockD: use existing per-net data function on service creation\n\nThis patch also replaces svc_rpcb_setup() with svc_bind().\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "4db77695bf5738bdafa83d1b58b64cbecc6f55e7",
      "tree": "251c5071cb060e29a22cad9b0e2fbd53f719602c",
      "parents": [
        "91c427ac3a61ccabae0fdef53563edf40394b6c9"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Wed Apr 25 18:22:40 2012 +0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu May 31 20:29:41 2012 -0400"
      },
      "message": "LockD: pass service to per-net up and down functions\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "786185b5f8abefa6a8a16695bb4a59c164d5a071",
      "tree": "780eafd98f98a093fda540898595b47b4261764c",
      "parents": [
        "9793f7c88937e7ac07305ab1af1a519225836823"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Fri May 04 12:49:41 2012 +0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu May 31 20:29:40 2012 -0400"
      },
      "message": "SUNRPC: move per-net operations from svc_destroy()\n\nThe idea is to separate service destruction and per-net operations,\nbecause these are two different things and the mix looks ugly.\n\nNotes:\n\n1) For NFS server this patch looks ugly (sorry for that). But these\nplace will be rewritten soon during NFSd containerization.\n\n2) LockD per-net counter increase int lockd_up() was moved prior to\nmake_socks() to make lockd_down_net() call safe in case of error.\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "9793f7c88937e7ac07305ab1af1a519225836823",
      "tree": "48a4283a15cb0d5a427e722075fe546cc8cdcc53",
      "parents": [
        "c52226daf553b21891f39777d78a54ea4e7e8654"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Wed May 02 16:08:38 2012 +0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu May 31 20:29:39 2012 -0400"
      },
      "message": "SUNRPC: new svc_bind() routine introduced\n\nThis new routine is responsible for service registration in a specified\nnetwork context.\n\nThe idea is to separate service creation from per-net operations.\n\nNote also: since registering service with svc_bind() can fail, the\nservice will be destroyed and during destruction it will try to\nunregister itself from rpcbind. In this case unregistration has to be\nskipped.\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "e847469bf77a1d339274074ed068d461f0c872bc",
      "tree": "4e5e9b3fea923432d6745ed1369100d2b941af0d",
      "parents": [
        "72094e43e3af5020510f920321d71f1798fa896d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Apr 13 13:49:47 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Apr 13 13:50:52 2012 -0400"
      },
      "message": "lockd: fix the endianness bug\n\ncomparing be32 values for \u003c is not doing the right thing...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e3f70eadb7dddfb5a2bb9afff7abfc6ee17a29d0",
      "tree": "688a94f2c86e0d7c637609239925f94f8ee08626",
      "parents": [
        "f890edbbeff6928b7db0c6179a9036cbd4f0efbf"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Thu Mar 29 18:54:33 2012 +0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Wed Apr 11 17:55:06 2012 -0400"
      },
      "message": "Lockd: pass network namespace to creation and destruction routines\n\nv2: dereference of most probably already released nlm_host removed in\nnlmclnt_done() and reclaimer().\n\nThese routines are called from locks reclaimer() kernel thread. This thread\nworks in \"init_net\" network context and currently relays on persence on lockd\nthread and it\u0027s per-net resources. Thus lockd_up() and lockd_down() can\u0027t relay\non current network context. So let\u0027s pass corrent one into them.\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "1df00640c9111c881633d9b219f18e66c52599ec",
      "tree": "e36d3924d84f47ec93f6650ff1fd5b8ea7d10d24",
      "parents": [
        "ab4684d1560f8d77f6ce82bd3f1f82937070d397",
        "5a7c9eec9fde1da0e3adf0a4ddb64ff2a324a492"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Wed Mar 21 16:42:14 2012 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Mon Mar 26 11:48:54 2012 -0400"
      },
      "message": "Merge nfs containerization work from Trond\u0027s tree\n\nThe nfs containerization work is a prerequisite for Jeff Layton\u0027s reboot\nrecovery rework.\n"
    },
    {
      "commit": "ffa94db6042e6fd014ae0bed8832ac707ef2afe9",
      "tree": "c2e98dc23546be53b311bf4eb010e824709e4d76",
      "parents": [
        "9304a8120a6ac06d08874d2aec76f52d3376dfe4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 20 09:22:00 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 21 09:31:44 2012 -0400"
      },
      "message": "SUNRPC/LOCKD: Fix build warnings when CONFIG_SUNRPC_DEBUG is undefined\n\nStephen Rothwell reports:\nnet/sunrpc/rpcb_clnt.c: In function \u0027rpcb_enc_mapping\u0027:\nnet/sunrpc/rpcb_clnt.c:820:19: warning: unused variable \u0027task\u0027 [-Wunused-variable]\nnet/sunrpc/rpcb_clnt.c: In function \u0027rpcb_dec_getport\u0027:\nnet/sunrpc/rpcb_clnt.c:837:19: warning: unused variable \u0027task\u0027 [-Wunused-variable]\nnet/sunrpc/rpcb_clnt.c: In function \u0027rpcb_dec_set\u0027:\nnet/sunrpc/rpcb_clnt.c:860:19: warning: unused variable \u0027task\u0027 [-Wunused-variable]\nnet/sunrpc/rpcb_clnt.c: In function \u0027rpcb_enc_getaddr\u0027:\nnet/sunrpc/rpcb_clnt.c:892:19: warning: unused variable \u0027task\u0027 [-Wunused-variable]\nnet/sunrpc/rpcb_clnt.c: In function \u0027rpcb_dec_getaddr\u0027:\nnet/sunrpc/rpcb_clnt.c:914:19: warning: unused variable \u0027task\u0027 [-Wunused-variable]\nfs/lockd/svclock.c:49:20: warning: \u0027nlmdbg_cookie2a\u0027 declared \u0027static\u0027 but never defined [-Wunused-function]\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "de5b8e8e047534aac6bc9803f96e7257436aef9c",
      "tree": "a32c2ccf0e2992f177c0a5db41e6b2b515b603e2",
      "parents": [
        "cec56c8ff5e28f58ff13041dca7853738ae577a1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 07 15:35:42 2012 +1100"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Feb 17 18:38:51 2012 -0500"
      },
      "message": "lockd: fix arg parsing for grace_period and timeout.\n\nIf you try to set grace_period or timeout via a module parameter\nto lockd, and do this on a big-endian machine where\n\n   sizeof(int) !\u003d sizeof(unsigned long)\n\nit won\u0027t work.  This number given will be effectively shifted right\nby the difference in those two sizes.\n\nSo cast kp-\u003earg properly to get correct result.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "3b64739fb928c34b13db6b5adcb0d3efb19e78be",
      "tree": "d3a0e8293b2da6d816c47939675e00da22c576d9",
      "parents": [
        "0e1cb5c0aad1c37a4eee6db45f52c0b3869db2cc"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Tue Jan 31 15:08:29 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Feb 15 00:19:48 2012 -0500"
      },
      "message": "Lockd: shutdown NLM hosts in network namespace context\n\nLockd now managed in network namespace context. And this patch introduces\nnetwork namespace related NLM hosts shutdown in case of releasing per-net Lockd\nresources.\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0e1cb5c0aad1c37a4eee6db45f52c0b3869db2cc",
      "tree": "1b483f62c0e8f8b5a8d5054d928902ac2eac5471",
      "parents": [
        "66697bfd6aec0a9ca9331c1aa544ac20324a7561"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Tue Jan 31 15:08:21 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Feb 15 00:19:48 2012 -0500"
      },
      "message": "LockD: make NSM network namespace aware\n\nNLM host is network namespace aware now.\nSo NSM have to take it into account.\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "66697bfd6aec0a9ca9331c1aa544ac20324a7561",
      "tree": "f4e16eba25d9b757e256f96d0a1eca58b65a68cb",
      "parents": [
        "bb2224df5ffe4f864f5b696199b17db1ce77bc0a"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Tue Jan 31 15:08:13 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Feb 15 00:19:48 2012 -0500"
      },
      "message": "LockD: make nlm hosts network namespace aware\n\nThis object depends on RPC client, and thus on network namespace.\nSo let\u0027s make it\u0027s allocation and lookup in network namespace context.\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bb2224df5ffe4f864f5b696199b17db1ce77bc0a",
      "tree": "1aa476668966b94ea5f5e399ea15f3aede936f47",
      "parents": [
        "a9c5d73a8d8cb37601f8c39b35b9b4128e1a5254"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Tue Jan 31 15:08:05 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Feb 15 00:19:47 2012 -0500"
      },
      "message": "Lockd: per-net up and down routines introduced\n\nThis patch introduces per-net Lockd initialization and destruction routines.\nThe logic is the same as in global Lockd up and down routines. Probably the\nsolution is not the best one. But at least it looks clear.\nSo per-net \"up\" routine are called only in case of lockd is running already. If\nper-net resources are not allocated yet, then service is being registered with\nlocal portmapper and lockd sockets created.\nPer-net \"down\" routine is called on every lockd_down() call in case of global\nusers counter is not zero.\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a9c5d73a8d8cb37601f8c39b35b9b4128e1a5254",
      "tree": "0ae70dea76c0039e5fa0f62e12001c82a0d1647a",
      "parents": [
        "c228fa2038a33bb3b87f567482124f452e162a71"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Tue Jan 31 15:07:57 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Feb 15 00:19:47 2012 -0500"
      },
      "message": "Lockd: pernet usage counter introduced\n\nLockd is going to be shared between network namespaces - i.e. going to be able\nto handle lock requests from different network namespaces. This means, that\nnetwork namespace related resources have to be allocated not once (like now),\nbut for every network namespace context, from which service is requested to\noperate.\nThis patch implements Lockd per-net users accounting. New per-net counter is\nused to determine, when per-net resources have to be freed.\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c228fa2038a33bb3b87f567482124f452e162a71",
      "tree": "7d89404b7d9facf20487b782126ddfa5dfe14620",
      "parents": [
        "074d0f67cfe0af4927ce49560f403096b490c47f"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Tue Jan 31 15:07:48 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Feb 15 00:19:46 2012 -0500"
      },
      "message": "Lockd: create permanent lockd sockets in current network namespace\n\nThis patch parametrizes Lockd permanent sockets creation routine by network\nnamespace context.\nIt also replaces hard-coded init_net with current network namespace context in\nLockd sockets creation routines.\nThis approach looks safe, because Lockd is created during NFS mount (or NFS\nserver start) and thus socket is required exactly in current network namespace\ncontext. But in the same time it means, that Lockd sockets inherits first Lockd\nrequester network namespace. This issue will be fixed in further patches of the\nseries.\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a613fa168afc19179a7547fbba45644c5b6912bf",
      "tree": "02db1b9ca905ff49d9811175607757e3a885325f",
      "parents": [
        "080b794ce5ad318ce34c52abaedf1bc6788a5abb"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 20 13:53:56 2012 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 31 19:28:20 2012 -0500"
      },
      "message": "SUNRPC: constify the rpc_program\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4cb54ca2069903121e4c03ec427147c47bed5755",
      "tree": "2d156d3d9f37a385a27f444f315c0498f0e9475f",
      "parents": [
        "babea479b75a9ea3d84ace6d880513e18397a8bb"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Fri Jan 20 16:50:53 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 31 19:28:19 2012 -0500"
      },
      "message": "SUNRPC: search for service transports in network namespace context\n\nService transports are parametrized by network namespace. And thus lookup of\ntransport instance have to take network namespace into account.\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "90ab5ee94171b3e28de6bb42ee30b527014e0be7",
      "tree": "fcf89889f6e881f2b231d3d20287c08174ce4b54",
      "parents": [
        "476bc0015bf09dad39d36a8b19f76f0c181d1ec9"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jan 13 09:32:20 2012 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jan 13 09:32:20 2012 +1030"
      },
      "message": "module_param: make bool parameters really bool (drivers \u0026 misc)\n\nmodule_param(bool) used to counter-intuitively take an int.  In\nfddd5201 (mid-2009) we allowed bool or int/unsigned int using a messy\ntrick.\n\nIt\u0027s time to remove the int/unsigned int option.  For this version\nit\u0027ll simply give a warning, but it\u0027ll break next kernel version.\n\nAcked-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "d8c9584ea2a92879f471fd3a2be3af6c534fb035",
      "tree": "3541b9c6228f820bdc65e4875156eb27b1c91cb1",
      "parents": [
        "ece2ccb668046610189d88d6aaf05aeb09c988a1"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 07 18:16:57 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jan 06 23:16:53 2012 -0500"
      },
      "message": "vfs: prefer -\u003edentry-\u003ed_sb to -\u003emnt-\u003emnt_sb\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "849a1cf13d4394d398d91752166e92e9ecd64f8d",
      "tree": "475c08721cb327b924035144f771dd2d85eda0cd",
      "parents": [
        "11fcee0293a6d9f0973e04f8b3fb6cd15a55bcce"
      ],
      "author": {
        "name": "Mi Jinlong",
        "email": "mijinlong@cn.fujitsu.com",
        "time": "Tue Aug 30 17:18:41 2011 +0800"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Wed Sep 14 08:21:48 2011 -0400"
      },
      "message": "SUNRPC: Replace svc_addr_u by sockaddr_storage\n\nFor IPv6 local address, lockd can not callback to client for\nmissing scope id when binding address at inet6_bind:\n\n 324       if (addr_type \u0026 IPV6_ADDR_LINKLOCAL) {\n 325               if (addr_len \u003e\u003d sizeof(struct sockaddr_in6) \u0026\u0026\n 326                   addr-\u003esin6_scope_id) {\n 327                       /* Override any existing binding, if another one\n 328                        * is supplied by user.\n 329                        */\n 330                       sk-\u003esk_bound_dev_if \u003d addr-\u003esin6_scope_id;\n 331               }\n 332\n 333               /* Binding to link-local address requires an interface */\n 334               if (!sk-\u003esk_bound_dev_if) {\n 335                       err \u003d -EINVAL;\n 336                       goto out_unlock;\n 337               }\n\nReplacing svc_addr_u by sockaddr_storage, let rqstp-\u003erq_daddr contains more info\nbesides address.\n\nReviewed-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nReviewed-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Mi Jinlong \u003cmijinlong@cn.fujitsu.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "11fd165c68b73434ca1273e21f21db5eecc90926",
      "tree": "75c3e2d97b2d59ebaaa4571df2ead80a4c4f35a5",
      "parents": [
        "c1f24ef4ed46f58ea5e524a2364c93b6847fb164"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Jul 28 20:04:09 2011 +0200"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Aug 19 13:25:36 2011 -0400"
      },
      "message": "sunrpc: use better NUMA affinities\n\nUse NUMA aware allocations to reduce latencies and increase throughput.\n\nsunrpc kthreads can use kthread_create_on_node() if pool_mode is\n\"percpu\" or \"pernode\", and svc_prepare_thread()/svc_init_buffer() can\nalso take into account NUMA node affinity for memory allocations.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCC: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCC: Neil Brown \u003cneilb@suse.de\u003e\nCC: David Miller \u003cdavem@davemloft.net\u003e\nReviewed-by: Greg Banks \u003cgnb@fastmail.fm\u003e\n[bfields@redhat.com: fix up caller nfs41_callback_up]\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "28890d3598c352ae065b560e0fded3e79c800ba1",
      "tree": "93267c5b29b9e81185e66a6c2e70e67dc626b63f",
      "parents": [
        "91d41fdf31f74e6e2e5f3cb018eca4200e36e202",
        "ed1e6211a0a134ff23592c6f057af982ad5dab52"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 27 13:23:02 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 27 13:23:02 2011 -0700"
      },
      "message": "Merge branch \u0027nfs-for-3.1\u0027 of git://git.linux-nfs.org/projects/trondmy/linux-nfs\n\n* \u0027nfs-for-3.1\u0027 of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (44 commits)\n  NFSv4: Don\u0027t use the delegation-\u003einode in nfs_mark_return_delegation()\n  nfs: don\u0027t use d_move in nfs_async_rename_done\n  RDMA: Increasing RPCRDMA_MAX_DATA_SEGS\n  SUNRPC: Replace xprt-\u003eresend and xprt-\u003esending with a priority queue\n  SUNRPC: Allow caller of rpc_sleep_on() to select priority levels\n  SUNRPC: Support dynamic slot allocation for TCP connections\n  SUNRPC: Clean up the slot table allocation\n  SUNRPC: Initalise the struct xprt upon allocation\n  SUNRPC: Ensure that we grab the XPRT_LOCK before calling xprt_alloc_slot\n  pnfs: simplify pnfs files module autoloading\n  nfs: document nfsv4 sillyrename issues\n  NFS: Convert nfs4_set_ds_client to EXPORT_SYMBOL_GPL\n  SUNRPC: Convert the backchannel exports to EXPORT_SYMBOL_GPL\n  SUNRPC: sunrpc should not explicitly depend on NFS config options\n  NFS: Clean up - simplify the switch to read/write-through-MDS\n  NFS: Move the pnfs write code into pnfs.c\n  NFS: Move the pnfs read code into pnfs.c\n  NFS: Allow the nfs_pageio_descriptor to signal that a re-coalesce is needed\n  NFS: Use the nfs_pageio_descriptor-\u003epg_bsize in the read/write request\n  NFS: Cache rpc_ops in struct nfs_pageio_descriptor\n  ...\n"
    },
    {
      "commit": "8fb47a4fbf858a164e973b8ea8ef5e83e61f2e50",
      "tree": "d3b55fbce0e7ba5708a55b91b1ab4079ad192db6",
      "parents": [
        "c46556c6be057da79f51b1a8325ec4c27938bd49"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Wed Jul 20 20:21:59 2011 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Wed Jul 20 20:23:19 2011 -0400"
      },
      "message": "locks: rename lock-manager ops\n\nBoth the filesystem and the lock manager can associate operations with a\nlock.  Confusingly, one of them (fl_release_private) actually has the\nsame name in both operation structures.\n\nIt would save some confusion to give the lock-manager ops different\nnames.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "82c2c8b8616fa9e77264c53f0df483f74ac54613",
      "tree": "076484dd88df425beba4cce7eb00576a2c9fbf23",
      "parents": [
        "726fd6ad59f73bd116b6a22d701db078183673c8"
      ],
      "author": {
        "name": "Vasily Averin",
        "email": "vvs@sw.ru",
        "time": "Wed Jun 01 16:54:32 2011 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 12 13:40:26 2011 -0400"
      },
      "message": "lockd: properly convert be32 values in debug messages\n\nlockd: server returns status 50331648\nit\u0027s quite hard to understand that number in this message is 3 in big endian\n\nSigned-off-by: Vasily Averin \u003cvvs@sw.ru\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0b760113a3a155269a3fba93a409c640031dd68f",
      "tree": "699dc3e0ebe2df11b0c67045c046deafdb56282d",
      "parents": [
        "9e3bd4e24e94d60d2e0762e919aab6c9a7fc0c5b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 31 15:15:34 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 15 11:24:27 2011 -0400"
      },
      "message": "NLM: Don\u0027t hang forever on NLM unlock requests\n\nIf the NLM daemon is killed on the NFS server, we can currently end up\nhanging forever on an \u0027unlock\u0027 request, instead of aborting. Basically,\nif the rpcbind request fails, or the server keeps returning garbage, we\nreally want to quit instead of retrying.\n\nTested-by: Vasily Averin \u003cvvs@sw.ru\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "80c30e8de4f81851b1f712bcc596e11d53bc76f1",
      "tree": "1adf291e8fe056e4a799b5292d7ff32988ebdbff",
      "parents": [
        "f61f6da0d53842e849bab7f69e1431bd3de1136d"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Jan 24 20:50:26 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 25 15:24:47 2011 -0500"
      },
      "message": "NLM: Fix \"kernel BUG at fs/lockd/host.c:417!\" or \".../host.c:283!\"\n\nNick Bowler \u003cnbowler@elliptictech.com\u003e reports:\n\n\u003e We were just having some NFS server troubles, and my client machine\n\u003e running 2.6.38-rc1+ (specifically, commit 2b1caf6ed7b888c95) crashed\n\u003e hard (syslog output appended to this mail).\n\u003e\n\u003e I\u0027m not sure what the exact timeline was or how to reproduce this,\n\u003e but the server was rebooted during all this.  Since I\u0027ve never seen\n\u003e this happen before, it is possibly a regression from previous kernel\n\u003e releases.  However, I recently updated my nfs-utils (on the client) to\n\u003e version 1.2.3, so that might be related as well.\n\n  [ BUG output redacted ]\n\nWhen done searching, the for_each_host loop in next_host_state() falls\nthrough and returns the final host on the host chain without bumping\nit\u0027s reference count.\n\nSince the host\u0027s ref count is only one at that point, releasing the\nhost in nlm_host_rebooted() attempts to destroy the host prematurely,\nand therefore hits a BUG().\n\nLikely, the original intent of the for_each_host behavior in\nnext_host_state() was to handle the case when the host chain is empty.\nSearching the chain and finding no suitable host to return needs to be\nhandled as well.\n\nDefensively restructure next_host_state() always to return NULL when\nthe loop falls through.\n\nIntroduced by commit b10e30f6 \"lockd: reorganize nlm_host_rebooted\".\n\nCc: J. Bruce Fields \u003cbfields@fieldses.org\u003e\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "51f128ea1c9224c1e3cf6c6a1498431d97699668",
      "tree": "b4e681ff618f5610de0aeede8bbec63cb1b75763",
      "parents": [
        "878215feb8b2417c4700090b4335739858cf7b5a"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Sun Jan 02 20:20:42 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 04 13:10:37 2011 -0500"
      },
      "message": "lockd: double unlock in next_host_state()\n\nWe unlock again after we goto out.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "79691836603541e81a3793970826ac4a75429572",
      "tree": "c8dd93e700752462896e85c3f1619567d26452eb",
      "parents": [
        "2025889828bb14b56d9aa4c1a785bd9847ccdc4b"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 14 15:06:52 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 16 12:37:27 2010 -0500"
      },
      "message": "lockd: Remove src_sap and src_len from nlm_lookup_host_info struct\n\nClean up.\n\nThe contents of the src_sap field is not used in nlm_alloc_host().\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2025889828bb14b56d9aa4c1a785bd9847ccdc4b",
      "tree": "20707cb2e2ca0f484ccdaf86f14e9ec1c10bdffb",
      "parents": [
        "fcc072c783491ca465e4d1e74da7dbb48dbf7a31"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 14 15:06:41 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 16 12:37:27 2010 -0500"
      },
      "message": "lockd: Remove nlm_lookup_host()\n\nClean up.\n\nRemove the now unused helper nlm_lookup_host().\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fcc072c783491ca465e4d1e74da7dbb48dbf7a31",
      "tree": "51f54e16efa5db00b26111afb59fb80da23ae306",
      "parents": [
        "d2df0484bb38f2e0d9754b00597d4a6d1cf666d0"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 14 15:06:32 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 16 12:37:27 2010 -0500"
      },
      "message": "lockd: Make nrhosts an unsigned long\n\nClean up.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d2df0484bb38f2e0d9754b00597d4a6d1cf666d0",
      "tree": "6d0145d895ab18bd41bd60b215fb0afe5a1549bd",
      "parents": [
        "67216b94d498f5880d8bba2a6b841880739dd524"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 14 15:06:22 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 16 12:37:27 2010 -0500"
      },
      "message": "lockd: Rename nlm_hosts\n\nClean up.\n\nnlm_hosts now contains only server-side entries.  Rename it to match\nconvention of client side cache.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "67216b94d498f5880d8bba2a6b841880739dd524",
      "tree": "c1334c1db47782b6af9cd69e5165538d9659bca1",
      "parents": [
        "8ea6ecc8b0759756a766c05dc7c98c51ec90de37"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 14 15:06:12 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 16 12:37:26 2010 -0500"
      },
      "message": "lockd: Clean up nlmsvc_lookup_host()\n\nClean up.\n\nChange nlmsvc_lookup_host() to be purpose-built for server-side\nnlm_host management.  This replaces the generic nlm_lookup_host()\nhelper function, just like on the client side.  The lookup logic is\nspecialized for server host lookups.\n\nThe server side cache also gets its own specialized equivalent of the\nnlm_release_host() function.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8ea6ecc8b0759756a766c05dc7c98c51ec90de37",
      "tree": "225f6f30c7f9a16b585dd38ee1b7f6b0646f990d",
      "parents": [
        "7db836d4a427c3c64406b00b6d8d745d6335d72a"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 14 15:05:52 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 16 12:37:26 2010 -0500"
      },
      "message": "lockd: Create client-side nlm_host cache\n\nNFS clients don\u0027t need the garbage collection processing that is\nperformed on nlm_host structures.  The client picks up an nlm_host at\nmount time and holds a reference to it until the file system is\nunmounted.\n\nServers, on the other hand, don\u0027t have a precise way to tell when an\nnlm_host is no longer being used, so zero refcount nlm_host entries\nare left to expire in the cache after a time.\n\nBasically there\u0027s nothing holding a reference to an nlm_host between\nindividual server-side NLM requests, but we can\u0027t afford the expense\nof recreating them for every new NLM request from a client.  The\nnlm_host cache adds some lifetime hysteresis to entries in the cache\nso the next time a particular nlm_host is needed, it\u0027s likely to be\ndiscovered by a lookup rather than created from whole cloth.\n\nWith the new implementation, client nlm_host cache items are no longer\ngarbage collected, and are destroyed directly by a new release\nfunction specialized for client entries, nlmclnt_release_host().  They\nare cached in their own data structure, and have their own lookup\nlogic, simplified and specialized for client nlm_host entries.\n\nHowever, the client nlm_host cache still shares reboot recovery logic\nwith the server nlm_host cache.  The NSM \"peer rebooted\" downcall for\nclients and servers still come through the same RPC call.  This is a\nlegacy formal API that would be difficult to alter, and besides, the\nuser space NSM implementation can\u0027t tell the difference between peers\nthat are clients or servers.\n\nFor this reason, the client cache continues to share the\nnlm_host_mutex (and reboot recovery logic) with the server cache.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7db836d4a427c3c64406b00b6d8d745d6335d72a",
      "tree": "63f1ae586db1945badf8a65e34f49113a4981c5e",
      "parents": [
        "723bb5b5052faba57060a2feb564ced22416b5bc"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 14 15:05:42 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 16 12:37:26 2010 -0500"
      },
      "message": "lockd: Split nlm_release_call()\n\nThe nlm_release_call() function is invoked from both the server and\nthe client side.  We\u0027re about to introduce a distinct server- and\nclient-side nlm_release_host(), so nlm_release_call() must first be\nsplit into a client-side and a server-side version.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "723bb5b5052faba57060a2feb564ced22416b5bc",
      "tree": "e70324287a277846d32ddc3a6724251e1fc27724",
      "parents": [
        "a7952f4056d4d9c63c70534bcfd4f2c11e487000"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 14 15:05:33 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 16 12:37:26 2010 -0500"
      },
      "message": "lockd: Add nlm_destroy_host_locked()\n\nRefactor the tail of nlm_gc_hosts() into nlm_destroy_host() so that\nthis logic can be used separately from garbage collection.\n\nRename it _locked() to document that it must be called with the hosts\ncache mutex held.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a7952f4056d4d9c63c70534bcfd4f2c11e487000",
      "tree": "0b622ff71d92abb3f6ec3d09fc3ed9c3624282ed",
      "parents": [
        "b10e30f6559978e3c8ca2a70c1cb35d6680a4021"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 14 15:05:23 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 16 12:37:26 2010 -0500"
      },
      "message": "lockd: Add nlm_alloc_host()\n\nRefactor nlm_host allocation and initialization into a separate\nfunction.  This will be the common piece of server and client nlm_host\nlookup logic after the nlm_host cache is split.\n\nSmall change: use kmalloc() instead of kzalloc(), as we\u0027re overwriting\nalmost all fields in the new nlm_host struct with non-zero values\nimmediately after it is allocated.  An added benefit is we now have an\nexplicit reference to each field name where it is initialized (for all\nyou cscope fans out there).\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b10e30f6559978e3c8ca2a70c1cb35d6680a4021",
      "tree": "b084204e36261f72da259ad8da44880623f834fc",
      "parents": [
        "b113746888c260a02f6ae1e92b0b9ef7e9c38993"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Dec 14 15:05:13 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 16 12:37:26 2010 -0500"
      },
      "message": "lockd: reorganize nlm_host_rebooted\n\nMinor reorganization; no change in behavior.  This will save some\nduplicated code after we split the client and server host caches.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n[ cel: Forward-ported to 2.6.37 ]\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b113746888c260a02f6ae1e92b0b9ef7e9c38993",
      "tree": "ad9e89b3e5bae544d3a9b04bc8feb02d2ee4b17c",
      "parents": [
        "bf2695516db982e90a22fc94f93491b481796bb1"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Dec 14 15:05:03 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 16 12:37:26 2010 -0500"
      },
      "message": "lockd: define host_for_each{_safe} macros\n\nWe\u0027ve got a lot of loops like this, and I find them a little easier to\nread with the macros.  More such loops are coming.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n[ cel: Forward-ported to 2.6.37 ]\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bf2695516db982e90a22fc94f93491b481796bb1",
      "tree": "367bf134ef892bfc3fcd2c4fe676b14102d97467",
      "parents": [
        "9f06c719f474be7003763284a990bed6377bb0d4"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 14 14:59:29 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 16 12:37:25 2010 -0500"
      },
      "message": "SUNRPC: New xdr_streams XDR decoder API\n\nNow that all client-side XDR decoder routines use xdr_streams, there\nshould be no need to support the legacy calling sequence [rpc_rqst *,\n__be32 *, RPC res *] anywhere.  We can construct an xdr_stream in the\ngeneric RPC code, instead of in each decoder function.\n\nThis is a refactoring change.  It should not cause different behavior.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nTested-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9f06c719f474be7003763284a990bed6377bb0d4",
      "tree": "409ebc3505f943bfdb933ab0acd76ffb5347b372",
      "parents": [
        "1ac7c23e4af5e83525137661595000099f1ce94f"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 14 14:59:18 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 16 12:37:25 2010 -0500"
      },
      "message": "SUNRPC: New xdr_streams XDR encoder API\n\nNow that all client-side XDR encoder routines use xdr_streams, there\nshould be no need to support the legacy calling sequence [rpc_rqst *,\n__be32 *, RPC arg *] anywhere.  We can construct an xdr_stream in the\ngeneric RPC code, instead of in each encoder function.\n\nAlso, all the client-side encoder functions return 0 now, making a\nreturn value superfluous.  Take this opportunity to convert them to\nreturn void instead.\n\nThis is a refactoring change.  It should not cause different behavior.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nTested-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "49b170047f4a9fe1483132e14a11bdf493bdb8af",
      "tree": "626d5a764350c6a0f57c7566df86e26aede2cdd3",
      "parents": [
        "ead00597882c4ee3c534d6880cc3bcb4d412cc4b"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 14 14:58:30 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 16 12:37:24 2010 -0500"
      },
      "message": "NSM: Avoid return code checking in NSM XDR encoder functions\n\nClean up.\n\nThe trend in the other XDR encoder functions is to BUG() when encoding\nproblems occur, since a problem here is always due to a local coding\nerror.  Then, instead of a status, zero is unconditionally returned.\n\nUpdate the NSM XDR encoders to behave this way.\n\nTo finish the update, use the new-style be32_to_cpup() and\ncpu_to_be32() macros, and compute the buffer sizes using raw integers\ninstead of sizeof().  This matches the conventions used in other XDR\nfunctions\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nTested-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d8367c504e39528a057a5d7a267b6724f7fdb4b8",
      "tree": "1d5b9f76680334a93e05aa09b86e071fac2c7baa",
      "parents": [
        "7d93bd71cb3e2629cc88bc59f393bd4df4162b94"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 14 14:57:52 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 16 12:37:24 2010 -0500"
      },
      "message": "lockd: Move nlmdbg_cookie2a() to svclock.c\n\nClean up.  nlmdbg_cookie2a() is used only in svclock.c.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nTested-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3460f29a27344db8c7af62cafdb961286ef0b6cd",
      "tree": "be7c8acc0c8c971114f8136534c613395a4d2951",
      "parents": [
        "f6048709391336cf27fb5c1cfca8e792103e5a73"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 14 14:57:12 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 16 12:37:23 2010 -0500"
      },
      "message": "lockd: Introduce new-style XDR functions for NLMv4\n\nWe\u0027d like to prevent local buffer overflows caused by malicious or\nbroken servers.  New xdr_stream style decoders can do that.\n\nFor efficiency, we also want to be able to pass xdr_streams from\ncall_encode() to all XDR encoding functions, rather than building\nan xdr_stream in every XDR encoding function in the kernel.\n\nSame idea as the NLM v3 XDR overhaul.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nTested-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2b061f9ef216b6d229b06267f188167fd6ab3d9b",
      "tree": "8ed08aa5bee3a50ac7bf9909e7fc8865b470b0a3",
      "parents": [
        "5f96e5e31b4f4a2f126adfe0586a7555c11b0562"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 14 14:55:40 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 16 12:37:21 2010 -0500"
      },
      "message": "lockd: Introduce new-style XDR functions for NLMv3\n\nWe\u0027d like to prevent local buffer overflows caused by malicious or\nbroken servers.  New xdr_stream style decoders can do that.\n\nFor efficiency, we also eventually want to be able to pass xdr_streams\nfrom call_encode() and call_decode() to all XDR encoding functions,\nrather than building an xdr_stream in every XDR encoding and decoding\nfunction in the kernel.\n\nTo do all of this, rewrite the XDR encoding and decoding functions in\nfs/lockd/xdr.c to use xdr_streams.  This makes them more or less\nincompatible with server-side XDR helper functions, so break them out\ninto a separate source file.\n\nStatic helper functions are left without the \"inline\" directive.  This\nallows the compiler to choose automatically how to optimize these for\nsize or speed.\n\nSHARE-related functionality doesn\u0027t seem to be used, as those\nfunctions are hiding behind a #define that isn\u0027t set anywhere that I\ncan find.  And, they\u0027ve been in there forever (at least as far back as\nthe kernel\u0027s git history goes), yet remain unused.  Let\u0027s take the\nopportunity to bin them.  It should be easy enough for someone to\nintroduce proper XDR functions if at some point SHARE-related NLM\nfunctionality is desired.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nTested-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "451a3c24b0135bce54542009b5fde43846c7cf67",
      "tree": "f0fbbcc155aef2a1ffcb8aa593fe7a966d0e6900",
      "parents": [
        "55f6561c6941713ab5ae9180525b026dd40b7d14"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Nov 17 16:26:55 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 17 08:59:32 2010 -0800"
      },
      "message": "BKL: remove extraneous #include \u003csmp_lock.h\u003e\n\nThe big kernel lock has been removed from all these files at some point,\nleaving only the #include.\n\nRemove this too as a cleanup.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8e35f8e7c61c88f9a979a4e6f7f4ffd4c158a88a",
      "tree": "1da21fa631fe471f6eae604dcbd3a416220de25a",
      "parents": [
        "6800e4c0ea3e96cf78953b8b5743381cb1bb9e37"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Nov 02 09:11:55 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 15 20:44:26 2010 -0500"
      },
      "message": "NLM: Fix a regression in lockd\n\nNick Bowler reports:\nThere are no unusual messages on the client... but I just logged into\nthe server and I see lots of messages of the following form:\n\n  nfsd: request from insecure port (192.168.8.199:35766)!\n  nfsd: request from insecure port (192.168.8.199:35766)!\n  nfsd: request from insecure port (192.168.8.199:35766)!\n  nfsd: request from insecure port (192.168.8.199:35766)!\n  nfsd: request from insecure port (192.168.8.199:35766)!\n\nBisected to commit 9247685088398cf21bcb513bd2832b4cd42516c4 (SUNRPC:\nProperly initialize sock_xprt.srcaddr in all cases)\n\nApparently, removing the \u0027transport-\u003esrcaddr.ss_family \u003d family\u0027 from\nxs_create_sock() triggers this due to nlmclnt_lookup_host() incorrectly\ninitialising the srcaddr family to AF_UNSPEC.\n\nReported-by: Nick Bowler \u003cnbowler@elliptictech.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a282a1fa6b23bd21ba0b86e53ed2a316b001836f",
      "tree": "8fbd81efed26f13fd53be66804065639ee71a89f",
      "parents": [
        "763641d81202834e9d64de2019d1edec12868f4f"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Oct 26 18:25:30 2010 -0400"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Oct 27 21:39:50 2010 +0200"
      },
      "message": "lockd: fix nlmsvc_notify_blocked locking\n\nnlmsvc_notify_blocked walks the nlm_blocked list,\nwhich requires nlm_blocked_lock.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\n"
    },
    {
      "commit": "763641d81202834e9d64de2019d1edec12868f4f",
      "tree": "cabbf932e3f6676bfbce6be27744795700011bfb",
      "parents": [
        "f9ba5375a8aae4aeea6be15df77e24707a429812"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Tue Oct 26 22:55:40 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Oct 27 21:39:39 2010 +0200"
      },
      "message": "lockd: push lock_flocks down\n\nlockd should use lock_flocks() instead of lock_kernel()\nto lock against posix locks accessing the i_flock list.\n\nThis is a prerequisite to turning lock_flocks into a\nspinlock.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "4390110fef9e5c64e10c6ca19d586932242c9a8a",
      "tree": "f2f26fe291c8b4e424b97ac57370b33e0c006568",
      "parents": [
        "a4dd8dce14014665862ce7911b38cb2c69e366dd",
        "42d7ba3d6d56a6cbc773284896108b1e2ebcee81"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 09:55:25 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 09:55:25 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.37\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.37\u0027 of git://linux-nfs.org/~bfields/linux: (99 commits)\n  svcrpc: svc_tcp_sendto XPT_DEAD check is redundant\n  svcrpc: no need for XPT_DEAD check in svc_xprt_enqueue\n  svcrpc: assume svc_delete_xprt() called only once\n  svcrpc: never clear XPT_BUSY on dead xprt\n  nfsd4: fix connection allocation in sequence()\n  nfsd4: only require krb5 principal for NFSv4.0 callbacks\n  nfsd4: move minorversion to client\n  nfsd4: delay session removal till free_client\n  nfsd4: separate callback change and callback probe\n  nfsd4: callback program number is per-session\n  nfsd4: track backchannel connections\n  nfsd4: confirm only on succesful create_session\n  nfsd4: make backchannel sequence number per-session\n  nfsd4: use client pointer to backchannel session\n  nfsd4: move callback setup into session init code\n  nfsd4: don\u0027t cache seq_misordered replies\n  SUNRPC: Properly initialize sock_xprt.srcaddr in all cases\n  SUNRPC: Use conventional switch statement when reclassifying sockets\n  sunrpc/xprtrdma: clean up workqueue usage\n  sunrpc: Turn list_for_each-s into the ..._entry-s\n  ...\n\nFix up trivial conflicts (two different deprecation notices added in\nseparate branches) in Documentation/feature-removal-schedule.txt\n"
    },
    {
      "commit": "c653ce3f0aee9bb2b221ebf3579385c06f81efcd",
      "tree": "d0f5a8018e2cf959b6bc1549ce75602ed179dca9",
      "parents": [
        "62832c039eab9d03cd28a66427ce8276988f28b0"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Wed Sep 29 16:04:45 2010 +0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Oct 01 17:18:56 2010 -0400"
      },
      "message": "sunrpc: Add net to rpc_create_args\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "fc5d00b04a3a58cac8620403dfe9f43f72578ec1",
      "tree": "3a8b9a5ae3456b5846fb64c0a74c9389998b3e18",
      "parents": [
        "e204e621b4160c802315bc2d0fa335337c0d62e8"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Wed Sep 29 16:03:50 2010 +0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Oct 01 17:18:54 2010 -0400"
      },
      "message": "sunrpc: Add net argument to svc_create_xprt\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "f904be9cc77f361d37d71468b13ff3d1a1823dea",
      "tree": "0c4b82a971b3240bb1f78a9428a911c450a35c08",
      "parents": [
        "e7f483eabea8ef6d2b5ce1b74c8184cc06819f15"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Tue Sep 21 16:38:12 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Wed Sep 22 15:32:58 2010 -0400"
      },
      "message": "lockd: Mostly remove BKL from the server\n\nThis patch removes all but one call to lock_kernel() from the server.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "63185942c5f138c62de16b4cbc7eee494a58fea8",
      "tree": "279f1dd93cc8d7805ef52a6ebb496d71d9cc3785",
      "parents": [
        "b4687da7fc5f741af7fee9b0248a2cf2ad9c4478"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Wed Sep 22 09:50:35 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Sep 22 09:50:35 2010 -0400"
      },
      "message": "lockd: Remove BKL from the client\n\nThis patch removes all calls to lock_kernel() from the client.  This patch\nshould be applied after the \"fs/lock.c prepare for BKL removal\" patch submitted\nby Arnd Bergmann on September 18.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "7e469af97eed947ba9204712601281a69ae8eb6c",
      "tree": "f4488e393995ae523ed6dea5370ddad7aa1505b5",
      "parents": [
        "cdd30fa1664e0245fa64330c7cc2ddab7e47c223"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Fri Feb 05 15:09:22 2010 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Feb 08 16:20:35 2010 -0500"
      },
      "message": "lockd: don\u0027t clear sm_monitored on nsm_reboot_lookup\n\nWhen lockd gets a notify downcall from statd, it\u0027ll search its hosts\ncache and then clear the sm_monitored bit on the host it finds. The idea\nis apparently to make lockd redo a SM_MON on the next lock request.\n\nThis is unnecessary and causes the kernel\u0027s NSM cache to go out of sync\nwith statd. statd doesn\u0027t stop monitoring a host when it gets a\nSM_NOTIFY and there\u0027s no guarantee that another lock will occur after\nthe reclaim and before the unmount. In that event, no SM_UNMON will\noccur.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nReviewed-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "cdd30fa1664e0245fa64330c7cc2ddab7e47c223",
      "tree": "acaa6946150b6aaccb576c200b955b8079943bb3",
      "parents": [
        "aa696a6f349638428982bb52763f4cda851632fa"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Fri Feb 05 15:09:12 2010 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Feb 08 16:20:35 2010 -0500"
      },
      "message": "lockd: release reference to nsm_handle in nlm_host_rebooted\n\nnsm_reboot_lookup takes a reference to the nsm_handle that it returns,\nbut nlm_host_rebooted never releases that reference.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nReviewed-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "d6783b2b6c4050df0ba0a84c6842cf5bc2212ef9",
      "tree": "d5c5d2ca1be2a53bb6e948da76c2ecd0f74ee27c",
      "parents": [
        "205ba42308729f4f41f21d314a4435e7de5c9a2e"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Jan 26 14:04:04 2010 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 26 17:56:43 2010 -0500"
      },
      "message": "SUNRPC: Bury \"#ifdef IPV6\" in svc_create_xprt()\n\nClean up:  Bruce observed we have more or less common logic in each of\nsvc_create_xprt()\u0027s callers:  the check to create an IPv6 RPC listener\nsocket only if CONFIG_IPV6 is set.  I\u0027m about to add another case\nthat does just the same.\n\nIf we move the ifdefs into __svc_xpo_create(), then svc_create_xprt()\ncall sites can get rid of the \"#ifdef\" ugliness, and can use the same\nlogic with or without IPv6 support available in the kernel.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "37c24b37fb2454e95136139d10bb6828967105bf",
      "tree": "d5c3fa61fa689567caeb2a7cb5891473e444ff7d",
      "parents": [
        "5ac4d630eb87656bd4dc313b910776d54d88ea28",
        "7663dacd926584093dfc350892792054692b6cb3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 10:43:34 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 10:43:34 2009 -0800"
      },
      "message": "Merge branch \u0027for-2.6.33\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.33\u0027 of git://linux-nfs.org/~bfields/linux: (42 commits)\n  nfsd: remove pointless paths in file headers\n  nfsd: move most of nfsfh.h to fs/nfsd\n  nfsd: remove unused field rq_reffh\n  nfsd: enable V4ROOT exports\n  nfsd: make V4ROOT exports read-only\n  nfsd: restrict filehandles accepted in V4ROOT case\n  nfsd: allow exports of symlinks\n  nfsd: filter readdir results in V4ROOT case\n  nfsd: filter lookup results in V4ROOT case\n  nfsd4: don\u0027t continue \"under\" mounts in V4ROOT case\n  nfsd: introduce export flag for v4 pseudoroot\n  nfsd: let \"insecure\" flag vary by pseudoflavor\n  nfsd: new interface to advertise export features\n  nfsd: Move private headers to source directory\n  vfs: nfsctl.c un-used nfsd #includes\n  lockd: Remove un-used nfsd headers #includes\n  s390: remove un-used nfsd #includes\n  sparc: remove un-used nfsd #includes\n  parsic: remove un-used nfsd #includes\n  compat.c: Remove dependence on nfsd private headers\n  ...\n"
    },
    {
      "commit": "0296f55f98368219af772f54d3bf18a9ad859399",
      "tree": "130154d858f8e65336434a7bdaefb660c09a39cb",
      "parents": [
        "399643f25eb93374e27e06ec85f0e8958298af2e"
      ],
      "author": {
        "name": "Boaz Harrosh",
        "email": "bharrosh@panasas.com",
        "time": "Thu Dec 03 20:30:27 2009 +0200"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Dec 14 18:12:11 2009 -0500"
      },
      "message": "lockd: Remove un-used nfsd headers #includes\n\nIn what history where these ever needed? Well not\nany more.\n\nSigned-off-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "6d4561110a3e9fa742aeec6717248a491dfb1878",
      "tree": "689e2abf19940416ce597ba56ed31026ff59bd21",
      "parents": [
        "86926d0096279b9739ceeff40f68d3c33b9119a9"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Nov 16 03:11:48 2009 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Nov 18 08:37:40 2009 -0800"
      },
      "message": "sysctl: Drop \u0026 in front of every proc_handler.\n\nFor consistency drop \u0026 in front of every proc_handler.  Explicity\ntaking the address is unnecessary and it prevents optimizations\nlike stubbing the proc_handlers to NULL.\n\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "ab09203e302b6e526f6930f3e460064b0f253ae9",
      "tree": "bc95bfaba78ba30613d57c676eca42818b8a3293",
      "parents": [
        "2bc4657c15e4a33d9a192579c7627a397dbcbebc"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu Nov 05 14:25:10 2009 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu Nov 12 02:04:55 2009 -0800"
      },
      "message": "sysctl fs: Remove dead binary sysctl support\n\nNow that sys_sysctl is a generic wrapper around /proc/sys  .ctl_name\nand .strategy members of sysctl tables are dead code.  Remove them.\n\nCc: Jan Harkes \u003cjaharkes@cs.cmu.edu\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "2bcd57ab61e7cabed626226a3771617981c11ce1",
      "tree": "687c0c35fb2a632cb8c56b2729f9c3873c9461bd",
      "parents": [
        "95e0d86badc410d525ea7218fd32df7bfbf9c837"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Sep 24 04:22:25 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 18:13:10 2009 -0700"
      },
      "message": "headers: utsname.h redux\n\n* remove asm/atomic.h inclusion from linux/utsname.h --\n   not needed after kref conversion\n * remove linux/utsname.h inclusion from files which do not need it\n\nNOTE: it looks like fs/binfmt_elf.c do not need utsname.h, however\ndue to some personality stuff it _is_ needed -- cowardly leave ELF-related\nheaders and files alone.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a87e84b5cdfacf11af4e8a85c4bca9793658536f",
      "tree": "f8e3cb2d339d8ed0e987d55f725e501730cdc81d",
      "parents": [
        "342ff1a1b558ebbdb8cbd55ab6a63eca8b2473ca",
        "3c394ddaa7ea4205f933fd9b481166b2669368a9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:54:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:54:33 2009 -0700"
      },
      "message": "Merge branch \u0027for-2.6.32\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.32\u0027 of git://linux-nfs.org/~bfields/linux: (68 commits)\n  nfsd4: nfsv4 clients should cross mountpoints\n  nfsd: revise 4.1 status documentation\n  sunrpc/cache: avoid variable over-loading in cache_defer_req\n  sunrpc/cache: use list_del_init for the list_head entries in cache_deferred_req\n  nfsd: return success for non-NFS4 nfs4_state_start\n  nfsd41: Refactor create_client()\n  nfsd41: modify nfsd4.1 backchannel to use new xprt class\n  nfsd41: Backchannel: Implement cb_recall over NFSv4.1\n  nfsd41: Backchannel: cb_sequence callback\n  nfsd41: Backchannel: Setup sequence information\n  nfsd41: Backchannel: Server backchannel RPC wait queue\n  nfsd41: Backchannel: Add sequence arguments to callback RPC arguments\n  nfsd41: Backchannel: callback infrastructure\n  nfsd4: use common rpc_cred for all callbacks\n  nfsd4: allow nfs4 state startup to fail\n  SUNRPC: Defer the auth_gss upcall when the RPC call is asynchronous\n  nfsd4: fix null dereference creating nfsv4 callback client\n  nfsd4: fix whitespace in NFSPROC4_CLNT_CB_NULL definition\n  nfsd41: sunrpc: add new xprt class for nfsv4.1 backchannel\n  sunrpc/cache: simplify cache_fresh_locked and cache_fresh_unlocked.\n  ...\n"
    },
    {
      "commit": "7b021967c5e1463936042c8da72b550d3cabe9ac",
      "tree": "efb5c26216851a93b3db3fba55858af04c8a15c5",
      "parents": [
        "6aed62853c72e29f2c97bbac7712cb398e8c9437"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:25 2009 -0700"
      },
      "message": "const: make lock_manager_operations const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6aed62853c72e29f2c97bbac7712cb398e8c9437",
      "tree": "4362cfa98b6b588f84fb2241115b7ef5b5dfce55",
      "parents": [
        "6e1d5dcc2bbbe71dbf010c747e15739bef6b7218"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:25 2009 -0700"
      },
      "message": "const: make file_lock_operations const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4516fc0454e7ffe2f369e80045b23c2b32155004",
      "tree": "b1068b9fbad76b5381b103fc57617373ec2ae37d",
      "parents": [
        "e9dc122166b8d863d3057a66ada04838e5548e52"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Fri Aug 14 12:57:54 2009 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Aug 21 11:27:42 2009 -0400"
      },
      "message": "sunrpc: add routine for comparing addresses\n\nlockd needs these sort of routines, as does the NFSv4 callback code.\n\nMove lockd\u0027s routines into common code and rename them so that they can\nbe used by others.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nAcked-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "c15128c5e428af1e8ada1476484a74c970665edd",
      "tree": "67117b73ab0219c106e914b8a68f9c26aed83353",
      "parents": [
        "b97a56747ea3f6c1a27dd0719bf1424959f1ebae"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Sun Aug 09 15:09:39 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Aug 09 15:09:39 2009 -0400"
      },
      "message": "lockd: Replace nsm_display_address() with rpc_ntop()\n\nClean up.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b97a56747ea3f6c1a27dd0719bf1424959f1ebae",
      "tree": "39d36fa3b82e37730fe8402f6a16cb582d7f6232",
      "parents": [
        "ec6ee61250acfccbc5578dd4014735fb2cbe53b5"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Sun Aug 09 15:09:38 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Aug 09 15:09:38 2009 -0400"
      },
      "message": "lockd: Replace nlm_clear_port()\n\nClean up: Use shared rpc_set_port() function instead of nlm_clear_port().\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "405f55712dfe464b3240d7816cc4fe4174831be2",
      "tree": "96c425ea7fa8b31058b8f83a433c5e5265c8ebc7",
      "parents": [
        "f9fabcb58a6d26d6efde842d1703ac7cfa9427b6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Jul 11 22:08:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 12 12:22:34 2009 -0700"
      },
      "message": "headers: smp_lock.h redux\n\n* Remove smp_lock.h from files which don\u0027t need it (including some headers!)\n* Add smp_lock.h to files which do need it\n* Make smp_lock.h include conditional in hardirq.h\n  It\u0027s needed only for one kernel_locked() usage which is under CONFIG_PREEMPT\n\n  This will make hardirq.h inclusion cheaper for every PREEMPT\u003dn config\n  (which includes allmodconfig/allyesconfig, BTW)\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7e0338c0de18c50f09aea1fbef45110cf7d64a3c",
      "tree": "30a935c1f6eee7125a9fbb802a33292b1f7268fa",
      "parents": [
        "df36b439c5fedefe013d4449cb6a50d15e2f4d70",
        "47fcb03fefee2501e79176932a4184fc24d6f8ec"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 22 12:55:50 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 22 12:55:50 2009 -0700"
      },
      "message": "Merge branch \u0027for-2.6.31\u0027 of git://fieldses.org/git/linux-nfsd\n\n* \u0027for-2.6.31\u0027 of git://fieldses.org/git/linux-nfsd: (60 commits)\n  SUNRPC: Fix the TCP server\u0027s send buffer accounting\n  nfsd41: Backchannel: minorversion support for the back channel\n  nfsd41: Backchannel: cleanup nfs4.0 callback encode routines\n  nfsd41: Remove ip address collision detection case\n  nfsd: optimise the starting of zero threads when none are running.\n  nfsd: don\u0027t take nfsd_mutex twice when setting number of threads.\n  nfsd41: sanity check client drc maxreqs\n  nfsd41: move channel attributes from nfsd4_session to a nfsd4_channel_attr struct\n  NFS: kill off complicated macro \u0027PROC\u0027\n  sunrpc: potential memory leak in function rdma_read_xdr\n  nfsd: minor nfsd_vfs_write cleanup\n  nfsd: Pull write-gathering code out of nfsd_vfs_write\n  nfsd: track last inode only in use_wgather case\n  sunrpc: align cache_clean work\u0027s timer\n  nfsd: Use write gathering only with NFSv2\n  NFSv4: kill off complicated macro \u0027PROC\u0027\n  NFSv4: do exact check about attribute specified\n  knfsd: remove unreported filehandle stats counters\n  knfsd: fix reply cache memory corruption\n  knfsd: reply cache cleanups\n  ...\n"
    },
    {
      "commit": "0e5c2632e1c9182f0dadc31bec68d6f42e7905ea",
      "tree": "4697987f92185489d9eb00c1a35c07f11ad5b9a7",
      "parents": [
        "6c9dc4255108bab4ef5c177d369b99c3c23492a7"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jun 17 18:02:11 2009 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 17 18:02:11 2009 -0700"
      },
      "message": "lockd: Don\u0027t bother with RPC ping for NSM upcalls\n\nCut NSM upcall RPC traffic in half -- don\u0027t do a NULL call first.\nThe cases where a ping would be helpful are rare.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6c9dc4255108bab4ef5c177d369b99c3c23492a7",
      "tree": "1369d9d804e276c32ab157e64646888b64ca0640",
      "parents": [
        "18fc31641925867c871bc75270ce642c039188d3"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jun 17 18:02:10 2009 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 17 18:02:10 2009 -0700"
      },
      "message": "lockd: Update NSM state from SM_MON replies\n\nWhen rpc.statd starts up in user space at boot time, it attempts to\nwrite the latest NSM local state number into\n/proc/sys/fs/nfs/nsm_local_state.\n\nIf lockd.ko isn\u0027t loaded yet (as is the case in most configurations),\nthat file doesn\u0027t exist, thus the kernel\u0027s NSM state remains set to\nits initial value of zero during lockd operation.\n\nThis is a problem because rpc.statd and lockd use the NSM state number\nto prevent repeated lock recovery on rebooted hosts.  If lockd sends\na zero NSM state, but then a delayed SM_NOTIFY with a real NSM state\nnumber is received, there is no way for lockd or rpc.statd to\ndistinguish that stale SM_NOTIFY from an actual reboot.  Thus lock\nrecovery could be performed after the rebooted host has already\nstarted reclaiming locks, and those locks will be lost.\n\nWe could change /etc/init.d/nfslock so it always modprobes lockd.ko\nbefore starting rpc.statd.  However, if lockd.ko is ever unloaded\nand reloaded, we are back at square one, since the NSM state is not\npreserved across an unload/reload cycle.  This may happen frequently\non clients that use automounter.  A period of NFS inactivity causes\nlockd.ko to be unloaded, and the kernel loses its NSM state setting.\n\nInstead, let\u0027s use the fact that rpc.statd plants the local system\u0027s\nNSM state in every SM_MON (and SM_UNMON) reply.  lockd performs a\nsynchronous SM_MON upcall to the local rpc.statd _before_ sending its\nfirst NLM request to a new remote.  This would permit rpc.statd to\nprovide the current NSM state to lockd, even after lockd.ko had been\nunloaded and reloaded.\n\nNote that NLMPROC_LOCK arguments are constructed before the\nnsm_monitor() call, so we have to rearrange argument construction very\nslightly to make this all work out.\n\nAnd, the kernel appears to treat NSM state as a u32 (see struct\nnlm_args and nsm_res).  Make nsm_local_state a u32 as well, to ensure\nwe don\u0027t get bogus comparison results.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5cd973c44a92f4abf8f7084c804089b3eaa7b4bf",
      "tree": "7bea559ab6c0a2ab4885a6064147b0cae20b8293",
      "parents": [
        "3f09df70e3a33590ae5a97b8a15486d3711c7065"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 17 13:23:01 2009 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 17 13:23:01 2009 -0700"
      },
      "message": "NFSv4/NLM: Push file locking BKL dependencies down into the NLM layer\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7eef4091a653c243a87e5375c54504cc03bec4d8",
      "tree": "f65b77f830b2c8f7d014512badfef5df0d591ee9",
      "parents": [
        "0a93a47f042c459f0f46942c3a920e3c81878031",
        "07a2039b8eb0af4ff464efd3dfd95de5c02648c6"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Jun 15 18:08:07 2009 -0700"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Jun 15 18:08:07 2009 -0700"
      },
      "message": "Merge commit \u0027v2.6.30\u0027 into for-2.6.31\n"
    },
    {
      "commit": "89996df4b5b1a09c279f50b3fd03aa9df735f5cb",
      "tree": "e693b22cf595b4d1a5a33e07efc674ee4542ddc3",
      "parents": [
        "b2c0cea6b1cb210e962f07047df602875564069e"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed May 06 16:32:54 2009 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed May 06 17:19:36 2009 -0400"
      },
      "message": "lockd: fix list corruption on lockd restart\n\nIf lockd is signalled soon enough after restart then locks_start_grace()\nwill try to re-add an entry to a list and trigger a lock corruption\nwarning.\n\nThanks to Wang Chen for the problem report and diagnosis.\n\nWARNING: at lib/list_debug.c:26 __list_add+0x27/0x5c()\n...\nlist_add corruption. next-\u003eprev should be prev (ef8fe958), but was ef8ff128.  (next\u003def8ff128).\n...\nPid: 23062, comm: lockd Tainted: G        W  2.6.30-rc2 #3\nCall Trace:\n[\u003cc042d5b5\u003e] warn_slowpath+0x71/0xa0\n[\u003cc0422a96\u003e] ? update_curr+0x11d/0x125\n[\u003cc044b12d\u003e] ? trace_hardirqs_on_caller+0x18/0x150\n[\u003cc044b270\u003e] ? trace_hardirqs_on+0xb/0xd\n[\u003cc051c61a\u003e] ? _raw_spin_lock+0x53/0xfa\n[\u003cc051c89f\u003e] __list_add+0x27/0x5c\n[\u003cef8f6daa\u003e] locks_start_grace+0x22/0x30 [lockd]\n[\u003cef8f34da\u003e] set_grace_period+0x39/0x53 [lockd]\n[\u003cc06b8921\u003e] ? lock_kernel+0x1c/0x28\n[\u003cef8f3558\u003e] lockd+0x64/0x164 [lockd]\n[\u003cc044b12d\u003e] ? trace_hardirqs_on_caller+0x18/0x150\n[\u003cc04227b0\u003e] ? complete+0x34/0x3e\n[\u003cef8f34f4\u003e] ? lockd+0x0/0x164 [lockd]\n[\u003cef8f34f4\u003e] ? lockd+0x0/0x164 [lockd]\n[\u003cc043dd42\u003e] kthread+0x45/0x6b\n[\u003cc043dcfd\u003e] ? kthread+0x0/0x6b\n[\u003cc0403c23\u003e] kernel_thread_helper+0x7/0x10\n\nReported-by: Wang Chen \u003cwangchen@cn.fujitsu.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "a9e61e25f9d2e7e43bf17625f5cb56c9e0a89b17",
      "tree": "1c000afc1e2eadb00570ae34666af508afa021fe",
      "parents": [
        "80492e7d49bee0a280a84a39075a7857b92836b2"
      ],
      "author": {
        "name": "Felix Blyakher",
        "email": "felixb@sgi.com",
        "time": "Tue Mar 31 15:12:56 2009 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 24 16:36:03 2009 -0400"
      },
      "message": "lockd: call locks_release_private to cleanup per-filesystem state\n\nFor every lock request lockd creates a new file_lock object\nin nlmsvc_setgrantargs() by copying the passed in file_lock with\nlocks_copy_lock(). A filesystem can attach it\u0027s own lock_operations\nvector to the file_lock. It has to be cleaned up at the end of the\nfile_lock\u0027s life. However, lockd doesn\u0027t do it today, yet it\nasserts in nlmclnt_release_lockargs() that the per-filesystem\nstate is clean.\nThis patch fixes it by exporting locks_release_private() and adding\nit to nlmsvc_freegrantargs(), to be symmetrical to creating a\nfile_lock in nlmsvc_setgrantargs().\n\nSigned-off-by: Felix Blyakher \u003cfelixb@sgi.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "a63856252d2112e7c452696037a86ceb12f47f80",
      "tree": "b1ad03fe441349069f80e58de425b3f72af9e5b7",
      "parents": [
        "b24241a09208874d5d770bee30791daae41ad762",
        "04826f43d4f0a4d56423eb8abb9f2ec9987df5b5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 13:25:56 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 13:25:56 2009 -0700"
      },
      "message": "Merge branch \u0027for-2.6.30\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.30\u0027 of git://linux-nfs.org/~bfields/linux: (81 commits)\n  nfsd41: define nfsd4_set_statp as noop for !CONFIG_NFSD_V4\n  nfsd41: define NFSD_DRC_SIZE_SHIFT in set_max_drc\n  nfsd41: Documentation/filesystems/nfs41-server.txt\n  nfsd41: CREATE_EXCLUSIVE4_1\n  nfsd41: SUPPATTR_EXCLCREAT attribute\n  nfsd41: support for 3-word long attribute bitmask\n  nfsd: dynamically skip encoded fattr bitmap in _nfsd4_verify\n  nfsd41: pass writable attrs mask to nfsd4_decode_fattr\n  nfsd41: provide support for minor version 1 at rpc level\n  nfsd41: control nfsv4.1 svc via /proc/fs/nfsd/versions\n  nfsd41: add OPEN4_SHARE_ACCESS_WANT nfs4_stateid bmap\n  nfsd41: access_valid\n  nfsd41: clientid handling\n  nfsd41: check encode size for sessions maxresponse cached\n  nfsd41: stateid handling\n  nfsd: pass nfsd4_compound_state* to nfs4_preprocess_{state,seq}id_op\n  nfsd41: destroy_session operation\n  nfsd41: non-page DRC for solo sequence responses\n  nfsd41: Add a create session replay cache\n  nfsd41: create_session operation\n  ...\n"
    },
    {
      "commit": "ad5b365c1266b0c9e8e254a3c1cc4ef66bf33cba",
      "tree": "b7f9bf04da9f08057db4f5e1a88a4b38511e200e",
      "parents": [
        "3c8c45dfab78a1919f6f8a3ea46998c487eb7e12"
      ],
      "author": {
        "name": "Mans Rullgard",
        "email": "mans@mansr.com",
        "time": "Sat Mar 28 19:55:20 2009 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Apr 01 13:24:14 2009 -0400"
      },
      "message": "NSM: Fix unaligned accesses in nsm_init_private()\n\nThis fixes unaligned accesses in nsm_init_private() when\ncreating nlm_reboot keys.\n\nSigned-off-by: Mans Rullgard \u003cmans@mansr.com\u003e\nReviewed-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "eb16e907781a9da7f272a3e8284c26bc4e4aeb9d",
      "tree": "6651fc149d5afbcc44418fe235a2480060ce3c17",
      "parents": [
        "9355982830ad67dca35e0f3d43319f3d438f82b4"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Mar 18 20:47:59 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 28 16:01:16 2009 -0400"
      },
      "message": "lockd: Start PF_INET6 listener only if IPv6 support is available\n\nApparently a lot of people need to disable IPv6 completely on their\ndistributor-built systems, which have CONFIG_IPV6_MODULE enabled at\nbuild time.\n\nThey do this by blacklisting the ipv6.ko module.  This causes the\ncreation of the lockd service listener to fail if CONFIG_IPV6_MODULE\nis set, but the module cannot be loaded.\n\nNow that the kernel\u0027s PF_INET6 RPC listeners are completely separate\nfrom PF_INET listeners, we can always start PF_INET.  Then lockd can\ntry to start PF_INET6, but it isn\u0027t required to be available.\n\nNote this has the added benefit that NLM callbacks from AF_INET6\nservers will never come from AF_INET remotes.  We no longer have to\nworry about matching mapped IPv4 addresses to AF_INET when comparing\naddresses.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "26298caacac3e4754194b13aef377706d5de6cf6",
      "tree": "ca5bcec9c81af2ad5f7d8b4dc91fd3a22aee71f4",
      "parents": [
        "49a9072f29a1039f142ec98b44a72d7173651c02"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Mar 18 20:46:36 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 28 15:55:06 2009 -0400"
      },
      "message": "NFS: Revert creation of IPv6 listeners for lockd and NFSv4 callbacks\n\nWe\u0027re about to convert over to using separate PF_INET and PF_INET6\nlisteners, instead of a single PF_INET6 listener that also receives\nAF_INET requests and maps them to AF_INET6.\n\nClear the way by removing the logic in lockd and the NFSv4 callback\nserver that creates an AF_INET6 service listener.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "49a9072f29a1039f142ec98b44a72d7173651c02",
      "tree": "d2a87541cb699fb6b1fbdef492f3dc6c305aa541",
      "parents": [
        "9652ada3fb5914a67d8422114e8a76388330fa79"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Mar 18 20:46:29 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 28 15:54:48 2009 -0400"
      },
      "message": "SUNRPC: Remove @family argument from svc_create() and svc_create_pooled()\n\nSince an RPC service listener\u0027s protocol family is specified now via\nsvc_create_xprt(), it no longer needs to be passed to svc_create() or\nsvc_create_pooled().  Remove that argument from the synopsis of those\nfunctions, and remove the sv_family field from the svc_serv struct.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9652ada3fb5914a67d8422114e8a76388330fa79",
      "tree": "b37d77bf972dda04b46794c4e50ec6f6d044dc79",
      "parents": [
        "baf01caf09e87579c2d157e5ee29975db8551522"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Mar 18 20:46:21 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 28 15:54:36 2009 -0400"
      },
      "message": "SUNRPC: Change svc_create_xprt() to take a @family argument\n\nThe sv_family field is going away.  Pass a protocol family argument to\nsvc_create_xprt() instead of extracting the family from the passed-in\nsvc_serv struct.\n\nAgain, as this is a listener socket and not an address, we make this\nnew argument an \"int\" protocol family, instead of an \"sa_family_t.\"\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e33d1ea60c3a17b8b5c2910b1eef4c1faf0ac450",
      "tree": "bbf0b7e86ac3860df9c1906711ad379bcc5681ed",
      "parents": [
        "e37da04ed145d45c2a698d7cb373a7e1191fbe86"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Feb 09 12:30:43 2009 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Mar 18 17:30:50 2009 -0400"
      },
      "message": "lockd: clean up blocking lock cases of nlsmvc_lock()\n\nNo change in behavior, just rearranging the switch so that we break out\nof the switch if and only if we\u0027re in the wait case.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "57df675c60c5cf0748ddba9c7f85afde1530d74d",
      "tree": "9ee0df8d0b0b2b374bcaf66ead94886f39ac7220",
      "parents": [
        "78851e1aa4c3b796d5f0bb11b445016726302b44"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Mar 10 20:33:20 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 10 20:33:20 2009 -0400"
      },
      "message": "NLM: Fix GRANT callback address comparison when IPv6 is enabled\n\nThe NFS mount command may pass an AF_INET server address to lockd.  If\nlockd happens to be using a PF_INET6 listener, the nlm_cmp_addr() in\nnlmclnt_grant() will fail to match requests from that host because they\nwill all have a mapped IPv4 AF_INET6 address.\n\nAdopt the same solution used in nfs_sockaddr_match_ipaddr() for NFSv4\ncallbacks: if either address is AF_INET, map it to an AF_INET6 address\nbefore doing the comparison.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9d9b87c1218be78ddecbc85ec3bb91c79c1d56ab",
      "tree": "e33e637f4fa8b4dd1946c6a29e290078d34a388c",
      "parents": [
        "eda58a85ec3fc05855a26654d97a2b53f0e715b9"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Feb 04 17:35:38 2009 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Feb 09 13:19:46 2009 -0500"
      },
      "message": "lockd: fix regression in lockd\u0027s handling of blocked locks\n\nIf a client requests a blocking lock, is denied, then requests it again,\nthen here in nlmsvc_lock() we will call vfs_lock_file() without FL_SLEEP\nset, because we\u0027ve already queued a block and don\u0027t need the locks code\nto do it again.\n\nBut that means vfs_lock_file() will return -EAGAIN instead of\nFILE_LOCK_DENIED.  So we still need to translate that -EAGAIN return\ninto a nlm_lck_blocked error in this case, and put ourselves back on\nlockd\u0027s block list.\n\nThe bug was introduced by bde74e4bc64415b1 \"locks: add special return\nvalue for asynchronous locks\".\n\nThanks to Frank van Maarseveen for the report; his original test\ncase was essentially\n\n\tfor i in `seq 30`; do flock /nfsmount/foo sleep 10 \u0026 done\n\nTested-by: Frank van Maarseveen \u003cfrankvm@frankvm.com\u003e\nReported-by: Frank van Maarseveen \u003cfrankvm@frankvm.com\u003e\nCc: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "0dba7c2a9ed3d4a1e58f5d94fffa9f44dbe012e6",
      "tree": "758e6f346d7aa5d4b987f3fa337de1864b61682f",
      "parents": [
        "d3fe5ea7cf815c037c90b1f1464ffc1ab5e8601b"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Dec 31 16:06:11 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Jan 07 15:40:44 2009 -0500"
      },
      "message": "NLM: Clean up flow of control in make_socks() function\n\nClean up: Use Bruce\u0027s preferred control flow style in make_socks().\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "d3fe5ea7cf815c037c90b1f1464ffc1ab5e8601b",
      "tree": "a2d8724d2c730dc1837aafc623f2139220884871",
      "parents": [
        "55ef1274dddd4de387c54d110e354ffbb6cdc706"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Dec 31 16:06:04 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Jan 07 15:40:44 2009 -0500"
      },
      "message": "NLM: Refactor make_socks() function\n\nClean up: extract common logic in NLM\u0027s make_socks() function\ninto a helper.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "b064ec038a6180b13e5f89b6a30b42cb5ce8febc",
      "tree": "942e1e6ff64868a4cd72df5d2bb8724963cc2de3",
      "parents": [
        "57ef692588bc225853ca3267ca5b7cea2b07e058"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 11 17:56:59 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:56 2009 -0500"
      },
      "message": "lockd: Enable NLM use of AF_INET6\n\nIf the kernel is configured to support IPv6 and the RPC server can register\nservices via rpcbindv4, we are all set to enable IPv6 support for lockd.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nCc: Aime Le Rouzic \u003caime.le-rouzic@bull.net\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "49b5699b3fc22b363534c509c1b7dba06bc677bf",
      "tree": "e5c1e0d74918a902f1830dddf170d8c07155204e",
      "parents": [
        "b7ba597fb964dfa44284904b3b3d74d44b8e1c42"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 11 17:56:37 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:56 2009 -0500"
      },
      "message": "NSM: Move nsm_create()\n\nClean up: one last thing... relocate nsm_create() to eliminate the forward\ndeclaration and group it near the only function that actually uses it.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "b7ba597fb964dfa44284904b3b3d74d44b8e1c42",
      "tree": "a03c62f761cc823c29b9bafd083490b2a3627986",
      "parents": [
        "8529bc51d30b8f001734b29b21a51b579c260f5b"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 11 17:56:29 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:55 2009 -0500"
      },
      "message": "NSM: Move nsm_use_hostnames to mon.c\n\nClean up.\n\nTreat the nsm_use_hostnames global variable like nsm_local_state.\nNote that the default value of nsm_use_hostnames is still zero.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "8529bc51d30b8f001734b29b21a51b579c260f5b",
      "tree": "af1fe6d5cb2d67259d1c977731f523f2337a59eb",
      "parents": [
        "e6765b83977f07983c7a10e6bbb19d6c7bbfc3a4"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 11 17:56:22 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:55 2009 -0500"
      },
      "message": "NSM: Move nsm_addr() to fs/lockd/mon.c\n\nClean up: nsm_addr_in() is no longer used, and nsm_addr() is used only in\nfs/lockd/mon.c, so move it there.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "e6765b83977f07983c7a10e6bbb19d6c7bbfc3a4",
      "tree": "87ea535ec91aaa56263ffbb5a34c8e9541e77136",
      "parents": [
        "94da7663db26530a8377f7219f8be8bd4d4822c2"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 11 17:56:14 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:55 2009 -0500"
      },
      "message": "NSM: Remove include/linux/lockd/sm_inter.h\n\nClean up: The include/linux/lockd/sm_inter.h header is nearly empty\nnow.  Remove it.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "94da7663db26530a8377f7219f8be8bd4d4822c2",
      "tree": "a19b8cac6ce9010d58776cae18b96091a2137efb",
      "parents": [
        "77a3ef33e2de6fc8aabd7cb1700bfef81757c28a"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 11 17:56:07 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:55 2009 -0500"
      },
      "message": "NSM: Replace IP address as our nlm_reboot lookup key\n\nNLM provides file locking services for NFS files.  Part of this service\nincludes a second protocol, known as NSM, which is a reboot\nnotification service.  NLM uses this service to determine when to\nreclaim locks or enter a grace period after a client or server reboots.\n\nThe NLM service (implemented by lockd in the Linux kernel) contacts\nthe local NSM service (implemented by rpc.statd in Linux user space)\nvia NSM protocol upcalls to register a callback when a particular\nremote peer reboots.\n\nTo match the callback to the correct remote peer, the NLM service\nconstructs a cookie that it passes in the request.  The NSM service\npasses that cookie back to the NLM service when it is notified that\nthe given remote peer has indeed rebooted.\n\nCurrently on Linux, the cookie is the raw 32-bit IPv4 address of the\nremote peer.  To support IPv6 addresses, which are larger, we could\nuse all 16 bytes of the cookie to represent a full IPv6 address,\nalthough we still can\u0027t represent an IPv6 address with a scope ID in\njust 16 bytes.\n\nInstead, to avoid the need for future changes to support additional\naddress types, we\u0027ll use a manufactured value for the cookie, and use\nthat to find the corresponding nsm_handle struct in the kernel during\nthe NLMPROC_SM_NOTIFY callback.\n\nThis should provide complete support in the kernel\u0027s NSM\nimplementation for IPv6 hosts, while remaining backwards compatible\nwith older rpc.statd implementations.\n\nNote we also deal with another case where nsm_use_hostnames can change\nwhile there are outstanding notifications, possibly resulting in the\nloss of reboot notifications.  After this patch, the priv cookie is\nalways used to lookup rebooted hosts in the kernel.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "77a3ef33e2de6fc8aabd7cb1700bfef81757c28a",
      "tree": "bb403f4517d49c7756921a70ba27ddce3963a05d",
      "parents": [
        "b39b897c259fc1fd1998505f2b1d4ec1f115bce1"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 11 17:55:59 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:55 2009 -0500"
      },
      "message": "NSM: More clean up of nsm_get_handle()\n\nClean up: refactor nsm_get_handle() so it is organized the same way that\nnsm_reboot_lookup() is.\n\nThere is an additional micro-optimization here.  This change moves the\n\"hostname \u0026 nsm_use_hostnames\" test out of the list_for_each_entry()\nclause in nsm_get_handle(), since it is loop-invariant.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    }
  ],
  "next": "b39b897c259fc1fd1998505f2b1d4ec1f115bce1"
}
