From: Stanislav Kinsbursky <skinsbursky@parallels.com>
To: Chuck Lever <chuck.lever@oracle.com>
Cc: "Trond.Myklebust@netapp.com" <Trond.Myklebust@netapp.com>,
"bfields@fieldses.org" <bfields@fieldses.org>,
"linux-nfs@vger.kernel.org" <linux-nfs@vger.kernel.org>,
"devel@openvz.org" <devel@openvz.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"jlayton@redhat.com" <jlayton@redhat.com>
Subject: Re: [PATCH 1/3] lockd: use rpc client's cl_nodename for id encoding
Date: Mon, 17 Sep 2012 14:48:05 +0400 [thread overview]
Message-ID: <5056FFE5.7030205@parallels.com> (raw)
In-Reply-To: <1800C13C-A771-4CA6-B241-4B4DEA207684@oracle.com>
14.09.2012 23:08, Chuck Lever пишет:
> Hi-
>
> On Sep 14, 2012, at 10:25 AM, Stanislav Kinsbursky wrote:
>
>> Taking hostname from uts namespace if not safe, because this cuold be
>> performind during umount operation on child reaper death. And in this case
>> current->nsproxy is NULL already.
>>
>> Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
>> Cc: <stable@vger.kernel.org>
>> ---
>> fs/lockd/mon.c | 14 ++++++++------
>> 1 files changed, 8 insertions(+), 6 deletions(-)
>>
>> diff --git a/fs/lockd/mon.c b/fs/lockd/mon.c
>> index 7ef14b3..c6186fb 100644
>> --- a/fs/lockd/mon.c
>> +++ b/fs/lockd/mon.c
>> @@ -426,11 +426,12 @@ static void encode_mon_name(struct xdr_stream *xdr, const struct nsm_args *argp)
>> * (via the NLMPROC_SM_NOTIFY call) that the state of host "mon_name"
>> * has changed.
>> */
>> -static void encode_my_id(struct xdr_stream *xdr, const struct nsm_args *argp)
>> +static void encode_my_id(struct xdr_stream *xdr, const struct nsm_args *argp,
>> + char *nodename)
>> {
>> __be32 *p;
>>
>> - encode_nsm_string(xdr, utsname()->nodename);
>> + encode_nsm_string(xdr, nodename);
>> p = xdr_reserve_space(xdr, 4 + 4 + 4);
>> *p++ = cpu_to_be32(argp->prog);
>> *p++ = cpu_to_be32(argp->vers);
>> @@ -441,10 +442,11 @@ static void encode_my_id(struct xdr_stream *xdr, const struct nsm_args *argp)
>> * The "mon_id" argument specifies the non-private arguments
>> * of an NSMPROC_MON or NSMPROC_UNMON call.
>> */
>> -static void encode_mon_id(struct xdr_stream *xdr, const struct nsm_args *argp)
>> +static void encode_mon_id(struct xdr_stream *xdr, const struct nsm_args *argp,
>> + char *nodename)
>> {
>> encode_mon_name(xdr, argp);
>> - encode_my_id(xdr, argp);
>> + encode_my_id(xdr, argp, nodename);
>> }
>>
>> /*
>> @@ -463,14 +465,14 @@ static void encode_priv(struct xdr_stream *xdr, const struct nsm_args *argp)
>> static void nsm_xdr_enc_mon(struct rpc_rqst *req, struct xdr_stream *xdr,
>> const struct nsm_args *argp)
>> {
>> - encode_mon_id(xdr, argp);
>> + encode_mon_id(xdr, argp, req->rq_task->tk_client->cl_nodename);
>
> IMO you should get the cl_nodename in nsm_mon_unmon() from clnt->cl_nodename, and pass it in as part of *argp . The choice of which nodename to use is clearly a decision for an "upper layer" not a choice for the XDR functions.
>
> Long ago I had patches which fixed this layering violation for a very similar purpose as yours, but they were never applied.
>
I like it. Thanks.
--
Best regards,
Stanislav Kinsbursky
next prev parent reply other threads:[~2012-09-17 10:48 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-14 14:25 [PATCH 0/3] lockd: use per-net refrence-counted NSM clients Stanislav Kinsbursky
2012-09-14 14:25 ` [PATCH 1/3] lockd: use rpc client's cl_nodename for id encoding Stanislav Kinsbursky
2012-09-14 19:08 ` Chuck Lever
2012-09-17 10:48 ` Stanislav Kinsbursky [this message]
2012-09-14 14:26 ` [PATCH 2/3] lockd: per-net NSM client creation and destruction helpers introduced Stanislav Kinsbursky
2012-09-14 14:26 ` [PATCH 3/3] lockd: create and use per-net NSM RPC clients on MON/UNMON requests Stanislav Kinsbursky
2012-09-14 17:01 ` [PATCH 0/3] lockd: use per-net refrence-counted NSM clients Chuck Lever
2012-09-14 17:38 ` Myklebust, Trond
2012-09-14 17:38 ` Myklebust, Trond
2012-09-14 19:10 ` Chuck Lever
2012-09-17 10:49 ` Stanislav Kinsbursky
2012-09-17 15:10 ` Chuck Lever
2012-09-17 15:23 ` Stanislav Kinsbursky
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=5056FFE5.7030205@parallels.com \
--to=skinsbursky@parallels.com \
--cc=Trond.Myklebust@netapp.com \
--cc=bfields@fieldses.org \
--cc=chuck.lever@oracle.com \
--cc=devel@openvz.org \
--cc=jlayton@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--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 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.