]> sourceware.org Git - lvm2.git/log
lvm2.git
5 months agovgimportdevices: skip global lockd locking 1312391201
David Teigland [Thu, 30 May 2024 19:51:22 +0000 (14:51 -0500)]
vgimportdevices: skip global lockd locking

Fix commit b65a2c3f3a767 "vgimportdevices: skip lvmlockd locking"
which intended to disable lvmlockd locking, but the lockd_gl_disable
flag was mistakenly set after lock_global() so it wasn't effective.
This caused vgimportdevices to fail unless locking was started.

5 months agoREADME: remove old branch names 1310480074
David Teigland [Wed, 29 May 2024 14:30:41 +0000 (09:30 -0500)]
README: remove old branch names

5 months agomake: generate 1308701008
Zdenek Kabelac [Tue, 28 May 2024 12:55:23 +0000 (14:55 +0200)]
make: generate

5 months agotests: accept new vdoformat output
Zdenek Kabelac [Mon, 27 May 2024 20:16:22 +0000 (22:16 +0200)]
tests: accept new vdoformat output

There is slight change in the printed size number.

5 months agoargs: generate configurable path
Zdenek Kabelac [Tue, 28 May 2024 12:54:00 +0000 (14:54 +0200)]
args: generate configurable path

5 months agotests: quoted DM_DEV_DIR 1307570978
Zdenek Kabelac [Mon, 27 May 2024 19:29:58 +0000 (21:29 +0200)]
tests: quoted DM_DEV_DIR

5 months agotests: use single aux lvmconf
Zdenek Kabelac [Mon, 27 May 2024 16:44:09 +0000 (18:44 +0200)]
tests: use single aux lvmconf

Reduce log size as lvmconf can process multiple settings at once.

5 months agodevice_id: use faster dm_strncpy
Zdenek Kabelac [Mon, 27 May 2024 19:31:54 +0000 (21:31 +0200)]
device_id: use faster dm_strncpy

5 months agodevice_mapper: solve no devices path
Zdenek Kabelac [Mon, 27 May 2024 16:13:47 +0000 (18:13 +0200)]
device_mapper: solve no devices path

Malloc needs to use sane value when names would be NULL.
Also for devices without 'uuid' return empty string instead of NULL.

5 months agolvremove: initilize struct list
Zdenek Kabelac [Mon, 27 May 2024 16:23:26 +0000 (18:23 +0200)]
lvremove: initilize struct list

5 months agolvremove: check for handle 1307327464
Zdenek Kabelac [Mon, 27 May 2024 15:01:25 +0000 (17:01 +0200)]
lvremove: check for handle

Get lvremove_params from non NULL handle.
Introduced in commit 47f8bda05.
TODO: any more thing needed ?

5 months agoWHATS_NEW: update 1307288018
Zdenek Kabelac [Sat, 25 May 2024 20:52:58 +0000 (22:52 +0200)]
WHATS_NEW: update

5 months agomake: generate
Zdenek Kabelac [Sun, 19 May 2024 20:35:29 +0000 (22:35 +0200)]
make: generate

5 months agocov: replace enum report_type_t with unsigned
Zdenek Kabelac [Mon, 27 May 2024 13:10:58 +0000 (15:10 +0200)]
cov: replace enum report_type_t with unsigned

Another enum used as bitfield mask.

5 months agocov: convert some more enternal field masks
Zdenek Kabelac [Mon, 27 May 2024 11:53:55 +0000 (13:53 +0200)]
cov: convert some more enternal field masks

Some more 'internal' masks misusing enums for bitfields.

5 months agocov: cleanup mask from enum to unsigned
Zdenek Kabelac [Mon, 27 May 2024 11:48:57 +0000 (13:48 +0200)]
cov: cleanup mask from enum to unsigned

Enums are single 'values' so not a proper type for bitfields.
(Probably better to use such values as defines).

Although here 'daemon_talk()' is part of library API, it's hidden
non-public API call - and moreover 'enum' and 'unsigned' are
using the same size, so linker shouldn't have any issue with
this symbol usage.

For this reason there are no 'versioning' tricks applied.

