From: Rafał Miłecki Date: Fri, 30 Nov 2018 13:09:23 +0000 (+0100) Subject: block: don't duplicate mounting code in the mount_device() X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=a778468bca43a269d80b31b5d7b96bf745a00f38;p=project%2Ffstools.git block: don't duplicate mounting code in the mount_device() 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 --- 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; }