]> sourceware.org Git - lvm2.git/log
lvm2.git
5 years agohints: exclude md components
David Teigland [Tue, 21 May 2019 16:58:01 +0000 (11:58 -0500)]
hints: exclude md components

In some cases md components could be included in
the hints, so add a check to hint creation to make
sure they are excluded.

5 years agomove the setting of use_full_md_check flag
David Teigland [Tue, 21 May 2019 16:51:58 +0000 (11:51 -0500)]
move the setting of use_full_md_check flag

from each command to one location in command init.
No functional change.

5 years agodevs: rename dev_is_md dev_is_md_component
David Teigland [Tue, 21 May 2019 16:44:39 +0000 (11:44 -0500)]
devs: rename dev_is_md dev_is_md_component

The naming was confusing and misleading since
it it's testing if a device is an md component,
not an md device.

5 years agotests: check accepting out-of-range creation_time
Zdenek Kabelac [Fri, 10 May 2019 13:00:21 +0000 (15:00 +0200)]
tests: check accepting out-of-range creation_time

5 years agometadata: allow reading metadata with invalid creation_time
Zdenek Kabelac [Fri, 10 May 2019 12:40:11 +0000 (14:40 +0200)]
metadata: allow reading metadata with invalid creation_time

lvm2 till version 2.02.169 (commit 78d004efa8a1809cea68283e6204edfa9d7c1091)
was printing invalid creation_time argument into metadata on 32bit arch.

However with commit ba9820b14223b731125c83dbc9709aa44fdcdbf1 we started
to properly validate all input numbers and thus we refused to accept
invalid metadata with 'garbage' string - but this results in the
situation where metadata produced on older lvm2 on 32 bit architecture
will become unreadable after upgrade.

To fix this case - extend libdm parser in a way, that whenever we
find error integer value, we also check if the parsed value is not for
creation_time node and in this case we let the metadata pass through
with made-up date 2018-05-24 (release date of 2.02.169).

5 years agotests: split args
Zdenek Kabelac [Mon, 6 May 2019 11:02:45 +0000 (13:02 +0200)]
tests: split args

Here we want args to be splited into individual strings.

5 years agotests: drop call of wipefs
Zdenek Kabelac [Sat, 4 May 2019 17:11:00 +0000 (19:11 +0200)]
tests: drop call of wipefs

wipefs might not be present on test system.
Devices are also already zeroed by cleanup_md_dev
(which 'fakes' missing wipefs eventually)

5 years agopvscan: fix segfault in recent commit
David Teigland [Fri, 3 May 2019 21:51:34 +0000 (16:51 -0500)]
pvscan: fix segfault in recent commit

commit aa75b31db5478
  "pvscan: handle case of scanning PV without metadata last"

failed to recognize that an arg may be null in the case of
'pvscan --cache' (without -aay) which does not keep track
of complete VGs because it does not need to activate them.

5 years agopvs: remove unnecessary label scan
David Teigland [Fri, 3 May 2019 21:12:43 +0000 (16:12 -0500)]
pvs: remove unnecessary label scan

The scanning rework missed removing this instance of label scan.
It's no longer needed because of the way that label scan is always
run once from the start of the command.  This unnecessary scan
would be triggered by running 'pvs @tag'.

5 years agotests: expand lvm-on-md
David Teigland [Fri, 3 May 2019 19:05:40 +0000 (14:05 -0500)]
tests: expand lvm-on-md

test both md raid0 and raid1

5 years agopvscan: don't record PV online after error reading metadata
David Teigland [Thu, 2 May 2019 21:54:28 +0000 (16:54 -0500)]
pvscan: don't record PV online after error reading metadata

5 years agoadd md component check in vg_read based on size
David Teigland [Thu, 2 May 2019 21:41:42 +0000 (16:41 -0500)]
add md component check in vg_read based on size

If an md component is not excluded by other means and
vg_read is used to read metadata from it, then this new
check compares the device size with the PV size, and runs
a full md check on the device if the sizes don't match.

5 years agotests: use luks1 for test
Zdenek Kabelac [Fri, 3 May 2019 11:11:09 +0000 (13:11 +0200)]
tests: use luks1 for test

Since we do not need anywhere luks2 - pick older format
which does not require password for resize to keep
the rest of test unmodified.

5 years agotests: update resize value
Zdenek Kabelac [Wed, 17 Apr 2019 14:14:59 +0000 (16:14 +0200)]
tests: update resize value

Since we now properly extend also _pmspare - there was not enough free
space to add 8extents to both volumes.

