diff options
| author | Rafał Miłecki | 2018-11-30 13:09:23 +0000 |
|---|---|---|
| committer | Rafał Miłecki | 2018-12-04 08:15:36 +0000 |
| commit | a778468bca43a269d80b31b5d7b96bf745a00f38 (patch) | |
| tree | 3137641c5226f8cb114f063bf974ca7c3752cba8 | |
| parent | 5dc631d19f6031cdbc426c9719affa4af858b35a (diff) | |
| download | fstools-a778468bca43a269d80b31b5d7b96bf745a00f38.tar.gz | |
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 <rafal@milecki.pl>
Reviewed-by: Michael Heimpold <mhei@heimpold.de>
| -rw-r--r-- | block.c | 49 |
1 files changed, 20 insertions, 29 deletions
@@ -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; } |