From: "J. Bruce Fields" <bfields@fieldses.org>
To: Chuck Lever <chuck.lever@oracle.com>
Cc: trond.myklebust@netapp.com, linux-nfs@vger.kernel.org
Subject: Re: [PATCH 01/16] lockd: Pass "struct sockaddr *" to new failover-by-IP function
Date: Tue, 15 Jul 2008 16:12:58 -0400 [thread overview]
Message-ID: <20080715201257.GA25803@fieldses.org> (raw)
In-Reply-To: <20080630225813.25407.29856.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
On Mon, Jun 30, 2008 at 06:58:14PM -0400, Chuck Lever wrote:
> Pass a more generic socket address type to nlmsvc_unlock_all_by_ip() to
> allow for future support of IPv6. Also provide additional sanity
> checking in failover_unlock_ip() when constructing the server's IP
> address.
>
> As an added bonus, provide clean kerneldoc comments on related NLM
> interfaces which were recently added.
Looks good to me, thanks--applied, with one minor change:
>
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
> ---
>
> fs/lockd/svcsubs.c | 39 +++++++++++++++++++++++++--------------
> fs/nfsd/nfsctl.c | 15 ++++++++++-----
> include/linux/lockd/lockd.h | 2 +-
> 3 files changed, 36 insertions(+), 20 deletions(-)
>
>
> diff --git a/fs/lockd/svcsubs.c b/fs/lockd/svcsubs.c
> index d1c48b5..723b6d5 100644
> --- a/fs/lockd/svcsubs.c
> +++ b/fs/lockd/svcsubs.c
> @@ -373,18 +373,18 @@ nlmsvc_free_host_resources(struct nlm_host *host)
> }
> }
>
> -/*
> - * Remove all locks held for clients
> +/**
> + * nlmsvc_invalidate_all - remove all locks held for clients
> + *
> + * Release all locks held by NFS clients. Previously, the code
> + * would call nlmsvc_free_host_resources for each client in turn,
> + * which is about as inefficient as it gets.
> + *
> + * Now we just do it once in nlm_traverse_files.
> */
> void
> nlmsvc_invalidate_all(void)
> {
> - /* Release all locks held by NFS clients.
> - * Previously, the code would call
> - * nlmsvc_free_host_resources for each client in
> - * turn, which is about as inefficient as it gets.
> - * Now we just do it once in nlm_traverse_files.
> - */
Mind if I keep the "Previously..." part in the body of the function?
I'd rather the kerneldoc comments be about the interface and leave
implementation details to the body of the function.
Also, one more minor question--
> diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c
> index 5ac00c4..5b4a412 100644
> --- a/fs/nfsd/nfsctl.c
> +++ b/fs/nfsd/nfsctl.c
> @@ -310,9 +310,12 @@ static ssize_t write_getfd(struct file *file, char *buf, size_t size)
>
> static ssize_t failover_unlock_ip(struct file *file, char *buf, size_t size)
> {
> - __be32 server_ip;
> - char *fo_path, c;
> + struct sockaddr_in sin = {
> + .sin_family = AF_INET,
> + };
> int b1, b2, b3, b4;
> + char c;
> + char *fo_path;
>
> /* sanity check */
> if (size == 0)
> @@ -326,11 +329,13 @@ static ssize_t failover_unlock_ip(struct file *file, char *buf, size_t size)
> return -EINVAL;
>
> /* get ipv4 address */
> - if (sscanf(fo_path, "%u.%u.%u.%u%c", &b1, &b2, &b3, &b4, &c) != 4)
> + if (sscanf(fo_path, NIPQUAD_FMT "%c", &b1, &b2, &b3, &b4, &c) != 4)
> + return -EINVAL;
> + if (b1 > 255 || b2 > 255 || b3 > 255 || b4 > 255)
Should b1, b2, b3, b4 be unsigned?
--b.
> return -EINVAL;
> - server_ip = htonl((((((b1<<8)|b2)<<8)|b3)<<8)|b4);
> + sin.sin_addr.s_addr = htonl((b1 << 24) | (b2 << 16) | (b3 << 8) | b4);
>
> - return nlmsvc_unlock_all_by_ip(server_ip);
> + return nlmsvc_unlock_all_by_ip((struct sockaddr *)&sin);
> }
next prev parent reply other threads:[~2008-07-15 20:13 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-30 22:58 [PATCH 00/16] NLM clean-ups for IPv6 support Chuck Lever
[not found] ` <20080630225011.25407.61357.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
2008-06-30 22:58 ` [PATCH 01/16] lockd: Pass "struct sockaddr *" to new failover-by-IP function Chuck Lever
[not found] ` <20080630225813.25407.29856.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
2008-07-15 20:12 ` J. Bruce Fields [this message]
2008-07-15 21:26 ` Chuck Lever
2008-06-30 22:58 ` [PATCH 02/16] lockd: address-family independent printable addresses Chuck Lever
[not found] ` <20080630225821.25407.58530.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
2008-07-15 20:25 ` J. Bruce Fields
2008-07-15 21:41 ` Chuck Lever
[not found] ` <76bd70e30807151441v7a23ce7ev7575a7706ab7a982-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-07-15 21:48 ` J. Bruce Fields
2008-06-30 22:58 ` [PATCH 03/16] lockd: Specify address family for source address Chuck Lever
2008-06-30 22:58 ` [PATCH 04/16] lockd: Add address family-agnostic helper for zeroing the port number Chuck Lever
2008-06-30 22:58 ` [PATCH 05/16] SUNRPC: Make svc_addr's argument a constant Chuck Lever
2008-06-30 22:58 ` [PATCH 06/16] lockd: Use sockaddr_storage + length for h_addr field Chuck Lever
2008-06-30 22:59 ` [PATCH 07/16] lockd: Use sockaddr_storage for h_saddr field Chuck Lever
2008-06-30 22:59 ` [PATCH 08/16] NSM: Use sockaddr_storage for sm_addr field Chuck Lever
2008-06-30 22:59 ` [PATCH 09/16] lockd: Teach nlm_cmp_addr() to support AF_INET6 addresses Chuck Lever
2008-06-30 22:59 ` [PATCH 10/16] lockd: Support AF_INET6 when hashing addresses in nlm_lookup_host Chuck Lever
2008-06-30 22:59 ` [PATCH 11/16] lockd: Combine __nsm_find() and nsm_find() Chuck Lever
2008-06-30 22:59 ` [PATCH 12/16] lockd: Update nsm_find() to support non-AF_INET addresses Chuck Lever
2008-06-30 22:59 ` [PATCH 13/16] lockd: Support non-AF_INET addresses in nlm_lookup_host() Chuck Lever
2008-06-30 22:59 ` [PATCH 14/16] lockd: Adjust nlmclnt_lookup_host() signature to accomodate non-AF_INET Chuck Lever
2008-06-30 23:00 ` [PATCH 15/16] lockd: Adjust nlmsvc_lookup_host() " Chuck Lever
2008-06-30 23:00 ` [PATCH 16/16] lockd: change nlmclnt_grant() to take a "struct sockaddr *" 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=20080715201257.GA25803@fieldses.org \
--to=bfields@fieldses.org \
--cc=chuck.lever@oracle.com \
--cc=linux-nfs@vger.kernel.org \
--cc=trond.myklebust@netapp.com \
/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