5 years agocleanup: use unsigned type
Zdenek Kabelac [Fri, 3 May 2019 10:36:16 +0000 (12:36 +0200)]
cleanup: use unsigned type

5 years agobuild: fix compilation without lvmlockd
Zdenek Kabelac [Fri, 3 May 2019 10:35:22 +0000 (12:35 +0200)]
build: fix compilation without lvmlockd

5 years agolocking: validate locking mode
Zdenek Kabelac [Fri, 3 May 2019 11:01:02 +0000 (13:01 +0200)]
locking: validate locking mode

Ensure 'ret' is always defined and validate 'mode'.

5 years agoclean: avoid cleaning iterator on error path
Zdenek Kabelac [Fri, 3 May 2019 10:01:20 +0000 (12:01 +0200)]
clean: avoid cleaning iterator on error path

Return error dirrectly instead of using 'out' code path.

5 years agoscan: remove comments about lvmetad
David Teigland [Thu, 2 May 2019 18:32:30 +0000 (13:32 -0500)]
scan: remove comments about lvmetad

5 years agolvmlockd: fix snprintf warnings
David Teigland [Thu, 2 May 2019 17:41:00 +0000 (12:41 -0500)]
lvmlockd: fix snprintf warnings

5 years agouse memcpy for constant ondisk strings
David Teigland [Wed, 1 May 2019 21:50:48 +0000 (16:50 -0500)]
use memcpy for constant ondisk strings

Use memcpy/memcmp for on disk strings which are not
null terminated: FMTT_MAGIC, LVM2_LABEL and LABEL_ID.
Quiets compile warnings.

5 years agoremove unused string writecache
David Teigland [Wed, 1 May 2019 21:50:14 +0000 (16:50 -0500)]
remove unused string writecache

5 years agolvmcache: remove unused flag
David Teigland [Tue, 30 Apr 2019 19:59:27 +0000 (14:59 -0500)]
lvmcache: remove unused flag

The new label scan design is never called recursively,
so we don't need a flag to check for that.

5 years agovgcreate: remove the lvmcache locking workaround
David Teigland [Tue, 30 Apr 2019 19:26:16 +0000 (14:26 -0500)]
vgcreate: remove the lvmcache locking workaround

Recent cleanups and simplifications to lvmcache and locking
mean that the odd locking to workaround other issues is now
unnecessary.

5 years agopvcreate: call label scan prior to pvcreate_each_device
David Teigland [Tue, 30 Apr 2019 19:10:27 +0000 (14:10 -0500)]
pvcreate: call label scan prior to pvcreate_each_device

and don't call it from inside pvcreate_each_device.
This avoids having to repeat it for users of
pvcreate_each_device (pvcreate/pvremove/vgcreate/vgextend.)

5 years agopvscan: remove fixme comment that is fixed
David Teigland [Mon, 29 Apr 2019 20:42:20 +0000 (15:42 -0500)]
pvscan: remove fixme comment that is fixed

Remove the fixme comment describing the case that was
fixed by aa75b31db54782fb24b6b7e3c681a61b3579117c
  "pvscan: handle case of scanning PV without metadata last"

5 years agohints: skip hint flock if nolocking option is set
David Teigland [Thu, 25 Apr 2019 18:34:09 +0000 (13:34 -0500)]
hints: skip hint flock if nolocking option is set

5 years agoremove retry for missed PVs in process_each_pv
David Teigland [Tue, 23 Apr 2019 19:47:56 +0000 (14:47 -0500)]
remove retry for missed PVs in process_each_pv

This is no longer needed with the change to orphan
and global locks.

5 years agolocking: unify global lock for flock and lockd
David Teigland [Thu, 18 Apr 2019 20:01:19 +0000 (15:01 -0500)]
locking: unify global lock for flock and lockd

There have been two file locks used to protect lvm
"global state": "ORPHANS" and "GLOBAL".

Commands that used the ORPHAN flock in exclusive mode:
  pvcreate, pvremove, vgcreate, vgextend, vgremove,
  vgcfgrestore

Commands that used the ORPHAN flock in shared mode:
  vgimportclone, pvs, pvscan, pvresize, pvmove,
  pvdisplay, pvchange, fullreport

Commands that used the GLOBAL flock in exclusive mode:
  pvchange, pvscan, vgimportclone, vgscan

Commands that used the GLOBAL flock in shared mode:
  pvscan --cache, pvs

The ORPHAN lock covers the important cases of serializing
the use of orphan PVs.  It also partially covers the
reporting of orphan PVs (although not correctly as
explained below.)

