1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00
lvm2/tools
David Teigland 748f29b42a scan: do scanning at the start of a command
Move the location of scans to make it clearer and avoid
unnecessary repeated scanning.  There should be one scan
at the start of a command which is then used through the
rest of command processing.

Previously, the initial label scan was called as a side effect
from various utility functions.  This would lead to it being called
unnecessarily.  It is an expensive operation, and should only be
called when necessary.  Also, this is a primary step in the
function of the command, and as such it should be called prominently
at the top level of command processing, not as a hidden side effect
of a utility function.  lvm knows exactly where and when the
label scan needs to be done.  Because of this, move the label scan
calls from the internal functions to the top level of processing.

Other specific instances of lvmcache_label_scan() are still called
unnecessarily or unclearly by specific commands that do not use
the common process_each functions.  These will be improved in
future commits.

During the processing phase, rescanning labels for devices in a VG
needs to be done after the VG lock is acquired in case things have
changed since the initial label scan.  This was being done by way
of rescanning devices that had the INVALID flag set in lvmcache.
This usually approximated the right set of devices, but it was not
exact, and obfuscated the real requirement.  Correct this by using
a new function that rescans the devices in the VG:
lvmcache_label_rescan_vg().

Apart from being inexact, the rescanning was extremely well hidden.
_vg_read() would call ->create_instance(), _text_create_text_instance(),
_create_vg_text_instance() which would call lvmcache_label_scan()
which would call _scan_invalid() which repeats the label scan on
devices flagged INVALID.  lvmcache_label_rescan_vg() is now called
prominently by _vg_read() directly.
2018-04-20 11:21:38 -05: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 cleanup: add _mb_ to regiosize option 2018-04-20 12:17:01 +02:00
cmdnames.h doc: change fsf address 2016-01-21 12:11:37 +01:00
command-lines.in lvconvert: drop limitation for converting lv 2018-04-20 12:06:51 +02:00
command.c [io paths] Unpick agk's aio stuff 2018-04-20 11:03:58 -05:00
command.h cleanup: fix some typos 2017-07-10 14:58:33 +02:00
commands.h persistent filter: Skip import before rescan 2017-11-13 19:45:16 +00:00
dmsetup.c dmstatus: check nr_regions ahead of find call 2018-03-15 10:54:19 +01:00
dumpconfig.c lvmconfig: Add options to produce file preamble 2017-08-05 16:23:34 +01: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 pre-release 2017-03-28 16:11:35 +01:00
lv_props.h commands: new method for defining commands 2017-02-13 08:20:10 -06:00
lv_types.h commands: recognize raid variations 2017-02-13 08:20:10 -06:00
lvchange.c activation: support activation of component LVs 2018-03-06 15:42:46 +01:00
lvconvert_poll.c debug: more display_lvname usage 2017-06-27 08:28:36 +02:00
lvconvert_poll.h doc: change fsf address 2016-01-21 12:11:37 +01:00
lvconvert.c mirror: fix region_size for clustered VG 2018-04-20 12:13:48 +02:00
lvcreate.c lvcreate: fix activation of cached LV 2018-03-06 15:39:27 +01:00
lvdisplay.c process_each_lv: add check_single_lv function 2017-02-13 08:20:10 -06:00
lvextend.c doc: change fsf address 2016-01-21 12:11:37 +01:00
lvm2cmd-static.c doc: change fsf address 2016-01-21 12:11:37 +01:00
lvm2cmd.c doc: change fsf address 2016-01-21 12:11:37 +01:00
lvm2cmd.h tools: Introduce exit code EINIT_FAILED. 2017-07-26 23:18:03 +01:00
lvm2cmdline.h commands: fix memory debug for cmd defs 2017-05-01 15:27:14 -05:00
lvm-static.c doc: change fsf address 2016-01-21 12:11:37 +01:00
lvm.c debug: tracing error path 2017-06-27 00:27:36 +02:00
lvmcmdlib.c commands: fix memory debug for cmd defs 2017-05-01 15:27:14 -05:00
lvmcmdline.c cleanup: add _mb_ to regiosize option 2018-04-20 12:17:01 +02:00
lvmdiskscan.c lvmdiskscan: Remove unnecessary read. 2017-11-16 19:13:03 +00:00
lvpoll.c tidy: Add missing underscores to statics. 2017-10-18 15:58:13 +01:00
lvreduce.c doc: change fsf address 2016-01-21 12:11:37 +01: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: support passing --yes to fsadm 2017-06-21 14:03:29 +02:00
lvscan.c tidy: Add missing underscores to statics. 2017-10-18 15:58:13 +01:00
Makefile.in [makefile] add -laio to makefiles 2018-04-20 11:13:17 -05:00
polldaemon.c tidy: Add missing underscores to statics. 2017-10-18 15:58:13 +01:00
pvchange.c lvmetad: two phase vg_update 2016-06-28 02:30:31 +01:00
pvck.c doc: change fsf address 2016-01-21 12:11:37 +01:00
pvcreate.c tidy: Add missing underscores to statics. 2017-10-18 15:58:13 +01:00
pvdisplay.c lvmetad: two phase vg_update 2016-06-28 02:30:31 +01:00
pvmove_poll.c pvmove: move code from tools to lib 2017-12-01 12:18:32 +01:00
pvmove_poll.h doc: change fsf address 2016-01-21 12:11:37 +01:00
pvmove.c cleanup: display_lvname update message 2018-04-20 12:17:01 +02:00
pvremove.c lvmetad: two phase vg_update 2016-06-28 02:30:31 +01:00
pvresize.c pvcreate: add prompt when setting dev size 2017-04-27 13:25:41 -05:00
pvscan.c cleanup: use more common FMTd64 type 2017-03-27 20:50:19 +02:00
reporter.c cleanup: add braces in macro 2017-07-20 11:18:29 +02:00
segtypes.c doc: change fsf address 2016-01-21 12:11:37 +01:00
stub.h tools: Drop unused e2fsadm refs (replaced by fsadm). 2017-03-16 02:24:39 +00:00
tags.c doc: change fsf address 2016-01-21 12:11:37 +01:00
tool.h doc: change fsf address 2016-01-21 12:11:37 +01:00
toollib.c scan: do scanning at the start of a command 2018-04-20 11:21:38 -05:00
toollib.h cache: enable usage of --cachemetadataformat 2017-03-10 19:33:01 +01:00
tools.h cleanup: add _mb_ to regiosize option 2018-04-20 12:17:01 +02:00
vals.h cleanup: add _mb_ to regiosize option 2018-04-20 12:17:01 +02:00
vgcfgbackup.c coverity: avoid memleak 2017-11-07 21:26:09 +01:00
vgcfgrestore.c scan: do scanning at the start of a command 2018-04-20 11:21:38 -05:00
vgchange.c coverity: ensure lock_type is not NULL 2018-03-17 23:33:58 +01:00
vgck.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
vgconvert.c tidy: Add missing underscores to statics. 2017-10-18 15:58:13 +01:00
vgcreate.c vgcreate: allow pvcreate force option 2016-07-06 14:10:53 -05:00
vgdisplay.c tidy: Add missing underscores to statics. 2017-10-18 15:58:13 +01:00
vgexport.c tools: Use arg_is_set instead of arg_count. 2016-06-21 22:24:52 +01:00
vgextend.c commands: new method for defining commands 2017-02-13 08:20:10 -06:00
vgimport.c tidy: Add missing underscores to statics. 2017-10-18 15:58:13 +01:00
vgimportclone.c vgimportclone: add some dm_snprintf checks 2018-02-12 22:14:22 +01:00
vgmerge.c vgsplit: Fix detection of moved PVs. 2017-10-27 22:53:43 +01:00
vgmknodes.c process_each_lv: add check_single_lv function 2017-02-13 08:20:10 -06:00
vgreduce.c cleanup: add missing WARNING into log_warn 2016-11-25 15:01:27 +01:00
vgremove.c tidy: Add missing underscores to statics. 2017-10-18 15:58:13 +01:00
vgrename.c vgrename: use long enough buffer for path 2017-03-30 00:38:41 +02:00
vgscan.c tidy: Add missing underscores to statics. 2017-10-18 15:58:13 +01:00
vgsplit.c tidy: Add missing underscores to statics. 2017-10-18 15:58:13 +01:00