5 months agocov: annotate known use of validated lv name
Zdenek Kabelac [Mon, 27 May 2024 11:24:06 +0000 (13:24 +0200)]
cov: annotate known use of validated lv name

5 months agocleanup: remove blank spaces
Zdenek Kabelac [Mon, 27 May 2024 13:49:51 +0000 (15:49 +0200)]
cleanup: remove blank spaces

5 months agocleanup: refactor common code
Zdenek Kabelac [Mon, 27 May 2024 13:56:53 +0000 (15:56 +0200)]
cleanup: refactor common code

Refactor shared code from _get_rootvg_dev() between vgchange
and vgimportdevices to get_rootvg_dev_uuid() in toollib.c

5 months agotests: add some lvm shell testing
Zdenek Kabelac [Fri, 24 May 2024 18:46:08 +0000 (20:46 +0200)]
tests: add some lvm shell testing

Check lvm shell for autocomplete functionality and error reporting.

5 months agocleanup: print MAJOR and MINOR as unsigned
Zdenek Kabelac [Sat, 25 May 2024 20:36:18 +0000 (22:36 +0200)]
cleanup: print MAJOR and MINOR as unsigned

Print directly as %u instead of %d with (int) casting.

5 months agolibdm: use 'unsigned' for major minor
Zdenek Kabelac [Sat, 25 May 2024 21:05:53 +0000 (23:05 +0200)]
libdm: use 'unsigned' for major minor

Although linux uses 'dev_t' as 'unsigned long int' on 64bit,
it's easier to print with just '%u' instead of '%lu'.

5 months agocleanup: replace strlen with sizeof
Zdenek Kabelac [Sun, 26 May 2024 09:47:26 +0000 (11:47 +0200)]
cleanup: replace strlen with sizeof

Use the string size from compile time.

5 months agocleanup: use const for sizeof values
Zdenek Kabelac [Sun, 26 May 2024 09:30:06 +0000 (11:30 +0200)]
cleanup: use const for sizeof values

5 months agocleanup: simplier loop condition
Zdenek Kabelac [Thu, 23 May 2024 22:34:00 +0000 (00:34 +0200)]
cleanup: simplier loop condition

Check char for != 0.

5 months agocleanup: use correct log_sys_debug
Zdenek Kabelac [Wed, 22 May 2024 22:41:57 +0000 (00:41 +0200)]
cleanup: use correct log_sys_debug

5 months agocleanup: struct reorder
Zdenek Kabelac [Mon, 20 May 2024 12:15:38 +0000 (14:15 +0200)]
cleanup: struct reorder

Better alignments.

5 months agocleanup: some typos
Zdenek Kabelac [Fri, 17 May 2024 14:51:11 +0000 (16:51 +0200)]
cleanup: some typos

Collection of some typos or invalid uppercase or doublespace cases.

5 months agohash: increase some default hash table size
Zdenek Kabelac [Sat, 25 May 2024 22:33:16 +0000 (00:33 +0200)]
hash: increase some default hash table size

Size of these hashes was quite small, so raise the size of
hashed entries to reduce amount of hash collistion.
Select some unique/unused number for hash_create below 8192.

5 months agolibdm: drop allocation
Zdenek Kabelac [Fri, 17 May 2024 14:50:49 +0000 (16:50 +0200)]
libdm: drop allocation

Use structure allocated on local stack.

5 months agomirror: drop unneeded call
Zdenek Kabelac [Mon, 20 May 2024 12:46:20 +0000 (14:46 +0200)]
mirror: drop unneeded call

Major,minor,patchlevel are already set from previous call.

5 months agodevice: use device_get_uuid
Zdenek Kabelac [Thu, 23 May 2024 23:07:47 +0000 (01:07 +0200)]
device: use device_get_uuid

Replace call to get_dm_uuid_from_sysfs() with use of
device_get_uuid() which gets the same information,
but instead of several syscalls it need either 1 or even 0
when the information is cached with newer kernels.

5 months agodev_manager: remove disable_dm_dev flag
Zdenek Kabelac [Fri, 24 May 2024 19:21:16 +0000 (21:21 +0200)]
dev_manager: remove disable_dm_dev flag

