1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-01-03 05:18:29 +03:00

restrict last checkin to devs consisting entirely of error target

This commit is contained in:
Alasdair Kergon 2010-10-25 10:37:34 +00:00
parent 06808d3357
commit 727d065f6e
2 changed files with 18 additions and 7 deletions

View File

@ -1,6 +1,6 @@
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.

View File

@ -135,10 +135,11 @@ int device_is_usable(struct device *dev)
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;
}
@ -159,6 +160,11 @@ int device_is_usable(struct device *dev)
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;
@ -191,12 +197,17 @@ int device_is_usable(struct device *dev)
goto out;
}
if (target_type && !strcmp(target_type, "error")) {
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;
}
} while (next);
/* FIXME Also check dependencies? */