diff options
author | Alasdair Kergon <agk@redhat.com> | 2007-11-07 16:33:12 +0000 |
---|---|---|
committer | Alasdair Kergon <agk@redhat.com> | 2007-11-07 16:33:12 +0000 |
commit | 19c865437a8c661045e61389dd6953047e2b9c82 (patch) | |
tree | 99b5b699a5c743ba37bb3b25a0b8252a2f74457f /lib/metadata/merge.c | |
parent | 00a7c302ead32c0c38b7204db183d1b4388067dd (diff) | |
download | lvm2-19c865437a8c661045e61389dd6953047e2b9c82.tar.gz lvm2-19c865437a8c661045e61389dd6953047e2b9c82.tar.xz lvm2-19c865437a8c661045e61389dd6953047e2b9c82.zip |
Prevent lvconvert -s from using same LV as origin and snapshot.
Diffstat (limited to 'lib/metadata/merge.c')
-rw-r--r-- | lib/metadata/merge.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/metadata/merge.c b/lib/metadata/merge.c index 8b65fad1..eb88ad73 100644 --- a/lib/metadata/merge.c +++ b/lib/metadata/merge.c @@ -119,6 +119,15 @@ int check_lv_segments(struct logical_volume *lv, int complete_vg) } } + if (seg_is_snapshot(seg)) { + if (seg->cow && seg->cow == seg->origin) { + log_error("LV %s: segment %u has same LV %s for " + "both origin and snapshot", + lv->name, seg_count, seg->cow->name); + r = 0; + } + } + for (s = 0; s < seg->area_count; s++) { if (seg_type(seg, s) == AREA_UNASSIGNED) { log_error("LV %s: segment %u has unassigned " |