commit
8e2fb3fc cause a regression in mount export
that are on different local file system.
Exports like (all on different filesystems)
/home *(rw,fsid=0,crossmnt)
/home/fs1 *(rw,crossmnt)
/home/fs1/fs2/fs3 *(rw,nohide)
and then a mount of the root 'mount /home /mnt'
would end up mounting /home/fs1/fs2/fs3 not /home
Reverting the logic of commit
8e2fb3fc until
a better solution can be found for the original
problem.
Signed-off-by: Steve Dickson <steved@redhat.com>
static bool subexport(struct exportent *e1, struct exportent *e2)
{
char *p1 = e1->e_path, *p2 = e2->e_path;
+ size_t l2 = strlen(p2);
+
return e2->e_flags & NFSEXP_CROSSMOUNT
- && is_subdirectory(p1, p2);
+ && strncmp(p1, p2, l2) == 0
+ && p1[l2] == '/';
}
struct parsed_fsid {