From: Steve Dickson <SteveD@redhat.com>
To: Jeff Layton <jlayton@poochiereds.net>
Cc: neilb@suse.de, linux-nfs@vger.kernel.org, bfields@fieldses.org
Subject: Re: [RFC PATCH 1/2] exportfs: pass export option flags to the kernel when testing export
Date: Wed, 18 Nov 2015 14:19:49 -0500 [thread overview]
Message-ID: <564CCF55.3010407@RedHat.com> (raw)
In-Reply-To: <20151118141659.5293d648@synchrony.poochiereds.net>
On 11/18/2015 02:16 PM, Jeff Layton wrote:
> On Wed, 18 Nov 2015 11:50:29 -0500
> Jeff Layton <jlayton@poochiereds.net> wrote:
>
>> test_export takes a flag that just says whether to pass in the fsid or
>> not. This means that all we can test is the NFSEXP_FSIDi flag.
>>
>> Instead of doing that, pass in the actual export options that we
>> intend to use (sometimes or'ed with NFSEXP_FSID to test whether that
>> might be the reason for the failure).
>>
>> This allows us to test the actual export options that we plan to use,
>> and can allow the kernel to vet them properly before mount time.
>>
>> The rationale here is a patch that I have that will add the ability
>> for filesystems to opt out of subtree checking when they can't
>> properly support it.
>>
>> Cc: Neil Brown <neilb@suse.de>
>> Signed-off-by: Jeff Layton <jeff.layton@primarydata.com>
>> ---
>> utils/exportfs/exportfs.c | 10 +++++-----
>> 1 file changed, 5 insertions(+), 5 deletions(-)
>>
>> diff --git a/utils/exportfs/exportfs.c b/utils/exportfs/exportfs.c
>> index c7a79a69b5d6..cac01fc25f9a 100644
>> --- a/utils/exportfs/exportfs.c
>> +++ b/utils/exportfs/exportfs.c
>> @@ -531,7 +531,7 @@ static int can_test(void)
>> return 1;
>> }
>>
>> -static int test_export(char *path, int with_fsid)
>> +static int test_export(char *path, int opts)
>> {
>> /* beside max path, buf size should take protocol str into account */
>> char buf[NFS_MAXPATHLEN+1+64] = { 0 };
>> @@ -545,7 +545,7 @@ static int test_export(char *path, int with_fsid)
>> qword_add(&bp, &len, path);
>> if (len < 1)
>> return 0;
>> - snprintf(bp, len, " 3 %d 65534 65534 0\n", with_fsid ? NFSEXP_FSID : 0);
>> + snprintf(bp, len, " 3 %d 65534 65534 0\n", opts);
>> fd = open("/proc/net/rpc/nfsd.export/channel", O_WRONLY);
>> if (fd < 0)
>> return 0;
>> @@ -587,12 +587,12 @@ validate_export(nfs_export *exp)
>>
>> if ((exp->m_export.e_flags & NFSEXP_FSID) || exp->m_export.e_uuid ||
>> fs_has_fsid) {
>> - if ( !test_export(path, 1)) {
>> + if ( !test_export(path, exp->m_export.e_flags)) {
>> xlog(L_ERROR, "%s does not support NFS export", path);
>> return;
>> }
>> - } else if ( ! test_export(path, 0)) {
>> - if (test_export(path, 1))
>> + } else if ( ! test_export(path, exp->m_export.e_flags)) {
>> + if (test_export(path, exp->m_export.e_flags & NFSEXP_FSID))
>
> Duh, that should of course be "exp->m_export.e_flags | NFSEXP_FSID".
> I'll plan to resend after I wait a bit for others to comment. Please
> don't merge this as-is though -- it obviously needs better testing.
>
> We might be able to simplify the above logic a little too...hmmm...
That logic did look a bit odd... I'll wait for the next version....
steved.
>
>> xlog(L_ERROR, "%s requires fsid= for NFS export", path);
>> else
>> xlog(L_ERROR, "%s does not support NFS export", path);
>
>
prev parent reply other threads:[~2015-11-18 19:19 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-18 16:50 [RFC PATCH 1/2] exportfs: pass export option flags to the kernel when testing export Jeff Layton
2015-11-18 16:50 ` [RFC PATCH 2/2] exportfs: vet exports for subtree checking when testing the export fails Jeff Layton
2015-11-18 18:05 ` J. Bruce Fields
2015-11-18 19:16 ` [RFC PATCH 1/2] exportfs: pass export option flags to the kernel when testing export Jeff Layton
2015-11-18 19:19 ` Steve Dickson [this message]
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=564CCF55.3010407@RedHat.com \
--to=steved@redhat.com \
--cc=bfields@fieldses.org \
--cc=jlayton@poochiereds.net \
--cc=linux-nfs@vger.kernel.org \
--cc=neilb@suse.de \
/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.