]> sourceware.org Git - lvm2.git/log
lvm2.git
4 months agodevices: simpler bcache invalidation of PVs on LVs 1353285574
David Teigland [Fri, 28 Jun 2024 23:04:25 +0000 (18:04 -0500)]
devices: simpler bcache invalidation of PVs on LVs

When a PV is stacked on an LV, the PV needs to be
dropped from bcache before the LV is processed.
The LV can be found in dev-cache using its name
rather than the devno.

4 months agodev-cache: unify dm uuid cache struct lifetimes
David Teigland [Fri, 28 Jun 2024 22:57:00 +0000 (17:57 -0500)]
dev-cache: unify dm uuid cache struct lifetimes

The list of dm devs was in the cmd struct and had a
different lifetime than the radix trees referencing
those dm devs.  Now the list and radix trees are
created and destroyed together.

4 months agodevices: update function name to dm_device_is_usable 1353107968
David Teigland [Fri, 28 Jun 2024 18:56:12 +0000 (13:56 -0500)]
devices: update function name to dm_device_is_usable

4 months agodevices: dm uuid related function names
David Teigland [Fri, 28 Jun 2024 18:35:12 +0000 (13:35 -0500)]
devices: dm uuid related function names

In the context of dm, 'device' refers to a dm device, but
in the context of lvm, 'device' refers to struct device.
Change some lvm function names to make that difference clearer.

dev_manager_get_device_list() -> dev_manager_get_dm_active_devices()
get_device_list() -> get_dm_active_devices()
device_get_uuid() -> dev_dm_uuid(), devno_dm_uuid()

4 months agolvmlockd: vgchange systemid doen't need global lock 1351247495
David Teigland [Thu, 27 Jun 2024 17:46:15 +0000 (12:46 -0500)]
lvmlockd: vgchange systemid doen't need global lock

The comment explained that the ex global lock was just
used to trigger global cache invalidation, which is no
longer needed.  This extra locking can cause problems
with LVM-activate when local and shared VGs are mixed
(and the incorrect exit code for errors was causing
problems.)

4 months agolvmlockd: after restart use existing dlm global lockspace
David Teigland [Thu, 27 Jun 2024 17:39:12 +0000 (12:39 -0500)]
lvmlockd: after restart use existing dlm global lockspace

If lvmlockd is killed and restarted, let it adopt the
existing global lockspace.

4 months agolvmlockd: skip LV unlocking with no lvmlockd or no lockspace
David Teigland [Wed, 26 Jun 2024 18:57:30 +0000 (13:57 -0500)]
lvmlockd: skip LV unlocking with no lvmlockd or no lockspace

vgchange -an vg is permitted when the vg lockspace
is not available, because LVs could still be active
for some reason, and they should be inactive when not
properly locked.  In case lvmlockd was not running, or
the lockspace was not started, the command was
unnecessarily trying and failing to unlock every LV,
printing errors for every LV.  We can skip this when
the lockspace is known to not be available.

4 months agolvmlockd: let vgchange lockstop fail with EBUSY for orphans
David Teigland [Wed, 26 Jun 2024 17:06:02 +0000 (12:06 -0500)]
lvmlockd: let vgchange lockstop fail with EBUSY for orphans

vgchange --lockstop will fail with EBUSY if orphan locks in the
lock manager prevent stopping the lockspace.  The orphan locks
can then be adopted and released, and the lockspace then stopped
cleanly.

4 months agolvmlockd: adopt options
David Teigland [Tue, 18 Jun 2024 18:26:09 +0000 (13:26 -0500)]
lvmlockd: adopt options

Lock adoption is not part of standard command behavior, but can
be used for manual recovery or cleanup from unexpected failure
cases.  Like other lockopt values, they are hidden options for
--lockopt.  Different lock managers will behave differently.
Adopting locks with lvmlockd -A1 is more accurate and automatic.

--lockopt adoptls
. for vgchange --lockstart
. adopt existing ls, or fail if no existing lockspace is found

--lockopt adoptgl | adoptvg | adoptlv
. for commands using lvmlockd locks
. adopt orphan gl/vg/lv lock, or fail the lock request if
  no orphan lock is found
. will fail if orphan lock exists with a different lock mode
. command may still continue with a failed shared lock request