Lvm currenly drops cache before first table manipulation
there is no need for this flag ATM.

5 months agodev_manager: drop cache for dm tree manipulation
Zdenek Kabelac [Fri, 24 May 2024 18:50:53 +0000 (20:50 +0200)]
dev_manager: drop cache for dm tree manipulation

We've got cached DM list before grabbing lock, so there
is some chance, that DM table has changed and we would
need to refresh this info.

TODO: benchmark, whether it would even make sense to refresh cache
and keep it content instead of using individual ioctl() for tree build.

5 months agolabel: cache dm dev list earlier
Zdenek Kabelac [Fri, 24 May 2024 18:50:46 +0000 (20:50 +0200)]
label: cache dm dev list earlier

Cache (when possibly with newer kernel) earlier within label
scanning loop, so the cache information can be also used by
hints file.

5 months agodevice_manager: add device_get_uuid
Zdenek Kabelac [Wed, 22 May 2024 23:36:50 +0000 (01:36 +0200)]
device_manager: add device_get_uuid

Function that is working with DM target is located within
lib/activate directory.

This function is able to use cached  dm_device_list when possible
to quickly resolve checks for device's UUID.

Function can fully replace get_dm_uuid_from_sysfs() and instead
of syscalls for open/read/close get the UUID with single ioctl.

When there is cached dm devs list, we can get many UUID from
a single syscall.

5 months agodevice: propagate struct cmd_context
Zdenek Kabelac [Thu, 23 May 2024 21:03:05 +0000 (23:03 +0200)]
device: propagate struct cmd_context

For better use of cached data located within cmd_context,
pass this structure from the top level function.
Also add missing '_' for static _dev_cache_index_devs.
No other change here.

5 months agodevice_mapper: use const for this API
Zdenek Kabelac [Thu, 23 May 2024 23:54:48 +0000 (01:54 +0200)]
device_mapper: use const for this API

Allow using constified version of devs_list.
Internal loop does not need to modify anythin in this stucture.

5 months agodevice_mapper: add dm_device_list_find_by_dev
Zdenek Kabelac [Mon, 27 May 2024 13:34:16 +0000 (15:34 +0200)]
device_mapper: add dm_device_list_find_by_dev

Introduce function to find device's name and uuid for
a given major:minor.

This information is cached with dm_device_list which reads all the
info from single ioctl(DM_DEVICE_LIST).
Lvm keeps major:minor name & uuid for active devices in the system.

5 months agodev-type: use if..else if...
Zdenek Kabelac [Wed, 22 May 2024 21:22:43 +0000 (23:22 +0200)]
dev-type: use if..else if...

Compare strings till the first match.

5 months agocommand: reorder vals order
Zdenek Kabelac [Wed, 22 May 2024 15:15:34 +0000 (17:15 +0200)]
command: reorder vals order

Keep most frequently used val names in front.

5 months agocommand: store val_name with its size
Zdenek Kabelac [Wed, 22 May 2024 15:15:20 +0000 (17:15 +0200)]
command: store val_name with its size

Compile length of val_name during compilation.

5 months agodev-cache: skip scanning known blockless dirs
Zdenek Kabelac [Wed, 22 May 2024 11:29:35 +0000 (13:29 +0200)]
dev-cache: skip scanning known blockless dirs

Skip scan and stat() for dirs and nodes within known /dev/ paths,
where no block devices are located.

Also strlen(_cache.dev_dir) just once.

TODO: add more dirs to _no_scan (configurable via lvm.conf ?)

5 months agodev-cache: collapsing slashes counts string size
Zdenek Kabelac [Wed, 22 May 2024 09:17:09 +0000 (11:17 +0200)]
dev-cache: collapsing slashes counts string size

_collapse_slashes() already goes through the whole string,
so just return now already known string length.

5 months agocleanup: use single array for idtype string
Zdenek Kabelac [Tue, 21 May 2024 16:53:15 +0000 (18:53 +0200)]
cleanup: use single array for idtype string

Share string array for de/coding idtype.

5 months agoerror: try with modprobe
Zdenek Kabelac [Mon, 20 May 2024 12:47:02 +0000 (14:47 +0200)]
error: try with modprobe

