X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=utils%2Fmountd%2Fcache.c;h=d63e10ae1faf431d190e1c1ba5ca2c742eb038a2;hb=37d9e4f9e0d1aeeb296583e40a36ae729786230d;hp=e3403901ebf543cb58059b0cf726408a407138a7;hpb=9ec1b2c771ad0e16e0f031b017832d957c4bde56;p=nfs-utils.git diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c index e340390..d63e10a 100644 --- a/utils/mountd/cache.c +++ b/utils/mountd/cache.c @@ -619,8 +619,7 @@ static int is_subdirectory(char *subpath, char *path) int l = strlen(path); return strcmp(subpath, path) == 0 - || (strncmp(subpath, path, l) == 0 && path[l] == '/' - && is_mountpoint(path)); + || (strncmp(subpath, path, l) == 0 && path[l] == '/'); } static int path_matches(nfs_export *exp, char *path) @@ -658,6 +657,11 @@ static nfs_export *lookup_export(char *dom, char *path, struct hostent *he) found_type = i; continue; } + + /* Always prefer non-V4ROOT mounts */ + if (found->m_export.e_flags & NFSEXP_V4ROOT) + continue; + /* If one is a CROSSMOUNT, then prefer the longest path */ if (((found->m_export.e_flags & NFSEXP_CROSSMOUNT) || (exp->m_export.e_flags & NFSEXP_CROSSMOUNT)) &&