1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-01-09 01:18:39 +03:00
Commit Graph

17988 Commits

Author SHA1 Message Date
Zdenek Kabelac
d2a2720ccb vdo: add reformating to extent size aligned virtual size
Newer VDO kernel target require to have matching virtual size - this
however cause incompatiblity when lvcreate is let to format VDO data
device and read the usable size from vdoformat.
Altough this is a kernel regression and will likely get fixed,
lvm2 can actually reformat VDO device to use properly aligned VDO LV
size to make this problem disappear.

(cherry picked from commit a477490e81)
2023-06-20 15:36:25 +02:00
Zdenek Kabelac
783213e4da vdo: check vdo memory constrains
Add function to check for avaialble memory for particular VDO
configuration - to avoid unnecessary machine swapping for configs
that will not fit into memory (possibly in locked section).

Formula tries to estimate RAM size machine can use also with
swapping for kernel target - but still leaving some amount of
usable RAM.

Estimation is based on documented RAM usage of VDO target.

If the /proc/meminfo would be theoretically unavailable, try to use
'sysinfo()' function, however this is giving only free RAM without
the knowledge about how much RAM could be eventually swapped.

TODO: move _get_memory_info() into generic lvm2 API function used
by other targets with non-trivial memory requirements.

(cherry picked from commit ebad057579)
2023-06-20 15:36:19 +02:00
Zdenek Kabelac
1a39e0c2c2 vdo: update info about memory
Add more info about kernel target memory allocation associated with
VDO pool usage.

(cherry picked from commit f445624c33)
2023-06-20 15:36:00 +02:00
Zdenek Kabelac
e82e23447f vdo: fix conversion of vdo_slab_size_mb 2nd
Patch 1b070f366b should have
been already fixing this issue but since it the incorrect
patch rebasing the change to vdo_slabSize got lost.
So again now with explicit one-line patch.

(cherry picked from commit d2667bc25b)
2023-06-20 15:33:42 +02:00
Tony Asleson
8702e97022 lvmdbusd: Change unit test vdo minimum size
(cherry picked from commit 47c61907b4)
2023-06-20 15:33:36 +02:00
Zdenek Kabelac
64a78a2904 tests: update for wrapper
Update calling vdo manager since our vdo wrapper has a simple shell
arg parser so it needs args without '='

Also correct using  DM_DEV_DIR for 'pvcreate'

(cherry picked from commit 4a49851207)
2023-06-20 15:33:24 +02:00
Zdenek Kabelac
2456b39b34 tests: add lvm_vdo_wrapper
Introduce a replacement vdo manager wrapper for testing.
When using test suite on a system without vdo manager (which has got
deprecated) - we still need its functionality to prepare 'vdo volume'
for testing lvm_import_vdo.

Wrapper currently need 2 binaries from older 'vdo 6.2' package -
to be named:
oldvdoformat - format VDO metadata with older format
oldvdoprepareforlvm - shift vdo metadata by 1MiB

(cherry picked from commit 2ecfd503ed)
2023-06-20 15:33:14 +02:00
Zdenek Kabelac
a147a14813 vdo: fix conversion of vdo_slab_size_mb
When converting VDO volume, the parameter vdo_slabSize was
incorrectly copied as vdo_blockMapCacheSize, however this parameter
is then no longer used for any table line creation so the wrong
value was only stored in metadata.

Also use just single get_kb_size_with_unit_ and remove it's duplicate
functionality with get_mb_size_with_unit_.

Use $VERB for vdo remove call.

(cherry picked from commit 1b070f366b)
2023-06-20 15:30:59 +02:00
Andrew Walsh
c41468a8ac vdo: ensure VDO config is removed
Make sure to remove the VDO config after conversion
of LVM-backed VDO.

Addresses point 3 in rhbz#1987024#c5

(cherry picked from commit 522561e64b)
2023-06-20 14:54:13 +02:00
Zdenek Kabelac
cce56ebaa6 vdo: report supported range in error path
(cherry picked from commit 9f3eff002c)
2022-12-08 15:25:33 +01:00
Zdenek Kabelac
b16082b056 vdo: use defines also for configuration defines
Keep single source for most of values printed in lvm.conf
(still needs some conversion)

