diff --git a/lib/label/label.c b/lib/label/label.c index 1e777d7c2..030d2c578 100644 --- a/lib/label/label.c +++ b/lib/label/label.c @@ -707,6 +707,19 @@ static int _scan_list(struct cmd_context *cmd, struct dev_filter *f, if (!rem_prefetches) break; + /* FIXME: figure better solution to avoid opening DM we shouldn't open */ + if (dm_is_dm_major(MAJOR(devl->dev->dev)) && + !device_is_usable(devl->dev, (struct dev_usable_check_params) { + .check_blocked = 1, + .check_suspended = ignore_suspended_devices(), + .check_reserved = 1, + .check_error_target = 1, + })) { + log_debug_devs("Scan skips unusuable DM device %s.", dev_name(devl->dev)); + dm_list_del(&devl->list); + continue; + } + if (!_in_bcache(devl->dev)) { if (!_scan_dev_open(devl->dev)) { log_debug_devs("Scan failed to open %s.", dev_name(devl->dev));