The GLOBAL lock doesn't seem to have a clear purpose
(it may have eroded over time.)

Neither lock correctly protects the VG namespace, or
orphan PV properties.

To simplify and correct these issues, the two separate
flocks are combined into the one GLOBAL flock, and this flock
is used from the locking sites that are in place for the
lvmlockd global lock.

The logic behind the lvmlockd (distributed) global lock is
that any command that changes "global state" needs to take
the global lock in ex mode.  Global state in lvm is: the list
of VG names, the set of orphan PVs, and any properties of
orphan PVs.  Reading this global state can use the global lock
in sh mode to ensure it doesn't change while being reported.

The locking of global state now looks like:

lockd_global()
  previously named lockd_gl(), acquires the distributed
  global lock through lvmlockd.  This is unchanged.
  It serializes distributed lvm commands that are changing
  global state.  This is a no-op when lvmlockd is not in use.

lockf_global()
  acquires an flock on a local file.  It serializes local lvm
  commands that are changing global state.

lock_global()
  first calls lockf_global() to acquire the local flock for
  global state, and if this succeeds, it calls lockd_global()
  to acquire the distributed lock for global state.

Replace instances of lockd_gl() with lock_global(), so that the
existing sites for lvmlockd global state locking are now also
used for local file locking of global state.  Remove the previous
file locking calls lock_vol(GLOBAL) and lock_vol(ORPHAN).

The following commands which change global state are now
serialized with the exclusive global flock:

pvchange (of orphan), pvresize (of orphan), pvcreate, pvremove,
vgcreate, vgextend, vgremove, vgreduce, vgrename,
vgcfgrestore, vgimportclone, vgmerge, vgsplit

Commands that use a shared flock to read global state (and will
be serialized against the prior list) are those that use
process_each functions that are based on processing a list of
all VG names, or all PVs.  The list of all VGs or all PVs is
global state and the shared lock prevents those lists from
changing while the command is processing them.

The ORPHAN lock previously attempted to produce an accurate
listing of orphan PVs, but it was only acquired at the end of
the command during the fake vg_read of the fake orphan vg.
This is not when orphan PVs were determined; they were
determined by elimination beforehand by processing all real
VGs, and subtracting the PVs in the real VGs from the list
of all PVs that had been identified during the initial scan.
This is fixed by holding the single global lock in shared mode
while processing all VGs to determine the list of orphan PVs.

5 years agowipe_lv: initially open LV in writable mode
David Teigland [Fri, 26 Apr 2019 19:49:27 +0000 (14:49 -0500)]
wipe_lv: initially open LV in writable mode

wipe_lv knows it's going to write the device, so it
can open rw from the start.  It was opening readonly,
and then dev_write needed to reopen it readwrite.

5 years agocleanup: missed string specifier
Zdenek Kabelac [Wed, 17 Apr 2019 09:29:35 +0000 (11:29 +0200)]
cleanup: missed string specifier

5 years agolibdaemon: use pselect to avoid condition checking race
Zdenek Kabelac [Wed, 10 Apr 2019 10:50:53 +0000 (12:50 +0200)]
libdaemon: use pselect to avoid condition checking race

To avoid tiny race on checking arrival of signal and entering select
(that can latter remain stuck as signal was already delivered) switch
to use  pselect().

If it would needed, we can eventually add extra code for older systems
without pselect(), but there are probably no such ancient systems in
use.

5 years agoconfigure: check for pselect
Zdenek Kabelac [Wed, 10 Apr 2019 11:22:43 +0000 (13:22 +0200)]
configure: check for pselect

5 years agopvscan: handle case of scanning PV without metadata last
David Teigland [Mon, 15 Apr 2019 16:27:49 +0000 (11:27 -0500)]
pvscan: handle case of scanning PV without metadata last

Handle the case where pvscan --cache -aay (with no dev args)
gets to the final PV, completing the VG, but that final PV does not
have VG metadata.  In this case, we need to use VG metadata from a
previously scanned PV in the same VG, which we saved for this
possibility.  Using this saved metadata, we can find which VG
this PVID belongs to, and then check if that VG is now complete,
and if so add the VG name to the list of complete VGs to be
autoactivated.

5 years agotests: disable unworking pvscan case
David Teigland [Fri, 12 Apr 2019 20:40:38 +0000 (15:40 -0500)]
tests: disable unworking pvscan case

and add corresponding fixme in the code

5 years agohints: fix non-empty hints list when not using hints
David Teigland [Thu, 11 Apr 2019 16:49:18 +0000 (11:49 -0500)]
hints: fix non-empty hints list when not using hints

