From: Olaf Kirch <okir@suse.de>
To: Trond Myklebust <trond.myklebust@fys.uio.no>
Cc: NeilBrown <neilb@suse.de>, Andrew Morton <akpm@osdl.org>,
nfs@lists.sourceforge.net, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 004 of 19] knfsd: lockd: introduce nsm_handle
Date: Mon, 4 Sep 2006 10:48:46 +0200 [thread overview]
Message-ID: <20060904084846.GB28400@suse.de> (raw)
In-Reply-To: <1157128893.5632.74.camel@localhost>
On Fri, Sep 01, 2006 at 12:41:33PM -0400, Trond Myklebust wrote:
> The local statd process is supposed to decode the notification from the
> remote client/server, and then notify the kernel. It already sends that
> notification on a per-nlm_host basis (i.e. it the call down to the
> kernel contains the <address,version,transport protocol>.
Why does statd need to send the full <address,version,transport protocol>
to the kernel in the first place?
All that's really needed is a unique identification of the host having
rebooted, nevermind how we have been talking to it, and in what role.
I consider the current practice a side effect of a bad implementation
which duplicates a lot of state by dumping everything into the nlm_host.
With the current code, we cannot even monitor IPv6 addresses, because
there's not enough room in the NSM_MON packet. With my proposed change,
we can ditch version and transport protocol, and all of a sudden we
have 16 bytes for the address - ie enough to make IPv6 happy.
In the long run, we could clean out nlm_host even more - there's
a lot of cruft in there.
h_name just h_nsmhandle->sm_name
h_gracewait could be shared as well
h_state should move to nsmhandle as well
h_nsmstate currently not used, could move to nsmhandle as well
h_pidcount currently allocated per nlm_host, which leads
to aliasing if we mix NFSv2 and v3 mounts
On a side note, we may want to always allocate an RPC client for each
nlm_host. Then we can ditch the following variables as well, which are
in the rpc_client's portmap info anyway:
h_proto pm_prot
h_version pm_vers
h_sema useless
h_nextrebind we can stop rebinding every 60s, the sunrpc
doesn't need that anymore. During recovery,
we can just call rpc_force_rebind
directly.
Or going even further, one could make the nlm_host agnostic of transports
and protocol versions. Just stick a (short) array of RPC clients in the
nlm_host - any code that places NLM calls will need some extra logic
to select the right client, but it would save on memory and reduce
complexity.
Olaf
--
Olaf Kirch | --- o --- Nous sommes du soleil we love when we play
okir@suse.de | / | \ sol.dhoop.naytheet.ah kin.ir.samse.qurax
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
NFS maillist - NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs
WARNING: multiple messages have this Message-ID (diff)
From: Olaf Kirch <okir@suse.de>
To: Trond Myklebust <trond.myklebust@fys.uio.no>
Cc: NeilBrown <neilb@suse.de>, Andrew Morton <akpm@osdl.org>,
nfs@lists.sourceforge.net, linux-kernel@vger.kernel.org
Subject: Re: [NFS] [PATCH 004 of 19] knfsd: lockd: introduce nsm_handle
Date: Mon, 4 Sep 2006 10:48:46 +0200 [thread overview]
Message-ID: <20060904084846.GB28400@suse.de> (raw)
In-Reply-To: <1157128893.5632.74.camel@localhost>
On Fri, Sep 01, 2006 at 12:41:33PM -0400, Trond Myklebust wrote:
> The local statd process is supposed to decode the notification from the
> remote client/server, and then notify the kernel. It already sends that
> notification on a per-nlm_host basis (i.e. it the call down to the
> kernel contains the <address,version,transport protocol>.
Why does statd need to send the full <address,version,transport protocol>
to the kernel in the first place?
All that's really needed is a unique identification of the host having
rebooted, nevermind how we have been talking to it, and in what role.
I consider the current practice a side effect of a bad implementation
which duplicates a lot of state by dumping everything into the nlm_host.
With the current code, we cannot even monitor IPv6 addresses, because
there's not enough room in the NSM_MON packet. With my proposed change,
we can ditch version and transport protocol, and all of a sudden we
have 16 bytes for the address - ie enough to make IPv6 happy.
In the long run, we could clean out nlm_host even more - there's
a lot of cruft in there.
h_name just h_nsmhandle->sm_name
h_gracewait could be shared as well
h_state should move to nsmhandle as well
h_nsmstate currently not used, could move to nsmhandle as well
h_pidcount currently allocated per nlm_host, which leads
to aliasing if we mix NFSv2 and v3 mounts
On a side note, we may want to always allocate an RPC client for each
nlm_host. Then we can ditch the following variables as well, which are
in the rpc_client's portmap info anyway:
h_proto pm_prot
h_version pm_vers
h_sema useless
h_nextrebind we can stop rebinding every 60s, the sunrpc
doesn't need that anymore. During recovery,
we can just call rpc_force_rebind
directly.
Or going even further, one could make the nlm_host agnostic of transports
and protocol versions. Just stick a (short) array of RPC clients in the
nlm_host - any code that places NLM calls will need some extra logic
to select the right client, but it would save on memory and reduce
complexity.
Olaf
--
Olaf Kirch | --- o --- Nous sommes du soleil we love when we play
okir@suse.de | / | \ sol.dhoop.naytheet.ah kin.ir.samse.qurax
--
VGER BF report: H 2.68873e-09
next prev parent reply other threads:[~2006-09-04 8:48 UTC|newest]
Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-09-01 4:38 [PATCH 000 of 19] knfsd: lockd improvements NeilBrown
2006-09-01 4:38 ` NeilBrown
2006-09-01 4:38 ` [PATCH 001 of 19] knfsd: Hide use of lockd's h_monitored flag NeilBrown
2006-09-01 4:38 ` NeilBrown
2006-09-01 4:38 ` [PATCH 002 of 19] knfsd: Consolidate common code for statd->lockd notification NeilBrown
2006-09-01 4:38 ` NeilBrown
2006-09-01 4:38 ` [PATCH 003 of 19] knfsd: When looking up a lockd host, pass hostname & length NeilBrown
2006-09-01 4:38 ` NeilBrown
2006-09-01 4:38 ` [PATCH 004 of 19] knfsd: lockd: introduce nsm_handle NeilBrown
2006-09-01 4:38 ` NeilBrown
2006-09-01 6:17 ` Andrew Morton
2006-09-01 6:17 ` Andrew Morton
2006-09-01 23:48 ` Neil Brown
2006-09-01 23:48 ` Neil Brown
2006-09-01 6:20 ` Andrew Morton
2006-09-01 6:20 ` Andrew Morton
2006-09-01 23:50 ` Neil Brown
2006-09-01 23:50 ` Neil Brown
2006-09-01 15:50 ` Trond Myklebust
2006-09-01 15:50 ` [NFS] " Trond Myklebust
2006-09-01 16:11 ` Olaf Kirch
2006-09-01 16:11 ` [NFS] " Olaf Kirch
2006-09-01 16:41 ` Trond Myklebust
2006-09-01 16:41 ` [NFS] " Trond Myklebust
2006-09-04 8:48 ` Olaf Kirch [this message]
2006-09-04 8:48 ` Olaf Kirch
2006-09-01 4:38 ` [PATCH 005 of 19] knfsd: Misc minor fixes, indentation changes NeilBrown
2006-09-01 4:38 ` NeilBrown
2006-09-01 4:38 ` [PATCH 006 of 19] knfsd: lockd: Make nlm_host_rebooted use the nsm_handle NeilBrown
2006-09-01 4:38 ` NeilBrown
2006-09-01 4:38 ` [PATCH 007 of 19] knfsd: lockd: make the nsm upcalls " NeilBrown
2006-09-01 4:38 ` NeilBrown
2006-09-01 4:38 ` [PATCH 008 of 19] knfsd: lockd: make the hash chains use a hlist_node NeilBrown
2006-09-01 4:38 ` NeilBrown
2006-09-01 4:38 ` [PATCH 009 of 19] knfsd: lockd: Change list of blocked list to list_node NeilBrown
2006-09-01 4:38 ` NeilBrown
2006-09-01 4:39 ` [PATCH 010 of 19] knfsd: Change nlm_file to use a hlist NeilBrown
2006-09-01 4:39 ` NeilBrown
2006-09-01 4:39 ` [PATCH 011 of 19] knfsd: lockd: make nlm_traverse_* more flexible NeilBrown
2006-09-01 4:39 ` NeilBrown
2006-09-01 4:39 ` [PATCH 012 of 19] knfsd: lockd: Add nlm_destroy_host NeilBrown
2006-09-01 4:39 ` NeilBrown
2006-09-01 4:39 ` [PATCH 013 of 19] knfsd: Simplify nlmsvc_invalidate_all NeilBrown
2006-09-01 4:39 ` NeilBrown
2006-09-01 4:39 ` [PATCH 014 of 19] knfsd: lockd: optionally use hostnames for identifying peers NeilBrown
2006-09-01 4:39 ` NeilBrown
2006-09-01 4:39 ` [PATCH 015 of 19] knfsd: make nlmclnt_next_cookie SMP safe NeilBrown
2006-09-01 4:39 ` NeilBrown
2006-09-01 4:39 ` [PATCH 016 of 19] knfsd: match GRANTED_RES replies using cookies NeilBrown
2006-09-01 4:39 ` NeilBrown
2006-09-01 16:03 ` Trond Myklebust
2006-09-01 16:03 ` [NFS] " Trond Myklebust
2006-09-04 9:09 ` Olaf Kirch
2006-09-04 9:09 ` [NFS] " Olaf Kirch
2006-09-05 16:12 ` Trond Myklebust
2006-09-05 16:12 ` [NFS] " Trond Myklebust
2006-09-05 17:39 ` Olaf Kirch
2006-09-05 17:39 ` [NFS] " Olaf Kirch
2006-09-01 4:39 ` [PATCH 017 of 19] knfsd: Export nsm_local_state to user space via sysctl NeilBrown
2006-09-01 4:39 ` NeilBrown
2006-09-01 4:39 ` [PATCH 018 of 19] knfsd: lockd: fix use of h_nextrebind NeilBrown
2006-09-01 4:39 ` NeilBrown
2006-09-01 16:05 ` Trond Myklebust
2006-09-01 16:05 ` [NFS] " Trond Myklebust
2006-09-01 4:39 ` [PATCH 019 of 19] knfsd: Register all RPC programs with portmapper by default NeilBrown
2006-09-01 4:39 ` NeilBrown
2006-09-01 13:25 ` Peter Staubach
2006-09-01 13:25 ` [NFS] " Peter Staubach
2006-09-01 13:29 ` Peter Staubach
2006-09-01 13:29 ` [NFS] " Peter Staubach
2006-09-01 13:47 ` Olaf Kirch
2006-09-01 13:47 ` [NFS] " Olaf Kirch
2006-09-01 15:31 ` Chuck Lever
2006-09-01 15:31 ` [NFS] " Chuck Lever
2006-09-01 15:54 ` Olaf Kirch
2006-09-01 15:54 ` [NFS] " Olaf Kirch
2006-09-01 16:08 ` Chuck Lever
2006-09-01 16:08 ` [NFS] " Chuck Lever
2006-09-01 16:34 ` Peter Staubach
2006-09-01 16:34 ` [NFS] " Peter Staubach
2006-09-01 16:13 ` Trond Myklebust
2006-09-01 16:13 ` [NFS] " Trond Myklebust
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060904084846.GB28400@suse.de \
--to=okir@suse.de \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=neilb@suse.de \
--cc=nfs@lists.sourceforge.net \
--cc=trond.myklebust@fys.uio.no \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.