summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2012-05-01 15:24:39 -0400
committerSteve Dickson <steved@redhat.com>2012-05-01 15:29:59 -0400
commit91bb95f2689e84856ecdf6fac365489d36709cf9 (patch)
tree455328cfd6d54268fa34d1bfc34c147090544d18
parent12a31b8011ab258fc726300dcfbb7a03af74adb3 (diff)
downloadnfs-utils-91bb95f2689e84856ecdf6fac365489d36709cf9.tar.gz
nfs-utils-91bb95f2689e84856ecdf6fac365489d36709cf9.tar.xz
nfs-utils-91bb95f2689e84856ecdf6fac365489d36709cf9.zip
4set_root: force "fsid=0" for all exports of '/'
When "fsid=0" is not explicitly given in /etc/exports, v4set_root creates a pseudo (NFSEXP_V4ROOT) export for '/' with fsid 0 so that an NFSv4 client can find the root. However if '/' is explicitly exported to the client, then that explicit export must be used, and it will not have fsid=0. So we must impose fsid=0 on all exports of '/'. Without this, if '/' is exported to a client, that client will not be able to mount '/' with NFSv4. Signed-off-by: NeilBrown <neilb@suse.de> Signed-off-by: Steve Dickson <steved@redhat.com>
-rw-r--r--utils/mountd/v4root.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/utils/mountd/v4root.c b/utils/mountd/v4root.c
index 81f813b..b4fdcce 100644
--- a/utils/mountd/v4root.c
+++ b/utils/mountd/v4root.c
@@ -192,6 +192,13 @@ v4root_set()
*/
continue;
+ if (strcmp(exp->m_export.e_path, "/") == 0 &&
+ !(exp->m_export.e_flags & NFSEXP_FSID)) {
+ /* Force '/' to be exported as fsid == 0*/
+ exp->m_export.e_flags |= NFSEXP_FSID;
+ exp->m_export.e_fsid = 0;
+ }
+
v4root_add_parents(exp);
/* XXX: error handling! */
}