When hints are invalid and ignored, the list of hints
could be non-empty (from additions before an invalid
hint was found).  This confused the calling code which
was checking for an empty list to see if hints were used.
Ensure the list is empty when hints are not used.

5 years agohints: fix case of error getting device size
David Teigland [Thu, 11 Apr 2019 15:32:28 +0000 (10:32 -0500)]
hints: fix case of error getting device size

When checking hints, if there's an error getting
the device size, that should be equivalent to
seeing zero size.

5 years agosystemd: put back DefaultDependencies=no for lvmpolld socket unit
Peter Rajnoha [Thu, 11 Apr 2019 10:18:02 +0000 (12:18 +0200)]
systemd: put back DefaultDependencies=no for lvmpolld socket unit

Previous commit 0cab341e1d0e8f9089d3c62d3adbec24dfd5e124 removed this
by mistake - we have to keep the DefaultDependencies=no - the
sockets.target is after sysinit.target.

5 years agosystemd: add missing Before=shutdown.target to LVM2 services to fix shutdown ordering
Peter Rajnoha [Tue, 9 Apr 2019 10:10:17 +0000 (12:10 +0200)]
systemd: add missing Before=shutdown.target to LVM2 services to fix shutdown ordering

We already used Conflicts=shutdown target to stop LVM2 services on shutdown.
But we still missed the ordering - the shutdown.target should be reached
only after all the services are really stopped.

Reported here: https://github.com/lvmteam/lvm2/issues/17

5 years agoWHATS_NEW: add several recent changes
David Teigland [Mon, 8 Apr 2019 15:56:43 +0000 (10:56 -0500)]
WHATS_NEW: add several recent changes

5 years agopvscan: ignore device with incorrect size
David Teigland [Fri, 5 Apr 2019 21:44:00 +0000 (16:44 -0500)]
pvscan: ignore device with incorrect size

If a device looks like a PV, but its size does not
match the PV size in the metadata, then skip it for
purposes of autoactivation.  It's probably not wrong
device for the PV.

5 years agopvscan: print more reasons for ignoring devices
David Teigland [Fri, 5 Apr 2019 19:03:38 +0000 (14:03 -0500)]
pvscan: print more reasons for ignoring devices

5 years agotests: update pvscan-autoactivate for init change
David Teigland [Fri, 5 Apr 2019 18:20:09 +0000 (13:20 -0500)]
tests: update pvscan-autoactivate for init change

5 years agopvscan: don't print warning about lvmlockd not running
David Teigland [Thu, 14 Mar 2019 21:25:55 +0000 (16:25 -0500)]
pvscan: don't print warning about lvmlockd not running

pvscan --cache ignores shared VGs, so it doesn't need to
consider lvmlockd, and shouldn't include a warning about it.

5 years agopvscan: remove initialization case
David Teigland [Tue, 26 Feb 2019 22:48:29 +0000 (16:48 -0600)]
pvscan: remove initialization case

In the past, the first 'pvscan --cache -aay dev' command
to run on the system would initialize the pvs_online dir
by scanning all devs and creating online files for all pvs
it found, and then autoactivating the VG (if complete) for
the named dev.  The idea was that the system may not have
been able to run pvscan commands for early devices, so the
first pvscan to run would need to "make up" for any devices
that had appeared previously, which the system was unable to
scan.  The problem or idea of making up for missed scans is
historical and should no longer be needed, so remove this
special init case.

5 years agopvscan: for init only autoactivate vg for named dev
David Teigland [Tue, 26 Feb 2019 22:39:43 +0000 (16:39 -0600)]
pvscan: for init only autoactivate vg for named dev

When pvscan is run for the initialization case (the first
pvscan run on the system), it scans all devs and creates
online files for all PVs it finds.  Previously it would
then autoactivate every complete VG, but change this to
only autoactive the (complete) VG corresponding to the
named device arg(s).

5 years agopvscan: reorganize code
David Teigland [Tue, 26 Feb 2019 22:35:16 +0000 (16:35 -0600)]
pvscan: reorganize code

to simplify and prepare for subsequent change.
Should be no change in behavior.

5 years agoman: updates to lvmlockd
David Teigland [Thu, 4 Apr 2019 19:36:28 +0000 (14:36 -0500)]
man: updates to lvmlockd

- remove reference to locking_type which is no longer used
- remove references to adopting locks which has been disabled
- move some sanlock-specific info out of a general section
- remove info about doing automatic lockstart by the system
  since this was never used (the resource agent does it)
- replace info about lvextend and manual refresh under gfs2
  with a description about the automatic remote refresh

5 years agolvmlockd: do not allow mirror LV to be activated shared
David Teigland [Fri, 22 Mar 2019 17:07:31 +0000 (12:07 -0500)]
lvmlockd: do not allow mirror LV to be activated shared

This reverts 518a8e8cfbb672c2bf5e3455f1fe7cd8d94eb5b0
  "lvmlockd: activate mirror LVs in shared mode with cmirrord"

because while activating a mirror LV with cmirrord worked,
changes to the active cmirror did not work.

5 years agolvextend: refresh shared LV without using select
David Teigland [Thu, 4 Apr 2019 18:19:08 +0000 (13:19 -0500)]
lvextend: refresh shared LV without using select

Using select instead of normal args did not end
up being a help, so remove it.

5 years agotests: check auto-growth of thin-pool meta
Zdenek Kabelac [Wed, 3 Apr 2019 11:25:54 +0000 (13:25 +0200)]
tests: check auto-growth of thin-pool meta

5 years agothin: fix maintenance of _pmspare
Zdenek Kabelac [Wed, 3 Apr 2019 11:02:50 +0000 (13:02 +0200)]
thin: fix maintenance of _pmspare

When metadata grows lvm2 may need to extend also _pmspare volume.

5 years agothin: resize metadata with data
Zdenek Kabelac [Wed, 3 Apr 2019 11:01:06 +0000 (13:01 +0200)]
thin: resize metadata with data

When data are growing, adapt also size of metadata.
As we get way too many reports from users doing huge growths of
data portion while keep metadata small and avoiding using monitoring.

So to enhance the user-experience in case user requests grown of
thin-pool (without passing PV list for growth) - lvm2 will automaticaly
grown also the metadata part of thin-pool (if possible).

5 years agothin: introduce estimate_thin_pool_metadata_size
Zdenek Kabelac [Wed, 3 Apr 2019 10:56:48 +0000 (12:56 +0200)]
thin: introduce estimate_thin_pool_metadata_size

Add function for estimation of thin-pool metadata size for given size of
data. Function is using already existing internal API so it can
be reused for resize of thin-pool data.

5 years agofilter: fix mpath test
Zdenek Kabelac [Wed, 3 Apr 2019 11:06:00 +0000 (13:06 +0200)]
filter: fix mpath test

Fix bug which leaked into commit
dc6dea40331687b8740cc48833f4c7c42a2db1a1,
where the testing code got mistakenly commited.

5 years agolvresize: fix when compiled without lvmlockd
David Teigland [Tue, 2 Apr 2019 15:50:12 +0000 (10:50 -0500)]
lvresize: fix when compiled without lvmlockd

The no-op result of lockd_lv_resize should be success.

5 years agolvextend: refresh shared LV with vgname as arg
David Teigland [Fri, 22 Mar 2019 20:01:29 +0000 (15:01 -0500)]
lvextend: refresh shared LV with vgname as arg

Update the previous commit to leave the vgname as
an arg instead of moving it into the select option,
(the compound select option rule is confusing the
dlm arg processing.)

5 years agolvextend: refresh shared LV using select option
David Teigland [Fri, 22 Mar 2019 19:28:02 +0000 (14:28 -0500)]
lvextend: refresh shared LV using select option

Using --select 'lvname=LV && vgname=VG' avoids the problem
of the lvchange exit code not distinguishing an actual error
result vs the VG or LV not existing.  (This is in case there
is an odd dlm/gfs2 setup where some nodes are running the dlm
but do not have access to the VG.)

5 years agolvextend: refresh shared LV remotely using dlm/corosync
David Teigland [Wed, 20 Mar 2019 18:20:26 +0000 (13:20 -0500)]
lvextend: refresh shared LV remotely using dlm/corosync

When lvextend extends an LV that is active with a shared
lock, use this as a signal that other hosts may also have
the LV active, with gfs2 mounted, and should have the LV
refreshed to reflect the new size.  Use the libdlmcontrol
run api, which uses dlm_controld/corosync to run an
lvchange --refresh command on other cluster nodes.

5 years agolvextend: allow on LV active with a shared lock
David Teigland [Tue, 19 Mar 2019 19:38:38 +0000 (14:38 -0500)]
lvextend: allow on LV active with a shared lock

Detect when a shared lock exists, don't require the
normal exclusive lock, and allow the lvextend.

5 years agowarn about changes to an active lv with shared lock
David Teigland [Thu, 7 Mar 2019 17:20:41 +0000 (11:20 -0600)]
warn about changes to an active lv with shared lock