If the error target would be built as module,
ask modprobe to load it if the target is not present.

5 months agocleanup: relocate section
Zdenek Kabelac [Mon, 20 May 2024 12:03:21 +0000 (14:03 +0200)]
cleanup: relocate section

Move _features[] structure from .data.rel.ro to .rodata.

5 months agocleanup: use ALTERNATIVE_EXTENTS
Zdenek Kabelac [Wed, 22 May 2024 15:31:28 +0000 (17:31 +0200)]
cleanup: use ALTERNATIVE_EXTENTS

Instead of comparing string of command names,
introduce ALTERNATIVE_EXTENTS command flags.

5 months agocleanup: use ARG_LONG_OPT
Zdenek Kabelac [Fri, 17 May 2024 23:38:18 +0000 (01:38 +0200)]
cleanup: use ARG_LONG_OPT

Just like with _VAL strings, also _ARG strings do not need to
be present - as we can easily check for LONG opt version just
by adding attribute.

With attribute ARG_LONG_OPT string arg name[] becomes unused
and can be safely removed.

Also within _find_command_id_function() we do not need to handle
'command_enum == CMD_NONE' as separate case and just use single loop.

5 months agocleanup: do not store _VAL name string
Zdenek Kabelac [Fri, 17 May 2024 15:01:09 +0000 (17:01 +0200)]
cleanup: do not store _VAL name string

String enum_name[] is unused so remove is with
all generated strings.

Reoder struct members, so there are no holes.

5 months agolibdm: parse only block section for proc_devices
Zdenek Kabelac [Wed, 22 May 2024 21:23:54 +0000 (23:23 +0200)]
libdm: parse only block section for proc_devices

Check for begining of 'B'lock section in /proc/devices file
before starting to sscanf() for major.

5 months agolvmcmdline: use known lvm_command_enum
Zdenek Kabelac [Wed, 22 May 2024 21:22:14 +0000 (23:22 +0200)]
lvmcmdline: use known lvm_command_enum

lvm command is already decoded (when found),
so use lvm_command_enum directly and avoid
comparing all strings again...

5 months agocommand: return proper unsigned value
Zdenek Kabelac [Fri, 24 May 2024 18:43:44 +0000 (20:43 +0200)]
command: return proper unsigned value

Use better 'unsigned' value, so we don't have any 'casting' troubles.

5 months agolvm: fix shell completion
Zdenek Kabelac [Fri, 24 May 2024 17:49:08 +0000 (19:49 +0200)]
lvm: fix shell completion

Previous commit 82617852a4d3c89b09124eddedcc2c1859b9d50e
introduce bug in complession - as the rl_completion_matches()
needs to always advance to next element where the index
is held in static variable.

Add comment about this usage.

5 months agolvremove: remove device_id for PVs on LVs 1301446728
David Teigland [Wed, 22 May 2024 20:32:17 +0000 (15:32 -0500)]
lvremove: remove device_id for PVs on LVs

When PVs are created on LVs, remove the devices file entries
for the PVs when the LVs are removed.  In general, the devices
file entries should be removed with lvmdevices --deldev when
the LVs are removed (lvremove is the equivalent of detaching
a device from the system when layering PVs on LVs.)
This change is effectively an automatic lvmdevices --deldev
command that is built into lvremove when the LV has a PV on it.

5 months agoAllow system.devices to be automatically created on first boot 1299853171
David Teigland [Tue, 23 Apr 2024 22:08:26 +0000 (17:08 -0500)]
Allow system.devices to be automatically created on first boot

An OS installer can create system.devices for the system and
disks, but an OS image cannot create the system-specific
system.devices.  The OS image can instead configure the
image so that lvm will create system.devices on first boot.

Image preparation steps to enable auto creation of system.devices:
- create empty file /etc/lvm/devices/auto-import-rootvg
- remove any existing /etc/lvm/devices/system.devices
- enable lvm-devices-import.path
- enable lvm-devices-import.service

On first boot of the prepared image:
- udev triggers vgchange -aay --autoactivation event <rootvg>
- vgchange activates LVs in the root VG
- vgchange finds the file /etc/lvm/devices/auto-import-rootvg,
  and no /etc/lvm/devices/system.devices, so it creates
  /run/lvm/lvm-devices-import
