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 <daniel@makrotopia.org>
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)
return -1;
}
- if (config_load(NULL))
- return -1;
- cache_load(0);
-
return mount_device(find_block_info(NULL, NULL, path), type);
}