From a778468bca43a269d80b31b5d7b96bf745a00f38 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rafa=C5=82=20Mi=C5=82ecki?= Date: Fri, 30 Nov 2018 14:09:23 +0100 Subject: [PATCH] block: don't duplicate mounting code in the mount_device() MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Reviewed-by: Michael Heimpold --- 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.30.2