41 lines
1.3 KiB
Diff
41 lines
1.3 KiB
Diff
From 92a0f7d3cc7fc1206e0a763ab737f797b8946ca7 Mon Sep 17 00:00:00 2001
|
|
From: NeilBrown <neilb@suse.de>
|
|
Date: Wed, 25 Oct 2023 12:34:45 -0400
|
|
Subject: [PATCH] export: fix handling of error from match_fsid()
|
|
|
|
If match_fsid() returns -1 we shouldn't assume that the path definitely
|
|
doesn't match the fsid, though it might not.
|
|
This is a similar situation to where an export is expected to be a mount
|
|
point, but is found not to be one. So it can be handled the same way,
|
|
by setting 'dev_missing'.
|
|
This will only have an effect if no other path matched the fsid, which
|
|
is what we want.
|
|
|
|
The current code results in nothing being exported if any export point,
|
|
or any mount point beneath a crossmnt export point, fails a 'stat'
|
|
request, which is too harsh.
|
|
|
|
Signed-off-by: NeilBrown <neilb@suse.de>
|
|
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
---
|
|
support/export/cache.c | 3 ++-
|
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/support/export/cache.c b/support/export/cache.c
|
|
index 19bbba5..e459502 100644
|
|
--- a/support/export/cache.c
|
|
+++ b/support/export/cache.c
|
|
@@ -858,7 +858,8 @@ static void nfsd_fh(int f)
|
|
case 0:
|
|
continue;
|
|
case -1:
|
|
- goto out;
|
|
+ dev_missing ++;
|
|
+ continue;
|
|
}
|
|
if (is_ipaddr_client(dom)
|
|
&& !ipaddr_client_matches(exp, ai))
|
|
--
|
|
1.8.3.1
|
|
|