[PATCH 27/32] autofs-5.1.5 - move unlink_mount_tree() to lib/mounts.c

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Both daemon/direct.c and daemon/indirect.c use the same function to
lazy umount a list of mounts, move that function to lib/mounts.c.

Signed-off-by: Ian Kent <raven@xxxxxxxxxx>
---
 CHANGELOG         |    1 +
 daemon/direct.c   |    2 --
 daemon/indirect.c |   34 ----------------------------------
 include/mounts.h  |    1 +
 lib/mounts.c      |   35 +++++++++++++++++++++++++++++++++++
 5 files changed, 37 insertions(+), 36 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 60826d8c..023bfdf7 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -33,6 +33,7 @@ xx/xx/2019 autofs-5.1.6
 - refactor unlink_active_mounts() in direct.c.
 - don't use tree_is_mounted() for mounted checks.
 - use single unlink_umount_tree() for both direct and indirect mounts.
+- move unlink_mount_tree() to lib/mounts.c.
 
 30/10/2018 autofs-5.1.5
 - fix flag file permission.
diff --git a/daemon/direct.c b/daemon/direct.c
index f9ffaaae..1cc66237 100644
--- a/daemon/direct.c
+++ b/daemon/direct.c
@@ -49,8 +49,6 @@ pthread_key_t key_mnt_direct_params;
 pthread_key_t key_mnt_offset_params;
 pthread_once_t key_mnt_params_once = PTHREAD_ONCE_INIT;
 
-int unlink_mount_tree(struct autofs_point *ap, struct mnt_list *mnts);
-
 static void key_mnt_params_destroy(void *arg)
 {
 	struct mnt_params *mp;
diff --git a/daemon/indirect.c b/daemon/indirect.c
index 750a563f..1ef481ee 100644
--- a/daemon/indirect.c
+++ b/daemon/indirect.c
@@ -40,40 +40,6 @@
 /* Attribute to create detached thread */
 extern pthread_attr_t th_attr_detached;
 
-int unlink_mount_tree(struct autofs_point *ap, struct mnt_list *mnts)
-{
-	struct mnt_list *this;
-	int rv, ret;
-
-	ret = 1;
-	this = mnts;
-	while (this) {
-		if (this->flags & MNTS_AUTOFS)
-			rv = umount2(this->mp, MNT_DETACH);
-		else
-			rv = spawn_umount(ap->logopt, "-l", this->mp, NULL);
-		if (rv == -1) {
-			debug(ap->logopt,
-			      "can't unlink %s from mount tree", this->mp);
-
-			switch (errno) {
-			case EINVAL:
-				warn(ap->logopt,
-				      "bad superblock or not mounted");
-				break;
-
-			case ENOENT:
-			case EFAULT:
-				ret = 0;
-				warn(ap->logopt, "bad path for mount");
-				break;
-			}
-		}
-		this = this->next;
-	}
-	return ret;
-}
-
 static int do_mount_autofs_indirect(struct autofs_point *ap, const char *root)
 {
 	const char *str_indirect = mount_type_str(t_indirect);
diff --git a/include/mounts.h b/include/mounts.h
index 3e2c2665..27a224c7 100644
--- a/include/mounts.h
+++ b/include/mounts.h
@@ -100,6 +100,7 @@ int ext_mount_add(struct list_head *, const char *, unsigned int);
 int ext_mount_remove(struct list_head *, const char *);
 int ext_mount_inuse(const char *);
 struct mnt_list *get_mnt_list(const char *path, int include);
+int unlink_mount_tree(struct autofs_point *ap, struct mnt_list *mnts);
 void free_mnt_list(struct mnt_list *list);
 int is_mounted(const char *mp, unsigned int type);
 void tree_free_mnt_tree(struct mnt_list *tree);
diff --git a/lib/mounts.c b/lib/mounts.c
index 10827710..64924737 100644
--- a/lib/mounts.c
+++ b/lib/mounts.c
@@ -881,6 +881,41 @@ local_getmntent_r(FILE *tab, struct mntent *mnt, char *buf, int size)
 	return mnt;
 }
 
+int unlink_mount_tree(struct autofs_point *ap, struct mnt_list *mnts)
+{
+	struct mnt_list *this;
+	int rv, ret;
+
+	ret = 1;
+	this = mnts;
+	while (this) {
+		if (this->flags & MNTS_AUTOFS)
+			rv = umount2(this->mp, MNT_DETACH);
+		else
+			rv = spawn_umount(ap->logopt, "-l", this->mp, NULL);
+		if (rv == -1) {
+			debug(ap->logopt,
+			      "can't unlink %s from mount tree", this->mp);
+
+			switch (errno) {
+			case EINVAL:
+				warn(ap->logopt,
+				      "bad superblock or not mounted");
+				break;
+
+			case ENOENT:
+			case EFAULT:
+				ret = 0;
+				warn(ap->logopt, "bad path for mount");
+				break;
+			}
+		}
+		this = this->next;
+	}
+
+	return ret;
+}
+
 /*
  * Get list of mounts under path in longest->shortest order
  */




[Index of Archives]     [Linux Filesystem Development]     [Linux Ext4]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux