Version 2.02.75 -
=====================================
- Never scan a device which is using the error target.
+ Skip dm devices in scan if they contain only error targets.
Fix strict-aliasing compile warning in partition table scanning.
Add an option to automatically extend snapshots through dmeventd.
Remove dependency on libm, floor() is replaced with integer algorithm.
char *target_type = NULL;
char *params, *vgname = NULL, *lvname, *layer;
void *next = NULL;
+ int only_error_target = 1;
int r = 0;
if (!(dmt = dm_task_create(DM_DEVICE_STATUS))) {
- log_error("Failed to allocate dm_task struct to check dev status");
+ log_error("Failed to create dm_task struct to check dev status");
return 0;
}
name = dm_task_get_name(dmt);
uuid = dm_task_get_uuid(dmt);
+ if (!info.target_count) {
+ log_debug("%s: Empty device %s not usable.", dev_name(dev), name);
+ goto out;
+ }
+
if (info.suspended && ignore_suspended_devices()) {
log_debug("%s: Suspended device %s not usable.", dev_name(dev), name);
goto out;
goto out;
}
- if (target_type && !strcmp(target_type, "error")) {
- log_debug("%s: Error device %s not usable.",
- dev_name(dev), name);
- goto out;
- }
+ if (target_type && strcmp(target_type, "error"))
+ only_error_target = 0;
} while (next);
+ /* Skip devices consisting entirely of error targets. */
+ /* FIXME Deal with device stacked above error targets? */
+ if (only_error_target) {
+ log_debug("%s: Error device %s not usable.",
+ dev_name(dev), name);
+ goto out;
+ }
+
/* FIXME Also check dependencies? */
/* Check internal lvm devices */