summaryrefslogtreecommitdiff
path: root/lib/thin
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2014-01-29 14:27:13 +0100
committerZdenek Kabelac <zkabelac@redhat.com>2014-01-29 14:58:13 +0100
commit155405b0e1d310fbc44f263c5e3a5c5d23043207 (patch)
treed9dfc39818e8e2f9e3837925b09e3e486eaad7db /lib/thin
parent8074d8056acd419fd38d53b32db5373df76d825f (diff)
downloadlvm2-155405b0e1d310fbc44f263c5e3a5c5d23043207.tar.gz
thin: validate external origin size
Avoid use of external origin with size unaligned/incompatible with thin pool chunk size, since the last chunk is not correctly provisioned when it is overwritten.
Diffstat (limited to 'lib/thin')
-rw-r--r--lib/thin/thin.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/thin/thin.c b/lib/thin/thin.c
index 0b8eaf8b5..8eaa73d78 100644
--- a/lib/thin/thin.c
+++ b/lib/thin/thin.c
@@ -561,6 +561,8 @@ static int _thin_add_target_line(struct dev_manager *dm,
/* Add external origin LV */
if (seg->external_lv) {
+ if (!pool_supports_external_origin(first_seg(seg->pool_lv), seg->external_lv))
+ return_0;
if (seg->external_lv->size < seg->lv->size) {
/* Validate target supports smaller external origin */
if (!_thin_target_present(cmd, first_seg(seg->pool_lv), &attr) ||