From: "J. Bruce Fields" <bfields@fieldses.org>
To: Chuck Lever <chuck.lever@oracle.com>
Cc: linux-nfs@vger.kernel.org
Subject: Re: [PATCH 18/27] NSM: Refactor nsm_handle creation into a helper function
Date: Wed, 10 Dec 2008 18:28:30 -0500 [thread overview]
Message-ID: <20081210232830.GP1212@fieldses.org> (raw)
In-Reply-To: <20081206000409.24075.37859.stgit-07a7zB5ZJzbwdl/1UfZZQIVfYA8g3rJ/@public.gmane.org>
On Fri, Dec 05, 2008 at 07:04:09PM -0500, Chuck Lever wrote:
> Clean up.
The nsm_create_handle() thing is fine, but
>
> We're about to get rid of the "goto retry" in nsm_get_handle().
I'm not that interested in removing the "goto retry". I realize tastes
differ here, but I don't see a great improvement. The:
retry:
look for something
oops, not there, allocate a new one
goto retry
pattern is pretty common and I'm comfortable with it.
There's also a few conflicts that result from my dropping the changes
that move the dprintk's out from under the spinlock, and I'm getting
lazy.... Could you humor me here and rebase these last 10 patches on my
latest for-2.6.29:
git://linux-nfs.org/~bfields/linux.git for-2.6.29
without futzing with this goto?
>From a quick skim the rest of the patches they seem reasonable. If you
have more 2.6.29 patches, this'd be a good time to send them along as
well.
--b.
> To facilitate this, move the nsm_handle initialization logic to
> a helper function.
>
> Fields are initialized in increasing address order to make efficient
> use of CPU caches.
>
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
> ---
>
> fs/lockd/mon.c | 41 ++++++++++++++++++++++++++++-------------
> 1 files changed, 28 insertions(+), 13 deletions(-)
>
> diff --git a/fs/lockd/mon.c b/fs/lockd/mon.c
> index 4267a57..24857a8 100644
> --- a/fs/lockd/mon.c
> +++ b/fs/lockd/mon.c
> @@ -240,6 +240,30 @@ static void nsm_init_private(struct nsm_handle *nsm)
> *p = nsm_addr_in(nsm)->sin_addr.s_addr;
> }
>
> +static struct nsm_handle *nsm_create_handle(const struct sockaddr *sap,
> + const size_t salen,
> + const char *hostname,
> + const size_t hostname_len)
> +{
> + struct nsm_handle *new;
> +
> + new = kzalloc(sizeof(*new) + hostname_len + 1, GFP_KERNEL);
> + if (unlikely(new == NULL))
> + return NULL;
> +
> + atomic_set(&new->sm_count, 1);
> + new->sm_name = (char *)(new + 1);
> + memcpy(nsm_addr(new), sap, salen);
> + new->sm_addrlen = salen;
> + nsm_init_private(new);
> + nsm_display_address((const struct sockaddr *)&new->sm_addr,
> + new->sm_addrbuf, sizeof(new->sm_addrbuf));
> + memcpy(new->sm_name, hostname, hostname_len);
> + new->sm_name[hostname_len] = '\0';
> +
> + return new;
> +}
> +
> /**
> * nsm_get_handle - Find or create a cached nsm_handle
> * @sap: pointer to socket address of handle to find
> @@ -299,20 +323,11 @@ retry:
>
> spin_unlock(&nsm_lock);
>
> - nsm = kzalloc(sizeof(*nsm) + hostname_len + 1, GFP_KERNEL);
> - if (nsm == NULL)
> - return NULL;
> + nsm = nsm_create_handle(sap, salen, hostname, hostname_len);
> + if (nsm != NULL)
> + goto retry;
>
> - memcpy(nsm_addr(nsm), sap, salen);
> - nsm->sm_addrlen = salen;
> - nsm->sm_name = (char *) (nsm + 1);
> - memcpy(nsm->sm_name, hostname, hostname_len);
> - nsm->sm_name[hostname_len] = '\0';
> - nsm_init_private(nsm);
> - nsm_display_address((struct sockaddr *)&nsm->sm_addr,
> - nsm->sm_addrbuf, sizeof(nsm->sm_addrbuf));
> - atomic_set(&nsm->sm_count, 1);
> - goto retry;
> + return NULL;
> }
>
> /**
>
next prev parent reply other threads:[~2008-12-10 23:28 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-06 0:01 [PATCH 00/27] Remaining IPv6 NSM patches for 2.6.29 Chuck Lever
[not found] ` <20081205235557.24075.12511.stgit-07a7zB5ZJzbwdl/1UfZZQIVfYA8g3rJ/@public.gmane.org>
2008-12-06 0:01 ` [PATCH 01/27] NSM: Move NSM-related XDR data structures to lockd's xdr.h Chuck Lever
2008-12-06 0:02 ` [PATCH 02/27] NSM: Move NSM program and procedure numbers to fs/lockd/mon.c Chuck Lever
[not found] ` <20081206000206.24075.32502.stgit-07a7zB5ZJzbwdl/1UfZZQIVfYA8g3rJ/@public.gmane.org>
2008-12-10 20:09 ` J. Bruce Fields
2008-12-06 0:02 ` [PATCH 03/27] NSM: Add xdr_stream-based XDR encoders Chuck Lever
[not found] ` <20081206000214.24075.58074.stgit-07a7zB5ZJzbwdl/1UfZZQIVfYA8g3rJ/@public.gmane.org>
2008-12-10 20:35 ` J. Bruce Fields
2008-12-10 20:36 ` J. Bruce Fields
2008-12-10 20:54 ` Chuck Lever
2008-12-10 21:15 ` J. Bruce Fields
2008-12-06 0:02 ` [PATCH 04/27] " Chuck Lever
2008-12-06 0:02 ` [PATCH 05/27] NSM: Switch over to the new-style XDR functions Chuck Lever
2008-12-06 0:02 ` [PATCH 06/27] NSM: Remove unused old-style " Chuck Lever
2008-12-06 0:02 ` [PATCH 07/27] NSM: Move nsm_find() to fs/lockd/mon.c Chuck Lever
[not found] ` <20081206000244.24075.75258.stgit-07a7zB5ZJzbwdl/1UfZZQIVfYA8g3rJ/@public.gmane.org>
2008-12-10 20:58 ` J. Bruce Fields
2008-12-10 21:08 ` Chuck Lever
2008-12-06 0:02 ` [PATCH 08/27] NSM: Add dprintk() calls in nsm_find and nsm_release Chuck Lever
[not found] ` <20081206000252.24075.51827.stgit-07a7zB5ZJzbwdl/1UfZZQIVfYA8g3rJ/@public.gmane.org>
2008-12-10 21:05 ` J. Bruce Fields
2008-12-10 21:10 ` Chuck Lever
2008-12-10 21:14 ` J. Bruce Fields
2008-12-06 0:03 ` [PATCH 09/27] NSM: Remove NULL pointer check from nsm_find() Chuck Lever
2008-12-06 0:03 ` [PATCH 10/27] NSM: Remove !nsm check from nsm_release() Chuck Lever
[not found] ` <20081206000308.24075.73629.stgit-07a7zB5ZJzbwdl/1UfZZQIVfYA8g3rJ/@public.gmane.org>
2008-12-10 21:11 ` J. Bruce Fields
2008-12-06 0:03 ` [PATCH 11/27] NSM: Generate NSMPROC_MON's "priv" argument when nsm_handle is created Chuck Lever
2008-12-06 0:03 ` [PATCH 12/27] NSM: Encode the new "priv" cookie for NSMPROC_MON requests Chuck Lever
2008-12-06 0:03 ` [PATCH 13/27] NLM: Change nlm_host_rebooted() to take a single nlm_reboot argument Chuck Lever
2008-12-06 0:03 ` [PATCH 14/27] NLM: Decode "priv" argument of NLMPROC_SM_NOTIFY as an opaque Chuck Lever
[not found] ` <20081206000338.24075.50442.stgit-07a7zB5ZJzbwdl/1UfZZQIVfYA8g3rJ/@public.gmane.org>
2008-12-10 22:29 ` J. Bruce Fields
2008-12-06 0:03 ` [PATCH 15/27] NSM: Add nsm_lookup() function Chuck Lever
[not found] ` <20081206000346.24075.23426.stgit-07a7zB5ZJzbwdl/1UfZZQIVfYA8g3rJ/@public.gmane.org>
2008-12-10 22:58 ` J. Bruce Fields
2008-12-06 0:03 ` [PATCH 16/27] NLM: Call nsm_reboot_lookup() instead of nsm_find() Chuck Lever
2008-12-06 0:04 ` [PATCH 17/27] NLM: Remove "create" argument from nsm_find() Chuck Lever
[not found] ` <20081206000401.24075.77127.stgit-07a7zB5ZJzbwdl/1UfZZQIVfYA8g3rJ/@public.gmane.org>
2008-12-10 23:00 ` J. Bruce Fields
2008-12-06 0:04 ` [PATCH 18/27] NSM: Refactor nsm_handle creation into a helper function Chuck Lever
[not found] ` <20081206000409.24075.37859.stgit-07a7zB5ZJzbwdl/1UfZZQIVfYA8g3rJ/@public.gmane.org>
2008-12-10 23:28 ` J. Bruce Fields [this message]
2008-12-11 17:09 ` Chuck Lever
2008-12-11 18:53 ` J. Bruce Fields
2008-12-06 0:04 ` [PATCH 19/27] NSM: More clean up of nsm_get_handle() Chuck Lever
2008-12-06 0:04 ` [PATCH 20/27] NSM: Replace IP address as our nlm_reboot lookup key Chuck Lever
[not found] ` <20081206000424.24075.72384.stgit-07a7zB5ZJzbwdl/1UfZZQIVfYA8g3rJ/@public.gmane.org>
2008-12-10 23:43 ` J. Bruce Fields
2008-12-11 16:20 ` Chuck Lever
2008-12-06 0:04 ` [PATCH 21/27] NSM: Remove include/linux/lockd/sm_inter.h Chuck Lever
2008-12-06 0:04 ` [PATCH 22/27] NSM: Move nsm_addr() to fs/lockd/mon.c Chuck Lever
2008-12-06 0:04 ` [PATCH 23/27] NSM: Move nsm_use_hostnames to mon.c Chuck Lever
2008-12-06 0:04 ` [PATCH 24/27] NSM: Move nsm_create() Chuck Lever
2008-12-06 0:05 ` [PATCH 25/27] NLM: nlm_privileged_requester() doesn't recognize mapped loopback address Chuck Lever
2008-12-06 0:05 ` [PATCH 26/27] NLM: Rewrite IPv4 privileged requester's check Chuck Lever
2008-12-06 0:05 ` [PATCH 27/27] lockd: Enable NLM use of AF_INET6 Chuck Lever
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=20081210232830.GP1212@fieldses.org \
--to=bfields@fieldses.org \
--cc=chuck.lever@oracle.com \
--cc=linux-nfs@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox