summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2021-02-10 00:43:40 +0100
committerZdenek Kabelac <zkabelac@redhat.com>2021-02-10 15:39:03 +0100
commita3835861774f4758e0de2a4b462eb51b91a3f09b (patch)
treec5d8dcaadeec04fa02abf69386d74d7acbe039da
parentf90082ce8f218781ff3b9361e748dbff0ff0e2e3 (diff)
downloadlvm2-a3835861774f4758e0de2a4b462eb51b91a3f09b.tar.gz
label: avoid rescaning unusable DM devices
-rw-r--r--lib/label/label.c13
1 files changed, 13 insertions, 0 deletions
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));