--lockopt adopt
. for lockstart or any command using lvmlockd locks
. adopt existing lockspace, or start lockspace if none exists
. adopt orphan gl/vg/lv lock, or acquire new lock if no orphan found
. will fail if orphan lock exists with a different lock mode
. command may still continue with a failed shared lock request
. with dlm this option only works for ls

4 months agolvmlockd: parse lockopt string into flags
David Teigland [Tue, 18 Jun 2024 16:24:02 +0000 (11:24 -0500)]
lvmlockd: parse lockopt string into flags

4 months agolvmlockd: remove unused paramater
David Teigland [Mon, 17 Jun 2024 22:44:41 +0000 (17:44 -0500)]
lvmlockd: remove unused paramater

start_init option has never been used

4 months agovgchange: improve some lvmlockd lockstart messages
David Teigland [Mon, 17 Jun 2024 21:38:19 +0000 (16:38 -0500)]
vgchange: improve some lvmlockd lockstart messages

Stop printing "Skipping global lock: lockspace not found or started"
for vgchange --lockstart, since it's generally an inherent limitation
that the global lock isn't available until after locking is started.

Update the start delay warning to "a few seconds".

4 months agoman: lvmlockd updates
David Teigland [Mon, 17 Jun 2024 20:19:22 +0000 (15:19 -0500)]
man: lvmlockd updates

4 months agolvmlockd: allow service options
David Teigland [Mon, 17 Jun 2024 20:05:33 +0000 (15:05 -0500)]
lvmlockd: allow service options

command line options can be set in /etc/sysconfig/lvmlockd, e.g.
OPTIONS='-A1 -o2'

4 months agolvmlockd: reduce adopt delays
David Teigland [Mon, 17 Jun 2024 19:03:30 +0000 (14:03 -0500)]
lvmlockd: reduce adopt delays

4 months agolvmlockd: update debug messages
David Teigland [Fri, 14 Jun 2024 17:37:02 +0000 (12:37 -0500)]
lvmlockd: update debug messages

Reduce debug messages, and make less verbose.

4 months agolvmlockd: disable lvb for sanlock
David Teigland [Fri, 14 Jun 2024 15:59:35 +0000 (10:59 -0500)]
lvmlockd: disable lvb for sanlock

The lvb is used to hold lock versions, but lock verions are
no longer used (since the removal of lvmetad), so the lvb
is not actually useful.  Disable their use for sanlock to
avoid the extra i/o required to maintain the lvb.

4 months agolvmlockd: skip more vgremove steps with lockopt force
David Teigland [Thu, 13 Jun 2024 20:50:36 +0000 (15:50 -0500)]
lvmlockd: skip more vgremove steps with lockopt force

vgremove with --lockopt force should skip lvmlockd-related
steps and allow a forced vg cleanup, in addition to using
--nolocking to skip normal locking calls.

4 months agolvmlockd: allow forced vgchange locktype from none
David Teigland [Thu, 13 Jun 2024 18:34:23 +0000 (13:34 -0500)]
lvmlockd: allow forced vgchange locktype from none

vgchange --locktype sanlock|dlm --lockopt force <vgname>
can be used to change the lock type without lvmlockd or
the lock manager involved.

4 months agolvmlockd: avoid lockd_vg for local VGs
David Teigland [Wed, 12 Jun 2024 20:36:45 +0000 (15:36 -0500)]
lvmlockd: avoid lockd_vg for local VGs

Previously, a command would call lockd_vg() for a local VG,
which would go to lvmlockd, which would send back ENOLS,
and the command would not care when it saw the VG was local.
The pointless back-and-forth to lvmlockd for local VGs can
be avoided by checking the VG lock_type in lvmcache (which
label_scan now saves there; this wasn't the case back when
the original lockd_vg logic was added.)  If the lock_type
saved during label_scan indicates a local VG, then the
lockd_vg step is skipped.

4 months agoscripts: Install services for devices file init 1350779625
Marian Csontos [Wed, 26 Jun 2024 12:37:17 +0000 (14:37 +0200)]
scripts: Install services for devices file init

Services introduced in commit c609dedc2f035f770b5f645c4695924abf15c2ca
need installing.

4 months agopages: Fix typos
Marian Csontos [Thu, 16 May 2024 11:06:37 +0000 (13:06 +0200)]
pages: Fix typos

4 months agopages: Fix macro
Marian Csontos [Thu, 16 May 2024 10:35:54 +0000 (12:35 +0200)]
pages: Fix macro

