mirror of
git://sourceware.org/git/lvm2.git
synced 2024-10-28 03:27:58 +03:00
be75076dfc
Currently, we have two modes of activation, an unnamed nominal mode (which I will refer to as "complete") and "partial" mode. The "complete" mode requires that a volume group be 'complete' - that is, no missing PVs. If there are any missing PVs, no affected LVs are allowed to activate - even RAID LVs which might be able to tolerate a failure. The "partial" mode allows anything to be activated (or at least attempted). If a non-redundant LV is missing a portion of its addressable space due to a device failure, it will be replaced with an error target. RAID LVs will either activate or fail to activate depending on how badly their redundancy is compromised. This patch adds a third option, "degraded" mode. This mode can be selected via the '--activationmode {complete|degraded|partial}' option to lvchange/vgchange. It can also be set in lvm.conf. The "degraded" activation mode allows RAID LVs with a sufficient level of redundancy to activate (e.g. a RAID5 LV with one device failure, a RAID6 with two device failures, or RAID1 with n-1 failures). RAID LVs with too many device failures are not allowed to activate - nor are any non-redundant LVs that may have been affected. This patch also makes the "degraded" mode the default activation mode. The degraded activation mode does not yet work in a cluster. A new cluster lock flag (LCK_DEGRADED_MODE) will need to be created to make that work. Currently, there is limited space for this extra flag and I am looking for possible solutions. One possible solution is to usurp LCK_CONVERT, as it is not used. When the locking_type is 3, the degraded mode flag simply gets dropped and the old ("complete") behavior is exhibited. |
||
---|---|---|
.. | ||
.exported_symbols | ||
.gitignore | ||
args.h | ||
cmdnames.h | ||
commands.h | ||
dmsetup.c | ||
dumpconfig.c | ||
errors.h | ||
formats.c | ||
lvchange.c | ||
lvconvert.c | ||
lvcreate.c | ||
lvdisplay.c | ||
lvextend.c | ||
lvm2cmd-static.c | ||
lvm2cmd.c | ||
lvm2cmd.h | ||
lvm2cmdline.h | ||
lvm-static.c | ||
lvm.c | ||
lvmchange.c | ||
lvmcmdlib.c | ||
lvmcmdline.c | ||
lvmdiskscan.c | ||
lvreduce.c | ||
lvremove.c | ||
lvrename.c | ||
lvresize.c | ||
lvscan.c | ||
Makefile.in | ||
polldaemon.c | ||
polldaemon.h | ||
pvchange.c | ||
pvck.c | ||
pvcreate.c | ||
pvdisplay.c | ||
pvmove.c | ||
pvremove.c | ||
pvresize.c | ||
pvscan.c | ||
reporter.c | ||
segtypes.c | ||
stub.h | ||
tags.c | ||
toollib.c | ||
toollib.h | ||
tools.h | ||
vgcfgbackup.c | ||
vgcfgrestore.c | ||
vgchange.c | ||
vgck.c | ||
vgconvert.c | ||
vgcreate.c | ||
vgdisplay.c | ||
vgexport.c | ||
vgextend.c | ||
vgimport.c | ||
vgmerge.c | ||
vgmknodes.c | ||
vgreduce.c | ||
vgremove.c | ||
vgrename.c | ||
vgscan.c | ||
vgsplit.c |