diff options
author | NeilBrown <neilb@suse.de> | 2012-05-01 15:24:39 -0400 |
---|---|---|
committer | Steve Dickson <steved@redhat.com> | 2012-05-01 15:29:59 -0400 |
commit | 91bb95f2689e84856ecdf6fac365489d36709cf9 (patch) | |
tree | 455328cfd6d54268fa34d1bfc34c147090544d18 | |
parent | 12a31b8011ab258fc726300dcfbb7a03af74adb3 (diff) | |
download | nfs-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.c | 7 |
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! */ } |