4 months agoudev: disable suffix handling 1347921702
Zdenek Kabelac [Tue, 25 Jun 2024 21:13:54 +0000 (23:13 +0200)]
udev: disable suffix handling

The idea in the patch 6e6d4c62b for handling -suffix as
indication of private device needs to be disabled.

Some problematic cases are currently not resolvable and some
more thinking is needed.

Once fixed, we can revert this patch.

4 months agodevice_mapper: empty string for missing uuid 1342146729
Zdenek Kabelac [Fri, 21 Jun 2024 12:47:27 +0000 (14:47 +0200)]
device_mapper: empty string for missing uuid

Constify name & uuid within dm_active_device.
Set uuid to "" for case the DM device has no uuid.
Do not store "empty" device uuid in radix tree.

4 months agoWHATS_NEW: update 1341919345
Zdenek Kabelac [Fri, 21 Jun 2024 09:19:30 +0000 (11:19 +0200)]
WHATS_NEW: update

4 months agolabel: use dev iterator directly
Zdenek Kabelac [Wed, 19 Jun 2024 12:19:52 +0000 (14:19 +0200)]
label: use dev iterator directly

Avoid preparing 'extra' dm_list with devices, and just
use the iterator result directly.

4 months agodev_cache: replace dm_hash with radix_tree
Zdenek Kabelac [Wed, 19 Jun 2024 11:49:48 +0000 (13:49 +0200)]
dev_cache: replace dm_hash with radix_tree

For large device sets our dm_hash can produce larger amounf of mapping
collision and we would need to further increase our has size.

So instead use the radix_tree code which is immune agains growing size
of devices and uses memory more effiecently to store all the paths.

4 months agodev-cache: replace btree with radix_tree usage
Zdenek Kabelac [Wed, 19 Jun 2024 11:09:45 +0000 (13:09 +0200)]
dev-cache: replace btree with radix_tree usage

Instead of less efficient 'btree' switch dev_cache to use
radix_tree, that is generating more efficient tree mapping.

Some direct use of btree iteration replace with our dev_iter code.

4 months agofilter-persistent: convert to use radix_tree
Zdenek Kabelac [Sun, 2 Jun 2024 20:50:11 +0000 (22:50 +0200)]
filter-persistent: convert to use radix_tree

Convert the persisten filter to use more memory compact radix_tree as
dm_hash is bound to preallocated number of slots and stores whole
key together with value.

4 months agodev_manager: check if uuid isn't already in cache
Zdenek Kabelac [Fri, 7 Jun 2024 13:57:42 +0000 (15:57 +0200)]
dev_manager: check if uuid isn't already in cache

When DM uuid cache is available, we can possibly avoid unnecessary
status ioctl() when we check the device for 'usable' uuid.

If this test passes the existing code will got through the full check.

4 months agodevice_mapper: refactor code to lvm library
Zdenek Kabelac [Sun, 2 Jun 2024 21:10:05 +0000 (23:10 +0200)]
device_mapper: refactor code to lvm library

Move the code around caching active dm device devno, name and uuid
from device_mapper/libdm-iface to dev_cache file - as libdm layer
cares about 'decoding' ioctl data from kernel and caching for use by
lvm stays within lvm.

Introduce:
dev_cache_update_dm_devs
dev_cache_get_dm_dev_by_devno
dev_cache_get_dm_dev_by_uuid

Use radix_tree for searching.

4 months agodev_manager: no layer suffix for component
Zdenek Kabelac [Fri, 21 Jun 2024 09:08:30 +0000 (11:08 +0200)]
dev_manager: no layer suffix for component

Do not attach layer suffix to the UUID when activating component LV.

In this case we want to see allow this LV to be public, thus
such LV should not be using -layer suffix in its UUID.

This also requires that our 'cached' access will check for
both UUID (with & without suffix) which was unnoticed issue before.

This change is now necesssary since our udev rule automatically expects
any LV with -layer suffix is private and will prevent generaring
any systemd unit even when there are no 'DM' flags bits passed via
cookie mechanism while creating such LV.

4 months agogcc: pipe error path 1338899200
Zdenek Kabelac [Sun, 16 Jun 2024 13:15:44 +0000 (15:15 +0200)]
gcc: pipe error path

Close opened descriptors on failed fork path.

