if (!dm_task_get_info(dmt, &info))
goto_out;
- if (!info.exists || info.suspended)
+ if (!info.exists)
goto out;
name = dm_task_get_name(dmt);
uuid = dm_task_get_uuid(dmt);
+ if (info.suspended && ignore_suspended_devices()) {
+ log_debug("%s: Suspended device %s not usable.", dev_name(dev), name);
+ goto out;
+ }
+
/* FIXME Also check for mirror block_on_error and mpath no paths */
/* For now, we exclude all mirrors */
next = dm_get_next_target(dmt, next, &start, &length,
&target_type, ¶ms);
/* Skip if target type doesn't match */
- if (target_type && !strcmp(target_type, "mirror")) {
- log_debug("%s: Mirror device not usable.", dev_name(dev));
+ if (target_type && !strcmp(target_type, "mirror") && ignore_suspended_devices()) {
+ log_debug("%s: Mirror device %s not usable.", dev_name(dev), name);
goto out;
}
} while (next);
if (!l)
dm_list_iterate_items(sl, &dev->aliases)
dm_hash_insert(pf->devices, sl->str, PF_GOOD_DEVICE);
- if (ignore_suspended_devices() && !device_is_usable(dev)) {
- log_debug("%s: Skipping (suspended/internal)", dev_name(dev));
+ if (!device_is_usable(dev)) {
+ log_debug("%s: Skipping unusable device", dev_name(dev));
return 0;
}
return pf->real->passes_filter(pf->real, dev);