1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

cleanup: improve tag processing

Boolean algebra changes for process_each_lv_in_vg().

1st.
Drop process_lv variable since it's not needed.

2nd.
process_lv was always initilized to 0 - so the condition was always true.
It the condition (!tags_supplied && !lvargs_supplied) evaluates as "true",
process_all is already set to 1, so skip vg tags evaluation.

3rd.
Move check for matching lv name in the front of lv tags check
since this check can't be skipped for lvargs_matched counter.
If this filter evaluates to true, skip lv tags evaluation.
This commit is contained in:
Zdenek Kabelac 2011-11-08 23:29:40 +01:00
parent 1c2cc2f794
commit fe21b02fab
2 changed files with 9 additions and 22 deletions

View File

@ -1,5 +1,6 @@
Version 2.02.105 -
=====================================
Improve process_each_lv_in_vg() tag processing.
Reodered and simplified logging code.
Fix SYSTEMD_READY assignment for foreign devices in lvmetad udev rules.
Disable online thin pool metadata resize for 1.9 kernel thin target.

View File

@ -192,7 +192,6 @@ int process_each_lv_in_vg(struct cmd_context *cmd,
int ret_max = ECMD_PROCESSED;
int ret;
unsigned process_all = 0;
unsigned process_lv = 0;
unsigned tags_supplied = 0;
unsigned lvargs_supplied = 0;
unsigned lvargs_matched = 0;
@ -211,12 +210,10 @@ int process_each_lv_in_vg(struct cmd_context *cmd,
/* Process all LVs in this VG if no restrictions given */
if (!tags_supplied && !lvargs_supplied)
process_all = 1;
/* Or if VG tags match */
if (!process_lv && tags_supplied &&
str_list_match_list(tags, &vg->tags, NULL)) {
else if (tags_supplied &&
str_list_match_list(tags, &vg->tags, NULL))
process_all = 1;
}
/*
* FIXME: In case of remove it goes through deleted entries,
@ -242,26 +239,15 @@ int process_each_lv_in_vg(struct cmd_context *cmd,
if (!lvargs_supplied && !lv_is_visible(lvl->lv) && !arg_count(cmd, all_ARG))
continue;
/* Should we process this LV? */
if (process_all)
process_lv = 1;
else
process_lv = 0;
/* LV tag match? */
if (!process_lv && tags_supplied &&
str_list_match_list(tags, &lvl->lv->tags, NULL)) {
process_lv = 1;
}
/* LV name match? */
if (lvargs_supplied &&
str_list_match_item(arg_lvnames, lvl->lv->name)) {
process_lv = 1;
str_list_match_item(arg_lvnames, lvl->lv->name))
/* Check even when process_all for counter */
lvargs_matched++;
}
if (!process_lv)
/* LV tag match? skip test, when process_all */
else if (!process_all &&
(!tags_supplied ||
!str_list_match_list(tags, &lvl->lv->tags, NULL)))
continue;
if (sigint_caught())