summaryrefslogtreecommitdiffstats
path: root/tools/lvcreate.c
diff options
context:
space:
mode:
authorAlasdair Kergon <agk@redhat.com>2009-05-27 18:19:21 +0000
committerAlasdair Kergon <agk@redhat.com>2009-05-27 18:19:21 +0000
commit99113cc588d14b6c692bb1cb65a0891e575d9861 (patch)
treeacd4695c142387acc1a304d0d0a0a154ea63d9c7 /tools/lvcreate.c
parent154753db8b7595525f7b9b33b517eab946e0ec51 (diff)
downloadlvm2-99113cc588d14b6c692bb1cb65a0891e575d9861.tar.gz
lvm2-99113cc588d14b6c692bb1cb65a0891e575d9861.tar.xz
lvm2-99113cc588d14b6c692bb1cb65a0891e575d9861.zip
Suppress 'removed' messages displayed when internal LVs are removed.
Fix lvchange -a and -p for sparse LVs. Fix lvcreate --virtualsize to activate the new device immediately.
Diffstat (limited to 'tools/lvcreate.c')
-rw-r--r--tools/lvcreate.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/tools/lvcreate.c b/tools/lvcreate.c
index b7dce37b..208299d2 100644
--- a/tools/lvcreate.c
+++ b/tools/lvcreate.c
@@ -910,12 +910,16 @@ static int _lvcreate(struct cmd_context *cmd, struct volume_group *vg,
return 0;
}
+ /* A virtual origin must be activated explicitly. */
if (lp->voriginsize &&
- !(org = _create_virtual_origin(cmd, vg, lv->name,
- lp->permission,
- lp->voriginextents))) {
+ (!(org = _create_virtual_origin(cmd, vg, lv->name,
+ lp->permission,
+ lp->voriginextents)) ||
+ !activate_lv(cmd, org))) {
log_error("Couldn't create virtual origin for LV %s",
lv->name);
+ if (org && !lv_remove(org))
+ stack;
goto deactivate_and_revert_new_lv;
}