- lvm-devices-import.path is run when /run/lvm/lvm-devices-import
  appears, and triggers lvm-devices-import.service
- lvm-devices-import.service runs vgimportdevices --rootvg --auto
- vgimportdevices finds /etc/lvm/devices/auto-import-rootvg,
  and no system.devices, so it creates system.devices containing
  PVs in the root VG, and removes /etc/lvm/devices/auto-import-rootvg
  and /run/lvm/lvm-devices-import

Run directly, vgimportdevices --rootvg (without --auto), will create
a new system.devices for the root VG, or will add devices for the
root VG to an existing system.devices.

6 months agopost-release 1293294001
Marian Csontos [Thu, 16 May 2024 10:12:06 +0000 (12:12 +0200)]
post-release

6 months agopre-release 1293294301 v2_03_24
Marian Csontos [Thu, 16 May 2024 10:12:06 +0000 (12:12 +0200)]
pre-release

6 months agopages: Use gitlab pages and ikiwiki for doc
Marian Csontos [Thu, 21 Dec 2023 12:48:50 +0000 (13:48 +0100)]
pages: Use gitlab pages and ikiwiki for doc

6 months agodoc: Update TESTING file
Marian Csontos [Thu, 16 May 2024 09:16:21 +0000 (11:16 +0200)]
doc: Update TESTING file

6 months agomakefiles: use properly defined varitable 1290508663
Zdenek Kabelac [Tue, 14 May 2024 14:54:00 +0000 (16:54 +0200)]
makefiles: use properly defined varitable

Variable used for tracking dependencies is USE_TRACKING.

6 months agotests: add basics for dm_hash unit testing
Zdenek Kabelac [Tue, 14 May 2024 15:47:33 +0000 (17:47 +0200)]
tests: add basics for dm_hash unit testing

Better code coverage.

6 months agogcc: clean cast with -Wbad-function-cast
Zdenek Kabelac [Tue, 14 May 2024 15:45:49 +0000 (17:45 +0200)]
gcc: clean cast with -Wbad-function-cast

Makes gcc happier.

6 months agogcc: same signess
Zdenek Kabelac [Tue, 14 May 2024 13:36:34 +0000 (15:36 +0200)]
gcc: same signess

6 months agogcc: use proper commnent
Zdenek Kabelac [Tue, 14 May 2024 13:35:07 +0000 (15:35 +0200)]
gcc: use proper commnent

6 months agogcc: better initilizer for older gcc compilers
Zdenek Kabelac [Mon, 13 May 2024 20:47:36 +0000 (22:47 +0200)]
gcc: better initilizer for older gcc compilers

So use  { { } }.

6 months agoactivation: log_debug_activation
Zdenek Kabelac [Mon, 13 May 2024 21:19:15 +0000 (23:19 +0200)]
activation: log_debug_activation

Correcting debug class.

6 months agotests: reduce number of created LVs 1288857715
Zdenek Kabelac [Mon, 13 May 2024 16:00:52 +0000 (18:00 +0200)]
tests: reduce number of created LVs

lvm2 for a while already optimizes 'vgremove' operation to
a single commit when possible if all LVs can be
easily deactivated.

So the number of LVs doesn't matter much - but the tested
case 'test_delete_non_complete_job' seems to be taking
some time anyway to capture the exception.

So just reducing the running time of the test significatanly
as we don't need to create 64LVs for 4 'execution mode' runs.

6 months agocov: ensure pointer has defined value
Zdenek Kabelac [Mon, 13 May 2024 15:29:15 +0000 (17:29 +0200)]
cov: ensure pointer has defined value

Add initialization of 'fin' pointer.

6 months agodmfilemapd: assign 0 to integer
Zdenek Kabelac [Mon, 13 May 2024 15:13:08 +0000 (17:13 +0200)]
dmfilemapd: assign 0 to integer

Avoid mixing enumeration assign with 0, so just pick some integer
from filemap_monitor,  stucture will be fully zeroed anyway....

