1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-05 16:16:45 +03:00

lvremove: reduce ioctl count

Just like with deactivation, call of 'lv_is_not_in_use()'
now has embeded report for inactivate LV.

Note: this patch cannot be backported to stable-2.02 - as
there lv_is_active() has 'cluster' meaning and differs from lvinfo().
This commit is contained in:
Zdenek Kabelac 2021-03-08 14:22:43 +01:00
parent dceef4709d
commit 78c7ae7cd2

View File

@ -6602,26 +6602,27 @@ int lv_remove_single(struct cmd_context *cmd, struct logical_volume *lv,
/* FIXME Ensure not referred to by another existing LVs */
ask_discard = find_config_tree_bool(cmd, devices_issue_discards_CFG, NULL);
if (!lv_is_cache_vol(lv) &&
lv_is_active(lv)) {
if (!lv_check_not_in_use(lv, 1))
return_0;
if ((force == PROMPT) &&
!lv_is_pending_delete(lv) &&
lv_is_visible(lv)) {
if (vg->needs_write_and_commit && (!vg_write(vg) || !vg_commit(vg)))
return 0;
if (yes_no_prompt("Do you really want to remove%s active "
"%slogical volume %s? [y/n]: ",
ask_discard ? " and DISCARD" : "",
vg_is_clustered(vg) ? "clustered " : "",
display_lvname(lv)) == 'n') {
log_error("Logical volume %s not removed.", display_lvname(lv));
return 0;
if (!lv_is_cache_vol(lv)) {
switch (lv_check_not_in_use(lv, 1)) {
case 0: return_0;
case 1: /* Active, not in use */
if ((force == PROMPT) &&
!lv_is_pending_delete(lv) &&
lv_is_visible(lv)) {
if (vg->needs_write_and_commit && (!vg_write(vg) || !vg_commit(vg)))
return 0;
if (yes_no_prompt("Do you really want to remove%s active "
"%slogical volume %s? [y/n]: ",
ask_discard ? " and DISCARD" : "",
vg_is_clustered(vg) ? "clustered " : "",
display_lvname(lv)) == 'n') {
log_error("Logical volume %s not removed.", display_lvname(lv));
return 0;
}
ask_discard = 0;
}
ask_discard = 0;
break;
default: /* Not active */ ;
}
}