On 9/8/20 5:19 PM, trondmy@xxxxxxxxxx wrote: > From: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> > > If the mount point check in nfsd_export fails due to a transient error, > then ignore it to avoid spurious NFSERR_STALE errors being returned by > knfsd. > > Signed-off-by: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> Committed... (tag: nfs-utils-2-5-2-rc5) steved. > --- > utils/mountd/cache.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c > index 6cba2883026f..93e868341d15 100644 > --- a/utils/mountd/cache.c > +++ b/utils/mountd/cache.c > @@ -1411,7 +1411,10 @@ static void nfsd_export(int f) > > if (mp && !*mp) > mp = found->m_export.e_path; > - if (mp && !is_mountpoint(mp)) > + errno = 0; > + if (mp && !is_mountpoint(mp)) { > + if (errno != 0 && !path_lookup_error(errno)) > + goto out; > /* Exportpoint is not mounted, so tell kernel it is > * not available. > * This will cause it not to appear in the V4 Pseudo-root > @@ -1420,9 +1423,12 @@ static void nfsd_export(int f) > * And filehandle for this mountpoint from an earlier > * mount will block in nfsd.fh lookup. > */ > + xlog(L_WARNING, > + "Cannot export path '%s': not a mountpoint", > + path); > dump_to_cache(f, buf, sizeof(buf), dom, path, > NULL, 60); > - else if (dump_to_cache(f, buf, sizeof(buf), dom, path, > + } else if (dump_to_cache(f, buf, sizeof(buf), dom, path, > &found->m_export, 0) < 0) { > xlog(L_WARNING, > "Cannot export %s, possibly unsupported filesystem" >