Blob Blame History Raw
autofs-5.0.3 - allow directory create on NFS root

From: Matthias Koenig <mkoenig@suse.de>

autofs will not create the autofs mountpoint path if the filesystem is
not a locally mounted filesystem (e.g. a NFS mounted filesystem).

contained_in_local_fs() returns false in this case. This is intentional
but breaks clients that have an NFS root filesystem. In this case we
shouldn't impose this restriction.
---

 CHANGELOG    |    1 +
 lib/mounts.c |    8 +++++++-
 2 files changed, 8 insertions(+), 1 deletions(-)


diff --git a/CHANGELOG b/CHANGELOG
index f7aa839..2553f26 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -19,6 +19,7 @@
 - check for map key in (possible) alternate map sources when doing lookup.
 - eliminate redundant DNS name lookups.
 - additional fix incorrect pthreads condition handling for mount requests.
+- allow mount point directory creation for clients with an NFS root.
  
 14/01/2008 autofs-5.0.3
 -----------------------
diff --git a/lib/mounts.c b/lib/mounts.c
index 425a65a..b987fbb 100644
--- a/lib/mounts.c
+++ b/lib/mounts.c
@@ -363,7 +363,13 @@ int contained_in_local_fs(const char *path)
 		if (!strncmp(path, this->path, len)) {
 			if (len > 1 && pathlen > len && path[len] != '/')
 				continue;
-			else if (this->fs_name[0] == '/') {
+			else if (len == 1 && this->path[0] == '/') {
+				/*
+				 * always return true on rootfs, we don't
+				 * want to break diskless clients.
+				 */
+				ret = 1;
+			} else if (this->fs_name[0] == '/') {
 				if (strlen(this->fs_name) > 1) {
 					if (this->fs_name[1] != '/')
 						ret = 1;