4 months agogcc: check cv pointer when needed
Zdenek Kabelac [Thu, 13 Jun 2024 21:06:09 +0000 (23:06 +0200)]
gcc: check cv pointer when needed

As 'cv' was already dereferenced, check for NULL with do {} while();
loop.

4 months agogcc: ensure all fmt struct element are initialized
Zdenek Kabelac [Thu, 13 Jun 2024 21:05:46 +0000 (23:05 +0200)]
gcc: ensure all fmt struct element are initialized

4 months agogcc: ensure reset of fd on error path
Zdenek Kabelac [Thu, 13 Jun 2024 21:05:19 +0000 (23:05 +0200)]
gcc: ensure reset of fd on error path

5 months agoraid_manip: prevent reshape with freed component SubLVs 1337051053
Heinz Mauelshagen [Fri, 14 Jun 2024 10:58:12 +0000 (12:58 +0200)]
raid_manip: prevent reshape with freed component SubLVs

In order to free SubLVs after a stripe removing reshape, lvconvert has
to be run without layout changes.   Prevent a layout changing request
in case any such freed SubLVs exist and inform the user about the fact
requesting to release them first.

5 months agotests: adjust lvconvert-raid-reshape-size.sh delays/timeouts
Heinz Mauelshagen [Fri, 14 Jun 2024 10:58:49 +0000 (12:58 +0200)]
tests: adjust lvconvert-raid-reshape-size.sh delays/timeouts

5 months agotests: add reshape size consistency tests script lvconvert-raid-reshape-size.sh 1327393223
Heinz Mauelshagen [Wed, 29 May 2024 16:05:19 +0000 (18:05 +0200)]
tests: add reshape size consistency tests script lvconvert-raid-reshape-size.sh

Calculates expected size before/after reshapes adding/removing stripes
to/from RaidLVs with levels 4/5/6/10 and compares it with the actual
one the block layer shows.  Stripes reshaped to are listed in the
tst_stripes variable.  mkfs/fsck/resize2fs the respective RaidLVs
to confirm ext4 can be resized accordingly without issues.

5 months agoudev: ignore private LVM devs in udev and systemd 1316155102
Peter Rajnoha [Mon, 3 Jun 2024 10:07:07 +0000 (12:07 +0200)]
udev: ignore private LVM devs in udev and systemd

We automatically ignore these devs, when lvm2 create devs,
whoever when lvm2 database is dropped or someone just
created these devs with such formated UUID, there is no
other informantion then to check DM UUID.

5 months agotests: fix wrong pos with CONFIG_PRINTK_CALLER
Zdenek Kabelac [Mon, 3 Jun 2024 11:41:06 +0000 (13:41 +0200)]
tests: fix wrong pos with CONFIG_PRINTK_CALLER

SUSE kernels distribution enables CONFIG_PRINTK_CALLER by default.

One line of cat /dev/kmsg is like:

6,904,9506214456,-,caller=T24012;loop8: detected capacity change from 0
to 354304

If CONFIG_PRINTK_CALLER is off:

6,721,53563833,-;loop0: detected capacity change from 0 to 354304

',caller=T24012' is the redundant part needed to be handled.
Otherwise pos will be lager than buf size causing sz underflowed.
Then constructor of std::string will throw a exception to break
tests:
$ make  check_local  T=shell/000-basic.sh
VERBOSE=0 ./lib/runner \
        --testdir . --outdir results \
        --flavours ndev-vanilla --only shell/000-basic.sh --skip @

running 1 tests
running: [ndev-vanilla] shell/000-basic.sh
            0:00.000Exception: basic_string::_M_create
make[1]: *** [Makefile:148: check_local] Error 1
make[1]: Leaving directory '/root/lvm2/test'
make: *** [Makefile:89: check_local] Error 2

Fix it with strchr for ';' as delimiter to get pos.

Reported-by: Su Yue <glass.su@suse.com>
5 months agoradix_tree: add radix_tree_values
Zdenek Kabelac [Sun, 2 Jun 2024 12:11:37 +0000 (14:11 +0200)]
radix_tree: add radix_tree_values

To more easily adopt radix_tree over existing code base, add
abstraction over 'radix_tree_iterate' which basically builds
an array of all traversed values, and then it's just easy to
go over all array elements.

TODO: code should be converted to use  radix_tree_iterate()
directly as it's more efficient.

