[OpenWrt-Devel] [PATCH fstools] blockd: don't unmount device when removing it from the list
Rafał Miłecki
zajec5 at gmail.com
Tue Dec 4 06:32:21 EST 2018
From: Rafał Miłecki <rafal at milecki.pl>
Device gets removed from the list (vlist_delete()) when block calls
"hotplug" method of blockd using ubus. Right after that block unmounts
that device on its own.
blockd shouldn't care about unmounting on its own for following reasons:
1) To avoid code/behavior duplication with block
2) To keep behavior consistent with mounting (blockd doesn't mount)
3) To allow implementing more features in block (e.g. hotplug.d events)
The design should be to:
1) Have block handle (un)mounting
2) Use blockd for providing devices/mounts state (using ubus)
3) Have blockd handle autofs and call block when needed
Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
---
blockd.c | 26 ++------------------------
1 file changed, 2 insertions(+), 24 deletions(-)
diff --git a/blockd.c b/blockd.c
index a5da32c..1379635 100644
--- a/blockd.c
+++ b/blockd.c
@@ -112,34 +112,12 @@ static void
device_free(struct device *device)
{
struct blob_attr *data[__MOUNT_MAX];
- char *target = NULL;
- char *path = NULL, _path[64], *mp;
blobmsg_parse(mount_policy, __MOUNT_MAX, data,
blob_data(device->msg), blob_len(device->msg));
- if (data[MOUNT_AUTOFS]) {
- target = device->target;
- snprintf(_path, sizeof(_path), "/tmp/run/blockd/%s",
- blobmsg_get_string(data[MOUNT_DEVICE]));
- path = _path;
- } else {
- path = target = device->target;
- }
-
- mp = _find_mount_point(device->name);
- if (path && mp)
- if (umount2(path, MNT_DETACH))
- ULOG_ERR("failed to unmount %s\n", path);
- free(mp);
-
- if (!target)
- return;
-
- if (data[MOUNT_AUTOFS])
- unlink(target);
- else
- rmdir(target);
+ if (data[MOUNT_AUTOFS] && device->target)
+ unlink(device->target);
}
static void
--
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