1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-01-03 05:18:29 +03:00
lvm2/tools
Peter Rajnoha e2ecc6c763
reporter: restore report type to initial value after processing report_for_selection
If we are executing 'report_for_selection' to do an internal report
just for the selection itself (not for display), we can call it more
than once. In that case, we are reusing the same selection handle
(e.g. inside 'process_each_lv_in_vg').

The selection handle has 'report_type' field which is a union of all
report types needed for the report based on selection fields we actually
use.

The 'report_type' is further clarified based on checks and rules inside
'_get_final_report_type' which 'report_for_selection' calls. Then, this
final report type unambiguously identifies proper branch to take in
'report_all_in_{pv,vg,lv}' that is called next.

If the 'report_for_selection' is called more than once with the same
selection handle, we need to make sure that we always restore the report
type to its initial value, so all the rules inside 'report_for_selection'
are applied correctly next time.

This patch fixes the missing restoration of the 'report_type' value in
'selection_handle' that is reused for recurring 'report_for_selection'
calls.

An example scenario where this failed was with selecting an LV for
removal with "lvremove --select" while using a field in the selection
that required extra DM info or DM status call for the LV (that is,
"Logical Volume Device Info Fields" and "Logical Volume Device Status Fields"
as visible in 'lvs -S help').
2023-05-31 09:38:11 +02:00
..
.exported_symbols generate liblvm2cmd exported symbols too 2010-06-25 18:23:10 +00:00
.gitignore tools: add generated headers to .gitignore 2017-03-10 13:13:41 +00:00
args.h vgchange: allow changing system ID with majority of PVs 2023-03-08 16:30:54 -06:00
cmdnames.h doc: change fsf address 2016-01-21 12:11:37 +01:00
command-lines.in raidintegrity: allow writecache and cache 2023-04-05 14:24:07 -05:00
command.c make: move cmds.h 2022-09-27 09:06:06 -05:00
command.h commands: use AUTOTYPE in definitions 2021-04-21 08:41:37 -05:00
commands.h devices file: limit warnings about devices file entries not found 2021-08-05 13:20:26 -05:00
dumpconfig.c lvmconfig: add --valuesonly option 2022-08-17 10:47:24 +02:00
errors.h tools: Introduce exit code EINIT_FAILED. 2017-07-26 23:18:03 +01:00
formats.c doc: change fsf address 2016-01-21 12:11:37 +01:00
license.inc makefiles: avoid piping 2023-02-10 17:50:27 +01:00
lv_props.h Allow dm-integrity to be used for raid images 2020-04-15 12:10:32 -05:00
lv_types.h Allow dm-integrity to be used for raid images 2020-04-15 12:10:32 -05:00
lvchange.c writecache: support settings metadata_only and pause_writeback 2022-12-08 16:53:36 -06:00
lvconvert_poll.c thin: ignore parallel merge while polling 2021-03-18 18:34:57 +01:00
lvconvert_poll.h build: Don't generate symlinks in include/ dir 2018-05-14 10:30:20 +01:00
lvconvert.c debug: missing backtraces 2023-02-17 00:00:12 +01:00
lvcreate.c vdo: fix and enhance vdo constain checking 2023-01-16 12:37:40 +01:00
lvdisplay.c process_each_lv: add check_single_lv function 2017-02-13 08:20:10 -06:00
lvextend.c lvresize: restructure code 2022-09-09 16:18:55 -05:00
lvm2cmd-static.c lvmcmdlib: lvm2_init_threaded 2020-10-20 22:22:52 +02:00
lvm2cmd.c lvmcmdlib: lvm2_init_threaded 2020-10-20 22:22:52 +02:00
lvm2cmd.h lvmcmdlib: lvm2_init_threaded 2020-10-20 22:22:52 +02:00
lvm2cmdline.h lvmcmdlib: lvm2_init_threaded 2020-10-20 22:22:52 +02:00
lvm-static.c doc: change fsf address 2016-01-21 12:11:37 +01:00
lvm.c shell: add pre-cmd log report object type and enable lastlog for it 2022-08-22 14:06:34 +02:00
lvmcmdlib.c cmdlib_lvm2_init: release cmd on failure path 2021-09-13 12:34:41 +02:00
lvmcmdline.c toollib: provide proper hint for referencing VG uuid in case of duplicate VG names 2023-05-16 17:17:55 +02:00
lvmdevices.c device_id: handle duplicate serial numbers 2022-11-07 08:56:02 -06:00
lvmdiskscan.c remove unused full filter 2018-12-04 14:06:46 -06:00
lvpoll.c build: Don't generate symlinks in include/ dir 2018-05-14 10:30:20 +01:00
lvreduce.c lvresize: restructure code 2022-09-09 16:18:55 -05:00
lvremove.c process_each_lv: add check_single_lv function 2017-02-13 08:20:10 -06:00
lvrename.c toollib: make it possible to also process internal VGs, add 'include_internal' switch to process_each_vg fn 2016-06-20 11:33:42 +02:00
lvresize.c lvresize: better detection of BLKID_SUBLKS_FSINFO 2023-02-10 17:50:27 +01:00
lvscan.c Remove lvmetad 2018-07-11 11:26:42 -05:00
Makefile.in makefiles: allow using configure cppflags 2023-02-13 13:41:59 +01:00
polldaemon.c polldaemon: improve support for interruptions 2021-04-06 22:02:31 +02:00
pvchange.c cov: clean up pvid and vgid usage 2021-08-16 11:31:15 -05:00
pvck.c cov: remove unused but set variables 2023-05-06 20:38:57 +02:00
pvcreate.c exit with error when --devicesfile name doesn't exist 2022-07-06 10:10:58 -05:00
pvdisplay.c add device hints to reduce scanning 2019-01-15 10:23:47 -06:00
pvmove_poll.c cov: ensure NULL baton is not dereferenced 2023-05-06 19:22:05 +02:00
pvmove_poll.h doc: change fsf address 2016-01-21 12:11:37 +01:00
pvmove.c raidintegrity: allow writecache and cache 2023-04-05 14:24:07 -05:00
pvremove.c exit with error when --devicesfile name doesn't exist 2022-07-06 10:10:58 -05:00
pvresize.c exported vg handling 2019-06-25 15:39:08 -05:00
pvscan.c cov: remove unneeded header file inclusion 2023-05-10 15:27:48 +02:00
reporter.c reporter: restore report type to initial value after processing report_for_selection 2023-05-31 09:38:11 +02:00
segtypes.c doc: change fsf address 2016-01-21 12:11:37 +01:00
stub.h Remove vgconvert 2018-06-13 14:14:03 -05:00
tags.c doc: change fsf address 2016-01-21 12:11:37 +01:00
tool.h configure: avoid repeative inclusion of configure.h 2018-12-21 19:19:50 +01:00
toollib.c toollib: provide proper hint for referencing VG uuid in case of duplicate VG names 2023-05-16 17:17:55 +02:00
toollib.h vdo: support --vdosettings 2022-05-03 19:09:52 +02:00
tools.h toollib: provide proper hint for referencing VG uuid in case of duplicate VG names 2023-05-16 17:17:55 +02:00
vals.h args: recognize 'json_std' for --reportformat cmd line arg 2022-08-11 11:10:11 +02:00
vgcfgbackup.c improve reading and repairing vg metadata 2019-06-07 15:54:04 -05:00
vgcfgrestore.c exit with error when --devicesfile name doesn't exist 2022-07-06 10:10:58 -05:00
vgchange.c vgchange: allow changing system ID with majority of PVs 2023-03-08 16:30:54 -06:00
vgck.c vgck: fix updatemetadata writing different descriptions 2019-10-11 12:57:32 -05:00
vgcreate.c exit with error when --devicesfile name doesn't exist 2022-07-06 10:10:58 -05:00
vgdisplay.c tidy: Add missing underscores to statics. 2017-10-18 15:58:13 +01:00
vgexport.c backup: automatically store data on vg_unlock 2021-06-09 14:56:13 +02:00
vgextend.c exit with error when --devicesfile name doesn't exist 2022-07-06 10:10:58 -05:00
vgimport.c vgimport: invalidate hints 2023-02-22 16:19:48 -06:00
vgimportclone.c vgimportclone: fix non-duplicate PV with non-unique basevgname arg 2023-02-09 17:37:22 -06:00
vgimportdevices.c cov: check syscall result 2023-05-06 20:38:57 +02:00
vgmerge.c exit with error when --devicesfile name doesn't exist 2022-07-06 10:10:58 -05:00
vgmknodes.c process_each_lv: add check_single_lv function 2017-02-13 08:20:10 -06:00
vgreduce.c backup: automatically store data on vg_unlock 2021-06-09 14:56:13 +02:00
vgremove.c vgremove: remove online files in run dir 2022-09-14 14:19:29 -05:00
vgrename.c cov: clean up pvid and vgid usage 2021-08-16 11:31:15 -05:00
vgscan.c locking: unify global lock for flock and lockd 2019-04-29 13:01:05 -05:00
vgsplit.c exit with error when --devicesfile name doesn't exist 2022-07-06 10:10:58 -05:00