When an LV is active with a shared lock, a command can be
run to change the LV with --lockopt skiplv (to override the
exclusive lock the command ordinarily requires which is not
compatible with the outstanding shared lock.)

In this case, other commands may have the LV active and may
need to refresh the LV, so print warning stating this.

5 years agotests: vdo caching tests
Zdenek Kabelac [Sat, 26 Jan 2019 00:36:07 +0000 (01:36 +0100)]
tests: vdo caching tests

5 years agotests: vdo dmevent autoresize
Zdenek Kabelac [Thu, 24 Jan 2019 13:16:18 +0000 (14:16 +0100)]
tests: vdo dmevent autoresize

5 years agoman: dmeventd vdo plugin
Zdenek Kabelac [Wed, 23 Jan 2019 21:51:00 +0000 (22:51 +0100)]
man: dmeventd vdo plugin

5 years agoman: basic vdo stacking support
Zdenek Kabelac [Thu, 24 Jan 2019 13:57:36 +0000 (14:57 +0100)]
man: basic vdo stacking support

Document some basic lvconvert stacking posibilities.

5 years agoactivation: synchronize before removing devices
Zdenek Kabelac [Wed, 6 Feb 2019 11:37:47 +0000 (12:37 +0100)]
activation: synchronize before removing devices

Udev is running udev-rule action upon 'resume'.

However lvm2 in special case is doing replacement of
'soon-to-be-removed' device with 'error' target for resuming
and then follows actual removal - the sequence is usually quick,
so when udev start action - it can result in 'strange' error
message in kernel log like:

Process '/usr/sbin/dmsetup info -j 253 -m 17 -c --nameprefixes --noheadings --rows -o name,uuid,suspended' failed with exit code 1.

To avoid this - we need to ensure there is synchronization wait for udev
between 'resume'  and 'remove' part of this process.

However existing code put strict requirement to avoid synchronizing with
udev inside critical section - but this originally came from requirement
to not do anything special while there could be devices in
suspend-state. Now we are able to see differnce between critical section
with or without suspended devices.  For udev synchronization only
suspended devices are prohibited to be there - so slightly relax
condition and allow calling and using 'fs_sync()' even inside critical
section - but there must not be any suspended device.

5 years agovdo: enable caching for vdopool LV and vdo LV
Zdenek Kabelac [Thu, 24 Jan 2019 13:12:26 +0000 (14:12 +0100)]
vdo: enable caching for vdopool LV and vdo LV

Allow using caching with VDO.
User can either cache a single vdopool or
a vdo LV - difference when the caching is put-in depends on a use-case
and it's upto user to decide which kind of speed is expected.

5 years agolv_manip: insert remove layer skips pools
Zdenek Kabelac [Thu, 24 Jan 2019 13:14:31 +0000 (14:14 +0100)]
lv_manip: insert remove layer skips pools

Fixing renaming of subLVs when removing and inserting layers - this
got visible when using stacked VDO pools.

5 years agotests: check vgsplit works with cache
Zdenek Kabelac [Fri, 1 Feb 2019 22:45:12 +0000 (23:45 +0100)]
tests: check vgsplit works with cache

5 years agocache: support vgsplit
Zdenek Kabelac [Fri, 1 Feb 2019 20:29:22 +0000 (21:29 +0100)]
cache: support vgsplit

Enable vgsplit to work with VG containing cached LVs.

5 years agothin: max thin
Zdenek Kabelac [Tue, 29 Jan 2019 17:45:52 +0000 (18:45 +0100)]
thin: max thin

5 years agodebug: use log_warn
Zdenek Kabelac [Wed, 13 Mar 2019 11:58:13 +0000 (12:58 +0100)]
debug: use log_warn

This reports are not causing command failure, so report them as
warning.

5 years agofilter: enhance mpath detection
Zdenek Kabelac [Wed, 13 Mar 2019 12:02:09 +0000 (13:02 +0100)]
filter: enhance mpath detection

Internal detection of SCSI device being in-use by DM mpath has been
performed several times for each component device - this could be
eventually racy - so instead when we do remember  1st. checked result
for device being mpath and use it consistenly over the filter runtime.

5 years agodev_manager: add dev_manager_remove_dm_major_minor
Zdenek Kabelac [Wed, 13 Mar 2019 11:59:59 +0000 (12:59 +0100)]
dev_manager: add dev_manager_remove_dm_major_minor