6 months agolibdevmapper-event: correct switch break
Zdenek Kabelac [Mon, 13 May 2024 15:04:48 +0000 (17:04 +0200)]
libdevmapper-event: correct switch break

Replace 'continue' within 'switch' statement with correct break.

6 months agoman: lvmlockd: remove dash in option name 1288670615
David Teigland [Mon, 13 May 2024 14:15:42 +0000 (09:15 -0500)]
man: lvmlockd: remove dash in option name

for consistency with other man pages

6 months agolvmcmdline: check for NULL 1288518747
Zdenek Kabelac [Mon, 13 May 2024 12:49:54 +0000 (14:49 +0200)]
lvmcmdline: check for NULL

Althought this code likely never is hit with NULL, just add
check to be sure.

6 months agocov: enusure _table doesn't leak
Zdenek Kabelac [Mon, 13 May 2024 12:48:46 +0000 (14:48 +0200)]
cov: enusure _table doesn't leak

If someone would enter _table multiple times by mistatek,
there is 'teroretical' leak - although doesn't matter much
in this case...

6 months agomake: generate 1288355312
Zdenek Kabelac [Mon, 13 May 2024 10:43:05 +0000 (12:43 +0200)]
make: generate

6 months agolv_types: sort order of types
Zdenek Kabelac [Mon, 13 May 2024 10:00:59 +0000 (12:00 +0200)]
lv_types: sort order of types

Order is used for man page generation (although not completely).
So place  'zero & error' to the end of list.
Keep  linear,striped,snapshot in front.
For the rest use alphabetic order.

6 months agocleanup: local const arrays
Zdenek Kabelac [Mon, 13 May 2024 09:36:54 +0000 (11:36 +0200)]
cleanup: local const arrays

No need for relocation entries for locally used arrays.

6 months agocleanup: static missed _
Zdenek Kabelac [Mon, 13 May 2024 09:33:17 +0000 (11:33 +0200)]
cleanup: static missed _

6 months agocleanup: remove unuable code path
Zdenek Kabelac [Mon, 13 May 2024 09:21:37 +0000 (11:21 +0200)]
cleanup: remove unuable code path

Eliminate some ancient unreachable code
for historical version of libdm.

6 months agocleanup: some missed public symbols static
Zdenek Kabelac [Mon, 13 May 2024 09:18:20 +0000 (11:18 +0200)]
cleanup: some missed public symbols static

6 months agolabel: make scan_bcache local 1287637635
Zdenek Kabelac [Sun, 12 May 2024 23:49:00 +0000 (01:49 +0200)]
label: make scan_bcache local

Seems there are no users of scan_bcache, so make it local.
TODO: such variable should be ideally in cmd_context.

6 months agocleanup: drop unused declared struct
Zdenek Kabelac [Sun, 12 May 2024 23:37:27 +0000 (01:37 +0200)]
cleanup: drop unused declared struct

6 months agocleanup: use static vars
Zdenek Kabelac [Mon, 13 May 2024 00:10:08 +0000 (02:10 +0200)]
cleanup: use static vars

Drop global visibility.

6 months agocleanup: add static _
Zdenek Kabelac [Sun, 12 May 2024 22:04:28 +0000 (00:04 +0200)]
cleanup: add static _

6 months agolv_type: simplier macro usage
Zdenek Kabelac [Sun, 12 May 2024 23:11:05 +0000 (01:11 +0200)]
lv_type: simplier macro usage

Use more simple macros - as there is likely not going to happen
any macro replacement - so use more effient structure layout.

6 months agolv_prop: simplier macro usage
Zdenek Kabelac [Sun, 12 May 2024 23:01:18 +0000 (01:01 +0200)]
lv_prop: simplier macro usage

Use more simple macros - as there is likely not going to happen
any macro replacement - so use more effient structure layout.

6 months agocommand: validation code only for man-generator
Zdenek Kabelac [Sun, 12 May 2024 20:07:58 +0000 (22:07 +0200)]
command: validation code only for man-generator

Don't waste time with string order validation within command,
check within  'man-generator -c' is enough.

6 months agocommand: refactor inner loop
Zdenek Kabelac [Sun, 12 May 2024 16:29:31 +0000 (18:29 +0200)]
command: refactor inner loop

