[OpenWrt-Devel] [PATCH fstools 4/4] block: don't duplicate mounting code in the mount_device()

Rafał Miłecki zajec5 at gmail.com
Fri Nov 30 08:09:23 EST 2018


From: Rafał Miłecki <rafal at milecki.pl>

Once target directory gets specified mounting code is identical for
devices having and not having UCI config entry. Share it.

Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
---
 block.c | 49 ++++++++++++++++++++-----------------------------
 1 file changed, 20 insertions(+), 29 deletions(-)

diff --git a/block.c b/block.c
index 0671aca..a356315 100644
--- a/block.c
+++ b/block.c
@@ -992,8 +992,11 @@ static void blockd_notify(char *device, struct mount *m, struct probe_info *pr)
 static int mount_device(struct probe_info *pr, int type)
 {
 	struct mount *m;
+	char _target[32];
+	char *target;
 	char *device;
 	char *mp;
+	int err;
 
 	if (!pr)
 		return -1;
@@ -1024,11 +1027,8 @@ static int mount_device(struct probe_info *pr, int type)
 	if (type == TYPE_HOTPLUG)
 		blockd_notify(device, m, pr);
 
+	/* Check if device should be mounted & set the target directory */
 	if (m) {
-		char _target[32];
-		char *target;
-		int err = 0;
-
 		switch (type) {
 		case TYPE_HOTPLUG:
 			if (m->autofs)
@@ -1055,39 +1055,30 @@ static int mount_device(struct probe_info *pr, int type)
 			snprintf(_target, sizeof(_target), "/mnt/%s", device);
 			target = _target;
 		}
-		mkdir_p(target);
-
-		if (check_fs)
-			check_filesystem(pr);
-
-		err = handle_mount(pr->dev, target, pr->type, m);
-		if (err)
-			ULOG_ERR("mounting %s (%s) as %s failed (%d) - %m\n",
-			         pr->dev, pr->type, target, errno);
-		else
-			handle_swapfiles(true);
-		return err;
+	} else if (anon_mount) {
+		snprintf(_target, sizeof(_target), "/mnt/%s", device);
+		target = _target;
+	} else {
+		/* No reason to mount this device */
+		return 0;
 	}
 
-	if (anon_mount) {
-		char target[32];
-		int err = 0;
+	/* Mount the device */
 
-		snprintf(target, sizeof(target), "/mnt/%s", device);
-		mkdir_p(target);
+	if (check_fs)
+		check_filesystem(pr);
 
-		if (check_fs)
-			check_filesystem(pr);
+	mkdir_p(target);
 
-		err = handle_mount(pr->dev, target, pr->type, NULL);
-		if (err)
-			ULOG_ERR("mounting %s (%s) as %s failed (%d) - %m\n",
-			         pr->dev, pr->type, target, errno);
-		else
-			handle_swapfiles(true);
+	err = handle_mount(pr->dev, target, pr->type, m);
+	if (err) {
+		ULOG_ERR("mounting %s (%s) as %s failed (%d) - %m\n",
+				pr->dev, pr->type, target, errno);
 		return err;
 	}
 
+	handle_swapfiles(true);
+
 	return 0;
 }
 
-- 
2.13.7


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


More information about the openwrt-devel mailing list