Correct max for logical threads to 60
(we may refuse some older configuration which might eventually
user higher numbers - but so far let's assume no user have ever set this
as it's been non-trivial and if would complicate code unnecessarily.)

Accept maximum of 4PiB for virtual size of VDO LV
(lvm2 will drop 'header borders to 0 for this case').

(cherry picked from commit b5c8e591ed)
2022-12-08 15:25:22 +01:00
Zdenek Kabelac
d0b5614d43 vdo: use single validator
Add era lenght validation into dm_vdo_validate_target_params()
and reuse this validator also for _check_lv_segment().

(cherry picked from commit 8ca2b1bc21)
2022-12-08 15:25:12 +01:00
Marian Csontos
71354c3935 make: generate 2022-12-08 14:32:23 +01:00
Zdenek Kabelac
b56e8fc94d vdo: fix --vdosettings parser
Parser was incorrectly parsing vdo_use_features - move the skip
of 'use_' prefix into internal loop which handles skipping of '_'.

(cherry picked from commit bba96e8680)
2022-12-08 12:34:22 +01:00
Zdenek Kabelac
7db3a53d8a thin: fix message processing on thin-pool extension
When thin-pool had queued some delete message on extension operation
such message has been 'lost' and thin-pool kernel metadata has been
left with a thin volume that no longer existed for lvm2 metadata.

(cherry picked from commit 0937113146)
2022-11-29 14:09:25 +01:00
David Teigland
0b9d9963b8 vgimportdevices: fix locking when creating devices file
Take the devices file lock before creating a new devices file.
(Was missed by the change to preemptively create the devices
file prior to setup_devices(), which was done to improve the
error path.)
2022-11-28 17:11:21 +01:00
David Teigland
f1d8c01dff vgimportdevices: change result when devices are not added
When using --all, if one VG is skipped, continue adding
other VGs, and do not return an error from the command
if some VGs are added. (A VG is skipped if it's missing PVs.)

If the command fails during devices file setup or device
scanning, then remove the devices file if it has been
newly created by the command, and exit with an error.

If devices from a named VG are not imported (e.g. the
VG is missing devices), then remove the devices file if
it has been newly created by the command, and exit with
an error.

If --all VGs are being imported, and no devices are found
to include in the devices file, then remove the devices
file if it has been newly created by the command, and
exit with an error.
2022-11-28 17:11:21 +01:00
Tony Asleson
0aa45120e9 lvmdbusd: Set LVM_COMMAND_PROFILE=lvmdbusd
We need this to prevent lvm from interleaving the JSON output with errors
written to stderr.

(cherry picked from commit a5e6947d74)
2022-11-28 17:11:21 +01:00
Zdenek Kabelac
7394382550 lvconvert: correct test support for vdo-pool
(cherry picked from commit d0697be500)
2022-11-28 17:11:21 +01:00
David Teigland
87904fbbb8 devices file: fix pvcreate --uuid matching pvid entry with no device id
pvcreate with --uuid would segfault if a devices file entry matched
the specified pvid, but the devices file entry had no device_id, which
could happen if the entry has a devname idtype.
2022-11-02 13:23:52 -05:00
David Teigland
377ed7d9ba apply multipath_component_detection=0 to duplicate PV handling
multipath_component_detection=0 has always applied to the filter-based
component detection.  Also apply this setting to the duplicate-PV
handling which also eliminates multipath components (based on duplicate
PVs having the same wwid.)
2022-11-02 12:20:07 -05:00
David Teigland
73b9a2805c exit with error when --devicesfile name doesn't exist 2022-07-06 10:22:28 -05:00
Marian Csontos
e60d7ce8e7 build: Fix make rpm with VERSION_DM without dash
When building RPM from a branch based on a release tag the expected -git
suffix is missing breaking the script producing error like following one:

    error: line 215: Unterminated rich dependency: (2021-53.ge36b180a6.el9: Requires: device-mapper-devel >= 1.02.181 (2021-53.ge36b180a6.el9
2022-06-15 11:53:51 +02:00
David Teigland
e36b180a69 filter-mpath: get wwids from sysfs vpd_pg83
to compare with wwids in /etc/multipath/wwids when
excluding multipath components.  The wwid printed
from the sysfs wwid file may not be the wwid used
in multipath wwids.  Save the wwids found for each
device on dev->wwids to avoid repeating reading
and parsing the sysfs files.
2022-06-09 14:33:30 -05:00
Zdenek Kabelac
7cb63b05da vdo: fix conversion of vdo_slab_size_mb
When converting VDO volume, the parameter vdo_slabSize was
incorrectly copied as vdo_blockMapCacheSize, however this parameter
is then no longer used for any table line creation so the wrong
value was only stored in metadata.

Also use just single get_kb_size_with_unit_ and remove it's duplicate
functionality with get_mb_size_with_unit_.

Use $VERB for vdo remove call.
2022-06-09 14:33:30 -05:00
David Teigland
25abb5730f filter-mpath: handle other wwid types in blacklist
Fixes commit 494372b4ee
  "filter-mpath: use multipath blacklist"
to handle wwids with initial type digits 1 and 2 used
for t10 and eui ids.  Originally recognized type 3 naa.
2022-06-09 14:33:30 -05:00
David Teigland
bf0b396208 devices file: fail if --devicesfile filename doesn't exist
A typo of the filename after --devicesfile should result in a
command error rather than the command falling back to using no
devices file at all.  Exception is vgcreate|pvcreate which
create a new devices file if the file name doesn't exist.
2022-06-09 14:33:30 -05:00
David Teigland
eda98e4b94 devices file: move clean up after command is run
devices_file_exit wasn't being called between lvm_shell
commands, so the file lock wouldn't be released.
2022-06-09 14:33:30 -05:00
Peter Rajnoha
45a2ccfa3b toollib: fix segfault when handling selection with historical LVs
When processing historical LVs inside process_each_lv_in_vg for
selection, we need to use dummy "_historical_lv" for select_match_lv.

This is because a historical LV is not an actual LV, but only a tiny
representation with subset of original properties that we recorded
(name, uuid...).

To use the same processing functions we use for full-fledged non-historical
LVs, we need to use the prefilled "_historical_lv" structure which has all
the other missing properties hard-coded.
2022-06-09 14:33:30 -05:00
Zdenek Kabelac
9c6954bc61 vdo: support --vdosettings
Allow to use --vdosettings with lvcreate,lvconvert,lvchange.
Support settings currenly only configurable via lvm.conf.
With lvchange we require inactivate LV for changes to be applied.

Settings block_map_era_length has supported alias block_map_period.
2022-06-09 14:33:29 -05:00
David Teigland
e027f4da9b improve description of devices option 2022-06-09 14:33:29 -05:00
David Teigland
5d40b91bd4 filter-mpath: use multipath blacklist
Explicit wwid's from these sections control whether the
same wwid in /etc/multipath/wwids is recognized as a
multipath component.  Other non-wwid keywords are not
used, and may require disabling the use of the multipath
wwids file in lvm.conf.
2022-06-09 14:33:29 -05:00
David Teigland
d964328355 devices file: remove extraneous unlock in vgchange -u
vgchange -u exit path was unlocking the devices file in cases
when it wasn't needed, which produced an warning.
2022-06-09 14:33:29 -05:00
David Teigland
6de2a6a378 lvmlockd: return error from vgcreate init_vg_sanlock
in vgcreate for shared sanlock vg, if sanlock_write_resource
returns an unexpected error, then make init_vg_sanlock fail
which will cause the vgcreate to fail.
2022-06-09 14:33:29 -05:00
David Teigland
4aa92f3e18 vgimportdevices: fix incorrect deviceidtype usage
When a VG has PVs with different device id types,
it would try to use the idtype of the previous PV
in the loop.  This would produce an unncessary warning,
or could lead to using the devname idtype when a better
idtype is available.
2022-06-09 14:33:29 -05:00
David Teigland
090dc0c320 change messages about filtered devices
Change messages that refer to devices being "excluded by filters"
to say just "excluded".  This will avoid mistaking the word
"filters" with the lvm.conf filter setting.
2022-06-09 14:33:29 -05:00
David Teigland
10a598075a writecache: check memory usage
warn if writecache neds > 50% of system memory, and
confirm if writecache needs > 90% of system memory.
2022-06-09 14:33:28 -05:00
David Teigland
932b9720bb devices: use dev-cache aliases handling from label scan functions
The label scan functions where doing some device alias validation
which is now better handled by the dev-cache layer, so just use
that.
2022-06-09 14:33:28 -05:00
David Teigland
591b5f006f devices: fix dev_name assumptions
dev_name(dev) returns "[unknown]" if there are no names
on dev->aliases.  It's meant mainly for log messages.

Many places assume a valid path name is returned, and
use it directly.  A caller that wants to use the path
from dev_name() must first check if the dev has any
paths with dm_list_empty(&dev->aliases).
2022-06-09 14:33:28 -05:00
David Teigland
7dc7ab8e99 devices: initial use of existing option
Use dev_cache_get_existing() in a few common, high level
locations where it's obvious that only existing dev-cache
entries are wanted.  This can be expanded and used in more
locations (or dev_cache_get can stop creating new entries.)
2022-06-09 14:33:28 -05:00
David Teigland
8ba6259b24 devices: drop incorrect paths from aliases list
along with some basic checks for cases when a device
has no aliases.

lvm itself creates many situations where a struct device
has no valid paths, when it activates and opens an LV,
does something with it, e.g. zeroing, and then closes
and deactivates it.  (dev-cache is intended for PVs, and
the use of LVs should be moved out of dev-cache in a
future patch.)
2022-06-09 14:33:28 -05:00
David Teigland
8552290efa devices: simplify dev_cache_get_by_devt
remove unused args, and no callers need or want a
repeated dev_cache_scan if there is no dev from the
lookup.
2022-06-09 14:33:23 -05:00
David Teigland
c047ff61f6 writecache: display block size from lvs
lvs was missing the ability to display writecache block size.
now possible with lvs -o writecache_block_size
2022-06-09 11:33:14 -05:00
David Teigland
cdefd8635d man lvmcache: mention writecache memory usage 2022-06-09 11:32:52 -05:00
David Teigland
08a5619a1d devices file: do not clear PVID of unread devices
In a certain disconnected state, a block device is present on
the system, can be opened, reports a valid size, reports the
correct device id (wwid), and matches a devices file entry.
But, reading the device can still fail.  In this case,
device_ids_validate() was misinterpreting the read error as
the device having no data/label on it (and no PVID).
The validate function would then clear the PVID from the
devices file entry for the device, thinking that it was
fixing the devices file (making it consistent with the on disk
state.)  Fix this by not attempting to check and correct a
devices file entry that cannot be read.  Also make this case
explicit in the hints validation code (which was doing the
right thing but indirectly.)
2022-06-09 11:32:40 -05:00
David Teigland
df2b1555af lvmdevices: make deldev work for missing device 2022-06-09 11:30:07 -05:00
David Teigland
4e72068216 lvmdevices: fix checks when adding entries
Removes some incorrect and unnecessary checks for other entries
when adding a new devices.  The removed checks and corrections were
mostly redundant with what is already done by device id matching.
Other checking is reworked so the warnings are a bit different.
2022-06-09 11:29:57 -05:00
David Teigland
7b79acc616 devices: exclude md components when duplicate pvs are seen
Improve handling of md components that get through the
filter, like the previous improvement for multipath.
If md components get through the filter and trigger
duplicate PV code, then eliminate any devs entirely
that are not an md device.
2022-05-25 12:07:52 -05:00
David Teigland
5403a6f059 devices: exclude multipath components based on matching wwid
If multipath component devices get through the filter and
cause lvm to see duplicate PVs, then check the wwid of the
devs and drop the component devices as if they had been
filtered.  If a dm mpath device was found among the duplicates
then use that as the PV, otherwise do not use any of the
components as the PV.

"duplicate PVs" associated with multipath configs will no
longer stop commands from working.
2022-05-25 12:07:35 -05:00
David Teigland
9375aebad1 Revert "pvcreate: overwrite partition header with -f"
This reverts commit a5c37afdca.

This commit did not properly recognize GPT cases.
2022-01-18 12:16:52 -06:00