Note: it can be possibly to rewrite recursive _iterate() usage
to linear travesal, not sure whether it's worth the effort
as conversion to 'radix_itree_iterator' is relatively simple.

5 months agoradix_tree: add radix_tree_lookup/insert_ptr
Zdenek Kabelac [Sat, 1 Jun 2024 17:30:33 +0000 (19:30 +0200)]
radix_tree: add radix_tree_lookup/insert_ptr

Add simple 'wrapper' inline functions to insert or return ptr lookup value.
(So the user doesn't need to deal with 'union radix_value' locally and
also it makes easier to translage some lvm2 functions to use radix_tree).

Note: If the stored 'value' would NULL, it cannot be recognized
from a case of 'not found'. So usable only when 'values' stored with
tree are not NULL.

5 months agoradix_tree: constify _iterate
Zdenek Kabelac [Sun, 2 Jun 2024 10:30:05 +0000 (12:30 +0200)]
radix_tree: constify _iterate

Use nodes as const.
Swap order of arguments.

5 months agoradix_tree: debug updates
Zdenek Kabelac [Sat, 1 Jun 2024 22:23:14 +0000 (00:23 +0200)]
radix_tree: debug updates

Some updates to _dump()  debugging function so the printed result
can be more easily examined by human.

Also print 'prefix' as string when all chars are printable.

Add 'simple' variant of _dump also to 'simple' version of radix tree
(which is however normally not compiled).

5 months agoradix_tree: api change
Zdenek Kabelac [Fri, 31 May 2024 19:46:19 +0000 (21:46 +0200)]
radix_tree: api change

Instead of using 'key state & key end' uint8_t* switch to use
void* key, & size_t keylen.  This allows easier adaptation with
lvm code base with way too much casting with every use of function.

Also correctly mark const buffers to avoid compiled warnings and
casting.

Adapt the only bcache user ATM for API change.

Adapt unit test to match changed API.

5 months agoradix_tree: indent
Zdenek Kabelac [Fri, 31 May 2024 14:21:24 +0000 (16:21 +0200)]
radix_tree: indent

Some minor indent changes to more easily read code.

5 months agogcc: drop const specifier from allocated string
Zdenek Kabelac [Thu, 30 May 2024 18:41:28 +0000 (20:41 +0200)]
gcc: drop const specifier from allocated string

Use nornal (char*) for pointers we should free().

5 months agocov: annotate already validated lv name
Zdenek Kabelac [Thu, 30 May 2024 12:40:45 +0000 (14:40 +0200)]
cov: annotate already validated lv name

5 months agocleanup: use _ for static var
Zdenek Kabelac [Thu, 30 May 2024 13:41:50 +0000 (15:41 +0200)]
cleanup: use _ for static var

Add missing '_' for some static vars.

5 months agocleanup: remove unneded headers
Zdenek Kabelac [Thu, 30 May 2024 12:24:00 +0000 (14:24 +0200)]
cleanup: remove unneded headers

As the common code was refactored to toollib, this header file
no longer needs to be included here.

5 months agodevice_id: more use of device_get_uuid
Zdenek Kabelac [Wed, 29 May 2024 21:50:38 +0000 (23:50 +0200)]
device_id: more use of device_get_uuid

Use function that is caching UUID if kernel provides functionality
from a single ioctl() call.

5 months agodev-mpath: check uuid with device_get_uuid
Zdenek Kabelac [Wed, 29 May 2024 20:43:11 +0000 (22:43 +0200)]
dev-mpath: check uuid with device_get_uuid

5 months agotypo: fix typos
Zdenek Kabelac [Tue, 28 May 2024 20:55:27 +0000 (22:55 +0200)]
typo: fix typos

Typo and indent.

5 months agocleanup: some more MAJOR MINOR unsigned
Zdenek Kabelac [Tue, 28 May 2024 14:17:53 +0000 (16:17 +0200)]
cleanup: some more MAJOR MINOR unsigned

Finish remaing missing cases where MAJOR/MINOR was casted to (int)
while we can now use it directly as 'unsigned'.

5 months agolvremove: reuse existing dm_build_dm_uuid
Zdenek Kabelac [Thu, 30 May 2024 12:17:33 +0000 (14:17 +0200)]
lvremove: reuse existing dm_build_dm_uuid

Use existing dm_build_dm_uuid() to generate LV's DM UUID.

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 ?)

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