Move part of the 'inner' loop which is would be otherwise
always production same results for all  'opt_enum' values
out of the loop, so it can be evaluated just once.

6 months agocommand: replace strcmp with enum
Zdenek Kabelac [Sun, 12 May 2024 15:12:19 +0000 (17:12 +0200)]
command: replace strcmp with enum

Here we already know 'enum' value, so compare
just those instead of calling strcmp().

6 months agolvmcmdline: runtime function resolving
Zdenek Kabelac [Sun, 12 May 2024 14:46:02 +0000 (16:46 +0200)]
lvmcmdline: runtime function resolving

Instead of resolving and storing 'command_fn'
withing 'struct command' use just funtion enum
and resolve function pointer just in place,
where it is really needed - first try to resolve
'new style' and fallback to 'old style' named.

6 months agocommand: use command_id_to_enum
Zdenek Kabelac [Sun, 12 May 2024 14:00:48 +0000 (16:00 +0200)]
command: use command_id_to_enum

Instead of storing command_id as string, direcly
translate string to enum index and use 'command_enum()'
to get string when needed for printing.

This way we can easily detect error in the structure
while parsing it - and we can later avoid separate
'translation' loop.

6 months agocommand: refactor code for simplier lookup
Zdenek Kabelac [Sun, 12 May 2024 13:39:18 +0000 (15:39 +0200)]
command: refactor code for simplier lookup

We can more efficiently use command_name struct to
lookup for  lvm_command_enum and avoid many repeated
command name searches since we already know
the enum index that is now stored in 'struct command'.

6 months agolvmcmdline: use strcut as const
Zdenek Kabelac [Sun, 12 May 2024 10:04:54 +0000 (12:04 +0200)]
lvmcmdline: use strcut as const

Constity members in cmdline_context, would be nice, to replace
this static struct with couple function calls.

Also replace some 'while' loops with for loops, so code
is more readable.

6 months agocommand: return if already factored
Zdenek Kabelac [Sun, 12 May 2024 08:17:11 +0000 (10:17 +0200)]
command: return if already factored

We can directly return here, when we spot already counted varitants.

6 months agocommand: refactor struct command_name
Zdenek Kabelac [Sat, 11 May 2024 23:14:14 +0000 (01:14 +0200)]
command: refactor struct command_name

Split struct command_name to the constant part (keep the name)
and new 'struct command_name_args' which holds runtime computed
info.   To get to the _args part - we can easily use
lvm_command_enum as equivalent index.

Constified part 'struct command_name' is now fully stored
in .data.rel.ro segment, while command_name_args part goes
to .bss segment.

Code will be further reduced with next refactoring.

6 months agocommand: better const usage for struct cmd_name
Zdenek Kabelac [Sat, 11 May 2024 20:27:36 +0000 (22:27 +0200)]
command: better const usage for struct cmd_name

No need to store _CMD string - as it's not used anywhere.
Use LVM_COMMAND_COUNT as end of array.

6 months agocommand: reduce struct size
Zdenek Kabelac [Sat, 11 May 2024 20:00:42 +0000 (22:00 +0200)]
command: reduce struct size

Reduce memory usage for parser.
If the sizes would need to be bigger, man-generator warns.
For struct command_name  use just uint8_t to keep 1|0.

6 months agocommand: no need to duplicate const mem
Zdenek Kabelac [Sat, 11 May 2024 19:59:48 +0000 (21:59 +0200)]
command: no need to duplicate const mem

No need to duplicate const char* here as
we refer already constant string in .rodata segment.

6 months agocommand: futher move to single struct
Zdenek Kabelac [Fri, 10 May 2024 22:42:49 +0000 (00:42 +0200)]
command: futher move to single struct

Refactor code to not allocate memory for rule->opts,
instead use uint16_t array of MAX_RULE_OPTS within cmd_rule.

Also print more info if array would not be enough (>= 8).

6 months agotests: check vg fields with one command
Zdenek Kabelac [Fri, 10 May 2024 20:04:06 +0000 (22:04 +0200)]
tests: check vg fields with one command

This page took 0.065654 seconds and 5 git commands to generate.