Move DM usage into dev_manager.c source file.
Also convert STATUS to INFO ioctl - as that's enough
to obtain UUID - this also avoid issuing unwanted flush on checked DM
device for being mpath.

5 years agogitignore: update
Zdenek Kabelac [Wed, 6 Mar 2019 13:39:17 +0000 (14:39 +0100)]
gitignore: update

5 years agopvscan: fix ignoring foreign PVs
David Teigland [Wed, 13 Mar 2019 21:03:02 +0000 (16:03 -0500)]
pvscan: fix ignoring foreign PVs

Fix to previous commit
  "pvscan: ignore online for shared and foreign PVs"

which was incorrectly considering a PV foreign if its
VG had no system ID when the host did have a system ID.

5 years agoconfig: improve scan_lvs description
David Teigland [Wed, 6 Mar 2019 19:33:07 +0000 (13:33 -0600)]
config: improve scan_lvs description

5 years agotests: check that pvscan --cache ignores certain PVs
David Teigland [Wed, 6 Mar 2019 18:17:47 +0000 (12:17 -0600)]
tests: check that pvscan --cache ignores certain PVs

5 years agopvscan: ignore online for shared and foreign PVs
David Teigland [Tue, 5 Mar 2019 21:19:05 +0000 (15:19 -0600)]
pvscan: ignore online for shared and foreign PVs

Activation would not be allowed anyway, but we can
check for these cases early and avoid wasted time in
pvscan managing online files an attempting activation.

5 years agopvscan: ignore online for unused PV
David Teigland [Mon, 4 Mar 2019 20:25:53 +0000 (14:25 -0600)]
pvscan: ignore online for unused PV

If an unused PV comes online, ignore it from
pvscan --cache.

5 years agoWHATS_NEW: io_memory_size
David Teigland [Mon, 4 Mar 2019 18:22:49 +0000 (12:22 -0600)]
WHATS_NEW: io_memory_size

5 years agoio: increase the default io memory from 4 to 8 MiB
David Teigland [Mon, 4 Mar 2019 17:18:34 +0000 (11:18 -0600)]
io: increase the default io memory from 4 to 8 MiB

This is the default bcache size that is created at the
start of the command.  It needs to be large enough to
hold a single copy of metadata for a given VG, or the
VG cannot be read or written (since the entire VG would
not fit into available memory.)

Increasing the default reduces the chances of anyone
needing to increase the default to use their VG.

The size can be set in lvm.conf global/io_memory_size;
the lower limit is 4 MiB and the upper limit is 128 MiB.

5 years agoio: warn when metadata size approaches io memory size
David Teigland [Mon, 4 Mar 2019 18:13:09 +0000 (12:13 -0600)]
io: warn when metadata size approaches io memory size

When a single copy of metadata gets within 1MB of the
current io_memory_size value, begin printing a warning
that the io_memory_size should be increased.

5 years agoconfig: add new setting io_memory_size
David Teigland [Fri, 1 Mar 2019 19:55:59 +0000 (13:55 -0600)]
config: add new setting io_memory_size

which defines the amount of memory that lvm will allocate
for bcache.  Increasing this setting is required if it is
smaller than a single copy of VG metadata.

5 years agoremove unused io functions
David Teigland [Thu, 28 Feb 2019 16:48:30 +0000 (10:48 -0600)]
remove unused io functions

5 years agologging: remove unused code
David Teigland [Thu, 28 Feb 2019 16:30:54 +0000 (10:30 -0600)]
logging: remove unused code

Incomplete bits of original code that's unused.

5 years agopvscan service: use StartLimitIntervalSec
David Teigland [Thu, 28 Feb 2019 14:50:37 +0000 (08:50 -0600)]
pvscan service: use StartLimitIntervalSec

systemd changed the name

5 years agoUse "cachevol" to refer to cache on a single LV
David Teigland [Wed, 30 Jan 2019 15:55:34 +0000 (09:55 -0600)]
Use "cachevol" to refer to cache on a single LV

and "cachepool" to refer to a cache on a cache pool object.

The problem was that the --cachepool option was being used
to refer to both a cache pool object, and to a standard LV
used for caching.  This could be somewhat confusing, and it
made it less clear when each kind would be used.  By
separating them, it's clear when a cachepool or a cachevol
should be used.

Previously:

- lvm would use the cache pool approach when the user passed
  a cache-pool LV to the --cachepool option.

- lvm would use the cache vol approach when the user passed
  a standard LV in the --cachepool option.

Now:

- lvm will always use the cache pool approach when the user
  uses the --cachepool option.

- lvm will always use the cache vol approach when the user
  uses the --cachevol option.

