)]}'
{
  "log": [
    {
      "commit": "d7dc61d0a70371b1c6557ea8ffbc60fff94c8168",
      "tree": "78cc625fbdc4a0ff643ccebe6938ff1036eab00b",
      "parents": [
        "8d7c4203c681a3ec359eccff4e53bc8c0ccf403b"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@ORACLE.COM",
        "time": "Thu Oct 23 00:50:35 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Thu Oct 30 17:19:30 2008 -0400"
      },
      "message": "NLM: Set address family before calling nlm_host_rebooted()\n\nThe nlm_host_rebooted() function uses nlm_cmp_addr() to find an\nnsm_handle that matches the rebooted peer.  In order for this to work,\nthe passed-in address must have a proper address family.\n\nThis fixes a post-2.6.28 regression introduced by commit 781b61a6, which\nadded AF_INET6 support to nlm_cmp_addr().  Before that commit,\nnlm_cmp_addr() didn\u0027t care about the address family; it compared only\nthe sin_addr.s_addr field for equality.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "26a414092353590ceaa5955bcb53f863d6ea7549",
      "tree": "d829a751e7f6dee7323039e6ea2340e78e5f9fd6",
      "parents": [
        "8c3916f4bdf9c8388bd70d0b399b3a43daf2087a"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Oct 03 17:15:30 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sat Oct 04 17:12:27 2008 -0400"
      },
      "message": "NLM: Remove \"proto\" argument from lockd_up()\n\nClean up: Now that lockd_up() starts listeners for both transports, the\n\"proto\" argument is no longer needed.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "8c3916f4bdf9c8388bd70d0b399b3a43daf2087a",
      "tree": "738c44f56265c6fbca20ce8c7ec8aa655ce56803",
      "parents": [
        "9a38a83880c224c6a3fd973ac9ae30a043487f0f"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Oct 03 17:15:23 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sat Oct 04 17:08:16 2008 -0400"
      },
      "message": "NLM: Always start both UDP and TCP listeners\n\nCommit 24e36663, which first appeared in 2.6.19, changed lockd so that\nthe client side starts a UDP listener only if there is a UDP NFSv2/v3\nmount.  Its description notes:\n\n    This... means that lockd will *not* listen on UDP if the only\n    mounts are TCP mount (and nfsd hasn\u0027t started).\n\n    The latter is the only one that concerns me at all - I don\u0027t know\n    if this might be a problem with some servers.\n\nUnfortunately it is a problem for Linux itself.  The rpc.statd daemon\non Linux uses UDP for contacting the local lockd, no matter which\nprotocol is used for NFS mounts.  Without a local lockd UDP listener,\nNFSv2/v3 lock recovery from Linux NFS clients always fails.\n\nRevert parts of commit 24e36663 so lockd_up() always starts both\nlisteners.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "9a38a83880c224c6a3fd973ac9ae30a043487f0f",
      "tree": "9c0f29278f2f8490e0547bf10f57ca513958caf2",
      "parents": [
        "b85e4676344fc4d7ec5e0f62c3d3712e48bbe223"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Oct 03 12:50:51 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Oct 03 17:02:35 2008 -0400"
      },
      "message": "lockd: Remove unused fields in the nlm_reboot structure\n\nThe nlm_reboot structure is used to store information provided by the\nNSM_NOTIFY procedure.  This procedure is not specified by the NLM or NSM\nprotocols, other than to say that the procedure can be used to transmit\ninformation private to a particular NLM/NSM implementation.\n\nFor Linux, the callback arguments include the name of the monitored host,\nthe new NSM state of the host, and a 16-byte private opaque.\n\nAs a clean up, remove the unused fields and the server-side XDR logic that\ndecodes them.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "b85e4676344fc4d7ec5e0f62c3d3712e48bbe223",
      "tree": "a2a6c0226ea0f72536477dff2e123245a3621d9d",
      "parents": [
        "dcff09f124f71d1d4fe61eb63c79e52f488ac22e"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Oct 03 12:50:44 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Oct 03 17:02:35 2008 -0400"
      },
      "message": "lockd: Add helper to sanity check incoming NOTIFY requests\n\nlockd accepts SM_NOTIFY calls only from a privileged process on the\nlocal system.  If lockd uses an AF_INET6 listener, the sender\u0027s address\n(ie the local rpc.statd) will be the IPv6 loopback address, not the\nIPv4 loopback address.\n\nMake sure the privilege test in nlmsvc_proc_sm_notify() and\nnlm4svc_proc_sm_notify() works for both AF_INET and AF_INET6 family\naddresses by refactoring the test into a helper and adding support for\nIPv6 addresses.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "dcff09f124f71d1d4fe61eb63c79e52f488ac22e",
      "tree": "9de34b565ee957c3d80dcd9f279b3b2bb0496ba7",
      "parents": [
        "6bfbe8af4674458e6d88aef8f0136bd1b8855b11"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Oct 03 12:50:36 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Oct 03 17:02:35 2008 -0400"
      },
      "message": "lockd: change nlmclnt_grant() to take a \"struct sockaddr *\"\n\nAdjust the signature and callers of nlmclnt_grant() to pass a \"struct\nsockaddr *\" instead of a \"struct sockaddr_in *\" in order to support IPv6\naddresses.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "6bfbe8af4674458e6d88aef8f0136bd1b8855b11",
      "tree": "b8305ece04cebae733d619a77c3ff8fdee55e4a2",
      "parents": [
        "d7d204403b31beb83b1aefef7bd76f5209369555"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Oct 03 12:50:29 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Oct 03 17:02:35 2008 -0400"
      },
      "message": "lockd: Adjust nlmsvc_lookup_host() to accomodate AF_INET6 addresses\n\nFix up nlmsvc_lookup_host() to pass AF_INET6 source addresses to\nnlm_lookup_host().\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "d7d204403b31beb83b1aefef7bd76f5209369555",
      "tree": "70d63b581d4987fb12cc455f741bf21a55a7a8c3",
      "parents": [
        "88541c848746442ddff45dea05ddea6b734d88b5"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Oct 03 12:50:21 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Oct 03 17:02:34 2008 -0400"
      },
      "message": "lockd: Adjust nlmclnt_lookup_host() signature to accomodate non-AF_INET\n\nPass a struct sockaddr * and a length to nlmclnt_lookup_host() to\naccomodate non-AF_INET family addresses.\n\nAs a side benefit, eliminate the hostname_len argument, as the hostname\nis always NUL-terminated.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "88541c848746442ddff45dea05ddea6b734d88b5",
      "tree": "dc95e178de34df8cc2b3e65e9850993c3625c3f1",
      "parents": [
        "7f1ed18bd3aa1e8008cf5cc768a141787633da18"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Oct 03 12:50:14 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Oct 03 17:01:57 2008 -0400"
      },
      "message": "lockd: Support non-AF_INET addresses in nlm_lookup_host()\n\nUse struct sockaddr * and length in nlm_lookup_host_info to all callers\nto pass in either AF_INET or AF_INET6 addresses.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "7f1ed18bd3aa1e8008cf5cc768a141787633da18",
      "tree": "955cad7fdd4741a82a31d3f1b4d26dd343eaf68b",
      "parents": [
        "d22b1cff099737f74f3ac5950094508b4cddec1e"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Oct 03 12:50:07 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Oct 03 16:58:23 2008 -0400"
      },
      "message": "NLM: Convert nlm_lookup_host() to use a single argument\n\nThe nlm_lookup_host() function already has a large number of arguments,\nand I\u0027m about to add a few more.  As a clean up, convert the function\nto use a single data structure argument.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "d22b1cff099737f74f3ac5950094508b4cddec1e",
      "tree": "d93e297275719fd4a1b7a7a6731bf3befd44a5a6",
      "parents": [
        "b2b5028905226f85075a408b1118857c9aa48bb3"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Feb 06 15:05:12 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Oct 03 16:19:20 2008 -0400"
      },
      "message": "lockd: reject reclaims outside the grace period\n\nThe current lockd does not reject reclaims that arrive outside of the\ngrace period.\n\nAccepting a reclaim means promising to the client that no conflicting\nlocks were granted since last it held the lock.  We can meet that\npromise if we assume the only lockers are nfs clients, and that they are\nsufficiently well-behaved to reclaim only locks that they held before,\nand that only reclaim locks have been permitted so far.  Once we leave\nthe grace period (and start permitting non-reclaims), we can no longer\nkeep that promise.  So we must start rejecting reclaims at that point.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "b2b5028905226f85075a408b1118857c9aa48bb3",
      "tree": "79d4e32fe7b0f4f12282282f0b0147ca2b438171",
      "parents": [
        "af558e33bedab672f5cfd3260bce7445e353fe21"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Feb 06 13:59:23 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Oct 03 16:19:19 2008 -0400"
      },
      "message": "lockd: move grace period checks to common code\n\nDo all the grace period checks in svclock.c.  This simplifies the code a\nbit, and will ease some later changes.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "af558e33bedab672f5cfd3260bce7445e353fe21",
      "tree": "eb89187b6c12640a00584bd35be035ba332e4af3",
      "parents": [
        "d5b337b4877f7c4e1d761434ee04d045b0201e03"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Thu Sep 06 12:34:25 2007 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Oct 03 16:19:02 2008 -0400"
      },
      "message": "nfsd: common grace period control\n\nRewrite grace period code to unify management of grace period across\nlockd and nfsd.  The current code has lockd and nfsd cooperate to\ncompute a grace period which is satisfactory to them both, and then\nindividually enforce it.  This creates a slight race condition, since\nthe enforcement is not coordinated.  It\u0027s also more complicated than\nnecessary.\n\nHere instead we have lockd and nfsd each inform common code when they\nenter the grace period, and when they\u0027re ready to leave the grace\nperiod, and allow normal locking only after both of them are ready to\nleave.\n\nWe also expect the locks_start_grace()/locks_end_grace() interface here\nto be simpler to build on for future cluster/high-availability work,\nwhich may require (for example) putting individual filesystems into\ngrace, or enforcing grace periods across multiple cluster nodes.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "e018040a824ab48211a1fcb86acebc9fc84759b0",
      "tree": "301728fcbd39cfe532b435eadb410ce048a21a3b",
      "parents": [
        "bc48e4d6371137b1b06e985ea76c1254e9c06e83"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Sep 03 14:36:23 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Sep 29 18:13:39 2008 -0400"
      },
      "message": "lockd: Update nsm_find() to support non-AF_INET addresses\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "bc48e4d6371137b1b06e985ea76c1254e9c06e83",
      "tree": "29cfa2b2116206f472b562839f98c9d202c50d72",
      "parents": [
        "ede2fea099cf1dabe41e5b9563558bc7aee82248"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Sep 03 14:36:16 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Sep 29 18:13:39 2008 -0400"
      },
      "message": "lockd: Combine __nsm_find() and nsm_find().\n\nClean up: Having two separate functions doesn\u0027t add clarity, so\neliminate one of them.  Use contemporary kernel coding conventions\nwhere appropriate.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "ede2fea099cf1dabe41e5b9563558bc7aee82248",
      "tree": "b007bc10b257a0615323c8dbc446aa3b9f0f1d67",
      "parents": [
        "781b61a6f4ff94cb8c14cf598b547f5d5c490969"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Sep 03 14:36:08 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Sep 29 18:13:39 2008 -0400"
      },
      "message": "lockd: Support AF_INET6 when hashing addresses in nlm_lookup_host\n\nAdopt an approach similar to the RPC server\u0027s auth cache (from Aurelien\nCharbon and Brian Haley).\n\nNote nlm_lookup_host()\u0027s existing IP address hash function has the same\nissue with correctness on little-endian systems as the original IPv4 auth\ncache hash function, so I\u0027ve also updated it with a hash function similar\nto the new auth cache hash function.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "781b61a6f4ff94cb8c14cf598b547f5d5c490969",
      "tree": "166288be121563b77c3672b311bbbe2541de3bd3",
      "parents": [
        "7e9d7746bfd40121438b155023793796499497d8"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Sep 03 14:36:01 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Sep 29 18:13:39 2008 -0400"
      },
      "message": "lockd: Teach nlm_cmp_addr() to support AF_INET6 addresses\n\nUpdate the nlm_cmp_addr() helper to support AF_INET6 as well as AF_INET\naddresses.  New version takes two \"struct sockaddr *\" arguments instead of\n\"struct sockaddr_in *\" arguments.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "7e9d7746bfd40121438b155023793796499497d8",
      "tree": "1b2ba4e1a32d22485bcec946ef4fb6f758067a3a",
      "parents": [
        "90151e6e4d00a3150d03d52170c246734b274622"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Sep 03 14:35:54 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Sep 29 18:13:39 2008 -0400"
      },
      "message": "NSM: Use sockaddr_storage for sm_addr field\n\nTo store larger addresses in the nsm_handle structure, make sm_addr a\nsockaddr_storage.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "90151e6e4d00a3150d03d52170c246734b274622",
      "tree": "bb0c7b1ab2b08ca86e87a30e0da0779a14a9b94d",
      "parents": [
        "b4ed58fd34d4def88bda59f9cc566ec9fca6a096"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Sep 03 14:35:46 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Sep 29 18:13:39 2008 -0400"
      },
      "message": "lockd: Use sockaddr_storage for h_saddr field\n\nTo store larger addresses in the nlm_host structure, make h_saddr a\nsockaddr_storage.  And let\u0027s call it something more self-explanatory:\n\"saddr\" could easily be mistaken for \"server address\".\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "b4ed58fd34d4def88bda59f9cc566ec9fca6a096",
      "tree": "ce377f9ec8773a26e4a967e7d73d42e99d39b0ea",
      "parents": [
        "5344b12d4f97d4a9a62d806425977a6ff64b6baf"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Sep 03 14:35:39 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Sep 29 18:13:39 2008 -0400"
      },
      "message": "lockd: Use sockaddr_storage + length for h_addr field\n\nTo store larger addresses in the nlm_host structure, make h_addr a\nsockaddr_storage, and add an address length field.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "396cb3d003c2ce72b50c8c06fddfbb7516f30eb1",
      "tree": "c23d66bde884c07eb45234d2ed76681914be3584",
      "parents": [
        "2860a0227b700feb8d6e5c4f07a62a1b40d96022"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Aug 27 16:57:38 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Sep 29 18:13:38 2008 -0400"
      },
      "message": "lockd: Add address family-agnostic helper for zeroing the port number\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "2860a0227b700feb8d6e5c4f07a62a1b40d96022",
      "tree": "a0a83210999107a33f5b55ac211299a2f3e034f9",
      "parents": [
        "1b333c54a15a746ff6b04a684b0845a66daacef2"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Aug 27 16:57:31 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Sep 29 18:13:38 2008 -0400"
      },
      "message": "lockd: Specify address family for source address\n\nMake sure an address family is specified for source addresses passed to\nnlm_lookup_host().  nlm_lookup_host() will need this when it becomes\ncapable of dealing with AF_INET6 addresses.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "1b333c54a15a746ff6b04a684b0845a66daacef2",
      "tree": "d0a09595e34db6b176fbe5f59b60f0c45ee7cd85",
      "parents": [
        "c2526f42711d93f3455f92a82b5e586880fc44be"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Aug 27 16:57:23 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Sep 29 18:13:38 2008 -0400"
      },
      "message": "lockd: address-family independent printable addresses\n\nKnowing which source address is used for communicating with remote NLM\nservices can be helpful for debugging configuration problems on hosts\nwith multiple addresses.\n\nKeep the dprintk debugging here, but adapt it so it displays AF_INET6\naddresses properly.  There are also a couple of dprintk clean-ups as\nwell.\n\nAt some point we will aggregate the helpers that display presentation\nformat addresses into a single set of shared helpers.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "c2526f42711d93f3455f92a82b5e586880fc44be",
      "tree": "32d1bf8986f9da5d838dfbf5d54793b68ecb2217",
      "parents": [
        "a26cfad6e0a308a2c68df1f1ef50aabd48b17e6d"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Aug 27 16:57:15 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Sep 29 18:13:38 2008 -0400"
      },
      "message": "NLM: Clean up before introducing new debugging messages\n\nWe\u0027re about to introduce some extra debugging messages in nlm_lookup_host().\nBring the coding style up to date first so we can cleanly introduce the new\ndebugging messages.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "c8ab5f2a13fb41a878863c61a1e27d78f1844b5e",
      "tree": "869ce6a2a51581d09011aeb5e804b0d1ab39a7b9",
      "parents": [
        "8fafa90082ab18859d97627fc454edf12f7efbff"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Mar 18 19:00:19 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Sep 29 18:13:10 2008 -0400"
      },
      "message": "lockd: don\u0027t depend on lockd main loop to end grace\n\nEnd lockd\u0027s grace period using schedule_delayed_work() instead of a\ncheck on every pass through the main loop.\n\nAfter a later patch, we\u0027ll depend on lockd to end its grace period even\nif it\u0027s not currently handling requests; so it shouldn\u0027t depend on being\nwoken up from the main loop to do so.\n\nAlso, Nakano Hiroaki (who independently produced a similar patch)\nnoticed that the current behavior is buggy in the face of jiffies\nwraparound:\n\n\t\"lockd uses time_before() to determine whether the grace period\n\thas expired. This would seem to be enough to avoid timer\n\twrap-around issues, but, unfortunately, that is not the case.\n\tThe time_* family of comparison functions can be safely used to\n\tcompare jiffies relatively close in time, but they stop working\n\tafter approximately LONG_MAX/2 ticks. nfsd can suffer this\n\tproblem because the time_before() comparison in lockd() is not\n\tperformed until the first request comes in, which means that if\n\tthere is no lockd traffic for more than LONG_MAX/2 ticks we are\n\tscrewed.\n\n\t\"The implication of this is that once time_before() starts\n\tmisbehaving any attempt from a NFS client to execute fcntl()\n\twill be received with a NLM_LCK_DENIED_GRACE_PERIOD message for\n\t25 days (assuming HZ\u003d1000). In other words, the 50 seconds grace\n\tperiod could turn into a grace period of 50 days or more.\n\n\t\"Note: This bug was analyzed independently by Oda-san\n\t\u003coda@valinux.co.jp\u003e and myself.\"\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nCc: Nakano Hiroaki \u003cnakano.hiroaki@oss.ntt.co.jp\u003e\nCc: Itsuro Oda \u003coda@valinux.co.jp\u003e\n"
    },
    {
      "commit": "8fafa90082ab18859d97627fc454edf12f7efbff",
      "tree": "de5bfb7c8381cf62dc9d6467e7becb08ebca8c7f",
      "parents": [
        "54a66e548079f12a6f54c3cae96812a9ed9b54ae"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Thu Jan 24 11:11:34 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Sep 29 17:56:59 2008 -0400"
      },
      "message": "locks: allow lockd to process blocked locks during grace period\n\nThe check here is currently harmless but unnecessary, since, as the\ncomment notes, there aren\u0027t any blocked-lock callbacks to process\nduring the grace period anyway.\n\nAnd eventually we want to allow multiple grace periods that come and go\nfor different filesystems over the course of the lifetime of lockd, at\nwhich point this check is just going to get in the way.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "e851db5b05408b89b9a9429a66814b79fabee2a1",
      "tree": "99bac979ed90efed99c89a49cb77719ab4c0a229",
      "parents": [
        "72d31053f62c4bc464c2783974926969614a8649"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Jun 30 18:45:30 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Sep 29 17:56:56 2008 -0400"
      },
      "message": "SUNRPC: Add address family field to svc_serv data structure\n\nIntroduce and initialize an address family field in the svc_serv structure.\n\nThis field will determine what family to use for the service\u0027s listener\nsockets and what families are advertised via the local rpcbind daemon.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "b0e0c9e7f6d5764633e93944dafd896dd6097318",
      "tree": "668d9adb29cb566f6240e7bc51faaf564d3241ca",
      "parents": [
        "dae816835e8d1276c9e50d9c4dba75b7705fe66c",
        "53e6d8d182e97c5211da4ee1f163c840c7ecf8ca"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 12 16:39:22 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 12 16:39:22 2008 -0700"
      },
      "message": "Merge branch \u0027for-2.6.27\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.27\u0027 of git://linux-nfs.org/~bfields/linux:\n  fs/nfsd/export.c: Adjust error handling code involving auth_domain_put\n  MAINTAINERS: mention lockd and sunrpc in nfs entries\n  lockd: trivial sparse endian annotations\n"
    },
    {
      "commit": "bde74e4bc64415b142e556a34d295a52a1b7da9d",
      "tree": "b6bd229307ccab9b1ad03ffbc75f1f9960cd49e4",
      "parents": [
        "cc77b1521d06be07c9bb1a4a3e1f775dcaa15093"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Jul 25 01:48:57 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:47 2008 -0700"
      },
      "message": "locks: add special return value for asynchronous locks\n\nUse a special error value FILE_LOCK_DEFERRED to mean that a locking\noperation returned asynchronously.  This is returned by\n\n  posix_lock_file() for sleeping locks to mean that the lock has been\n  queued on the block list, and will be woken up when it might become\n  available and needs to be retried (either fl_lmops-\u003efl_notify() is\n  called or fl_wait is woken up).\n\n  f_op-\u003elock() to mean either the above, or that the filesystem will\n  call back with fl_lmops-\u003efl_grant() when the result of the locking\n  operation is known.  The filesystem can do this for sleeping as well\n  as non-sleeping locks.\n\nThis is to make sure, that return values of -EAGAIN and -EINPROGRESS by\nfilesystems are not mistaken to mean an asynchronous locking.\n\nThis also makes error handling in fs/locks.c and lockd/svclock.c slightly\ncleaner.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nCc: David Teigland \u003cteigland@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cc77b1521d06be07c9bb1a4a3e1f775dcaa15093",
      "tree": "b8089e3276d19ba6ab9ecd5ca7ddef7b62df4a7f",
      "parents": [
        "b81f3ea92ba1fa676775677679889dc2a7f03c8b"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Jul 25 01:48:55 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:47 2008 -0700"
      },
      "message": "lockd: dont return EAGAIN for a permanent error\n\nFix nlm_fopen() to return NLM_FAILED (or NLM_LCK_DENIED_NOLOCKS) instead\nof NLM_LCK_DENIED.  The latter means the lock request failed because of a\nconflicting lock (i.e.  a temporary error), which is wrong in this case.\n\nAlso fix the client to return ENOLCK instead of EAGAIN if a blocking lock\nrequest returns with NLM_LOCK_DENIED.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nCc: David Teigland \u003cteigland@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "317602f3e01a25320a712195b32fcf19c1297121",
      "tree": "fcee938ecf9c95f1ccd4c7ea3fb871be54e20f6b",
      "parents": [
        "c010b2f76c3032e48097a6eef291d8593d5d79a6"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Sun Jul 20 23:41:24 2008 -0700"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Jul 23 07:38:04 2008 -0400"
      },
      "message": "lockd: trivial sparse endian annotations\n\nfs/lockd/svcproc.c:115:11: warning: incorrect type in initializer (different base types)\nfs/lockd/svcproc.c:115:11:    expected int [signed] rc\nfs/lockd/svcproc.c:115:11:    got restricted __be32 [usertype] \u003cnoident\u003e\n... and so on...\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "14b395e35d1afdd8019d11b92e28041fad591b71",
      "tree": "cff7ba9bed7a38300b19a5bacc632979d64fd9c8",
      "parents": [
        "734b397cd14f3340394a8dd3266bec97d01f034b",
        "5108b27651727b5aba0826e8fd7be71b42428701"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 20 21:21:46 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 20 21:21:46 2008 -0700"
      },
      "message": "Merge branch \u0027for-2.6.27\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.27\u0027 of git://linux-nfs.org/~bfields/linux: (51 commits)\n  nfsd: nfs4xdr.c do-while is not a compound statement\n  nfsd: Use C99 initializers in fs/nfsd/nfs4xdr.c\n  lockd: Pass \"struct sockaddr *\" to new failover-by-IP function\n  lockd: get host reference in nlmsvc_create_block() instead of callers\n  lockd: minor svclock.c style fixes\n  lockd: eliminate duplicate nlmsvc_lookup_host call from nlmsvc_lock\n  lockd: eliminate duplicate nlmsvc_lookup_host call from nlmsvc_testlock\n  lockd: nlm_release_host() checks for NULL, caller needn\u0027t\n  file lock: reorder struct file_lock to save space on 64 bit builds\n  nfsd: take file and mnt write in nfs4_upgrade_open\n  nfsd: document open share bit tracking\n  nfsd: tabulate nfs4 xdr encoding functions\n  nfsd: dprint operation names\n  svcrdma: Change WR context get/put to use the kmem cache\n  svcrdma: Create a kmem cache for the WR contexts\n  svcrdma: Add flush_scheduled_work to module exit function\n  svcrdma: Limit ORD based on client\u0027s advertised IRD\n  svcrdma: Remove unused wait q from svcrdma_xprt structure\n  svcrdma: Remove unneeded spin locks from __svc_rdma_free\n  svcrdma: Add dma map count and WARN_ON\n  ...\n"
    },
    {
      "commit": "a86dc496b764ebb1431677b38eab45310e5a2ad4",
      "tree": "2ca9fa18c4f58de08acc7c8f9ea251a279eeba9b",
      "parents": [
        "c3cc8c019ca09767d7c9b5457d5cf8ac65085f44"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 13:37:09 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:57 2008 -0400"
      },
      "message": "SUNRPC: Remove the BKL from the callback functions\n\nPush it into those callback functions that actually need it.\n\nNote that all the NFS operations use their own locking, so don\u0027t need the\nBKL. Ditto for the rpcbind client.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d67d1c7bf948341fd8678c8e337ec27f4b46b206",
      "tree": "69bec2c4fcabba993fea54f9d3be26963f9f13ce",
      "parents": [
        "c2e1b09ff237c0a3687b9a804cc8bf489743cffc"
      ],
      "author": {
        "name": "Felix Blyakher",
        "email": "felixb@sgi.com",
        "time": "Tue Jul 15 12:40:22 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:08:59 2008 -0400"
      },
      "message": "nfs: set correct fl_len in nlmclnt_test()\n\nfcntl(F_GETLK) on an nfs client incorrectly returns\nthe values for the conflicting lock. fl_len value is\nalways 1.\nIf the conflicting lock is (0, 4095) the F_GETLK\nrequest for (1024, 10) returns (0, 1), which doesn\u0027t\neven cover the requested range, and is quite confusing.\nThe fix is trivial, set fl_end from the fl_end value\nrecieved from the nfs server.\n\nSigned-off-by: Felix Blyakher \u003cfelixb@sgi.com\u003e\nSigned-off-by: \"J. Bruce Fields\" \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "367c8c7bd9a2882daad6c9cb607e1db8ef781ad4",
      "tree": "67fc93454ea9b3db1f6456cb6d6c255fe0c08178",
      "parents": [
        "560de0e65904db392e1c443c4bf5ee750573336b"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Jun 30 18:58:14 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jul 15 16:11:29 2008 -0400"
      },
      "message": "lockd: Pass \"struct sockaddr *\" to new failover-by-IP function\n\nPass a more generic socket address type to nlmsvc_unlock_all_by_ip() to\nallow for future support of IPv6.  Also provide additional sanity\nchecking in failover_unlock_ip() when constructing the server\u0027s IP\naddress.\n\nAs an added bonus, provide clean kerneldoc comments on related NLM\ninterfaces which were recently added.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "560de0e65904db392e1c443c4bf5ee750573336b",
      "tree": "1d6fcfe7fadd5b20ac2f70db6d45d4f8391023f9",
      "parents": [
        "6d7bbbbacc5202eaabbc232681cc325b22a73eeb"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jul 15 15:05:45 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jul 15 15:40:25 2008 -0400"
      },
      "message": "lockd: get host reference in nlmsvc_create_block() instead of callers\n\nIt may not be obvious (till you look at the definition of\nnlm_alloc_call()) that a function like nlmsvc_create_block() should\nconsume a reference on success or failure, so I find it clearer if it\ntakes the reference it needs itself.\n\nAnd both callers already do this immediately before the call anyway.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "6d7bbbbacc5202eaabbc232681cc325b22a73eeb",
      "tree": "a040220a4cba226f2dcf2345e931c57c6cc96d16",
      "parents": [
        "6cde4de80773497d8333985b135f472eda870904"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jul 15 14:38:32 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jul 15 15:28:43 2008 -0400"
      },
      "message": "lockd: minor svclock.c style fixes\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "6cde4de80773497d8333985b135f472eda870904",
      "tree": "f6b97fe59c31dbe750b146d785276d44223b7e4c",
      "parents": [
        "8f920d5e29f86d3425a68e1c3bc264d1f6f55112"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Tue Jul 15 14:26:17 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jul 15 14:53:33 2008 -0400"
      },
      "message": "lockd: eliminate duplicate nlmsvc_lookup_host call from nlmsvc_lock\n\nnlmsvc_lock calls nlmsvc_lookup_host to find a nlm_host struct. The\ncallers of this function, however, call nlmsvc_retrieve_args or\nnlm4svc_retrieve_args, which also return a nlm_host struct.\n\nChange nlmsvc_lock to take a host arg instead of calling\nnlmsvc_lookup_host itself and change the callers to pass a pointer to\nthe nlm_host they\u0027ve already found.\n\nSince nlmsvc_testlock() now just uses the caller\u0027s reference, we no\nlonger need to get or release it.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "8f920d5e29f86d3425a68e1c3bc264d1f6f55112",
      "tree": "db3054c6d5f0a2a6b239b204171e119c69ab0217",
      "parents": [
        "b0e92aae157cbf78ede7b7dd03967b49fcb2102e"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Tue Jul 15 14:06:48 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jul 15 14:26:52 2008 -0400"
      },
      "message": "lockd: eliminate duplicate nlmsvc_lookup_host call from nlmsvc_testlock\n\nnlmsvc_testlock calls nlmsvc_lookup_host to find a nlm_host struct. The\ncallers of this functions, however, call nlmsvc_retrieve_args or\nnlm4svc_retrieve_args, which also return a nlm_host struct.\n\nChange nlmsvc_testlock to take a host arg instead of calling\nnlmsvc_lookup_host itself and change the callers to pass a pointer to\nthe nlm_host they\u0027ve already found.\n\nWe take a reference to host in the place where nlmsvc_testlock()\nprevious did a new lookup, so the reference counting is unchanged from\nbefore.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "b0e92aae157cbf78ede7b7dd03967b49fcb2102e",
      "tree": "8540a64fdf71092789d994f258cb2d07054a42f1",
      "parents": [
        "afc1246f917c664b0df98b3c22fa62db74d2ca33"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Tue Jul 15 12:35:20 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jul 15 12:35:20 2008 -0400"
      },
      "message": "lockd: nlm_release_host() checks for NULL, caller needn\u0027t\n\nNo need to check for a NULL argument twice.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "abd1ec4efd82ca06127bce833ad8a4bbec8a0dcb",
      "tree": "4a740d45b37a8b6e034ebf7b7a5a325af0b1ec52",
      "parents": [
        "a75c5d01e4235a7dd785548ac756f248b1b40107"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Jun 11 10:03:12 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Jun 23 13:02:50 2008 -0400"
      },
      "message": "lockd: close potential race with rapid lockd_up/lockd_down cycle\n\nIf lockd_down is called very rapidly after lockd_up returns, then\nthere is a slim chance that lockd() will never be called. kthread()\nwill return before calling the function, so we\u0027ll end up never\nactually calling the cleanup functions for the thread.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "8e24eea728068bbeb6a3c500b848f883a20bf225",
      "tree": "93e79da649723e2766237505b22725fec395f139",
      "parents": [
        "530b6412786d7f83592c1a8e2445541ed73fca76"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Wed Apr 30 00:55:09 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:54 2008 -0700"
      },
      "message": "fs: replace remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc-specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@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": "1a747ee0cc11a198f9e2435add821bd0dfedb7c1",
      "tree": "10b5a55bde30bef3f466e5126bd44fc0e111fc5a",
      "parents": [
        "17efa372cfe4d189705edf6cd4fbe283827a5dc7"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Thu Apr 24 10:08:22 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 25 13:00:11 2008 -0400"
      },
      "message": "locks: don\u0027t call -\u003ecopy_lock methods on return of conflicting locks\n\nThe file_lock structure is used both as a heavy-weight representation of\nan active lock, with pointers to reference-counted structures, etc., and\nas a simple container for parameters that describe a file lock.\n\nThe conflicting lock returned from __posix_lock_file is an example of\nthe latter; so don\u0027t call the filesystem or lock manager callbacks when\ncopying to it.  This also saves the need for an unnecessary\nlocks_init_lock in the nfsv4 server.\n\nThanks to Trond for pointing out the error.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "17efa372cfe4d189705edf6cd4fbe283827a5dc7",
      "tree": "dcf10b96b079fff6edebbf451a32608ce6032663",
      "parents": [
        "4373ea84c84d8a96e99d3da99e813d3e36d1bd11"
      ],
      "author": {
        "name": "Wendy Cheng",
        "email": "wcheng@redhat.com",
        "time": "Thu Jan 17 11:10:12 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 25 13:00:11 2008 -0400"
      },
      "message": "lockd: unlock lockd locks held for a certain filesystem\n\nAdd /proc/fs/nfsd/unlock_filesystem, which allows e.g.:\n\nshell\u003e echo /mnt/sfs1 \u003e /proc/fs/nfsd/unlock_filesystem\n\nso that a filesystem can be unmounted before allowing a peer nfsd to\ntake over nfs service for the filesystem.\n\nSigned-off-by: S. Wendy Cheng \u003cwcheng@redhat.com\u003e\nCc: Lon Hohberger  \u003clhh@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n\n fs/lockd/svcsubs.c          |   66 +++++++++++++++++++++++++++++++++++++++-----\n fs/nfsd/nfsctl.c            |   65 +++++++++++++++++++++++++++++++++++++++++++\n include/linux/lockd/lockd.h |    7 ++++\n 3 files changed, 131 insertions(+), 7 deletions(-)\n"
    },
    {
      "commit": "4373ea84c84d8a96e99d3da99e813d3e36d1bd11",
      "tree": "956fb92c4501cf2ed0f21a8942dfc31d4621711f",
      "parents": [
        "9d91cdcc0cce3186742f38e7352459b2087fbb86"
      ],
      "author": {
        "name": "Wendy Cheng",
        "email": "wcheng@redhat.com",
        "time": "Thu Jan 17 11:10:12 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 25 13:00:10 2008 -0400"
      },
      "message": "lockd: unlock lockd locks associated with a given server ip\n\nFor high-availability NFS service, we generally need to be able to drop\nfile locks held on the exported filesystem before moving clients to a\nnew server.  Currently the only way to do that is by shutting down lockd\nentirely, which is often undesireable (for example, if you want to\ncontinue exporting other filesystems).\n\nThis patch allows the administrator to release all locks held by clients\naccessing the client through a given server ip address, by echoing that\naddress to a new file, /proc/fs/nfsd/unlock_ip, as in:\n\nshell\u003e echo 10.1.1.2 \u003e /proc/fs/nfsd/unlock_ip\n\nThe expected sequence of events can be:\n1. Tear down the IP address\n2. Unexport the path\n3. Write IP to /proc/fs/nfsd/unlock_ip to unlock files\n4. Signal peer to begin take-over.\n\nFor now we only support IPv4 addresses and NFSv2/v3 (NFSv4 locks are not\naffected).\n\nAlso, if unmounting the filesystem is required, we assume at step 3 that\nclients using the given server ip are the only clients holding locks on\nthe given filesystem; otherwise, an additional patch is required to\nallow revoking all locks held by lockd on a given filesystem.\n\nSigned-off-by: S. Wendy Cheng \u003cwcheng@redhat.com\u003e\nCc: Lon Hohberger  \u003clhh@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n\n fs/lockd/svcsubs.c          |   66 +++++++++++++++++++++++++++++++++++++++-----\n fs/nfsd/nfsctl.c            |   65 +++++++++++++++++++++++++++++++++++++++++++\n include/linux/lockd/lockd.h |    7 ++++\n 3 files changed, 131 insertions(+), 7 deletions(-)\n"
    },
    {
      "commit": "563307b2fa15d687abc54bd980b9847ebf0e3231",
      "tree": "7f16be30217a2e66360ede97aa27d07a4ebd7e55",
      "parents": [
        "10c993a6b5418cb1026775765ba4c70ffb70853d",
        "233607dbbc823caf685e778cabc49fb7f679900b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 24 11:46:16 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 24 11:46:16 2008 -0700"
      },
      "message": "Merge git://git.linux-nfs.org/projects/trondmy/nfs-2.6\n\n* git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (80 commits)\n  SUNRPC: Invalidate the RPCSEC_GSS session if the server dropped the request\n  make nfs_automount_list static\n  NFS: remove duplicate flags assignment from nfs_validate_mount_data\n  NFS - fix potential NULL pointer dereference v2\n  SUNRPC: Don\u0027t change the RPCSEC_GSS context on a credential that is in use\n  SUNRPC: Fix a race in gss_refresh_upcall()\n  SUNRPC: Don\u0027t disconnect more than once if retransmitting NFSv4 requests\n  SUNRPC: Remove the unused export of xprt_force_disconnect\n  SUNRPC: remove XS_SENDMSG_RETRY\n  SUNRPC: Protect creds against early garbage collection\n  NFSv4: Attempt to use machine credentials in SETCLIENTID calls\n  NFSv4: Reintroduce machine creds\n  NFSv4: Don\u0027t use cred-\u003ecr_ops-\u003ecr_name in nfs4_proc_setclientid()\n  nfs: fix printout of multiword bitfields\n  nfs: return negative error value from nfs{,4}_stat_to_errno\n  NLM/lockd: Ensure client locking calls use correct credentials\n  NFS: Remove the buggy lock-if-signalled case from do_setlk()\n  NLM/lockd: Fix a race when cancelling a blocking lock\n  NLM/lockd: Ensure that nlmclnt_cancel() returns results of the CANCEL call\n  NLM: Remove the signal masking in nlmclnt_proc/nlmclnt_cancel\n  ...\n"
    },
    {
      "commit": "f97c650dda24e48405399aa0676e90da52408515",
      "tree": "9bb7d41c05ff8377cad7048b45fa900262688142",
      "parents": [
        "06e02d66fa0055230efc2443c43ee4f3ab5eb0b6"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Tue Apr 08 15:40:08 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Apr 23 16:13:43 2008 -0400"
      },
      "message": "NLM: don\u0027t let lockd exit on unexpected svc_recv errors (try #2)\n\nWhen svc_recv returns an unexpected error, lockd will print a warning\nand exit. This problematic for several reasons. In particular, it will\ncause the reference counts for the thread to be wrong, and can lead to a\npotential BUG() call.\n\nRather than exiting on error from svc_recv, have the thread do a 1s\nsleep and then retry the loop. This is unlikely to cause any harm, and\nif the error turns out to be something temporary then it may be able to\nrecover.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "3c61eecb607dbc2777074b1a95b8a97e31a96a73",
      "tree": "0df466f7f4b9528718b4d944e944905602eb6e74",
      "parents": [
        "a5ae03989254ec25cd3a934ca02c008d67e259f7"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Apr 07 13:05:27 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Apr 23 16:13:42 2008 -0400"
      },
      "message": "lockd: Fix stale nlmsvc_unlink_block comment\n\nAs of 5996a298da43a03081e9ba2116983d173001c862 (\"NLM: don\u0027t unlock on\ncancel requests\") we no longer unlock in this case, so the comment is no\nlonger accurate.\n\nThanks to Stuart Friedberg for pointing out the inconsistency.\n\nCc: Stuart Friedberg \u003csfriedberg@hp.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "d8421202121ce74daf4625ca9d1d825bbd7ce66a",
      "tree": "0465a155e03b97660d2f887e702b8f2917889c75",
      "parents": [
        "a95e56e72c196970a8067cd515c658d064813170"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Feb 20 15:40:15 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Apr 23 16:13:39 2008 -0400"
      },
      "message": "lockd: convert nsm_mutex to a spinlock\n\nThere\u0027s no reason for a mutex here, except to allow an allocation under\nthe lock, which we can avoid with the usual trick of preallocating\nmemory for the new object and freeing it if it turns out to be\nunnecessary.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "a95e56e72c196970a8067cd515c658d064813170",
      "tree": "e785c49b5cc7fe877ff5bf78193d11b1cb482540",
      "parents": [
        "164f98adbbd50c67177b096a59f55c1a56a45c82"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Feb 20 15:27:31 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Apr 23 16:13:39 2008 -0400"
      },
      "message": "lockd: clean up __nsm_find()\n\nUse list_for_each_entry().  Also, in keeping with kernel style, make the\nnormal case (kzalloc succeeds) unindented and handle the abnormal case\nwith a goto.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "164f98adbbd50c67177b096a59f55c1a56a45c82",
      "tree": "baa47455b18219eca8ff4a54a84954170597fa06",
      "parents": [
        "dd35210e1e2cb46d6dba5c97f1bc3784c4f97998"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Feb 20 14:02:47 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Apr 23 16:13:39 2008 -0400"
      },
      "message": "lockd: fix race in nlm_release()\n\nThe sm_count is decremented to zero but left on the nsm_handles list.\nSo in the space between decrementing sm_count and acquiring nsm_mutex,\nit is possible for another task to find this nsm_handle, increment the\nuse count and then enter nsm_release itself.\n\nThus there\u0027s nothing to prevent the nsm being freed before we acquire\nnsm_mutex here.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "93245d11fcaccdebccabe86a2b92db524f82d8b4",
      "tree": "62d1de3c789e01387ccbf1bf15764d3114a4a6fe",
      "parents": [
        "f2b0dee2ec8d562ad9ced2b7481be72d356c6cfc"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Mon Feb 18 02:01:49 2008 -0800"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Apr 23 16:13:39 2008 -0400"
      },
      "message": "lockd: fix sparse warning in svcshare.c\n\nfs/lockd/svcshare.c:74:50: warning: Using plain integer as NULL pointer\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "d751a7cd0695554498f25d3026ca6710dbb3698f",
      "tree": "31ec617dfb9fb70160bb8d2d9c9fd2e5c1e50c15",
      "parents": [
        "7086721f9c8b59331e164e534f588e075cfd9d3f"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Thu Feb 07 16:34:55 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Apr 23 16:13:36 2008 -0400"
      },
      "message": "NLM: Convert lockd to use kthreads\n\nHave lockd_up start lockd using kthread_run. With this change,\nlockd_down now blocks until lockd actually exits, so there\u0027s no longer\nneed for the waitqueue code at the end of lockd_down. This also means\nthat only one lockd can be running at a time which simplifies the code\nwithin lockd\u0027s main loop.\n\nThis also adds a check for kthread_should_stop in the main loop of\nnlmsvc_retry_blocked and after that function returns. There\u0027s no sense\ncontinuing to retry blocks if lockd is coming down anyway.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "1447d25eb3a7bbe5bf5e4e7489f09be13e1ec73a",
      "tree": "1961687ba998d7f8d6bad9efda19d3eb7f45d1d6",
      "parents": [
        "3dc5063786b273f1aee545844f6bd4e9651ebffe"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Feb 08 13:03:37 2008 +1100"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Apr 23 16:13:35 2008 -0400"
      },
      "message": "knfsd: Remove NLM_HOST_MAX and associated logic.\n\nLockd caches information about hosts that have recently held locks to\nexpedite the taking of further locks.\n\nIt periodically discards this information for hosts that have not been\nused for a few minutes.\n\nlockd currently has a value NLM_HOST_MAX, and changes the \u0027garbage\ncollection\u0027 behaviour when the number of hosts exceeds this threshold.\n\nHowever its behaviour is strange, and likely not what was intended.\nWhen the number of hosts exceeds the max, it scans *less* often (every\n2 minutes vs every minute) and allows unused host information to\nremain around longer (5 minutes instead of 2).\n\nHaving this limit is of dubious value anyway, and we have not\nsuffered from the code not getting the limit right, so remove the\nlimit altogether.  We go with the larger values (discard 5 minute old\nhosts every 2 minutes) as they are probably safer.\n\nMaybe the periodic garbage collection should be replace to with\n\u0027shrinker\u0027 handler so we just respond to memory pressure....\n\nAcked-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "d11d10cc05c94a32632d6928d15a1034200dd9a5",
      "tree": "8d6aec826f4673cf0aea98dda2c5ce39185a5d0b",
      "parents": [
        "c4d7c402b788b73dc24f1e54a57f89d3dc5eb7bc"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Apr 02 14:44:05 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Apr 19 16:54:43 2008 -0400"
      },
      "message": "NLM/lockd: Ensure client locking calls use correct credentials\n\nNow that we\u0027ve added the \u0027generic\u0027 credentials (that are independent of the\nrpc_client) to the nfs_open_context, we can use those in the NLM client to\nensure that the lock/unlock requests are authenticated to whoever\noriginally opened the file.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5f50c0c6d644d6c8180d9079c13c5d9de3adeb34",
      "tree": "8cc145c4c3fafc1ea23e0e20929238e6318a44a5",
      "parents": [
        "6b4b3a752b3464f2fd9fe2837fb19270c23c1d6b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Apr 01 20:26:22 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Apr 19 16:53:49 2008 -0400"
      },
      "message": "NLM/lockd: Fix a race when cancelling a blocking lock\n\nWe shouldn\u0027t remove the lock from the list of blocked locks until the\nCANCEL call has completed since we may be racing with a GRANTED callback.\n\nAlso ensure that we send an UNLOCK if the CANCEL request failed. Normally\nthat should only happen if the process gets hit with a fatal signal.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6b4b3a752b3464f2fd9fe2837fb19270c23c1d6b",
      "tree": "02c504fd397a5bb4f484e1205e2568bbcddfc2c5",
      "parents": [
        "8ec7ff74448f65ac963e330795d771ab14ec8408"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Apr 02 14:40:53 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Apr 19 16:53:45 2008 -0400"
      },
      "message": "NLM/lockd: Ensure that nlmclnt_cancel() returns results of the CANCEL call\n\nCurrently, it returns success as long as the RPC call was sent. We\u0027d like\nto know if the CANCEL operation succeeded on the server.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8ec7ff74448f65ac963e330795d771ab14ec8408",
      "tree": "b5edaf20a622c7b7ca47640fc8b1a7ce53f95422",
      "parents": [
        "dc9d8d048168ff61c458bec06b28996cb90b182a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 28 16:04:51 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Apr 19 16:53:42 2008 -0400"
      },
      "message": "NLM: Remove the signal masking in nlmclnt_proc/nlmclnt_cancel\n\nThe signal masks have been rendered obsolete by the preceding patch.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "dc9d8d048168ff61c458bec06b28996cb90b182a",
      "tree": "f8160237a79f96837696bc7dfa91efc96e9b84ed",
      "parents": [
        "5e7f37a76fa5b604949020b7317962262812b2dd"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 28 16:04:36 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Apr 19 16:53:39 2008 -0400"
      },
      "message": "NLM/lockd: convert __nlm_async_call to use rpc_run_task()\n\nPeter Staubach comments:\n\n\u003e In the course of investigating testing failures in the locking phase of\n\u003e the Connectathon testsuite, I discovered a couple of things.  One was\n\u003e that one of the tests in the locking tests was racy when it didn\u0027t seem\n\u003e to need to be and two, that the NFS client asynchronously releases locks\n\u003e when a process is exiting.\n...\n\u003e The Single UNIX Specification Version 3 specifies that:  \"All locks\n\u003e associated with a file for a given process shall be removed when a file\n\u003e descriptor for that file is closed by that process or the process holding\n\u003e that file descriptor terminates.\".\n\u003e\n\u003e This does not specify whether those locks must be released prior to the\n\u003e completion of the exit processing for the process or not.  However,\n\u003e general assumptions seem to be that those locks will be released.  This\n\u003e leads to more deterministic behavior under normal circumstances.\n\nThe following patch converts the NFSv2/v3 locking code to use the same\nmechanism as NFSv4 for sending asynchronous RPC calls and then waiting for\nthem to complete. This ensures that the UNLOCK and CANCEL RPC calls will\ncomplete even if the user interrupts the call, yet satisfies the\nabove request for synchronous behaviour on process exit.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5e7f37a76fa5b604949020b7317962262812b2dd",
      "tree": "ceb12f296c0d19374993ac33f306180c1f8dc23a",
      "parents": [
        "536ff0f809b0f4d56e1c41e66768d330668e0a55"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Apr 01 18:58:49 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Apr 19 16:53:36 2008 -0400"
      },
      "message": "NLM/lockd: Add a reference counter to struct nlm_rqst\n\nWhen we replace the existing synchronous RPC calls with asynchronous calls,\nthe reference count will be needed in order to allow us to examine the\nresult of the RPC call.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4a9af59fee0701d9db99bc148d87b8852d6d6dd8",
      "tree": "5300720549fa750dc81b39a2ae5238840906a8ca",
      "parents": [
        "1e799b673c6b82b336ab13c48b5651d511ca3000"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Apr 01 18:57:06 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Apr 19 16:53:30 2008 -0400"
      },
      "message": "NLM/lockd: Ensure we don\u0027t corrupt fl-\u003efl_flags in nlmclnt_unlock()\n\nAlso fix up nlmclnt_lock() so that it doesn\u0027t pass modified versions of\nfl-\u003efl_flags to nlmclnt_cancel() and other helpers.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0490a54a00c14212f22c5948c8c13a4553d745bd",
      "tree": "eec4ea250a228c37c46255395724aa0c3390e838",
      "parents": [
        "2ca7754d4c96d68e1475690422a202ba5f0443d8"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Mar 14 14:26:08 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 19 18:01:10 2008 -0400"
      },
      "message": "lockd: introduce new function to encode private argument in SM_MON requests\n\nClean up: refactor the encoding of the opaque 16-byte private argument in\nxdr_encode_mon().  This will be updated later to support IPv6 addresses.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2ca7754d4c96d68e1475690422a202ba5f0443d8",
      "tree": "c67f12d715492e78e371861afde95604d1aaf3bb",
      "parents": [
        "ea72a7f170e686baf00ceee57b6197bef686889c"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Mar 14 14:26:01 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 19 18:01:07 2008 -0400"
      },
      "message": "lockd: Fix up incorrect RPC buffer size calculations.\n\nSwitch to using the new mon_id encoder function.\n\nNow that we\u0027ve refactored the encoding of SM_MON requests, we\u0027ve\ndiscovered that the pre-computed buffer length maximums are\nincorrect!\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ea72a7f170e686baf00ceee57b6197bef686889c",
      "tree": "b31106e27f57a4a4858c0f13efd30cc1938bf496",
      "parents": [
        "850c95fd07b63704d06909c9a081c51272d32db1"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Mar 14 14:25:53 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 19 18:01:04 2008 -0400"
      },
      "message": "lockd: document use of mon_id argument in SM_MON requests\n\nClean up: document the argument type that xdr_encode_common() is\nmarshalling by introducing a new function.  The new function will replace\nxdr_encode_common() in just a sec.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "850c95fd07b63704d06909c9a081c51272d32db1",
      "tree": "37cda66d133e442bfc54c97ed8d81016c3a33381",
      "parents": [
        "496951743100b2d2ccd8b268257e79425e489851"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Mar 14 14:25:46 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 19 18:01:01 2008 -0400"
      },
      "message": "lockd: refactor SM_MON my_id argument encoder\n\nClean up: introduce a new XDR encoder specifically for the my_id\nargument of SM_MON requests.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "496951743100b2d2ccd8b268257e79425e489851",
      "tree": "e52e804c132f8322699354640c7fee7541b9a317",
      "parents": [
        "099bd05f27ff24a3041d54e7ed42d2eb681484b9"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Mar 14 14:25:39 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 19 18:00:57 2008 -0400"
      },
      "message": "lockd: refactor SM_MON mon_name argument encoder\n\nClean up: introduce a new XDR encoder specifically for the mon_name\nargument of SM_MON requests.  This will be updated later to support IPv6\naddresses in addition to IPv4 addresses.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "099bd05f27ff24a3041d54e7ed42d2eb681484b9",
      "tree": "beb5738bdce698874255eb890f84a770a83d34e5",
      "parents": [
        "f34ec991ae0f015f5cdc51ad46c3a317ffae2466"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Mar 14 14:25:32 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 19 18:00:54 2008 -0400"
      },
      "message": "lockd: Ensure NSM strings aren\u0027t longer than protocol allows\n\nIntroduce a special helper function to check the length of NSM strings\nbefore they are placed on the wire.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "eb18860e1385bfc7f08fcb7ba362e4a5156c8324",
      "tree": "c8dff7c59d8b2d356eda454aa57c6f0e278cad6b",
      "parents": [
        "90d5b18061656993410dfd57ddb88aa5a3f34563"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Mar 14 14:18:37 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 19 18:00:47 2008 -0400"
      },
      "message": "NLM: NLM protocol version numbers are u32\n\nClean up: RPC protocol version numbers are u32.  Make sure we use an\nappropriate type for NLM version numbers when calling nlm_lookup_host().\n\nEliminates a harmless mixed sign comparison in nlm_host_lookup().\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "90d5b18061656993410dfd57ddb88aa5a3f34563",
      "tree": "7e640753a3961d5af11518f046ed11920c8f649d",
      "parents": [
        "1e40316bc44851c5920490df01482ed862e4dbc4"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Mar 14 14:18:30 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 19 18:00:44 2008 -0400"
      },
      "message": "NLM: LOCKD fails to load if CONFIG_SYSCTL is not set\n\nBruce Fields says:\n\"By the way, we\u0027ve got another config-related nit here:\n\n\thttp://bugzilla.linux-nfs.org/show_bug.cgi?id\u003d156\n\nYou can build lockd without CONFIG_SYSCTL set, but then the module will\nfail to load.\"\n\nFor now, disable the sysctl registration calls in lockd if CONFIG_SYSCTL\nis not enabled.  This allows the kernel to build properly if PROC_FS or\nSYSCTL is not enabled, but an NFS client is desired.\n\nIn the long run, we would like to be able to build the kernel with an\nNFS client but without lockd.  This makes sense, for example, if you want\nan NFSv4-only NFS client, as NFSv4 doesn\u0027t use NLM at all.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5216a8e70e25b01cbd2915cd0442fb96deb2c262",
      "tree": "f372bd3cb3fc2f4a2d3e4ad303e6c4d3f8f48865",
      "parents": [
        "90dc7d2796edf94a9eaa838321a9734c8513e717"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Thu Feb 21 10:57:45 2008 +0300"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Feb 21 18:42:29 2008 -0500"
      },
      "message": "Wrap buffers used for rpc debug printks into RPC_IFDEBUG\n\nSorry for the noise, but here\u0027s the v3 of this compilation fix :)\n\nThere are some places, which declare the char buf[...] on the stack\nto push it later into dprintk(). Since the dprintk sometimes (if the\nCONFIG_SYSCTL\u003dn) becomes an empty do { } while (0) stub, these buffers\ncause gcc to produce appropriate warnings.\n\nWrap these buffers with RPC_IFDEBUG macro, as Trond proposed, to\ncompile them out when not needed.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nAcked-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c64e80d55db81df22a7f25b75ab4ba4c55db4749",
      "tree": "bc844c9fbc4a19887b108d457f0d8fdc651630e2",
      "parents": [
        "9706501e43a80ce48b319214a0a9e562deded35b"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Feb 06 11:34:13 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sun Feb 10 18:09:36 2008 -0500"
      },
      "message": "NLM: don\u0027t requeue block if it was invalidated while GRANT_MSG was in flight\n\nIt\u0027s possible for lockd to catch a SIGKILL while a GRANT_MSG callback\nis in flight. If this happens we don\u0027t want lockd to insert the block\nback into the nlm_blocked list.\n\nThis helps that situation, but there\u0027s still a possible race. Fixing\nthat will mean adding real locking for nlm_blocked.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "9706501e43a80ce48b319214a0a9e562deded35b",
      "tree": "6b2d5ec807edea5806e9dd41f1109d8e8aac160c",
      "parents": [
        "90bd17c87821fe0e055e0f9a7446c2875f31eb4c"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Feb 06 11:34:12 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sun Feb 10 18:09:36 2008 -0500"
      },
      "message": "NLM: don\u0027t reattempt GRANT_MSG when there is already an RPC in flight\n\nWith the current scheme in nlmsvc_grant_blocked, we can end up with more\nthan one GRANT_MSG callback for a block in flight. Right now, we requeue\nthe block unconditionally so that a GRANT_MSG callback is done again in\n30s. If the client is unresponsive, it can take more than 30s for the\ncall already in flight to time out.\n\nThere\u0027s no benefit to having more than one GRANT_MSG RPC queued up at a\ntime, so put it on the list with a timeout of NLM_NEVER before doing the\nRPC call. If the RPC call submission fails, we requeue it with a short\ntimeout. If it works, then nlmsvc_grant_callback will end up requeueing\nit with a shorter timeout after it completes.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "90bd17c87821fe0e055e0f9a7446c2875f31eb4c",
      "tree": "21524f248ed516570dcc1a0f6a66a74e3a275e95",
      "parents": [
        "031fd3aa20fcf6d1862ea7814ee8b2caf36c0d78"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Feb 06 11:34:11 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sun Feb 10 18:09:36 2008 -0500"
      },
      "message": "NLM: have server-side RPC clients default to soft RPC tasks\n\nNow that it no longer does an RPC ping, lockd always ends up queueing\nan RPC task for the GRANT_MSG callback. But, it also requeues the block\nfor later attempts. Since these are hard RPC tasks, if the client we\u0027re\ncalling back goes unresponsive the GRANT_MSG callbacks can stack up in\nthe RPC queue.\n\nFix this by making server-side RPC clients default to soft RPC tasks.\nlockd requeues the block anyway, so this should be OK.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "031fd3aa20fcf6d1862ea7814ee8b2caf36c0d78",
      "tree": "b60252860730b3f9b4578db1dc891497e0a00722",
      "parents": [
        "551e4fb2465b87de9d4aa1669b27d624435443bb"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Feb 06 11:34:10 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sun Feb 10 18:09:36 2008 -0500"
      },
      "message": "NLM: set RPC_CLNT_CREATE_NOPING for NLM RPC clients\n\nIt\u0027s currently possible for an unresponsive NLM client to completely\nlock up a server\u0027s lockd. The scenario is something like this:\n\n1) client1 (or a process on the server) takes a lock on a file\n2) client2 tries to take a blocking lock on the same file and\n   awaits the callback\n3) client2 goes unresponsive (plug pulled, network partition, etc)\n4) client1 releases the lock\n\n...at that point the server\u0027s lockd will try to queue up a GRANT_MSG\ncallback for client2, but first it requeues the block with a timeout of\n30s. nlm_async_call will attempt to bind the RPC client to client2 and\nwill call rpc_ping. rpc_ping entails a sync RPC call and if client2 is\nunresponsive it will take around 60s for that to time out. Once it times\nout, it\u0027s already time to retry the block and the whole process repeats.\n\nOnce in this situation, nlmsvc_retry_blocked will never return until\nthe host starts responding again. lockd won\u0027t service new calls.\n\nFix this by skipping the RPC ping on NLM RPC clients. This makes\nnlm_async_call return quickly when called.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "d801b861681116ea23a7fb87a70bf463d29c8b9c",
      "tree": "dcc35c5c93461c452942fe5954badd034d8a2939",
      "parents": [
        "0113ab34644649aceaac37ef4b7e5c7d5c183be3"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Tue Jan 29 10:30:55 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Feb 01 16:42:15 2008 -0500"
      },
      "message": "NLM: tear down RPC clients in nlm_shutdown_hosts\n\nIt\u0027s possible for a RPC to outlive the lockd daemon that created it, so\nwe need to make sure that all RPC\u0027s are killed when lockd is coming\ndown. When nlm_shutdown_hosts is called, kill off all RPC tasks\nassociated with the host. Since we need to wait until they have all gone\naway, we might as well just shut down the RPC client altogether.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "50431d94e732ba71b66a83c5435890728e313095",
      "tree": "4bee956a3f089aac02eafafcbc4a03c138696e6d",
      "parents": [
        "f7b8066f9ff68016489ff6f9fb358aa59bd14e1b"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Aug 31 17:09:33 2007 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Feb 01 16:42:15 2008 -0500"
      },
      "message": "lockd: minor log message fix\n\nWendy Cheng noticed that function name doesn\u0027t agree here.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nCc: Wendy Cheng \u003cwcheng@redhat.com\u003e\n"
    },
    {
      "commit": "a217813f9067b785241cb7f31956e51d2071703a",
      "tree": "5bda9ab6a461562975506d2100b16db19e3e628b",
      "parents": [
        "7fcb98d58cb4d18af6386f71025fc5192f25fbca"
      ],
      "author": {
        "name": "Tom Tucker",
        "email": "tom@opengridcomputing.com",
        "time": "Sun Dec 30 21:08:35 2007 -0600"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Feb 01 16:42:13 2008 -0500"
      },
      "message": "knfsd: Support adding transports by writing portlist file\n\nUpdate the write handler for the portlist file to allow creating new\nlistening endpoints on a transport. The general form of the string is:\n\n\u003ctransport_name\u003e\u003cspace\u003e\u003cport number\u003e\n\nFor example:\n\necho \"tcp 2049\" \u003e /proc/fs/nfsd/portlist\n\nThis is intended to support the creation of a listening endpoint for\nRDMA transports without adding #ifdef code to the nfssvc.c file.\n\nTransports can also be removed as follows:\n\n\u0027-\u0027\u003ctransport_name\u003e\u003cspace\u003e\u003cport number\u003e\n\nFor example:\n\necho \"-tcp 2049\" \u003e /proc/fs/nfsd/portlist\n\nAttempting to add a listener with an invalid transport string results\nin EPROTONOSUPPORT and a perror string of \"Protocol not supported\".\n\nAttempting to remove an non-existent listener (.e.g. bad proto or port)\nresults in ENOTCONN and a perror string of\n\"Transport endpoint is not connected\"\n\nSigned-off-by: Tom Tucker \u003ctom@opengridcomputing.com\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nReviewed-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nReviewed-by: Greg Banks \u003cgnb@sgi.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "7fcb98d58cb4d18af6386f71025fc5192f25fbca",
      "tree": "7ccd884928c644cebd717306937565fbcdc9dd88",
      "parents": [
        "dc9a16e49dbba3dd042e6aec5d9a7929e099a89b"
      ],
      "author": {
        "name": "Tom Tucker",
        "email": "tom@opengridcomputing.com",
        "time": "Sun Dec 30 21:08:33 2007 -0600"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Feb 01 16:42:13 2008 -0500"
      },
      "message": "svc: Add svc API that queries for a transport instance\n\nAdd a new svc function that allows a service to query whether a\ntransport instance has already been created. This is used in lockd\nto determine whether or not a transport needs to be created when\na lockd instance is brought up.\n\nSpecifying 0 for the address family or port is effectively a wild-card,\nand will result in matching the first transport in the service\u0027s list\nthat has a matching class name.\n\nSigned-off-by: Tom Tucker \u003ctom@opengridcomputing.com\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nReviewed-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nReviewed-by: Greg Banks \u003cgnb@sgi.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "7a18208383ab3f3ce4a1f4e0536acc9372523d81",
      "tree": "851a1cc29d753297c2e7cf4cb4a95c4af7868427",
      "parents": [
        "bb5cf160b282644c4491afbf76fbc66f5dc35030"
      ],
      "author": {
        "name": "Tom Tucker",
        "email": "tom@opengridcomputing.com",
        "time": "Sun Dec 30 21:07:53 2007 -0600"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Feb 01 16:42:11 2008 -0500"
      },
      "message": "svc: Make close transport independent\n\nMove sk_list and sk_ready to svc_xprt. This involves close because these\nlists are walked by svcs when closing all their transports. So I combined\nthe moving of these lists to svc_xprt with making close transport independent.\n\nThe svc_force_sock_close has been changed to svc_close_all and takes a list\nas an argument. This removes some svc internals knowledge from the svcs.\n\nThis code races with module removal and transport addition.\n\nThanks to Simon Holm Thøgersen for a compile fix.\n\nSigned-off-by: Tom Tucker \u003ctom@opengridcomputing.com\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nReviewed-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nReviewed-by: Greg Banks \u003cgnb@sgi.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nCc: Simon Holm Thøgersen \u003codie@cs.aau.dk\u003e\n"
    },
    {
      "commit": "d7c9f1ed972b4a468dd24a2457721704dfe9ca70",
      "tree": "40cd2b38db79df4d90753b58789c3e4bc274095f",
      "parents": [
        "b700cbb11fced2a0e953fdd19eac07ffaad86598"
      ],
      "author": {
        "name": "Tom Tucker",
        "email": "tom@opengridcomputing.com",
        "time": "Sun Dec 30 21:07:44 2007 -0600"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Feb 01 16:42:09 2008 -0500"
      },
      "message": "svc: Change services to use new svc_create_xprt service\n\nModify the various kernel RPC svcs to use the svc_create_xprt service.\n\nSigned-off-by: Tom Tucker \u003ctom@opengridcomputing.com\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nReviewed-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nReviewed-by: Greg Banks \u003cgnb@sgi.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "54ca95eb362d6988a577965ffb77c08702adb890",
      "tree": "a18ff136ce9d530eaa90a42831d9b85a91ab6321",
      "parents": [
        "8838dc43d6544570e8969a74ddc4a0d21abffde6"
      ],
      "author": {
        "name": "Oleg Drokin",
        "email": "Oleg.Drokin@Sun.COM",
        "time": "Fri Jan 11 21:57:35 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Feb 01 16:42:07 2008 -0500"
      },
      "message": "Leak in nlmsvc_testlock for async GETFL case\n\nFix nlm_block leak for the case of supplied blocking lock info.\n\nSigned-off-by: Oleg Drokin \u003cgreen@linuxhacker.ru\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "29dbf546159f5701e11de26fa2da5c4a962e0f83",
      "tree": "1dcdd1785445cbbf30a159a15b7b1d77f42c51c2",
      "parents": [
        "406a7ea97d9dc1a9348ba92c4cd0e7c678185c4c"
      ],
      "author": {
        "name": "Oleg Drokin",
        "email": "Oleg.Drokin@Sun.COM",
        "time": "Thu Nov 29 14:02:21 2007 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Feb 01 16:42:06 2008 -0500"
      },
      "message": "lockd: fix a leak in nlmsvc_testlock asynchronous request handling\n\nWithout the patch, there is a leakage of nlmblock structure refcount\nthat holds a reference nlmfile structure, that holds a reference to\nstruct file, when async GETFL is used (-EINPROGRESS return from\nfile_ops-\u003elock()), and also in some error cases.\n\nFix up a style nit while we\u0027re here.\n\nSigned-off-by: Oleg Drokin \u003cgreen@linuxhacker.ru\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "b7e6b86948df8d08d420558212e09eb449be9bfa",
      "tree": "b9bce0e95a93a6b9142b55c647fb0fbe163a2130",
      "parents": [
        "404ec117be5d36e1a4c4582d0c518594333e32df"
      ],
      "author": {
        "name": "Oleg Drokin",
        "email": "green@linuxhacker.ru",
        "time": "Mon Nov 26 13:35:11 2007 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Feb 01 16:42:06 2008 -0500"
      },
      "message": "lockd: fix reference count leaks in async locking case\n\nIn a number of places where we wish only to translate nlm_drop_reply to\nrpc_drop_reply errors we instead return early with rpc_drop_reply,\nskipping some important end-of-function cleanup.\n\nThis results in reference count leaks when lockd is doing posix locking\non GFS2.\n\nSigned-off-by: Oleg Drokin \u003cgreen@linuxhacker.ru\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "48df020aa17ac95a012ff765b0086ede5996b320",
      "tree": "52aa9d1ff1e320ead499bddfe98cb05b06df1311",
      "parents": [
        "e5cff482c78a35b9f149a06aa777a1bd693864fb"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Nov 01 16:56:53 2007 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Feb 01 16:42:02 2008 -0500"
      },
      "message": "NLM: Fix sign of length of NLM variable length strings\n\nAccording to The Open Group\u0027s NLM specification, NLM callers are variable\nlength strings.  XDR variable length strings use an unsigned 32 bit length.\nAnd internally, negative string lengths are not meaningful for the Linux\nNLM implementation.\n\nClean up: Make nlm_lock.len and nlm_reboot.len unsigned integers.  This\nmakes the sign of NLM string lengths consistent with the sign of xdr_netobj\nlengths.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nAcked-By: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "65fdf7d264213a9a8de44f9a20e002a26c267a76",
      "tree": "c7279d26e01d0d229a8ca7dd4a5667cc8be7f9b3",
      "parents": [
        "883bb163f84e0a54b29846c61621f52db3f27393"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 11 17:41:29 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:06:08 2008 -0500"
      },
      "message": "NLM: Fix a bogus \u0027return\u0027 in nlmclnt_rpc_release\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "883bb163f84e0a54b29846c61621f52db3f27393",
      "tree": "ea11b2d1ba85cbb4422ae7ff615d6d186d709af1",
      "parents": [
        "1093a60ef34bb12010fe7ea4b780bee1c57cfbbe"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Jan 15 16:04:20 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:06:07 2008 -0500"
      },
      "message": "NLM: Introduce an arguments structure for nlmclnt_init()\n\nClean up: pass 5 arguments to nlmclnt_init() in a structure similar to the\nnew nfs_client_initdata structure.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\n"
    },
    {
      "commit": "1093a60ef34bb12010fe7ea4b780bee1c57cfbbe",
      "tree": "bc558d58ae38aab7e615883eceef1ec253c2d646",
      "parents": [
        "9289e7f91add1c09c3ec8571a2080f7507730b8d"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Jan 11 17:09:59 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:06:07 2008 -0500"
      },
      "message": "NLM/NFS: Use cached nlm_host when calling nlmclnt_proc()\n\nNow that each NFS mount point caches its own nlm_host structure, it can be\npassed to nlmclnt_proc() for each lock request.  By pinning an nlm_host for\neach mount point, we trade the overhead of looking up or creating a fresh\nnlm_host struct during every NLM procedure call for a little extra memory.\n\nWe also restrict the nlmclnt_proc symbol to limit the use of this call to\nin-tree modules.\n\nNote that nlm_lookup_host() (just removed from the client\u0027s per-request\nNLM processing) could also trigger an nlm_host garbage collection.  Now\nclient-side nlm_host garbage collection occurs only during NFS mount\nprocessing.  Since the NFS client now holds a reference on these nlm_host\nstructures, they wouldn\u0027t have been affected by garbage collection\nanyway.\n\nGiven that nlm_lookup_host() reorders the global nlm_host chain after\nevery successful lookup, and that a garbage collection could be triggered\nduring the call, we\u0027ve removed a significant amount of per-NLM-request\nCPU processing overhead.\n\nSidebar: there are only a few remaining references to the internals of\nNFS inodes in the client-side NLM code.  The only references I found are\nrelated to extracting or comparing the inode\u0027s file handle via NFS_FH().\nOne is in nlmclnt_grant(); the other is in nlmclnt_setlockargs().\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "52c4044d00fe703eb3fb18e0d8dfd1c196eb28be",
      "tree": "e8ff891bc68ee10ebe3d067b13ba31e2deb645bb",
      "parents": [
        "86d61d8638ddf9cdf87df26c7fa69b2804425fbe"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Jan 11 17:09:44 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:06:06 2008 -0500"
      },
      "message": "NLM: Introduce external nlm_host set-up and tear-down functions\n\nWe would like to remove the per-lock-operation nlm_lookup_host() call from\nnlmclnt_proc().\n\nThe new architecture pins an nlm_host structure to each NFS client\nsuperblock that has the \"lock\" mount option set.  The NFS client passes\nin the pinned nlm_host structure during each call to nlmclnt_proc().  NFS\nclient unmount processing \"puts\" the nlm_host so it can be garbage-\ncollected later.\n\nThis patch introduces externally callable NLM functions that handle\nmount-time nlm_host set up and tear-down.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cab6fc1b77c3ec4471d7d54ff6db9ad2dd59c2f5",
      "tree": "7c863b953cf4862579ba057b3d5b4a68e8038e4d",
      "parents": [
        "3d509e5454a0a5ac88bf3191ab65d85952c1de31"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 20 14:55:11 2007 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:06:02 2008 -0500"
      },
      "message": "lockd: Eliminate harmless mixed sign comparison in nlmdbg_cookie2a()\n\nThe cookie-\u003elen field is unsigned, so the loop index variable in\nnlmdbg_cookie2a() should also be unsigned.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0896a725a1c5fdc8773a4d1ab0b73059507f5925",
      "tree": "e8a44eecc411f0d117358752d8a2b80895d81bc0",
      "parents": [
        "4fa016eb248cac875541fa199af550a8aefa0e90"
      ],
      "author": {
        "name": "\\\"Talpey, Thomas\\",
        "email": "Thomas.Talpey@netapp.com",
        "time": "Mon Sep 10 13:48:23 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:17:53 2007 -0400"
      },
      "message": "NFS/SUNRPC: use transport protocol naming\n\nInstead of an { address family, raw IP protocol number }-tuple, use the\nnewly-defined RPC identifier when creating clients in the upper layers.\n\nSigned-off-by: Tom Talpey \u003ctmt@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e159a08b6ab14e255536fddae75d448395295c6f",
      "tree": "ed707db605ce1f47fc0f6dbe26b07556589b0f01",
      "parents": [
        "fe82a183ca3c9188945c4ebeebc2ca45abfa24e5"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Sep 11 18:01:15 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:17:12 2007 -0400"
      },
      "message": "LOCKD: Convert printk\u0027s to dprintk\u0027s in lockd XDR routines\n\nDue to recent edict to remove or replace printk\u0027s that might flood the\nsystem log.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a6d85430424d44e946e0946bfaad607115510989",
      "tree": "f324085c0d92fb8ebae928bab3a5f0b480a3bb4a",
      "parents": [
        "baf14aa14efcfdb5a74d5cf804691086c6bec743"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 11:04:57 2007 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 09 12:38:26 2007 -0700"
      },
      "message": "NLM: Fix a memory leak in nlmsvc_testlock\n\nThe recent fix for a circular lock dependency unfortunately introduced a\npotential memory leak in the event where the call to nlmsvc_lookup_host\nfails for some reason.\n\nThanks to Roel Kluin for spotting this.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "255129d1e9ca0ed3d69d5517fae3e03d7ab4b806",
      "tree": "e3dedbffebd4f0e15da97684500296c9bc4d3d6a",
      "parents": [
        "f6a592e8abd2f2394623ce5427cbb4c265495974"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 25 15:55:03 2007 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Sep 26 09:22:04 2007 -0700"
      },
      "message": "NLM: Fix a circular lock dependency in lockd\n\nThe problem is that the garbage collector for the \u0027host\u0027 structures\nnlm_gc_hosts(), holds nlm_host_mutex while calling down to\nnlmsvc_mark_resources, which, eventually takes the file-\u003ef_mutex.\n\nWe cannot therefore call nlmsvc_lookup_host() from within\nnlmsvc_create_block, since the caller will already hold file-\u003ef_mutex, so\nthe attempt to grab nlm_host_mutex may deadlock.\n\nFix the problem by calling nlmsvc_lookup_host() outside the file-\u003ef_mutex.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ca5c8cde93d65db3139604ca6b91bf8ff3f775e2",
      "tree": "d9ce882caf6b2b1d578829481e0895d6cd5b02aa",
      "parents": [
        "582ee43dad8e411513a74f2d801255dcffc6d29e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Thu Jul 26 17:33:49 2007 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 26 11:11:56 2007 -0700"
      },
      "message": "lockd and nfsd endianness annotation fixes\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9a8db97e7756119689c93c431e8b8324080f5625",
      "tree": "2e0ac28664b02c7e1c7a111c6e60ac059fd92ad8",
      "parents": [
        "12127498c8f5e479df15ee374a0932f5659df49e"
      ],
      "author": {
        "name": "Marc Eshel",
        "email": "eshel@almaden.ibm.com",
        "time": "Tue Jul 17 04:04:35 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:07 2007 -0700"
      },
      "message": "knfsd: lockd: nfsd4: use same grace period for lockd and nfsd4\n\nBoth lockd and (in the nfsv4 case) nfsd enforce a \"grace period\" after reboot,\nduring which clients may reclaim locks from the previous server instance, but\nmay not acquire new locks.\n\nCurrently the lockd and nfsd enforce grace periods of different lengths.  This\nmay cause problems when we reboot a server with both v2/v3 and v4 clients.\nFor example, if the lockd grace period is shorter (as is likely the case),\nthen a v3 client might acquire a new lock that conflicts with a lock already\nheld (but not yet reclaimed) by a v4 client.\n\nThis patch calculates a lease time that lockd and nfsd can both use.\n\nSigned-off-by: Marc Eshel \u003ceshel@almaden.ibm.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "831441862956fffa17b9801db37e6ea1650b0f69",
      "tree": "b0334921341f8f1734bdd3243de76d676329d21c",
      "parents": [
        "787d2214c19bcc9b6ac48af0ce098277a801eded"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Jul 17 04:03:35 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:02 2007 -0700"
      },
      "message": "Freezer: make kernel threads nonfreezable by default\n\nCurrently, the freezer treats all tasks as freezable, except for the kernel\nthreads that explicitly set the PF_NOFREEZE flag for themselves.  This\napproach is problematic, since it requires every kernel thread to either\nset PF_NOFREEZE explicitly, or call try_to_freeze(), even if it doesn\u0027t\ncare for the freezing of tasks at all.\n\nIt seems better to only require the kernel threads that want to or need to\nbe frozen to use some freezer-related code and to remove any\nfreezer-related code from the other (nonfreezable) kernel threads, which is\ndone in this patch.\n\nThe patch causes all kernel threads to be nonfreezable by default (ie.  to\nhave PF_NOFREEZE set by default) and introduces the set_freezable()\nfunction that should be called by the freezable kernel threads in order to\nunset PF_NOFREEZE.  It also makes all of the currently freezable kernel\nthreads call set_freezable(), so it shouldn\u0027t cause any (intentional)\nchange of behaviour to appear.  Additionally, it updates documentation to\ndescribe the freezing of tasks more accurately.\n\n[akpm@linux-foundation.org: build fixes]\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Nigel Cunningham \u003cnigel@nigel.suspend2.net\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c98451bdb2f3e6d6cc1e03adad641e9497512b49",
      "tree": "e5e2aa60dd308fc5fa2b641d84798e6b93376949",
      "parents": [
        "d3bc9a1deb8964d774af8535814cb91bf8f6def0"
      ],
      "author": {
        "name": "Frank van Maarseveen",
        "email": "frankvm@frankvm.com",
        "time": "Mon Jul 09 22:25:29 2007 +0200"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:49 2007 -0400"
      },
      "message": "NLM: fix source address of callback to client\n\nUse the destination address of the original NLM request as the\nsource address in callbacks to the client.\n\nSigned-off-by: Frank van Maarseveen \u003cfrankvm@frankvm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f61534dfd38f895b203e2aadaba04f21a992ca8c",
      "tree": "02485ae68fb2f45cbbc06152e0a4856ceff5f587",
      "parents": [
        "4ada539ed77c7a2bbcb75cafbbd7bd8d2b9bef7b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jun 14 17:31:58 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:30 2007 -0400"
      },
      "message": "SUNRPC: Remove redundant calls to rpciod_up()/rpciod_down()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "90c5755ff5111ffdcca10a1e8a823dba29f37b6d",
      "tree": "a3ca80b629d11e341fa2bcdf30e0d712dcccc3ba",
      "parents": [
        "848f1fe6be2e290691bb6c13cbb8fd92bd0cfaab"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jun 09 19:49:36 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:29 2007 -0400"
      },
      "message": "SUNRPC: Kill rpc_clnt-\u003ecl_oneshot\n\nReplace it with explicit calls to rpc_shutdown_client() or\nrpc_destroy_client() (for the case of asynchronous calls).\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "34f52e3591f241b825353ba27def956d8487c400",
      "tree": "9f7f0cd52f206095217bd2469e31c2531cbae0a4",
      "parents": [
        "c44fe705530ff9ea5e563bf9b65bdd29defe682b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jun 14 16:40:31 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:28 2007 -0400"
      },
      "message": "SUNRPC: Convert rpc_clnt-\u003ecl_users to a kref\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    }
  ],
  "next": "d48c5f41000ad176df71d2d43932c6c50f938196"
}
