summaryrefslogtreecommitdiff
path: root/lib/activate
diff options
context:
space:
mode:
authorDavid Teigland <teigland@redhat.com>2020-10-26 15:35:23 -0500
committerDavid Teigland <teigland@redhat.com>2020-10-26 15:48:58 -0500
commit020d1edaa06e5e05b58e8d39530408f86a22d1b8 (patch)
tree0ab2fc61e8bd9ad717c4811a7fe029a76e671132 /lib/activate
parent830c20d33cc8253c397e927291d51c249c2c0eb3 (diff)
downloadlvm2-020d1edaa06e5e05b58e8d39530408f86a22d1b8.tar.gz
writecache: disallow partial or degraded activation
when either main or fast lvs are incomplete
Diffstat (limited to 'lib/activate')
-rw-r--r--lib/activate/activate.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/activate/activate.c b/lib/activate/activate.c
index 311d33a52..7ed644113 100644
--- a/lib/activate/activate.c
+++ b/lib/activate/activate.c
@@ -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));