5 years agoconfig: make hints setting commented
David Teigland [Tue, 26 Feb 2019 21:54:30 +0000 (15:54 -0600)]
config: make hints setting commented

5 years agologging: new config settings to specify debug fields
David Teigland [Tue, 26 Feb 2019 20:31:44 +0000 (14:31 -0600)]
logging: new config settings to specify debug fields

For users who do not want all of the fields included
in debug lines, let them specify in lvm.conf which
fields to include.  timestamp, command[pid], and
file:line fields can all be disabled.

5 years agopvscan: fix hint recreation
David Teigland [Tue, 26 Feb 2019 16:30:11 +0000 (10:30 -0600)]
pvscan: fix hint recreation

Restore part of the fix from f0089472e7 that was lost
in the process of backporting 74a388cca1.

5 years agologging: add command[pid] and timestamp to file and verbose output
David Teigland [Fri, 22 Feb 2019 18:01:20 +0000 (12:01 -0600)]
logging: add command[pid] and timestamp to file and verbose output

Without this, the output from different commands in a single
log file could not be separated.

Change the default "indent" setting to 0 so that the default
debug output does not include variable spaces in the middle
of debug lines.

5 years agodmsetup: Fix multi-line concise table parsing
Alasdair G Kergon [Mon, 25 Feb 2019 13:41:51 +0000 (13:41 +0000)]
dmsetup: Fix multi-line concise table parsing

Use the correct loop variable within the loop, instead of reusing the
initial value.  Table lines after the first don't get terminated in
the right place.

Signed-off-by: Kurt Garloff <kurt@garloff.de>
5 years agoWHATS_NEW: concurrent pvscan autoactivation
David Teigland [Thu, 21 Feb 2019 21:31:23 +0000 (15:31 -0600)]
WHATS_NEW: concurrent pvscan autoactivation

5 years agopvscan: autoactivate a VG once
David Teigland [Wed, 13 Feb 2019 20:21:56 +0000 (14:21 -0600)]
pvscan: autoactivate a VG once

When a VG has multiple PVs, and all those PVs come online
at the same time, concurrent pvscans for each PV will all
create the individual pvid files, and all will often see
the VG is now complete.  This causes each of the pvscan
commands to think it should activate the VG, so there
are multiple activations of the same VG.  The vg lock
serializes them, and only the first pvscan actually does
the activation, but there is still a lot of extra overhead
and time used by the other pvscans that attempt to
activate the already active VG.  This can lead to a backlog
of pvscans and timeouts.

To fix this, this adds a new /run/lvm/vgs_online/ dir that
works like the existing /run/lvm/pvs_online/ dir.  Each pvscan
that wants to activate a VG will first try to exlusively create
the file vgs_online/<vgname>.  Only the first pvscan will
succeed, and that one will do the VG activation. The other
pvscans will find the vgname file exists and will not do the
activation step.

When a PV goes offline, the vgs_online file for the corresponding
VG is removed.  This allows the VG to be autoactivated again
when the PV comes online again.  This requires that the vgname be
stored in the pvid files.

5 years agopvscan: fix autoactivation from concurrent pvscans
David Teigland [Wed, 13 Feb 2019 19:35:24 +0000 (13:35 -0600)]
pvscan: fix autoactivation from concurrent pvscans

Use a file lock to ensure that only one pvscan will do
initialization of pvs_online, otherwise multiple concurrent
pvscans may all see an empty pvs_online directory and
do initialization.

The pvscan that is doing initialization should also only
attempt to activate complete VGs.

5 years agoWHATS_NEW: scan_lvs default change
David Teigland [Wed, 20 Feb 2019 20:04:49 +0000 (14:04 -0600)]
WHATS_NEW: scan_lvs default change

5 years agotests: set scan_lvs=1 in tests that stack PVs on LVs
David Teigland [Wed, 20 Feb 2019 19:31:30 +0000 (13:31 -0600)]
tests: set scan_lvs=1 in tests that stack PVs on LVs

5 years agoconfig: change scan_lvs default to 0
David Teigland [Wed, 20 Feb 2019 19:30:46 +0000 (13:30 -0600)]
config: change scan_lvs default to 0

so that lvm does not scan LVs for PVs by default.

5 years agohints: fix recreating hints from pvscan
David Teigland [Wed, 13 Feb 2019 21:23:43 +0000 (15:23 -0600)]
hints: fix recreating hints from pvscan

When aay was included in the pvscan --cache command,
the activation part was complaining about the unusual
state of the hint file since it had been recreated
just prior.

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