diff mbox

[4/6] fedfs-domainroot: Do not set "mp" export option

Message ID 20151023190733.101462.58371.stgit@seurat.1015granger.net
State Accepted
Headers show

Commit Message

Chuck Lever Oct. 23, 2015, 7:07 p.m. UTC
After setting up a new domain root, NFS clients were seeing
NFS4ERR_DELAY repeatedly when trying to access the domain root
export.

Each domain root export is of a bind mount to a directory under
/var/lib/fedfs. This forces the kernel to upcall to see whether
there is a different security policy in effect for each domain
root directory.

The "mp" export option is specified to ensure the bind mount has
completed before the NFS server exports the domain root. Removing
the "mp" export option allows clients to access the domain root
directory.

Bruce Fields observes:

> I guess it's using is_mountpoint() to check whether there's
> something mounted there, and waiting if not.  And is_mountpoint()
> says:
>
> 	We deem it to be a mountpoint if appending a ".." gives a
> 	different device or the same inode number.
>
> And I guess the bind mounts are failing that test.

Eventually the bind mounts should be replaced with something more
robust. But for 0.10-stable, just get rid of the "mp" option.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---
 src/PyFedfs/domainroot/exports.py |    6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)
diff mbox

Patch

diff --git a/src/PyFedfs/domainroot/exports.py b/src/PyFedfs/domainroot/exports.py
index 20597dc..cc0b4c0 100644
--- a/src/PyFedfs/domainroot/exports.py
+++ b/src/PyFedfs/domainroot/exports.py
@@ -63,12 +63,10 @@  def add_exports_entry(pathname):
     config.set('/files/etc/exports/dir[last()]/client[1]/option[1]',
                'ro')
     config.set('/files/etc/exports/dir[last()]/client[1]/option[2]',
-               'mp')
-    config.set('/files/etc/exports/dir[last()]/client[1]/option[3]',
                'subtree_check')
-    config.set('/files/etc/exports/dir[last()]/client[1]/option[4]',
+    config.set('/files/etc/exports/dir[last()]/client[1]/option[3]',
                'insecure')
-    config.set('/files/etc/exports/dir[last()]/client[1]/option[5]',
+    config.set('/files/etc/exports/dir[last()]/client[1]/option[4]',
                'sec=sys:none')
 
     ret = EXIT_SUCCESS