summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Dickson <steved@redhat.com>2008-01-09 13:13:31 -0500
committerSteve Dickson <steved@redhat.com>2008-01-09 13:13:31 -0500
commitec637de16210c1c6fcb3a0df34d7889592f577dc (patch)
tree63f2fa18997caaaea3f6e2f8b9a0069337895d27
parent5c4f17a97b1260e9c564ddd9887afaf50a26de9d (diff)
downloadnfs-utils-ec637de16210c1c6fcb3a0df34d7889592f577dc.tar.gz
nfs-utils-ec637de16210c1c6fcb3a0df34d7889592f577dc.tar.xz
nfs-utils-ec637de16210c1c6fcb3a0df34d7889592f577dc.zip
Automatically set 'nohide' on referral exports.
Signed-off-by: Steve Dickson <steved@redhat.com>
-rw-r--r--support/nfs/exports.c6
-rw-r--r--utils/mountd/cache.c11
2 files changed, 16 insertions, 1 deletions
diff --git a/support/nfs/exports.c b/support/nfs/exports.c
index 6b56708..525e5b1 100644
--- a/support/nfs/exports.c
+++ b/support/nfs/exports.c
@@ -641,6 +641,12 @@ bad_option:
while (isblank(*cp))
cp++;
}
+ /*
+ * Turn on nohide which will allow this export to cross over
+ * the 'mount --bind' mount point.
+ */
+ if (ep->e_fslocdata)
+ ep->e_flags |= NFSEXP_NOHIDE;
for (p = ep->e_secinfo; p->flav; p++)
p->flags |= ep->e_flags & ~NFSEXP_SECINFO_FLAGS;
diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c
index fd317cd..02454ac 100644
--- a/utils/mountd/cache.c
+++ b/utils/mountd/cache.c
@@ -81,6 +81,8 @@ void auth_unix_ip(FILE *f)
if (readline(fileno(f), &lbuf, &lbuflen) != 1)
return;
+ xlog(D_CALL, "auth_unix_ip: inbuf '%s'", lbuf);
+
cp = lbuf;
if (qword_get(&cp, class, 20) <= 0 ||
@@ -109,6 +111,7 @@ void auth_unix_ip(FILE *f)
else if (client)
qword_print(f, *client?client:"DEFAULT");
qword_eol(f);
+ xlog(D_CALL, "auth_unix_ip: client %p '%s'", client, *client?client: "DEFAULT");
if (client) free(client);
free(he);
@@ -282,8 +285,10 @@ void nfsd_fh(FILE *f)
if (readline(fileno(f), &lbuf, &lbuflen) != 1)
return;
- cp = lbuf;
+ xlog(D_CALL, "nfsd_fh: inbuf '%s'", lbuf);
+ cp = lbuf;
+
dom = malloc(strlen(cp));
if (dom == NULL)
return;
@@ -514,6 +519,7 @@ void nfsd_fh(FILE *f)
free(found_path);
free(he);
free(dom);
+ xlog(D_CALL, "nfsd_fh: found %p path %s", found, found ? found->e_path : NULL);
return;
}
@@ -607,6 +613,8 @@ void nfsd_export(FILE *f)
if (readline(fileno(f), &lbuf, &lbuflen) != 1)
return;
+ xlog(D_CALL, "nfsd_export: inbuf '%s'", lbuf);
+
cp = lbuf;
dom = malloc(strlen(cp));
path = malloc(strlen(cp));
@@ -686,6 +694,7 @@ void nfsd_export(FILE *f)
dump_to_cache(f, dom, path, NULL);
}
out:
+ xlog(D_CALL, "nfsd_export: found %p path %s", found, path ? path : NULL);
if (dom) free(dom);
if (path) free(path);
if (he) free(he);