[lvm-devel] main - lvremove: reduce ioctl count
Zdenek Kabelac
zkabelac at sourceware.org
Mon Mar 8 14:46:46 UTC 2021
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=78c7ae7cd2dab7abf9ece9bec37979fa3b33c978
Commit: 78c7ae7cd2dab7abf9ece9bec37979fa3b33c978
Parent: dceef4709d7ee5d06fb61120cc15fc29feb3e6b8
Author: Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate: Mon Mar 8 14:22:43 2021 +0100
Committer: Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Mon Mar 8 15:32:10 2021 +0100
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().
---
lib/metadata/lv_manip.c | 39 ++++++++++++++++++++-------------------
1 file changed, 20 insertions(+), 19 deletions(-)
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
index b93f18e6e..5573e6f43 100644
--- a/lib/metadata/lv_manip.c
+++ b/lib/metadata/lv_manip.c
@@ -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 */ ;
}
}
More information about the lvm-devel
mailing list