)]}'
{
  "log": [
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "7e469af97eed947ba9204712601281a69ae8eb6c",
      "tree": "f4488e393995ae523ed6dea5370ddad7aa1505b5",
      "parents": [
        "cdd30fa1664e0245fa64330c7cc2ddab7e47c223"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Fri Feb 05 15:09:22 2010 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Feb 08 16:20:35 2010 -0500"
      },
      "message": "lockd: don\u0027t clear sm_monitored on nsm_reboot_lookup\n\nWhen lockd gets a notify downcall from statd, it\u0027ll search its hosts\ncache and then clear the sm_monitored bit on the host it finds. The idea\nis apparently to make lockd redo a SM_MON on the next lock request.\n\nThis is unnecessary and causes the kernel\u0027s NSM cache to go out of sync\nwith statd. statd doesn\u0027t stop monitoring a host when it gets a\nSM_NOTIFY and there\u0027s no guarantee that another lock will occur after\nthe reclaim and before the unmount. In that event, no SM_UNMON will\noccur.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nReviewed-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "cdd30fa1664e0245fa64330c7cc2ddab7e47c223",
      "tree": "acaa6946150b6aaccb576c200b955b8079943bb3",
      "parents": [
        "aa696a6f349638428982bb52763f4cda851632fa"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Fri Feb 05 15:09:12 2010 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Feb 08 16:20:35 2010 -0500"
      },
      "message": "lockd: release reference to nsm_handle in nlm_host_rebooted\n\nnsm_reboot_lookup takes a reference to the nsm_handle that it returns,\nbut nlm_host_rebooted never releases that reference.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nReviewed-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "d6783b2b6c4050df0ba0a84c6842cf5bc2212ef9",
      "tree": "d5c5d2ca1be2a53bb6e948da76c2ecd0f74ee27c",
      "parents": [
        "205ba42308729f4f41f21d314a4435e7de5c9a2e"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Jan 26 14:04:04 2010 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 26 17:56:43 2010 -0500"
      },
      "message": "SUNRPC: Bury \"#ifdef IPV6\" in svc_create_xprt()\n\nClean up:  Bruce observed we have more or less common logic in each of\nsvc_create_xprt()\u0027s callers:  the check to create an IPv6 RPC listener\nsocket only if CONFIG_IPV6 is set.  I\u0027m about to add another case\nthat does just the same.\n\nIf we move the ifdefs into __svc_xpo_create(), then svc_create_xprt()\ncall sites can get rid of the \"#ifdef\" ugliness, and can use the same\nlogic with or without IPv6 support available in the kernel.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "37c24b37fb2454e95136139d10bb6828967105bf",
      "tree": "d5c3fa61fa689567caeb2a7cb5891473e444ff7d",
      "parents": [
        "5ac4d630eb87656bd4dc313b910776d54d88ea28",
        "7663dacd926584093dfc350892792054692b6cb3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 10:43:34 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 10:43:34 2009 -0800"
      },
      "message": "Merge branch \u0027for-2.6.33\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.33\u0027 of git://linux-nfs.org/~bfields/linux: (42 commits)\n  nfsd: remove pointless paths in file headers\n  nfsd: move most of nfsfh.h to fs/nfsd\n  nfsd: remove unused field rq_reffh\n  nfsd: enable V4ROOT exports\n  nfsd: make V4ROOT exports read-only\n  nfsd: restrict filehandles accepted in V4ROOT case\n  nfsd: allow exports of symlinks\n  nfsd: filter readdir results in V4ROOT case\n  nfsd: filter lookup results in V4ROOT case\n  nfsd4: don\u0027t continue \"under\" mounts in V4ROOT case\n  nfsd: introduce export flag for v4 pseudoroot\n  nfsd: let \"insecure\" flag vary by pseudoflavor\n  nfsd: new interface to advertise export features\n  nfsd: Move private headers to source directory\n  vfs: nfsctl.c un-used nfsd #includes\n  lockd: Remove un-used nfsd headers #includes\n  s390: remove un-used nfsd #includes\n  sparc: remove un-used nfsd #includes\n  parsic: remove un-used nfsd #includes\n  compat.c: Remove dependence on nfsd private headers\n  ...\n"
    },
    {
      "commit": "0296f55f98368219af772f54d3bf18a9ad859399",
      "tree": "130154d858f8e65336434a7bdaefb660c09a39cb",
      "parents": [
        "399643f25eb93374e27e06ec85f0e8958298af2e"
      ],
      "author": {
        "name": "Boaz Harrosh",
        "email": "bharrosh@panasas.com",
        "time": "Thu Dec 03 20:30:27 2009 +0200"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Dec 14 18:12:11 2009 -0500"
      },
      "message": "lockd: Remove un-used nfsd headers #includes\n\nIn what history where these ever needed? Well not\nany more.\n\nSigned-off-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "6d4561110a3e9fa742aeec6717248a491dfb1878",
      "tree": "689e2abf19940416ce597ba56ed31026ff59bd21",
      "parents": [
        "86926d0096279b9739ceeff40f68d3c33b9119a9"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Nov 16 03:11:48 2009 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Nov 18 08:37:40 2009 -0800"
      },
      "message": "sysctl: Drop \u0026 in front of every proc_handler.\n\nFor consistency drop \u0026 in front of every proc_handler.  Explicity\ntaking the address is unnecessary and it prevents optimizations\nlike stubbing the proc_handlers to NULL.\n\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "ab09203e302b6e526f6930f3e460064b0f253ae9",
      "tree": "bc95bfaba78ba30613d57c676eca42818b8a3293",
      "parents": [
        "2bc4657c15e4a33d9a192579c7627a397dbcbebc"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu Nov 05 14:25:10 2009 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu Nov 12 02:04:55 2009 -0800"
      },
      "message": "sysctl fs: Remove dead binary sysctl support\n\nNow that sys_sysctl is a generic wrapper around /proc/sys  .ctl_name\nand .strategy members of sysctl tables are dead code.  Remove them.\n\nCc: Jan Harkes \u003cjaharkes@cs.cmu.edu\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "2bcd57ab61e7cabed626226a3771617981c11ce1",
      "tree": "687c0c35fb2a632cb8c56b2729f9c3873c9461bd",
      "parents": [
        "95e0d86badc410d525ea7218fd32df7bfbf9c837"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Sep 24 04:22:25 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 18:13:10 2009 -0700"
      },
      "message": "headers: utsname.h redux\n\n* remove asm/atomic.h inclusion from linux/utsname.h --\n   not needed after kref conversion\n * remove linux/utsname.h inclusion from files which do not need it\n\nNOTE: it looks like fs/binfmt_elf.c do not need utsname.h, however\ndue to some personality stuff it _is_ needed -- cowardly leave ELF-related\nheaders and files alone.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a87e84b5cdfacf11af4e8a85c4bca9793658536f",
      "tree": "f8e3cb2d339d8ed0e987d55f725e501730cdc81d",
      "parents": [
        "342ff1a1b558ebbdb8cbd55ab6a63eca8b2473ca",
        "3c394ddaa7ea4205f933fd9b481166b2669368a9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:54:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:54:33 2009 -0700"
      },
      "message": "Merge branch \u0027for-2.6.32\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.32\u0027 of git://linux-nfs.org/~bfields/linux: (68 commits)\n  nfsd4: nfsv4 clients should cross mountpoints\n  nfsd: revise 4.1 status documentation\n  sunrpc/cache: avoid variable over-loading in cache_defer_req\n  sunrpc/cache: use list_del_init for the list_head entries in cache_deferred_req\n  nfsd: return success for non-NFS4 nfs4_state_start\n  nfsd41: Refactor create_client()\n  nfsd41: modify nfsd4.1 backchannel to use new xprt class\n  nfsd41: Backchannel: Implement cb_recall over NFSv4.1\n  nfsd41: Backchannel: cb_sequence callback\n  nfsd41: Backchannel: Setup sequence information\n  nfsd41: Backchannel: Server backchannel RPC wait queue\n  nfsd41: Backchannel: Add sequence arguments to callback RPC arguments\n  nfsd41: Backchannel: callback infrastructure\n  nfsd4: use common rpc_cred for all callbacks\n  nfsd4: allow nfs4 state startup to fail\n  SUNRPC: Defer the auth_gss upcall when the RPC call is asynchronous\n  nfsd4: fix null dereference creating nfsv4 callback client\n  nfsd4: fix whitespace in NFSPROC4_CLNT_CB_NULL definition\n  nfsd41: sunrpc: add new xprt class for nfsv4.1 backchannel\n  sunrpc/cache: simplify cache_fresh_locked and cache_fresh_unlocked.\n  ...\n"
    },
    {
      "commit": "7b021967c5e1463936042c8da72b550d3cabe9ac",
      "tree": "efb5c26216851a93b3db3fba55858af04c8a15c5",
      "parents": [
        "6aed62853c72e29f2c97bbac7712cb398e8c9437"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:25 2009 -0700"
      },
      "message": "const: make lock_manager_operations const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6aed62853c72e29f2c97bbac7712cb398e8c9437",
      "tree": "4362cfa98b6b588f84fb2241115b7ef5b5dfce55",
      "parents": [
        "6e1d5dcc2bbbe71dbf010c747e15739bef6b7218"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:25 2009 -0700"
      },
      "message": "const: make file_lock_operations const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4516fc0454e7ffe2f369e80045b23c2b32155004",
      "tree": "b1068b9fbad76b5381b103fc57617373ec2ae37d",
      "parents": [
        "e9dc122166b8d863d3057a66ada04838e5548e52"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Fri Aug 14 12:57:54 2009 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Aug 21 11:27:42 2009 -0400"
      },
      "message": "sunrpc: add routine for comparing addresses\n\nlockd needs these sort of routines, as does the NFSv4 callback code.\n\nMove lockd\u0027s routines into common code and rename them so that they can\nbe used by others.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nAcked-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "c15128c5e428af1e8ada1476484a74c970665edd",
      "tree": "67117b73ab0219c106e914b8a68f9c26aed83353",
      "parents": [
        "b97a56747ea3f6c1a27dd0719bf1424959f1ebae"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Sun Aug 09 15:09:39 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Aug 09 15:09:39 2009 -0400"
      },
      "message": "lockd: Replace nsm_display_address() with rpc_ntop()\n\nClean up.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b97a56747ea3f6c1a27dd0719bf1424959f1ebae",
      "tree": "39d36fa3b82e37730fe8402f6a16cb582d7f6232",
      "parents": [
        "ec6ee61250acfccbc5578dd4014735fb2cbe53b5"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Sun Aug 09 15:09:38 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Aug 09 15:09:38 2009 -0400"
      },
      "message": "lockd: Replace nlm_clear_port()\n\nClean up: Use shared rpc_set_port() function instead of nlm_clear_port().\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "405f55712dfe464b3240d7816cc4fe4174831be2",
      "tree": "96c425ea7fa8b31058b8f83a433c5e5265c8ebc7",
      "parents": [
        "f9fabcb58a6d26d6efde842d1703ac7cfa9427b6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Jul 11 22:08:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 12 12:22:34 2009 -0700"
      },
      "message": "headers: smp_lock.h redux\n\n* Remove smp_lock.h from files which don\u0027t need it (including some headers!)\n* Add smp_lock.h to files which do need it\n* Make smp_lock.h include conditional in hardirq.h\n  It\u0027s needed only for one kernel_locked() usage which is under CONFIG_PREEMPT\n\n  This will make hardirq.h inclusion cheaper for every PREEMPT\u003dn config\n  (which includes allmodconfig/allyesconfig, BTW)\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7e0338c0de18c50f09aea1fbef45110cf7d64a3c",
      "tree": "30a935c1f6eee7125a9fbb802a33292b1f7268fa",
      "parents": [
        "df36b439c5fedefe013d4449cb6a50d15e2f4d70",
        "47fcb03fefee2501e79176932a4184fc24d6f8ec"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 22 12:55:50 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 22 12:55:50 2009 -0700"
      },
      "message": "Merge branch \u0027for-2.6.31\u0027 of git://fieldses.org/git/linux-nfsd\n\n* \u0027for-2.6.31\u0027 of git://fieldses.org/git/linux-nfsd: (60 commits)\n  SUNRPC: Fix the TCP server\u0027s send buffer accounting\n  nfsd41: Backchannel: minorversion support for the back channel\n  nfsd41: Backchannel: cleanup nfs4.0 callback encode routines\n  nfsd41: Remove ip address collision detection case\n  nfsd: optimise the starting of zero threads when none are running.\n  nfsd: don\u0027t take nfsd_mutex twice when setting number of threads.\n  nfsd41: sanity check client drc maxreqs\n  nfsd41: move channel attributes from nfsd4_session to a nfsd4_channel_attr struct\n  NFS: kill off complicated macro \u0027PROC\u0027\n  sunrpc: potential memory leak in function rdma_read_xdr\n  nfsd: minor nfsd_vfs_write cleanup\n  nfsd: Pull write-gathering code out of nfsd_vfs_write\n  nfsd: track last inode only in use_wgather case\n  sunrpc: align cache_clean work\u0027s timer\n  nfsd: Use write gathering only with NFSv2\n  NFSv4: kill off complicated macro \u0027PROC\u0027\n  NFSv4: do exact check about attribute specified\n  knfsd: remove unreported filehandle stats counters\n  knfsd: fix reply cache memory corruption\n  knfsd: reply cache cleanups\n  ...\n"
    },
    {
      "commit": "0e5c2632e1c9182f0dadc31bec68d6f42e7905ea",
      "tree": "4697987f92185489d9eb00c1a35c07f11ad5b9a7",
      "parents": [
        "6c9dc4255108bab4ef5c177d369b99c3c23492a7"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jun 17 18:02:11 2009 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 17 18:02:11 2009 -0700"
      },
      "message": "lockd: Don\u0027t bother with RPC ping for NSM upcalls\n\nCut NSM upcall RPC traffic in half -- don\u0027t do a NULL call first.\nThe cases where a ping would be helpful are rare.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6c9dc4255108bab4ef5c177d369b99c3c23492a7",
      "tree": "1369d9d804e276c32ab157e64646888b64ca0640",
      "parents": [
        "18fc31641925867c871bc75270ce642c039188d3"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jun 17 18:02:10 2009 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 17 18:02:10 2009 -0700"
      },
      "message": "lockd: Update NSM state from SM_MON replies\n\nWhen rpc.statd starts up in user space at boot time, it attempts to\nwrite the latest NSM local state number into\n/proc/sys/fs/nfs/nsm_local_state.\n\nIf lockd.ko isn\u0027t loaded yet (as is the case in most configurations),\nthat file doesn\u0027t exist, thus the kernel\u0027s NSM state remains set to\nits initial value of zero during lockd operation.\n\nThis is a problem because rpc.statd and lockd use the NSM state number\nto prevent repeated lock recovery on rebooted hosts.  If lockd sends\na zero NSM state, but then a delayed SM_NOTIFY with a real NSM state\nnumber is received, there is no way for lockd or rpc.statd to\ndistinguish that stale SM_NOTIFY from an actual reboot.  Thus lock\nrecovery could be performed after the rebooted host has already\nstarted reclaiming locks, and those locks will be lost.\n\nWe could change /etc/init.d/nfslock so it always modprobes lockd.ko\nbefore starting rpc.statd.  However, if lockd.ko is ever unloaded\nand reloaded, we are back at square one, since the NSM state is not\npreserved across an unload/reload cycle.  This may happen frequently\non clients that use automounter.  A period of NFS inactivity causes\nlockd.ko to be unloaded, and the kernel loses its NSM state setting.\n\nInstead, let\u0027s use the fact that rpc.statd plants the local system\u0027s\nNSM state in every SM_MON (and SM_UNMON) reply.  lockd performs a\nsynchronous SM_MON upcall to the local rpc.statd _before_ sending its\nfirst NLM request to a new remote.  This would permit rpc.statd to\nprovide the current NSM state to lockd, even after lockd.ko had been\nunloaded and reloaded.\n\nNote that NLMPROC_LOCK arguments are constructed before the\nnsm_monitor() call, so we have to rearrange argument construction very\nslightly to make this all work out.\n\nAnd, the kernel appears to treat NSM state as a u32 (see struct\nnlm_args and nsm_res).  Make nsm_local_state a u32 as well, to ensure\nwe don\u0027t get bogus comparison results.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5cd973c44a92f4abf8f7084c804089b3eaa7b4bf",
      "tree": "7bea559ab6c0a2ab4885a6064147b0cae20b8293",
      "parents": [
        "3f09df70e3a33590ae5a97b8a15486d3711c7065"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 17 13:23:01 2009 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 17 13:23:01 2009 -0700"
      },
      "message": "NFSv4/NLM: Push file locking BKL dependencies down into the NLM layer\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7eef4091a653c243a87e5375c54504cc03bec4d8",
      "tree": "f65b77f830b2c8f7d014512badfef5df0d591ee9",
      "parents": [
        "0a93a47f042c459f0f46942c3a920e3c81878031",
        "07a2039b8eb0af4ff464efd3dfd95de5c02648c6"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Jun 15 18:08:07 2009 -0700"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Jun 15 18:08:07 2009 -0700"
      },
      "message": "Merge commit \u0027v2.6.30\u0027 into for-2.6.31\n"
    },
    {
      "commit": "89996df4b5b1a09c279f50b3fd03aa9df735f5cb",
      "tree": "e693b22cf595b4d1a5a33e07efc674ee4542ddc3",
      "parents": [
        "b2c0cea6b1cb210e962f07047df602875564069e"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed May 06 16:32:54 2009 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed May 06 17:19:36 2009 -0400"
      },
      "message": "lockd: fix list corruption on lockd restart\n\nIf lockd is signalled soon enough after restart then locks_start_grace()\nwill try to re-add an entry to a list and trigger a lock corruption\nwarning.\n\nThanks to Wang Chen for the problem report and diagnosis.\n\nWARNING: at lib/list_debug.c:26 __list_add+0x27/0x5c()\n...\nlist_add corruption. next-\u003eprev should be prev (ef8fe958), but was ef8ff128.  (next\u003def8ff128).\n...\nPid: 23062, comm: lockd Tainted: G        W  2.6.30-rc2 #3\nCall Trace:\n[\u003cc042d5b5\u003e] warn_slowpath+0x71/0xa0\n[\u003cc0422a96\u003e] ? update_curr+0x11d/0x125\n[\u003cc044b12d\u003e] ? trace_hardirqs_on_caller+0x18/0x150\n[\u003cc044b270\u003e] ? trace_hardirqs_on+0xb/0xd\n[\u003cc051c61a\u003e] ? _raw_spin_lock+0x53/0xfa\n[\u003cc051c89f\u003e] __list_add+0x27/0x5c\n[\u003cef8f6daa\u003e] locks_start_grace+0x22/0x30 [lockd]\n[\u003cef8f34da\u003e] set_grace_period+0x39/0x53 [lockd]\n[\u003cc06b8921\u003e] ? lock_kernel+0x1c/0x28\n[\u003cef8f3558\u003e] lockd+0x64/0x164 [lockd]\n[\u003cc044b12d\u003e] ? trace_hardirqs_on_caller+0x18/0x150\n[\u003cc04227b0\u003e] ? complete+0x34/0x3e\n[\u003cef8f34f4\u003e] ? lockd+0x0/0x164 [lockd]\n[\u003cef8f34f4\u003e] ? lockd+0x0/0x164 [lockd]\n[\u003cc043dd42\u003e] kthread+0x45/0x6b\n[\u003cc043dcfd\u003e] ? kthread+0x0/0x6b\n[\u003cc0403c23\u003e] kernel_thread_helper+0x7/0x10\n\nReported-by: Wang Chen \u003cwangchen@cn.fujitsu.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "a9e61e25f9d2e7e43bf17625f5cb56c9e0a89b17",
      "tree": "1c000afc1e2eadb00570ae34666af508afa021fe",
      "parents": [
        "80492e7d49bee0a280a84a39075a7857b92836b2"
      ],
      "author": {
        "name": "Felix Blyakher",
        "email": "felixb@sgi.com",
        "time": "Tue Mar 31 15:12:56 2009 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 24 16:36:03 2009 -0400"
      },
      "message": "lockd: call locks_release_private to cleanup per-filesystem state\n\nFor every lock request lockd creates a new file_lock object\nin nlmsvc_setgrantargs() by copying the passed in file_lock with\nlocks_copy_lock(). A filesystem can attach it\u0027s own lock_operations\nvector to the file_lock. It has to be cleaned up at the end of the\nfile_lock\u0027s life. However, lockd doesn\u0027t do it today, yet it\nasserts in nlmclnt_release_lockargs() that the per-filesystem\nstate is clean.\nThis patch fixes it by exporting locks_release_private() and adding\nit to nlmsvc_freegrantargs(), to be symmetrical to creating a\nfile_lock in nlmsvc_setgrantargs().\n\nSigned-off-by: Felix Blyakher \u003cfelixb@sgi.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "a63856252d2112e7c452696037a86ceb12f47f80",
      "tree": "b1ad03fe441349069f80e58de425b3f72af9e5b7",
      "parents": [
        "b24241a09208874d5d770bee30791daae41ad762",
        "04826f43d4f0a4d56423eb8abb9f2ec9987df5b5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 13:25:56 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 13:25:56 2009 -0700"
      },
      "message": "Merge branch \u0027for-2.6.30\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.30\u0027 of git://linux-nfs.org/~bfields/linux: (81 commits)\n  nfsd41: define nfsd4_set_statp as noop for !CONFIG_NFSD_V4\n  nfsd41: define NFSD_DRC_SIZE_SHIFT in set_max_drc\n  nfsd41: Documentation/filesystems/nfs41-server.txt\n  nfsd41: CREATE_EXCLUSIVE4_1\n  nfsd41: SUPPATTR_EXCLCREAT attribute\n  nfsd41: support for 3-word long attribute bitmask\n  nfsd: dynamically skip encoded fattr bitmap in _nfsd4_verify\n  nfsd41: pass writable attrs mask to nfsd4_decode_fattr\n  nfsd41: provide support for minor version 1 at rpc level\n  nfsd41: control nfsv4.1 svc via /proc/fs/nfsd/versions\n  nfsd41: add OPEN4_SHARE_ACCESS_WANT nfs4_stateid bmap\n  nfsd41: access_valid\n  nfsd41: clientid handling\n  nfsd41: check encode size for sessions maxresponse cached\n  nfsd41: stateid handling\n  nfsd: pass nfsd4_compound_state* to nfs4_preprocess_{state,seq}id_op\n  nfsd41: destroy_session operation\n  nfsd41: non-page DRC for solo sequence responses\n  nfsd41: Add a create session replay cache\n  nfsd41: create_session operation\n  ...\n"
    },
    {
      "commit": "ad5b365c1266b0c9e8e254a3c1cc4ef66bf33cba",
      "tree": "b7f9bf04da9f08057db4f5e1a88a4b38511e200e",
      "parents": [
        "3c8c45dfab78a1919f6f8a3ea46998c487eb7e12"
      ],
      "author": {
        "name": "Mans Rullgard",
        "email": "mans@mansr.com",
        "time": "Sat Mar 28 19:55:20 2009 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Apr 01 13:24:14 2009 -0400"
      },
      "message": "NSM: Fix unaligned accesses in nsm_init_private()\n\nThis fixes unaligned accesses in nsm_init_private() when\ncreating nlm_reboot keys.\n\nSigned-off-by: Mans Rullgard \u003cmans@mansr.com\u003e\nReviewed-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "eb16e907781a9da7f272a3e8284c26bc4e4aeb9d",
      "tree": "6651fc149d5afbcc44418fe235a2480060ce3c17",
      "parents": [
        "9355982830ad67dca35e0f3d43319f3d438f82b4"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Mar 18 20:47:59 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 28 16:01:16 2009 -0400"
      },
      "message": "lockd: Start PF_INET6 listener only if IPv6 support is available\n\nApparently a lot of people need to disable IPv6 completely on their\ndistributor-built systems, which have CONFIG_IPV6_MODULE enabled at\nbuild time.\n\nThey do this by blacklisting the ipv6.ko module.  This causes the\ncreation of the lockd service listener to fail if CONFIG_IPV6_MODULE\nis set, but the module cannot be loaded.\n\nNow that the kernel\u0027s PF_INET6 RPC listeners are completely separate\nfrom PF_INET listeners, we can always start PF_INET.  Then lockd can\ntry to start PF_INET6, but it isn\u0027t required to be available.\n\nNote this has the added benefit that NLM callbacks from AF_INET6\nservers will never come from AF_INET remotes.  We no longer have to\nworry about matching mapped IPv4 addresses to AF_INET when comparing\naddresses.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "26298caacac3e4754194b13aef377706d5de6cf6",
      "tree": "ca5bcec9c81af2ad5f7d8b4dc91fd3a22aee71f4",
      "parents": [
        "49a9072f29a1039f142ec98b44a72d7173651c02"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Mar 18 20:46:36 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 28 15:55:06 2009 -0400"
      },
      "message": "NFS: Revert creation of IPv6 listeners for lockd and NFSv4 callbacks\n\nWe\u0027re about to convert over to using separate PF_INET and PF_INET6\nlisteners, instead of a single PF_INET6 listener that also receives\nAF_INET requests and maps them to AF_INET6.\n\nClear the way by removing the logic in lockd and the NFSv4 callback\nserver that creates an AF_INET6 service listener.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "49a9072f29a1039f142ec98b44a72d7173651c02",
      "tree": "d2a87541cb699fb6b1fbdef492f3dc6c305aa541",
      "parents": [
        "9652ada3fb5914a67d8422114e8a76388330fa79"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Mar 18 20:46:29 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 28 15:54:48 2009 -0400"
      },
      "message": "SUNRPC: Remove @family argument from svc_create() and svc_create_pooled()\n\nSince an RPC service listener\u0027s protocol family is specified now via\nsvc_create_xprt(), it no longer needs to be passed to svc_create() or\nsvc_create_pooled().  Remove that argument from the synopsis of those\nfunctions, and remove the sv_family field from the svc_serv struct.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9652ada3fb5914a67d8422114e8a76388330fa79",
      "tree": "b37d77bf972dda04b46794c4e50ec6f6d044dc79",
      "parents": [
        "baf01caf09e87579c2d157e5ee29975db8551522"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Mar 18 20:46:21 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 28 15:54:36 2009 -0400"
      },
      "message": "SUNRPC: Change svc_create_xprt() to take a @family argument\n\nThe sv_family field is going away.  Pass a protocol family argument to\nsvc_create_xprt() instead of extracting the family from the passed-in\nsvc_serv struct.\n\nAgain, as this is a listener socket and not an address, we make this\nnew argument an \"int\" protocol family, instead of an \"sa_family_t.\"\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e33d1ea60c3a17b8b5c2910b1eef4c1faf0ac450",
      "tree": "bbf0b7e86ac3860df9c1906711ad379bcc5681ed",
      "parents": [
        "e37da04ed145d45c2a698d7cb373a7e1191fbe86"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Feb 09 12:30:43 2009 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Mar 18 17:30:50 2009 -0400"
      },
      "message": "lockd: clean up blocking lock cases of nlsmvc_lock()\n\nNo change in behavior, just rearranging the switch so that we break out\nof the switch if and only if we\u0027re in the wait case.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "57df675c60c5cf0748ddba9c7f85afde1530d74d",
      "tree": "9ee0df8d0b0b2b374bcaf66ead94886f39ac7220",
      "parents": [
        "78851e1aa4c3b796d5f0bb11b445016726302b44"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Mar 10 20:33:20 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 10 20:33:20 2009 -0400"
      },
      "message": "NLM: Fix GRANT callback address comparison when IPv6 is enabled\n\nThe NFS mount command may pass an AF_INET server address to lockd.  If\nlockd happens to be using a PF_INET6 listener, the nlm_cmp_addr() in\nnlmclnt_grant() will fail to match requests from that host because they\nwill all have a mapped IPv4 AF_INET6 address.\n\nAdopt the same solution used in nfs_sockaddr_match_ipaddr() for NFSv4\ncallbacks: if either address is AF_INET, map it to an AF_INET6 address\nbefore doing the comparison.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9d9b87c1218be78ddecbc85ec3bb91c79c1d56ab",
      "tree": "e33e637f4fa8b4dd1946c6a29e290078d34a388c",
      "parents": [
        "eda58a85ec3fc05855a26654d97a2b53f0e715b9"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Feb 04 17:35:38 2009 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Feb 09 13:19:46 2009 -0500"
      },
      "message": "lockd: fix regression in lockd\u0027s handling of blocked locks\n\nIf a client requests a blocking lock, is denied, then requests it again,\nthen here in nlmsvc_lock() we will call vfs_lock_file() without FL_SLEEP\nset, because we\u0027ve already queued a block and don\u0027t need the locks code\nto do it again.\n\nBut that means vfs_lock_file() will return -EAGAIN instead of\nFILE_LOCK_DENIED.  So we still need to translate that -EAGAIN return\ninto a nlm_lck_blocked error in this case, and put ourselves back on\nlockd\u0027s block list.\n\nThe bug was introduced by bde74e4bc64415b1 \"locks: add special return\nvalue for asynchronous locks\".\n\nThanks to Frank van Maarseveen for the report; his original test\ncase was essentially\n\n\tfor i in `seq 30`; do flock /nfsmount/foo sleep 10 \u0026 done\n\nTested-by: Frank van Maarseveen \u003cfrankvm@frankvm.com\u003e\nReported-by: Frank van Maarseveen \u003cfrankvm@frankvm.com\u003e\nCc: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "0dba7c2a9ed3d4a1e58f5d94fffa9f44dbe012e6",
      "tree": "758e6f346d7aa5d4b987f3fa337de1864b61682f",
      "parents": [
        "d3fe5ea7cf815c037c90b1f1464ffc1ab5e8601b"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Dec 31 16:06:11 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Jan 07 15:40:44 2009 -0500"
      },
      "message": "NLM: Clean up flow of control in make_socks() function\n\nClean up: Use Bruce\u0027s preferred control flow style in make_socks().\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "d3fe5ea7cf815c037c90b1f1464ffc1ab5e8601b",
      "tree": "a2d8724d2c730dc1837aafc623f2139220884871",
      "parents": [
        "55ef1274dddd4de387c54d110e354ffbb6cdc706"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Dec 31 16:06:04 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Jan 07 15:40:44 2009 -0500"
      },
      "message": "NLM: Refactor make_socks() function\n\nClean up: extract common logic in NLM\u0027s make_socks() function\ninto a helper.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "b064ec038a6180b13e5f89b6a30b42cb5ce8febc",
      "tree": "942e1e6ff64868a4cd72df5d2bb8724963cc2de3",
      "parents": [
        "57ef692588bc225853ca3267ca5b7cea2b07e058"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 11 17:56:59 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:56 2009 -0500"
      },
      "message": "lockd: Enable NLM use of AF_INET6\n\nIf the kernel is configured to support IPv6 and the RPC server can register\nservices via rpcbindv4, we are all set to enable IPv6 support for lockd.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nCc: Aime Le Rouzic \u003caime.le-rouzic@bull.net\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "49b5699b3fc22b363534c509c1b7dba06bc677bf",
      "tree": "e5c1e0d74918a902f1830dddf170d8c07155204e",
      "parents": [
        "b7ba597fb964dfa44284904b3b3d74d44b8e1c42"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 11 17:56:37 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:56 2009 -0500"
      },
      "message": "NSM: Move nsm_create()\n\nClean up: one last thing... relocate nsm_create() to eliminate the forward\ndeclaration and group it near the only function that actually uses it.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "b7ba597fb964dfa44284904b3b3d74d44b8e1c42",
      "tree": "a03c62f761cc823c29b9bafd083490b2a3627986",
      "parents": [
        "8529bc51d30b8f001734b29b21a51b579c260f5b"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 11 17:56:29 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:55 2009 -0500"
      },
      "message": "NSM: Move nsm_use_hostnames to mon.c\n\nClean up.\n\nTreat the nsm_use_hostnames global variable like nsm_local_state.\nNote that the default value of nsm_use_hostnames is still zero.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "8529bc51d30b8f001734b29b21a51b579c260f5b",
      "tree": "af1fe6d5cb2d67259d1c977731f523f2337a59eb",
      "parents": [
        "e6765b83977f07983c7a10e6bbb19d6c7bbfc3a4"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 11 17:56:22 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:55 2009 -0500"
      },
      "message": "NSM: Move nsm_addr() to fs/lockd/mon.c\n\nClean up: nsm_addr_in() is no longer used, and nsm_addr() is used only in\nfs/lockd/mon.c, so move it there.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "e6765b83977f07983c7a10e6bbb19d6c7bbfc3a4",
      "tree": "87ea535ec91aaa56263ffbb5a34c8e9541e77136",
      "parents": [
        "94da7663db26530a8377f7219f8be8bd4d4822c2"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 11 17:56:14 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:55 2009 -0500"
      },
      "message": "NSM: Remove include/linux/lockd/sm_inter.h\n\nClean up: The include/linux/lockd/sm_inter.h header is nearly empty\nnow.  Remove it.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "94da7663db26530a8377f7219f8be8bd4d4822c2",
      "tree": "a19b8cac6ce9010d58776cae18b96091a2137efb",
      "parents": [
        "77a3ef33e2de6fc8aabd7cb1700bfef81757c28a"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 11 17:56:07 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:55 2009 -0500"
      },
      "message": "NSM: Replace IP address as our nlm_reboot lookup key\n\nNLM provides file locking services for NFS files.  Part of this service\nincludes a second protocol, known as NSM, which is a reboot\nnotification service.  NLM uses this service to determine when to\nreclaim locks or enter a grace period after a client or server reboots.\n\nThe NLM service (implemented by lockd in the Linux kernel) contacts\nthe local NSM service (implemented by rpc.statd in Linux user space)\nvia NSM protocol upcalls to register a callback when a particular\nremote peer reboots.\n\nTo match the callback to the correct remote peer, the NLM service\nconstructs a cookie that it passes in the request.  The NSM service\npasses that cookie back to the NLM service when it is notified that\nthe given remote peer has indeed rebooted.\n\nCurrently on Linux, the cookie is the raw 32-bit IPv4 address of the\nremote peer.  To support IPv6 addresses, which are larger, we could\nuse all 16 bytes of the cookie to represent a full IPv6 address,\nalthough we still can\u0027t represent an IPv6 address with a scope ID in\njust 16 bytes.\n\nInstead, to avoid the need for future changes to support additional\naddress types, we\u0027ll use a manufactured value for the cookie, and use\nthat to find the corresponding nsm_handle struct in the kernel during\nthe NLMPROC_SM_NOTIFY callback.\n\nThis should provide complete support in the kernel\u0027s NSM\nimplementation for IPv6 hosts, while remaining backwards compatible\nwith older rpc.statd implementations.\n\nNote we also deal with another case where nsm_use_hostnames can change\nwhile there are outstanding notifications, possibly resulting in the\nloss of reboot notifications.  After this patch, the priv cookie is\nalways used to lookup rebooted hosts in the kernel.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "77a3ef33e2de6fc8aabd7cb1700bfef81757c28a",
      "tree": "bb403f4517d49c7756921a70ba27ddce3963a05d",
      "parents": [
        "b39b897c259fc1fd1998505f2b1d4ec1f115bce1"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 11 17:55:59 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:55 2009 -0500"
      },
      "message": "NSM: More clean up of nsm_get_handle()\n\nClean up: refactor nsm_get_handle() so it is organized the same way that\nnsm_reboot_lookup() is.\n\nThere is an additional micro-optimization here.  This change moves the\n\"hostname \u0026 nsm_use_hostnames\" test out of the list_for_each_entry()\nclause in nsm_get_handle(), since it is loop-invariant.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "b39b897c259fc1fd1998505f2b1d4ec1f115bce1",
      "tree": "1b331bb4d1d71401d2dec0c7f23c86795c09267a",
      "parents": [
        "92fd91b998a5216a6d6606704e71d541a180216c"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 11 17:55:52 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:55 2009 -0500"
      },
      "message": "NSM: Refactor nsm_handle creation into a helper function\n\nClean up.  Refactor the creation of nsm_handles into a helper.  Fields\nare initialized in increasing address order to make efficient use of\nCPU caches.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "92fd91b998a5216a6d6606704e71d541a180216c",
      "tree": "e3c181450d40e3d448a48c560aac858ea0e7aee5",
      "parents": [
        "8c7378fd2a5f22016542931b887a2ae98d146eaf"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Dec 05 19:04:01 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:54 2009 -0500"
      },
      "message": "NLM: Remove \"create\" argument from nsm_find()\n\nClean up: nsm_find() now has only one caller, and that caller\nunconditionally sets the @create argument. Thus the @create\nargument is no longer needed.\n\nSince nsm_find() now has a more specific purpose, pick a more\nappropriate name for it.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "8c7378fd2a5f22016542931b887a2ae98d146eaf",
      "tree": "e274fe98455ee385b8ba88917e7465c9332b8184",
      "parents": [
        "3420a8c4359a189f7d854ed7075d151257415447"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Dec 05 19:03:54 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:54 2009 -0500"
      },
      "message": "NLM: Call nsm_reboot_lookup() instead of nsm_find()\n\nInvoke the newly introduced nsm_reboot_lookup() function in\nnlm_host_rebooted() instead of nsm_find().\n\nThis introduces just one behavioral change: debugging messages\nproduced during reboot notification will now appear when the\nNLMDBG_MONITOR flag is set, but not when the NLMDBG_HOSTCACHE flag\nis set.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "3420a8c4359a189f7d854ed7075d151257415447",
      "tree": "dbcfbcdd9383bc4a9bb832f6b4a8876461495dc8",
      "parents": [
        "576df4634e37e46b441fefb91915184edb13bb94"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Dec 05 19:03:46 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:54 2009 -0500"
      },
      "message": "NSM: Add nsm_lookup() function\n\nIntroduce a new API to fs/lockd/mon.c that allows nlm_host_rebooted()\nto lookup up nsm_handles via the contents of an nlm_reboot struct.\n\nThe new function is equivalent to calling nsm_find() with @create set\nto zero, but it takes a struct nlm_reboot instead of separate\narguments.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "576df4634e37e46b441fefb91915184edb13bb94",
      "tree": "85dc6dc6dcf7eec104b7c78885a9e38123bb220f",
      "parents": [
        "7fefc9cb9d5f129c238d93166f705c96ca2e7e51"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Dec 05 19:03:39 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:54 2009 -0500"
      },
      "message": "NLM: Decode \"priv\" argument of NLMPROC_SM_NOTIFY as an opaque\n\nThe NLM XDR decoders for the NLMPROC_SM_NOTIFY procedure should treat\ntheir \"priv\" argument truly as an opaque, as defined by the protocol,\nand let the upper layers figure out what is in it.\n\nThis will make it easier to modify the contents and interpretation of\nthe \"priv\" argument, and keep knowledge about what\u0027s in \"priv\" local\nto fs/lockd/mon.c.\n\nFor now, the NLM and NSM implementations should behave exactly as they\ndid before.\n\nThe formation of the address of the rebooted host in\nnlm_host_rebooted() may look a little strange, but it is the inverse\nof how nsm_init_private() forms the private cookie.  Plus, it\u0027s\ngoing away soon anyway.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "7fefc9cb9d5f129c238d93166f705c96ca2e7e51",
      "tree": "3309560f4539ea8af3943524475cd9405f3c9c49",
      "parents": [
        "cab2d3c99165abbba2943f1b269003b17fd3b1cb"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Dec 05 19:03:31 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:54 2009 -0500"
      },
      "message": "NLM: Change nlm_host_rebooted() to take a single nlm_reboot argument\n\nPass the nlm_reboot data structure directly from the NLMPROC_SM_NOTIFY\nXDR decoders to nlm_host_rebooted().  This eliminates some packing and\nunpacking of the NLMPROC_SM_NOTIFY results, and prepares for passing\nthese results, including the \"priv\" cookie, directly to a lookup\nroutine in fs/lockd/mon.c.\n\nThis patch changes code organization but should not cause any\nbehavioral change.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "cab2d3c99165abbba2943f1b269003b17fd3b1cb",
      "tree": "8e5fe08d1caf86564e56a1936f7e32af7eebd0e0",
      "parents": [
        "7e44d3bea21fbb9494930d1cd35ca92a9a4a3279"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Dec 05 19:03:24 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:54 2009 -0500"
      },
      "message": "NSM: Encode the new \"priv\" cookie for NSMPROC_MON requests\n\nPass the new \"priv\" cookie to NSMPROC_MON\u0027s XDR encoder, instead of\ncreating the \"priv\" argument in the encoder at call time.\n\nThis patch should not cause a behavioral change: the contents of the\ncookie remain the same for the time being.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "7e44d3bea21fbb9494930d1cd35ca92a9a4a3279",
      "tree": "377fe5801ab1108aee2bc7f72d1b32618aa35e7f",
      "parents": [
        "05f3a9af58180d24a9decedd71d4587935782d70"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Dec 05 19:03:16 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:53 2009 -0500"
      },
      "message": "NSM: Generate NSMPROC_MON\u0027s \"priv\" argument when nsm_handle is created\n\nIntroduce a new data type, used by both the in-kernel NLM and NSM\nimplementations, that is used to manage the opaque \"priv\" argument\nfor the NSMPROC_MON and NLMPROC_SM_NOTIFY calls.\n\nConstruct the \"priv\" cookie when the nsm_handle is created.\n\nThe nsm_init_private() function may look a little strange, but it is\nroughly equivalent to how the XDR encoder formed the \"priv\" argument.\nIt\u0027s going to go away soon.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "05f3a9af58180d24a9decedd71d4587935782d70",
      "tree": "c5c53a1aa8ba8fdf47f2613970c85ec0a4b0d63d",
      "parents": [
        "bc1cc6c4e476b60df48227165990c87a22db6bb7"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Dec 05 19:03:09 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:53 2009 -0500"
      },
      "message": "NSM: Remove !nsm check from nsm_release()\n\nThe nsm_release() function should never be called with a NULL handle\npoint.  If it is, that\u0027s a bug.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "bc1cc6c4e476b60df48227165990c87a22db6bb7",
      "tree": "19919f4787df34201bd575ebf741a53e9879e084",
      "parents": [
        "5cf1c4b19db99d21d44c2ab457cfd44eb86b4439"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Dec 05 19:03:01 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:53 2009 -0500"
      },
      "message": "NSM: Remove NULL pointer check from nsm_find()\n\nThe nsm_find() function should never be called with a NULL IP address\npointer.  If it is, that\u0027s a bug.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "5cf1c4b19db99d21d44c2ab457cfd44eb86b4439",
      "tree": "83cc059073da8610351b64731f12e0505d11dc0d",
      "parents": [
        "67c6d107a689243979a2b5f15244b5261634a924"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Dec 05 19:02:53 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:53 2009 -0500"
      },
      "message": "NSM: Add dprintk() calls in nsm_find and nsm_release\n\nIntroduce some dprintk() calls in fs/lockd/mon.c that are enabled by\nthe NLMDBG_MONITOR flag.  These report when we find, create, and\nrelease nsm_handles.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "67c6d107a689243979a2b5f15244b5261634a924",
      "tree": "36e2093df96a449c284640c9cc329fc251e98bd0",
      "parents": [
        "03eb1dcbb799304b58730f4dba65812f49fb305e"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Dec 05 19:02:45 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:53 2009 -0500"
      },
      "message": "NSM: Move nsm_find() to fs/lockd/mon.c\n\nThe nsm_find() function sets up fresh nsm_handle entries.  This is\nwhere we will store the \"priv\" cookie used to lookup nsm_handles during\nreboot recovery.  The cookie will be constructed when nsm_find()\ncreates a new nsm_handle.\n\nAs much as possible, I would like to keep everything that handles a\n\"priv\" cookie in fs/lockd/mon.c so that all the smarts are in one\nsource file.  That organization should make it pretty simple to see how\nall this works.\n\nTo me, it makes more sense than the current arrangement to keep\nnsm_find() with nsm_monitor() and nsm_unmonitor().\n\nSo, start reorganizing by moving nsm_find() into fs/lockd/mon.c.  The\nnsm_release() function comes along too, since it shares the nsm_lock\nglobal variable.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "03eb1dcbb799304b58730f4dba65812f49fb305e",
      "tree": "310306a570ae554fd420bdde1fdabe7f1157c255",
      "parents": [
        "36e8e668d3e6a61848a8921ddeb663b417299fa5"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Dec 05 19:02:15 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:53 2009 -0500"
      },
      "message": "NSM: move to xdr_stream-based XDR encoders and decoders\n\nIntroduce xdr_stream-based XDR encoder and decoder functions, which are\nmore careful about preventing RPC buffer overflows.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "36e8e668d3e6a61848a8921ddeb663b417299fa5",
      "tree": "c5ad964c566341f24ecf7d67f4b34173205e9143",
      "parents": [
        "9c1bfd037f7ff8badaecb47418f109148d88bf45"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Dec 05 19:02:07 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:52 2009 -0500"
      },
      "message": "NSM: Move NSM program and procedure numbers to fs/lockd/mon.c\n\nClean up: Move the RPC program and procedure numbers for NSM into the\none source file that needs them: fs/lockd/mon.c.\n\nAnd, as with NLM, NFS, and rpcbind calls, use NSMPROC_FOO instead of\nSM_FOO for NSM procedure numbers.\n\nFinally, make a couple of comments more precise: what is referred to\nhere as SM_NOTIFY is really the NLM (lockd) NLMPROC_SM_NOTIFY downcall,\nnot NSMPROC_NOTIFY.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "9c1bfd037f7ff8badaecb47418f109148d88bf45",
      "tree": "23435f76798f026e5cb1cdeb91077d854b359ac4",
      "parents": [
        "0c7aef4569f8680951b7dee01dddffb9d2f809ff"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Dec 05 19:01:59 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:52 2009 -0500"
      },
      "message": "NSM: Move NSM-related XDR data structures to lockd\u0027s xdr.h\n\nClean up: NSM\u0027s XDR data structures are used only in fs/lockd/mon.c,\nso move them there.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "0c7aef4569f8680951b7dee01dddffb9d2f809ff",
      "tree": "04a78e99cf53549dd8d32d6dbab5923f4f212f8d",
      "parents": [
        "356c3eb466fd1a12afd6448d90fba3922836e5f1"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 04 14:21:46 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:52 2009 -0500"
      },
      "message": "NSM: Check result of SM_UNMON upcall\n\nMake sure any error returned by rpc.statd during an SM_UNMON call is\nreported rather than ignored completely.  There isn\u0027t much to do with\nsuch an error, but we should log it in any case.\n\nSimilar to a recent change to nsm_monitor().\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "356c3eb466fd1a12afd6448d90fba3922836e5f1",
      "tree": "1b30ed40ea9ee8c0e548f71d7e36bafd293ad764",
      "parents": [
        "c8c23c423dec49cb439697d3dc714e1500ff1610"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 04 14:21:38 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:52 2009 -0500"
      },
      "message": "NLM: Move the public declaration of nsm_unmonitor() to lockd.h\n\nClean up.\n\nMake the nlm_host argument \"const,\" and move the public declaration to\nlockd.h.  Add a documenting comment.\n\nBruce observed that nsm_unmonitor()\u0027s only caller doesn\u0027t care about\nits return code, so make nsm_unmonitor() return void.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "c8c23c423dec49cb439697d3dc714e1500ff1610",
      "tree": "161035f51e31cce6d9f8dc104bad62a329496a77",
      "parents": [
        "1e49323c4ab044d05bbc68cf13cadcbd4372468c"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 04 14:21:31 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:52 2009 -0500"
      },
      "message": "NSM: Release nsmhandle in nlm_destroy_host\n\nThe nsm_handle\u0027s reference count is bumped in nlm_lookup_host().  It\nshould be decremented in nlm_destroy_host() to make it easier to see\nthe balance of these two operations.\n\nMove the nsm_release() call to fs/lockd/host.c.\n\nThe h_nsmhandle pointer is set in nlm_lookup_host(), and never cleared.\nThe nlm_destroy_host() function is never called for the same nlm_host\ntwice, so h_nsmhandle won\u0027t ever be NULL when nsm_unmonitor() is\ncalled.\n\nAll references to the nlm_host are gone before it is freed.  We can\nskip making h_nsmhandle NULL just before the nlm_host is deallocated.\n\nIt\u0027s also likely we can remove the h_nsmhandle NULL check in\nnlmsvc_is_client() as well, but we can do that later when rearchitect-\ning the nlm_host cache.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "1e49323c4ab044d05bbc68cf13cadcbd4372468c",
      "tree": "5d997638d8595d3698d6e3b2c81292fb09b42ad8",
      "parents": [
        "5d254b119823658cc318f88589c6c426b3d0a153"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 04 14:21:24 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:52 2009 -0500"
      },
      "message": "NLM: Move the public declaration of nsm_monitor() to lockd.h\n\nClean up.\n\nMake the nlm_host argument \"const,\" and move the public declaration to\nlockd.h with other NSM public function (nsm_release, eg) and global\nvariable declarations.\n\nAdd a documenting comment.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "5d254b119823658cc318f88589c6c426b3d0a153",
      "tree": "147bba86428c33650a686b70cbc32643c8547f86",
      "parents": [
        "5bc74bef7c9b652f0f2aa9c5a8d5ac86881aba79"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 04 14:21:15 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:51 2009 -0500"
      },
      "message": "NSM: Make sure to return an error if the SM_MON call result is not zero\n\nThe nsm_monitor() function reports an error and does not set sm_monitored\nif the SM_MON upcall reply has a non-zero result code, but nsm_monitor()\ndoes not return an error to its caller in this case.\n\nSince sm_monitored is not set, the upcall is retried when the next NLM\nrequest invokes nsm_monitor().  However, that may not come for a while.\nIn the meantime, at least one NLM request will potentially proceed\nwithout the peer being monitored properly.\n\nHave nsm_monitor() return an error if the result code is non-zero.\nThis will cause all NLM requests to fail immediately if the upcall\ncompleted successfully but rpc.statd returned an error.\n\nThis may be inconvenient in some cases (for example if rpc.statd\ncannot complete a proper DNS reverse lookup of the hostname), but will\nmake the reboot monitoring service more robust by forcing such issues\nto be corrected by an admin.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "5bc74bef7c9b652f0f2aa9c5a8d5ac86881aba79",
      "tree": "476bb3b039e814e46f2675933a88470781fec5f2",
      "parents": [
        "501c1ed3fb5c2648ba1709282c71617910917f66"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 04 14:21:08 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:51 2009 -0500"
      },
      "message": "NSM: Remove BUG_ON() in nsm_monitor()\n\nClean up: Remove the BUG_ON() invocation in nsm_monitor().  It\u0027s not\nlikely that nsm_monitor() is ever called with a NULL host pointer, and\nthe code will die anyway if host is NULL.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "501c1ed3fb5c2648ba1709282c71617910917f66",
      "tree": "600bb4b00d4d222fceea5a8187f513e8eb979e61",
      "parents": [
        "9fee49024ed19d849413df4ab6ec1a1a60aaae94"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 04 14:21:01 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:51 2009 -0500"
      },
      "message": "NLM: Remove redundant printk() in nlmclnt_lock()\n\nThe nsm_monitor() function already generates a printk(KERN_NOTICE) if\nthe SM_MON upcall fails, so the similar printk() in the nlmclnt_lock()\nfunction is redundant.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "9fee49024ed19d849413df4ab6ec1a1a60aaae94",
      "tree": "fc3830479d06275ac28ced9751bdcd3662ee3a34",
      "parents": [
        "29ed1407ed81086b778ebf12145b048ac3f7e10e"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 04 14:20:53 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:51 2009 -0500"
      },
      "message": "NSM: Use sm_name instead of h_name in nsm_monitor() and nsm_unmonitor()\n\nClean up: Use the sm_name field for reporting the hostname in nsm_monitor()\nand nsm_unmonitor(), just as the other functions in fs/lockd/mon.c do.\n\nThe h_name field is just a copy of the sm_name pointer.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "29ed1407ed81086b778ebf12145b048ac3f7e10e",
      "tree": "35523669465a1a37f969054e1c3d7530582701fc",
      "parents": [
        "f47534f7f0ac7727e05ec4274b764b181df2cf7f"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 04 14:20:46 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:51 2009 -0500"
      },
      "message": "NSM: Support IPv6 version of mon_name\n\nThe \"mon_name\" argument of the NSMPROC_MON and NSMPROC_UNMON upcalls\nis a string that contains the hostname or IP address of the remote peer\nto be notified when this host has rebooted.  The sm-notify command uses\nthis identifier to contact the peer when we reboot, so it must be\neither a well-qualified DNS hostname or a presentation format IP\naddress string.\n\nWhen the \"nsm_use_hostnames\" sysctl is set to zero, the kernel\u0027s NSM\nprovides a presentation format IP address in the \"mon_name\" argument.\nOtherwise, the \"caller_name\" argument from NLM requests is used,\nwhich is usually just the DNS hostname of the peer.\n\nTo support IPv6 addresses for the mon_name argument, we use the\nnsm_handle\u0027s address eye-catcher, which already contains an appropriate\npresentation format address string.  Using the eye-catcher string\nobviates the need to use a large buffer on the stack to form the\npresentation address string for the upcall.\n\nThis patch also addresses a subtle bug.\n\nAn NSMPROC_MON request and the subsequent NSMPROC_UNMON request for the\nsame peer are required to use the same value for the \"mon_name\"\nargument.  Otherwise, rpc.statd\u0027s NSMPROC_UNMON processing cannot\nlocate the database entry for that peer and remove it.\n\nIf the setting of nsm_use_hostnames is changed between the time the\nkernel sends an NSMPROC_MON request and the time it sends the\nNSMPROC_UNMON request for the same peer, the \"mon_name\" argument for\nthese two requests may not be the same.  This is because the value of\n\"mon_name\" is currently chosen at the moment the call is made based on\nthe setting of nsm_use_hostnames\n\nTo ensure both requests pass identical contents in the \"mon_name\"\nargument, we now select which string to use for the argument in the\nnsm_monitor() function.  A pointer to this string is saved in the\nnsm_handle so it can be used for a subsequent NSMPROC_UNMON upcall.\n\nNB: There are other potential problems, such as how nlm_host_rebooted()\nmight behave if nsm_use_hostnames were changed while hosts are still\nbeing monitored.  This patch does not attempt to address those\nproblems.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "5acf43155d1bcc412d892c73f64044f9a826cde6",
      "tree": "cc505431849be49a234f24bcc3290285a207e3fb",
      "parents": [
        "a4846750f090702e2fb848ac4fe5827bcef34060"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 04 14:20:31 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:50 2009 -0500"
      },
      "message": "NSM: convert printk(KERN_DEBUG) to a dprintk()\n\nClean up: make the printk(KERN_DEBUG) in nsm_mon_unmon() a dprintk,\nand add another dprintk to note if creating an RPC client for the\nupcall failed.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "a4846750f090702e2fb848ac4fe5827bcef34060",
      "tree": "657d2a61c0b6777c70eb40fcd42e44ee24a95264",
      "parents": [
        "afb03699dc0a920aed3322ad0e6895533941fb1e"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 04 14:20:23 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:50 2009 -0500"
      },
      "message": "NSM: Use C99 structure initializer to initialize nsm_args\n\nClean up: Use a C99 structure initializer instead of open-coding the\ninitialization of nsm_args.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "afb03699dc0a920aed3322ad0e6895533941fb1e",
      "tree": "8be804b0e4985a5dba70fccc94ce0939292d3f8d",
      "parents": [
        "bc995801a09d1fead0bec1356bfd836911c8eed7"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 04 14:20:16 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:49 2009 -0500"
      },
      "message": "NLM: Add helper to handle IPv4 addresses\n\nClean up: introduce a helper function to generate IPv4 addresses using\nthe same style as the IPv6 helper function we just 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": "bc995801a09d1fead0bec1356bfd836911c8eed7",
      "tree": "b7a2faad59bfa92db4057c23fcf7d31b70d20611",
      "parents": [
        "6999fb4016b2604c2f8a65586bba4a62a4b24ce7"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 04 14:20:08 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:49 2009 -0500"
      },
      "message": "NLM: Support IPv6 scope IDs in nlm_display_address()\n\nScope ID support is needed since the kernel\u0027s NSM implementation is\nabout to use these displayed addresses as a mon_name in some cases.\n\nWhen nsm_use_hostnames is zero, without scope ID support NSM will fail\nto handle peers that contact us via a link-local address.  Link-local\naddresses do not work without an interface ID, which is stored in the\nsockaddr\u0027s sin6_scope_id 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": "6999fb4016b2604c2f8a65586bba4a62a4b24ce7",
      "tree": "14639d66b17613d364898c4b59b01903f7db1bb6",
      "parents": [
        "1df40b609ad5a622904eb652109c287fe9c93ec5"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 04 14:20:01 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:49 2009 -0500"
      },
      "message": "NLM: Remove AF_UNSPEC arm in nlm_display_address()\n\nAF_UNSPEC support is no longer needed in nlm_display_address() now\nthat a presentation address is no longer generated for the h_srcaddr\nfield.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "1df40b609ad5a622904eb652109c287fe9c93ec5",
      "tree": "53c2ea9b443d7a94c564116c4af706500dbbf889",
      "parents": [
        "7538ce1eb656a1477bedd5b1c202226e7abf5e7b"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 04 14:19:53 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:49 2009 -0500"
      },
      "message": "NLM: Remove address eye-catcher buffers from nlm_host\n\nThe h_name field in struct nlm_host is a just copy of\nh_nsmhandle-\u003esm_name.  Likewise, the contents of the h_addrbuf field\nshould be identical to the sm_addrbuf field.\n\nThe h_srcaddrbuf field is used only in one place for debugging.  We can\nlive without this until we get %pI formatting for printk().\n\nCurrently these buffers are 48 bytes, but we need to support scope IDs\nin IPv6 presentation addresses, which means making the buffers even\nlarger.  Instead, let\u0027s find ways to eliminate them to save space.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "c72a476b4b7ecadb80185de31236edb303c1a5d0",
      "tree": "c57ac715970c4a3363b28122ce2d3b47fe179b7f",
      "parents": [
        "c9233eb7b0b11ef176d4bf68da2ce85464b6ec39"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Mon Oct 20 11:51:58 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jan 06 11:53:48 2009 -0500"
      },
      "message": "lockd: set svc_serv-\u003esv_maxconn to a more reasonable value (try #3)\n\nThe default method for calculating the number of connections allowed\nper RPC service arbitrarily limits single-threaded services to 80\nconnections. This is too low for services like lockd and artificially\nlimits the number of TCP clients that it can support.\n\nHave lockd set a default sv_maxconn value to 1024 (which is the typical\ndefault value for RLIMIT_NOFILE. Also add a module parameter to allow an\nadmin to set this to an arbitrary value.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "08cc36cbd1ee7d86422713bb21551eed1326b894",
      "tree": "52cc683387f903b34a7f6f798dcdbae385b58db8",
      "parents": [
        "3c92ec8ae91ecf59d88c798301833d7cf83f2179",
        "46f72f57d279688c4524df78edb5738db730eeef"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 30 16:51:43 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 30 16:51:43 2008 -0500"
      },
      "message": "Merge branch \u0027devel\u0027 into next\n"
    },
    {
      "commit": "0cb2659b818eca99235e17c04291cfa9985c14f7",
      "tree": "48fc176e1e1e8a6f771e664799c26df1d72e9f69",
      "parents": [
        "50a737f86dbf99daf3a8dcbdf778a3be36bb2a39"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 23 15:21:38 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:38 2008 -0500"
      },
      "message": "NLM: allow lockd requests from an unprivileged port\n\nIf the admin has specified the \"noresvport\" option for an NFS mount\npoint, the kernel\u0027s NFS client uses an unprivileged source port for\nthe main NFS transport.  The kernel\u0027s lockd client should use an\nunprivileged port in this case as well.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "df94f000c46c055cf439f5b92807cd827557ffbc",
      "tree": "c3b224d3ae7c07a5edc3fc804a6d91c8cbdd5cc1",
      "parents": [
        "2de59872a7842143f4507832e7c1f5123c47feb7"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Tue Dec 23 15:21:33 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:33 2008 -0500"
      },
      "message": "lockd: convert reclaimer thread to kthread interface\n\nMy understanding is that there is a push to turn the kernel_thread\ninterface into a non-exported symbol and move all kernel threads to use\nthe kthread API. This patch changes lockd to use kthread_run to spawn\nthe reclaimer thread.\n\nI\u0027ve made the assumption here that the extra module references taken\nwhen we spawn this thread are unnecessary and removed them. I\u0027ve also\nadded a KERN_ERR printk that pops if the thread can\u0027t be spawned to warn\nthe admin that the locks won\u0027t be reclaimed.\n\nIn the future, it would be nice to be able to notify userspace that\nlocks have been lost (probably by implementing SIGLOST), and adding some\ngood policies about how long we should reattempt to reclaim the locks.\n\nFinally, I removed a comment about memory leaks that I believe is\nobsolete and added a new one to clarify the result of sending a SIGKILL\nto the reclaimer thread. As best I can tell, doing so doesn\u0027t actually\ncause a memory leak.\n\nI consider this patch 2.6.29 material.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2de59872a7842143f4507832e7c1f5123c47feb7",
      "tree": "d5c8809539eda8b0718012e8b4a7eda3dea98a45",
      "parents": [
        "d716f0b8a57f8577bcd869e7dcb5a0add9f6fc5e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:33 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:33 2008 -0500"
      },
      "message": "LOCKD: Make lockd_up() and lockd_down() exported GPL-only\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "eb14f019597cd86c21a6c601d7e900f40030c2e7",
      "tree": "36fb2f36a1747f98988f87215db1eef3a71d45eb",
      "parents": [
        "9a4a84294b0d60b8c287131478f743ba2bc68949",
        "a3dd15444baa9c7522c8457ab564c41219dfb44c"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 15 20:03:50 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 15 20:03:50 2008 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\n\tdrivers/net/e1000e/ich8lan.c\n"
    },
    {
      "commit": "a8d82d9b950213b66b22c9e7c63a058841de2394",
      "tree": "58334c88a7a32c88648d84a0858a0ed08ba28ab5",
      "parents": [
        "e4625eb826de4f6774ee602c442ba23b686bdcc7"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Nov 24 12:51:55 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Nov 24 13:29:07 2008 -0600"
      },
      "message": "NLM: client-side nlm_lookup_host() should avoid matching on srcaddr\n\nSince commit c98451bd, the loop in nlm_lookup_host() unconditionally\ncompares the host\u0027s h_srcaddr field to the incoming source address.\nFor client-side nlm_host entries, both are always AF_UNSPEC, so this\ncheck is unnecessary.\n\nSince commit 781b61a6, which added support for AF_INET6 addresses to\nnlm_cmp_addr(), nlm_cmp_addr() now returns FALSE for AF_UNSPEC\naddresses, which causes nlm_lookup_host() to create a fresh nlm_host\nentry every time it is called on the client.\n\nThese extra entries will eventually expire once the server is\nunmounted, so the impact of this regression, introduced with lockd\nIPv6 support in 2.6.28, should be minor.\n\nWe could fix this by adding an arm in nlm_cmp_addr() for AF_UNSPEC\naddresses, but really, nlm_lookup_host() shouldn\u0027t be matching on the\nsrcaddr field for client-side nlm_host lookups.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "2c5e76158fcea6e3b9536a74efa7b5e2e846d374",
      "tree": "dca1fcd75e3091b9ffe14b5461714fed1542dbba",
      "parents": [
        "b726e923ea4d216027e466aa602d914e4b4a63af"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Thu Nov 20 14:36:17 2008 -0600"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Nov 24 10:12:48 2008 -0600"
      },
      "message": "nfsd: clean up grace period on early exit\n\nIf nfsd was shut down before the grace period ended, we could end up\nwith a freed object still on grace_list.  Thanks to Jeff Moyer for\nreporting the resulting list corruption warnings.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nTested-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\n"
    },
    {
      "commit": "9eeda9abd1faf489f3df9a1f557975f4c8650363",
      "tree": "3e0a58e25b776cfbee193195460324dccb1886c7",
      "parents": [
        "61c9eaf90081cbe6dc4f389e0056bff76eca19ec",
        "4bab0ea1d42dd1927af9df6fbf0003fc00617c50"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 06 22:43:03 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 06 22:43:03 2008 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\n\tdrivers/net/wireless/ath5k/base.c\n\tnet/8021q/vlan_core.c\n"
    },
    {
      "commit": "be859405487324ed548f1ba11dc949b8230ab991",
      "tree": "3893ac2ce3b212b100d9e1e1e3e2fc1fa0c3f47f",
      "parents": [
        "63779436ab4ad0867bcea53bf853b0004d7b895d"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Fri Oct 31 00:56:28 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Oct 31 00:56:28 2008 -0700"
      },
      "message": "fs: replace NIPQUAD()\n\nUsing NIPQUAD() with NIPQUAD_FMT, %d.%d.%d.%d or %u.%u.%u.%u\ncan be replaced with %pI4\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "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": "5b095d98928fdb9e3b75be20a54b7a6cbf6ca9ad",
      "tree": "b6caa0cdbaac016447a790881ad4a6c5dfce6900",
      "parents": [
        "4b7a4274ca63dadd9c4f17fc953f3a5d19855c4c"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Wed Oct 29 12:52:50 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Oct 29 12:52:50 2008 -0700"
      },
      "message": "net: replace %p6 with %pI6\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1afa67f5e70b4733d5b237df61e6d639af6283bb",
      "tree": "34912ebf8e13c40e00bc5ab13c365a5556d684ca",
      "parents": [
        "b071195deba14b37ce896c26f20349b46e5f9fd2"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Tue Oct 28 16:06:44 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 28 16:06:44 2008 -0700"
      },
      "message": "misc: replace NIP6_FMT with %p6 format specifier\n\nThe iscsi_ibft.c changes are almost certainly a bugfix as the\npointer \u0027ip\u0027 is a u8 *, so they never print the last 8 bytes\nof the IPv6 address, and the eight bytes they do print have\na zero byte with them in each 16-bit word.\n\nOther than that, this should cause no difference in functionality.\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\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"
    }
  ],
  "next": "7e9d7746bfd40121438b155023793796499497d8"
}
