mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-03 05:18:29 +03:00
RAID: Improve an error message
When down-converting a RAID1 LV, if the user specifies too few devices, they will get a confusing message. Ex: [root]# lvcreate -m 2 --type raid1 -n raid -L 500M taft Logical volume "raid" created [root]# lvconvert -m 0 taft/raid /dev/sdd1 Unable to extract enough images to satisfy request Failed to extract images from taft/raid This patch makes the error message a bit clearer by telling the user the count they are trying to remove and the number of devices they supplied. [root@bp-01 lvm2]# lvcreate --type raid1 -m 3 -L 200M -n lv vg Logical volume "lv" created [root@bp-01 lvm2]# lvconvert -m -3 vg/lv /dev/sdb1 Unable to remove 3 images: Only 1 device given. Failed to extract images from vg/lv [root@bp-01 lvm2]# lvconvert -m -3 vg/lv /dev/sd[bc]1 Unable to remove 3 images: Only 2 devices given. Failed to extract images from vg/lv [root@bp-01 lvm2]# lvconvert -m -3 vg/lv /dev/sd[bcd]1 [root@bp-01 lvm2]# lvs -a -o name,attr,devices vg LV Attr Devices lv -wi-a----- /dev/sde1(1) This patch doesn't work in all cases. The user can specify the right number of devices, but not a sufficient amount of devices from the LV. This will produce the old error message: [root@bp-01 lvm2]# lvconvert -m -3 vg/lv /dev/sd[bcf]1 Unable to extract enough images to satisfy request Failed to extract images from vg/lv However, I think this error message is sufficient for this case.
This commit is contained in:
parent
f242c0611d
commit
6c6468f91d
@ -840,6 +840,12 @@ static int _raid_extract_images(struct logical_volume *lv, uint32_t new_count,
|
||||
log_verbose("Extracting %u %s from %s/%s", extract,
|
||||
(extract > 1) ? "images" : "image",
|
||||
lv->vg->name, lv->name);
|
||||
if (dm_list_size(target_pvs) < extract) {
|
||||
log_error("Unable to remove %d images: Only %d device%s given.",
|
||||
extract, dm_list_size(target_pvs),
|
||||
(dm_list_size(target_pvs) == 1) ? "" : "s");
|
||||
return 0;
|
||||
}
|
||||
|
||||
lvl_array = dm_pool_alloc(lv->vg->vgmem,
|
||||
sizeof(*lvl_array) * extract * 2);
|
||||
|
Loading…
Reference in New Issue
Block a user