--- nfs-utils-1.0.9/support/nfs/exports.c.orig 2007-09-26 14:38:17.000000000 -0400 +++ nfs-utils-1.0.9/support/nfs/exports.c 2007-09-29 09:42:07.000000000 -0400 @@ -478,6 +478,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; ep->e_squids = squids; ep->e_sqgids = sqgids; --- nfs-utils-1.0.9/utils/mountd/cache.c.orig 2007-09-26 14:38:17.000000000 -0400 +++ nfs-utils-1.0.9/utils/mountd/cache.c 2007-09-27 11:57:08.000000000 -0400 @@ -59,6 +59,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 || @@ -83,6 +85,7 @@ void auth_unix_ip(FILE *f) 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); @@ -111,8 +114,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; @@ -234,6 +239,7 @@ void nfsd_fh(FILE *f) qword_eol(f); out: free(dom); + xlog(D_CALL, "nfsd_fh: found %p path %s", found, found ? found->e_path : NULL); return; } @@ -277,6 +283,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)); @@ -320,6 +328,7 @@ void nfsd_export(FILE *f) } qword_eol(f); out: + xlog(D_CALL, "nfsd_export: found %p path %s", found, path ? path : NULL); if (dom) free(dom); if (path) free(path); }