mirror of
git://sourceware.org/git/lvm2.git
synced 2025-03-22 06:50:52 +03:00
writecache: disallow partial or degraded activation
when either main or fast lvs are incomplete
This commit is contained in:
parent
830c20d33c
commit
020d1edaa0
@ -2530,6 +2530,14 @@ static int _lv_activate(struct cmd_context *cmd, const char *lvid_s,
|
||||
}
|
||||
}
|
||||
|
||||
if ((cmd->partial_activation || cmd->degraded_activation) && lv_is_writecache(lv)) {
|
||||
struct logical_volume *lv_fast = first_seg(lv)->writecache;
|
||||
if (lv_is_partial(lv) || (lv_fast && lv_is_partial(lv_fast))) {
|
||||
log_error("Cannot use partial or degraded activation with writecache.");
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
if (lv_has_unknown_segments(lv)) {
|
||||
log_error("Refusing activation of LV %s containing "
|
||||
"an unrecognised segment.", display_lvname(lv));
|
||||
|
@ -77,5 +77,34 @@ pvmove -n $vg/$lv1 "$dev3" "$dev1"
|
||||
|
||||
mount_umount $lv1
|
||||
lvchange -an $vg/$lv1
|
||||
lvremove -y $vg/$lv1
|
||||
|
||||
|
||||
#
|
||||
# Test partial and degraded activation
|
||||
#
|
||||
|
||||
lvcreate -n $lv1 -l 16 -an $vg "$dev1" "$dev2"
|
||||
lvcreate -n $lv2 -l 16 -an $vg "$dev3" "$dev4"
|
||||
|
||||
lvconvert -y --type writecache --cachevol $lv2 $vg/$lv1
|
||||
lvs -a -o+devices $vg
|
||||
lvchange -an $vg/$lv1
|
||||
|
||||
aux hide_dev "$dev1"
|
||||
not lvchange -ay $vg/$lv1
|
||||
not lvchange -ay --partial $vg/$lv1
|
||||
not lvchange -ay --activationmode degraded $vg/$lv1
|
||||
aux unhide_dev "$dev1"
|
||||
lvchange -ay $vg/$lv1
|
||||
lvchange -an $vg/$lv1
|
||||
|
||||
aux hide_dev "$dev3"
|
||||
not lvchange -ay $vg/$lv1
|
||||
not lvchange -ay --partial $vg/$lv1
|
||||
not lvchange -ay --activationmode degraded $vg/$lv1
|
||||
aux unhide_dev "$dev3"
|
||||
lvchange -ay $vg/$lv1
|
||||
lvchange -an $vg/$lv1
|
||||
|
||||
vgremove -ff $vg
|
||||
|
Loading…
x
Reference in New Issue
Block a user