diff options
author | Alasdair G Kergon <agk@redhat.com> | 2016-07-05 23:08:14 +0100 |
---|---|---|
committer | Alasdair G Kergon <agk@redhat.com> | 2016-07-05 23:08:14 +0100 |
commit | dfcdfa057bad1ea231f89b11ebcc761ffc49d922 (patch) | |
tree | 022c5c62ef00965007d62ed8c4115b0db38fcff1 | |
parent | 4d4f48af9f18b9407c065cdc035cf8e397e08ac0 (diff) | |
download | lvm2-dfcdfa057bad1ea231f89b11ebcc761ffc49d922.tar.gz |
vgsplit: Don't skip moving internal snapshot LV.
Also place snapshot LV handling back at the end, after all possible
origin and cow LVs got dealt with.
-rw-r--r-- | tools/vgsplit.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/tools/vgsplit.c b/tools/vgsplit.c index afe87afba..221600e82 100644 --- a/tools/vgsplit.c +++ b/tools/vgsplit.c @@ -190,10 +190,6 @@ static int _move_snapshots(struct volume_group *vg_from, if (!(lv->status & SNAPSHOT)) continue; - /* Ignore, if no allocations on PVs of @vg_to */ - if (!lv_is_on_pvs(lv, &vg_to->pvs)) - continue; - dm_list_iterate_items(seg, &lv->segments) { cow_from = _lv_is_in_vg(vg_from, seg->cow); origin_from = _lv_is_in_vg(vg_from, seg->origin); @@ -680,17 +676,18 @@ int vgsplit(struct cmd_context *cmd, int argc, char **argv) if (!(_move_mirrors(vg_from, vg_to))) goto_bad; - /* Move required snapshots across */ - if (!(_move_snapshots(vg_from, vg_to))) - goto_bad; - /* Move required pools across */ if (!(_move_thins(vg_from, vg_to))) goto_bad; + /* Move required cache LVs across */ if (!(_move_cache(vg_from, vg_to))) goto_bad; + /* Move required snapshots across */ + if (!(_move_snapshots(vg_from, vg_to))) + goto_bad; + /* Split metadata areas and check if both vgs have at least one area */ if (!(vg_split_mdas(cmd, vg_from, vg_to)) && vg_from->pv_count) { log_error("Cannot split: Nowhere to store metadata for new Volume Group"); |