From: NeilBrown <neilb@suse.com>
To: Steve Dickson <SteveD@redhat.com>
Cc: Linux NFS Mailing list <linux-nfs@vger.kernel.org>
Subject: [PATCH 4/8] mountd: cause attempts to access unmounted exportpoints to return ESTALE
Date: Thu, 14 Jul 2016 12:26:43 +1000 [thread overview]
Message-ID: <20160714022643.5874.15072.stgit@noble> (raw)
In-Reply-To: <20160714021310.5874.22953.stgit@noble>
If a filehandle arrives for an export with the "mountpoint" option,
but which isn't mounted, then we should return ESTALE rather than
delaying in the hope the filesystem might get mounted.
It is safest to assume that if a filesystem didn't get mounted, then
there is a serious problem, and waiting isn't likely to fix it.
Signed-off-by: NeilBrown <neilb@suse.com>
---
utils/mountd/cache.c | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c
index 346a8b3af8b5..f33f66640c6c 100644
--- a/utils/mountd/cache.c
+++ b/utils/mountd/cache.c
@@ -689,6 +689,7 @@ static void nfsd_fh(int f)
int i;
char buf[RPC_CHAN_BUF_SIZE], *bp;
int blen;
+ int short_timeout = 0;
blen = read(f, buf, sizeof(buf));
if (blen <= 0 || buf[blen-1] != '\n') return;
@@ -787,13 +788,12 @@ static void nfsd_fh(int f)
!is_mountpoint(found->e_mountpoint[0]?
found->e_mountpoint:
found->e_path)) {
- /* Cannot export this yet
- * should log a warning, but need to rate limit
- xlog(L_WARNING, "%s not exported as %d not a mountpoint",
- found->e_path, found->e_mountpoint);
+ /* Cannot export this, as it isn't mounted.
+ * Set a short timeout so we might try again
+ * if the filesystem gets mounted.
*/
- /* FIXME we need to make sure we re-visit this later */
- goto out;
+ found = 0;
+ short_timeout = 1;
}
if (found)
@@ -812,7 +812,10 @@ static void nfsd_fh(int f)
* timeout. Maybe this should be configurable on the command
* line.
*/
- qword_addint(&bp, &blen, 0x7fffffff);
+ if (short_timeout)
+ qword_addint(&bp, &blen, DEFAULT_TTL);
+ else
+ qword_addint(&bp, &blen, 0x7fffffff);
if (found)
qword_add(&bp, &blen, found_path);
qword_addeol(&bp, &blen);
next prev parent reply other threads:[~2016-07-14 2:27 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-14 2:26 [PATCH 0/8] Assorted mount-related nfs-utils patches NeilBrown
2016-07-14 2:26 ` [PATCH 3/8] mountd: remove 'dev_missing' checks NeilBrown
2016-07-18 20:01 ` J. Bruce Fields
2016-07-19 22:50 ` NeilBrown
2016-07-21 17:24 ` J. Bruce Fields
2016-08-11 2:51 ` NeilBrown
2016-08-16 15:21 ` J. Bruce Fields
2016-08-18 1:32 ` NeilBrown
2016-08-18 2:57 ` Chuck Lever
2016-08-19 1:31 ` NeilBrown
2016-08-18 13:57 ` J. Bruce Fields
2016-08-19 1:28 ` NeilBrown
2016-08-19 17:27 ` J. Bruce Fields
2016-07-14 2:26 ` [PATCH 8/8] mount: use a public address for IPv6 callback NeilBrown
2016-07-14 2:26 ` [PATCH 1/8] nfs.man: clarify effect of 'retry' option NeilBrown
2016-07-14 2:26 ` [PATCH 7/8] mount: don't treat temporary name resolution failure as permanent NeilBrown
2016-07-19 23:01 ` NeilBrown
2016-07-14 2:26 ` [PATCH 6/8] mountd: don't add paths to non-mounted export points to pseudo-root NeilBrown
2016-07-18 20:32 ` J. Bruce Fields
2016-07-19 8:00 ` Chuck Lever
2016-07-19 22:59 ` NeilBrown
2016-07-21 17:33 ` J. Bruce Fields
2016-07-25 7:22 ` NeilBrown
2016-07-28 20:54 ` J. Bruce Fields
2016-07-14 2:26 ` [PATCH 2/8] mountd: remove the --exports-file option NeilBrown
2016-07-18 16:19 ` J. Bruce Fields
2016-07-14 2:26 ` NeilBrown [this message]
2016-07-14 2:26 ` [PATCH 5/8] mountd: Don't export unmounted exports to NFSv4 NeilBrown
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=20160714022643.5874.15072.stgit@noble \
--to=neilb@suse.com \
--cc=SteveD@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox