mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
Fix "lvremove -f vgname" when vgname contains snapshots.
Prior to this patch, "lvremove -f vgname" would fail if vgname contained one or more snapshot LVs. Now this passes, but has a side-effect. If you issue "lvremove vgname" where vgname contains one or more snaps, you will get an extra "y/n" prompt to remove the same snapshot. Example: $ lvs LV VG Attr LSize Origin Snap% Move Log Copy% Convert lvsnap vgtest swi-a- 16.00M lvtest 0.05 lvtest vgtest owi-a- 64.00M $ lvremove vgtest Do you really want to remove active logical volume "lvsnap"? [y/n]: n Logical volume "lvsnap" not removed Do you really want to remove active logical volume "lvsnap"? [y/n]: n Logical volume "lvsnap" not removed Command failed with status code 5. Fixing this will most likely require modification of the iterator function, process_each_lvs_in_vg() to iterate over snaps in some cases (e.g. lvs, vgdisplay -v) but not in others (lvremove).
This commit is contained in:
parent
cee9a8d87e
commit
da52655315
@ -1,5 +1,6 @@
|
||||
Version 2.02.43 - 10th November 2008
|
||||
====================================
|
||||
Cope with snapshot dependencies when removing a whole VG with lvremove.
|
||||
Make man pages consistent with either-or options (use "|" everywhere).
|
||||
Merge device-mapper into the lvm2 tree.
|
||||
Correct prototype for --permission on lvchange and lvcreate man pages.
|
||||
|
@ -12,6 +12,7 @@ lvremove \- remove a logical volume
|
||||
Confirmation will be requested before deactivating any active logical
|
||||
volume prior to removal. Logical volumes cannot be deactivated
|
||||
or removed while they are open (e.g. if they contain a mounted filesystem).
|
||||
Removing an origin logical volume will also remove all dependent snapshots.
|
||||
.sp
|
||||
If the logical volume is clustered then it must be deactivated on all
|
||||
nodes in the cluster before it can be removed. A single lvchange command
|
||||
|
@ -18,7 +18,7 @@
|
||||
static int lvremove_single(struct cmd_context *cmd, struct logical_volume *lv,
|
||||
void *handle __attribute((unused)))
|
||||
{
|
||||
if (!lv_remove_single(cmd, lv, arg_count(cmd, force_ARG)))
|
||||
if (!lv_remove_with_dependencies(cmd, lv, arg_count(cmd, force_ARG)))
|
||||
return ECMD_FAILED;
|
||||
|
||||
return ECMD_PROCESSED;
|
||||
|
Loading…
Reference in New Issue
Block a user