From: Steve Dickson <SteveD@redhat.com>
To: "J. Bruce Fields" <bfields@redhat.com>
Cc: linux-nfs@vger.kernel.org
Subject: Re: [PATCH 4/4] mountd: don't automatically add subexports to kernel cache
Date: Wed, 22 Jun 2011 18:30:32 -0400 [thread overview]
Message-ID: <4E026D08.5070309@RedHat.com> (raw)
In-Reply-To: <1308063492-30103-5-git-send-email-bfields@redhat.com>
Hey Bruce,
This patch breaks cross mounts... Here is my set up
/home/fs1 two different file systems:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup00-HomeDirs
15236080 9439036 5010612 66% /home
RedHat# df /home/fs1
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup00-FS1
10321208 154468 9642452 2% /home/fs1
The export is:
/home *(rw,crossmnt,nohide,sec=sys:krb5:krb5i:krb5p)
when I mount from a f15 client
mount -v -o v3 redhat:/home/fs1/tmp/tophat /mnt/tmp
I get:
mount.nfs: mount(2): Stale NFS file handle
When I revert the patch, the mount works.
Unfortunately I'm going to be taking the next few days off
so I am not going be able to debug this... So I'm going to
wait on the entire patch series until we can sort this out...
steved.
On 06/14/2011 10:58 AM, J. Bruce Fields wrote:
> Given a crossmnt export and a child path, search for all mountpoints in
> between and add exports for them to the kernel.
>
> This isn't necessary; if the the kernel needs one of the subexports, it
> can always ask.
>
> It might be some sort of minor optimization to add exports preemptively.
> But if so, why not just add them all? Why this particular subset?
>
> Given the chance to delete some code I can't justify, I'll take it.
>
> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
> ---
> utils/mountd/cache.c | 42 +-----------------------------------------
> 1 files changed, 1 insertions(+), 41 deletions(-)
>
> diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c
> index d2ae4563..c77eb27 100644
> --- a/utils/mountd/cache.c
> +++ b/utils/mountd/cache.c
> @@ -945,53 +945,13 @@ static int cache_export_ent(char *domain, struct exportent *exp, char *path)
> if (!f)
> return -1;
>
> - err = dump_to_cache(f, domain, exp->e_path, exp);
> + err = dump_to_cache(f, domain, path, exp);
> if (err) {
> xlog(L_WARNING,
> "Cannot export %s, possibly unsupported filesystem or"
> " fsid= required", exp->e_path);
> }
>
> - while (err == 0 && (exp->e_flags & NFSEXP_CROSSMOUNT) && path) {
> - /* really an 'if', but we can break out of
> - * a 'while' more easily */
> - /* Look along 'path' for other filesystems
> - * and export them with the same options
> - */
> - struct stat stb;
> - size_t l = strlen(exp->e_path);
> - __dev_t dev;
> -
> - if (strlen(path) <= l || path[l] != '/' ||
> - strncmp(exp->e_path, path, l) != 0)
> - break;
> - if (stat(exp->e_path, &stb) != 0)
> - break;
> - dev = stb.st_dev;
> - while(path[l] == '/') {
> - char c;
> - /* errors for submount should fail whole filesystem */
> - int err2;
> -
> - l++;
> - while (path[l] != '/' && path[l])
> - l++;
> - c = path[l];
> - path[l] = 0;
> - err2 = lstat(path, &stb);
> - path[l] = c;
> - if (err2 < 0)
> - break;
> - if (stb.st_dev == dev)
> - continue;
> - dev = stb.st_dev;
> - path[l] = 0;
> - dump_to_cache(f, domain, path, exp);
> - path[l] = c;
> - }
> - break;
> - }
> -
> fclose(f);
> return err;
> }
next prev parent reply other threads:[~2011-06-22 22:30 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-14 14:58 nfs-utils crossmnt bugfix, and cleanup J. Bruce Fields
2011-06-14 14:58 ` [PATCH 1/4] mountd: prefer explicit subexports over crossmnt parents J. Bruce Fields
2011-06-14 14:58 ` [PATCH 2/4] mountd: gather fsid information into one struct J. Bruce Fields
2011-06-14 14:58 ` [PATCH 3/4] mountd: move fsidtype-specific code to helpers J. Bruce Fields
2011-06-14 14:58 ` [PATCH 4/4] mountd: don't automatically add subexports to kernel cache J. Bruce Fields
2011-06-22 22:30 ` Steve Dickson [this message]
2011-06-22 22:34 ` J. Bruce Fields
2011-06-27 16:36 ` Steve Dickson
2011-06-18 13:27 ` nfs-utils crossmnt bugfix, and cleanup Steve Dickson
2011-06-18 19:50 ` J. Bruce Fields
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=4E026D08.5070309@RedHat.com \
--to=steved@redhat.com \
--cc=bfields@redhat.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 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.