From: Daniel Golle Date: Wed, 12 May 2021 17:05:37 +0000 (+0100) Subject: block: match device path instead of assuming /dev/%s X-Git-Url: http://git.openwrt.org/?p=project%2Ffstools.git;a=commitdiff_plain;h=67d229724865a157592f88863b788e1fd35a2bd4 block: match device path instead of assuming /dev/%s Block devices created by device mapper are in /dev/mapper/ folder, hence the assumption of the 'block' tool expecting /dev/%s being the path of a device doesn't hold true. Match device path from cache instead. Signed-off-by: Daniel Golle --- diff --git a/block.c b/block.c index a613fd7..de6229d 100644 --- a/block.c +++ b/block.c @@ -1135,11 +1135,23 @@ static int umount_device(char *path, int type, bool all) static int mount_action(char *action, char *device, int type) { - char path[32]; + char *path = NULL; + struct probe_info *pr; if (!action || !device) return -1; - snprintf(path, sizeof(path), "/dev/%s", device); + + if (config_load(NULL)) + return -1; + + cache_load(1); + + list_for_each_entry(pr, &devices, list) + if (!strcmp(basename(pr->dev), device)) + path = pr->dev; + + if (!path) + return -1; if (!strcmp(action, "remove")) { if (type == TYPE_HOTPLUG) @@ -1154,10 +1166,6 @@ static int mount_action(char *action, char *device, int type) return -1; } - if (config_load(NULL)) - return -1; - cache_load(0); - return mount_device(find_block_info(NULL, NULL, path), type); }