]> sourceware.org Git - lvm2.git/log
lvm2.git
9 years agotoollib: handle duplicate pvs in process_in_pv
David Teigland [Fri, 9 Jan 2015 20:55:16 +0000 (14:55 -0600)]
toollib: handle duplicate pvs in process_in_pv

Processes a PV once for each time a device with its PV ID
exists on the command line.

This fixes a regression in the case where:

. devices /dev/sdA and /dev/sdB where clones (same PV ID)

. the cached VG references /dev/sdA

. before the regression, the command: pvs /dev/sdB
  would display the cached device clone /dev/sdA

. after the regression, pvs /dev/sdB would display nothing,
  causing vgimportclone /dev/sdB to fail.

. with this fix, pvs /dev/sdB displays /dev/sdA

Also, pvs /dev/sdA /dev/sdB will report two lines, one for each
device on the command line, but /dev/sdA is displayed for each.

This only works without lvmetad.

9 years agodmeventd: Call lvscan --cache also for mirrors (in addition to RAID).
Petr Rockai [Wed, 14 Jan 2015 17:04:46 +0000 (18:04 +0100)]
dmeventd: Call lvscan --cache also for mirrors (in addition to RAID).

9 years agoWHATS_NEW
Zdenek Kabelac [Wed, 14 Jan 2015 14:15:29 +0000 (15:15 +0100)]
WHATS_NEW

More news

9 years agothin: errrorwhenfull support
Zdenek Kabelac [Tue, 13 Jan 2015 14:23:03 +0000 (15:23 +0100)]
thin: errrorwhenfull support

Support error_if_no_space feature for thin pools.
Report more info about thinpool status:
(out_of_data (D), metadata_read_only (M), failed  (F) also as health
attribute.)

9 years agocleanup: missed for build without devmapper
Zdenek Kabelac [Wed, 14 Jan 2015 12:03:52 +0000 (13:03 +0100)]
cleanup: missed for build without devmapper

configure --disable-devmapper build fixes.

9 years agolv_status: enable lv_status for thinpool
Zdenek Kabelac [Wed, 14 Jan 2015 11:51:03 +0000 (12:51 +0100)]
lv_status: enable lv_status for thinpool

Support also status for thin pools.

9 years agolv_status: track layered device
Zdenek Kabelac [Wed, 14 Jan 2015 11:52:40 +0000 (12:52 +0100)]
lv_status: track layered device

For info of i.e. thin-pool we need layered device.
Needs some more thinking about proper interface here.
For now it's usable for cache and thin-pool.

9 years agocleanup: properly align code lines
Zdenek Kabelac [Wed, 14 Jan 2015 11:51:59 +0000 (12:51 +0100)]
cleanup: properly align code lines

Misaligned indetion in branches.

9 years agocleanup: update API for segment reporting
Zdenek Kabelac [Wed, 14 Jan 2015 09:31:24 +0000 (10:31 +0100)]
cleanup: update API for segment reporting

API for seg reporting is breaking internal lvm coding - it cannot
use vgmem mem pool for allocation of reported value.
So use separate pool instead of 'vgmem' for non vg related allocations

Add consts for many function params - but still many other are left
for now as non-const - needs deeper level of change even on libdm side.

9 years agoraid_manip: fix multi-segment misallocation on 'lvconvert --repair'
Heinz Mauelshagen [Wed, 14 Jan 2015 12:41:55 +0000 (13:41 +0100)]
raid_manip: fix multi-segment misallocation on 'lvconvert --repair'

An 'lvconvert --repair $RAID_LV" to replace a failed leg of a multi-segment
RAID10/4/5/6 logical volume can lead to allocation of (parts of) the replacement
image component pair on the physical volume of another image component
(e.g. image 0 allocated on the same PV as image 1 silently impeding resilience).

Patch fixes this severe resilince issue by prohibiting allocation on PVs
already holding other legs of the RAID set. It allows to allocate free space
on any operational PV already holding parts of the image component pair.

9 years agotests: pvscan --cache DevicePath does not fail if the device is just filtered
Peter Rajnoha [Mon, 12 Jan 2015 14:16:57 +0000 (15:16 +0100)]
tests: pvscan --cache DevicePath does not fail if the device is just filtered

It's not an error if the device is filtered out and hence cleared from
lvmetad cache - "pvscan --cache DevPath" has now the same behaviour in
this case as "pvscan --cache major:minor" (which is more consistent).

Before, the tests expected failure return code for "pvscan --cache DevicePath"
if the device was filtered (which is a different situation if the device
is missing in the system completely!).

9 years agodev-type: filter out partitioned device-mapper devices as unsuitable for use as PVs
Peter Rajnoha [Mon, 12 Jan 2015 13:02:57 +0000 (14:02 +0100)]
dev-type: filter out partitioned device-mapper devices as unsuitable for use as PVs

Normally, if there are partitions defined on top of device-mapper
device, there should be a device-mapper device created for each
partiton on top of the old one and once the underlying DM device
is used by another devices (partition mappings in this case),
it can't be used as a PV anymore.

However, sometimes, it may happen the partition mappings are
missing - either the partitioning tool is not creating them if
it does not contain full support for device-mapper devices or
the mappings were removed.

Better safe than sorry - check for partition header on DM devs
and filter them out as unsuitable for PVs in case the check is
positive. Whatever the user is doing, let's do our best to prevent
unwanted corruption (...by running pvcreate on top of such device
that would corrupt the partition header).

9 years agopvscan: notify lvmetad about device that is gone and pvscan is run with device path...
Peter Rajnoha [Mon, 12 Jan 2015 12:50:11 +0000 (13:50 +0100)]
pvscan: notify lvmetad about device that is gone and pvscan is run with device path instead of major:minor pair

If pvscan is run with device path instead of major:minor pair and this
device still exists in the system and the device is not visible anymore
(due to a filter that is applied), notify lvmetad properly about this.

This makes it more consistent with respect to existing pvscan with
major:minor which already notifies lvmetad about device that is gone
due to filters.

However, if the device is not in the system anymore, we're not able
to translate the original device path into major:minor pair which
lvmetad needs for its action (lvmetad_pv_gone fn). So in this case,
we still need to use major:minor pair only, not device path. But at
least make "pvscan --cache DevicePath" as near as possible to "pvscan
--cahce <major>:<minor>" functionality.

Also add a note to pvscan man page about this difference when using
pvscan --cache with DevicePath and major:minor pair.

9 years agotoollib: process_each_pv should match by device
David Teigland [Wed, 7 Jan 2015 20:04:12 +0000 (14:04 -0600)]
toollib: process_each_pv should match by device

When processing PVs specified on the command line, the arg
name was being matched against pv_dev_name, which will not
always work:

- The PV specified on the command line could be an alias,
  e.g. /dev/disk/by-id/...

- The PV specified on the command line could be any random
  path to the device, e.g. /dev/../dev/sdb

To fix this, first resolve the named PV args to struct device's,
then iterate through the devices for processing.

9 years agoscripts: clvmd: replace awk functionality with LVM's selection
Peter Rajnoha [Fri, 9 Jan 2015 15:34:16 +0000 (16:34 +0100)]
scripts: clvmd: replace awk functionality with LVM's selection

No need to use awk now to get appropriate VGs/LVs, use LVM's
own --select - it's quicker, it removes a need for external
dependency on awk and it's also more readable.

9 years agometadata: add "Failed to write VG <vg_name>." on failed vg_write and revert previous...
Peter Rajnoha [Fri, 9 Jan 2015 13:04:44 +0000 (14:04 +0100)]
metadata: add "Failed to write VG <vg_name>." on failed vg_write and revert previous patch

Better than previous patch which changed log_warn to log_error -
we can have multiple MDAs and if one of them fails to be written,
we can still continue with other MDAs if we're in a mode where
we can handle missing PVs - so keep the log_warn for single
failed MDA write as it was before.

However, add log_error with "Failed to write VG <vg_name>." in
case we're not handling missing PVs or no MDA was written at all
during VG write process. This also prevents an internal error in
which the vg_write fails and we're not issuing any other log_error
in vg_write caller or above, so we end up with:
  "Internal error: Failed command did not use log_error".

9 years agometadata: log_error instead of log_warn on failed mda write
Peter Rajnoha [Fri, 9 Jan 2015 11:00:03 +0000 (12:00 +0100)]
metadata: log_error instead of log_warn on failed mda write

9 years agoWHATS_NEW: line for previous commit
Peter Rajnoha [Fri, 9 Jan 2015 10:57:25 +0000 (11:57 +0100)]
WHATS_NEW: line for previous commit

9 years agodev_manager: do not mark snapshot origins as unusable devices just because of possibl...
Peter Rajnoha [Fri, 9 Jan 2015 10:24:16 +0000 (11:24 +0100)]
dev_manager: do not mark snapshot origins as unusable devices just because of possible blocked mirror underneath

At first, all snapshot-origins where marked as unusable unconditionally
here, but we can't cut off whole snapshot-origin use in a stack just
because of this possible mirror state. This whole "device_is_usable"
check was even incorrectly part of persistent filter before commit
a843d0d97c66aae1872c05b0f6cf4bda176aae2 (where filter cleanup was
done).

The persistent filter is used only if obtain_device_list_from_udev=0,
which means that the former check for snapshot-origin here had not even
been hit with default configuration for a few years before commit
a843d0d97c66aae1872c05b0f6cf4bda176aae2 (the check for snapshot-origin and
skipping of this LV was introduced with commit a71d6051ed3d72af6895733c599cc44b49f24dbb
back in 2010).

The obtain_device_list_from_udev=1 (and hence not using persistent
filter and hence not hitting this check for snapshot-origins and skipping) has been
in action since commit edcda01a1e18af6599275801a8237fe10112ed6f (that is 2011).
So for 3 years this condition was not even checked with default configuration,
making it superfluous.

This all changed in 2014 with commit 8a843d0d97c66aae1872c05b0f6cf4bda176aae2
where "filter-usable" is introduced  and since then all snapshot-origins
have been marked as unusable more often than before and making snapshot-origins
practically unusable in a stack.

This patch removes this incorrect check from commit a71d6051ed3d72af6895733c599cc44b49f24dbb
which caused snapshot-origins to be unusable more often recently.

If we want to fix this eventually in a correct way, we need to look
down the stack and if snapshot-origin is hit and there's a blocked
mirror underneath, only then mark the device as unusable. But mirrors
in stack are not supported anymore so it's questionable whether it's
worth spending more time on this at all...

9 years agoWHATS_NEW: previous commit
Peter Rajnoha [Wed, 7 Jan 2015 12:47:16 +0000 (13:47 +0100)]
WHATS_NEW: previous commit

9 years agoraid: fix mirror image naming when converting from mirror to raid1
Heinz Mauelshagen [Wed, 7 Jan 2015 12:25:08 +0000 (13:25 +0100)]
raid: fix mirror image naming when converting from mirror to raid1

$ lvcreate -l1 -m1 --type mirror vg
  Logical volume "lvol0" created.
$ lvconvert --type raid1 vg/lvol0

Before:
$ lvs -a vg
  LV                        VG     Active Attr       LSize   Cpy%Sync Layout     Role
  lvol0                     vg     active rwi-a-r---   4.00m 100.00   raid,raid1 public
  [lvol0_mimage_0_rimage_0] vg     active iwi-aor---   4.00m          linear     private,raid,image
  [lvol0_mimage_1_rimage_1] vg     active iwi-aor---   4.00m          linear     private,raid,image
  [lvol0_rmeta_0]           vg     active ewi-aor---   4.00m          linear     private,raid,metadata
  [lvol0_rmeta_1]           vg     active ewi-aor---   4.00m          linear     private,raid,metadata

Incorrect name: lvol0_mimage_0_rimage_0

With this patch applied:
$ lvs -a vg
  LV               VG   Active Attr       LSize Cpy%Sync Layout     Role
  lvol0            vg   active rwi-a-r--- 4.00m 100.00   raid,raid1 public
  [lvol0_rimage_0] vg   active iwi-aor--- 4.00m          linear     private,raid,image
  [lvol0_rimage_1] vg   active iwi-aor--- 4.00m          linear     private,raid,image
  [lvol0_rmeta_0]  vg   active ewi-aor--- 4.00m          linear     private,raid,metadata
  [lvol0_rmeta_1]  vg   active ewi-aor--- 4.00m          linear     private,raid,metadata

Proper name: lvol0_rimage_0

9 years agomirror: do not try to reactivate inactive mirror when removing its LVs which have...
Peter Rajnoha [Wed, 7 Jan 2015 09:52:38 +0000 (10:52 +0100)]
mirror: do not try to reactivate inactive mirror when removing its LVs which have missing PVs

When mirror has missing PVs and there are mirror images on those missing
PVs, we delete the images and during this delete operation, we also
reactivate the LV. But if we're trying to reactivate the LV in cluster
which is not active and at the same time cmirrord is not running (which
is OK since we may have created the mirror LV as inactive), we end up
with:
  "Error locking on node <node_name>: Shared cluster mirrors are not available."

That is because we're trying to activate the mirror LV without cmirrord.
However, there's no need to do this reactivation if the mirror LV (and
hence it's sub LVs) were not activated before.

This issue caused failure in mirror-vgreduce-removemissing.sh test
recently with this sequence (excerpt from the test script):

  prepare_lvs_
  lvcreate -an -Zn -l2 --type mirror -m1 --nosync -n $lv1 $vg "$dev1" $dev2" "$dev3":$BLOCKS
  mimages_are_on_ $lv1 "$dev1" "$dev2"
  mirrorlog_is_on_ $lv1 "$dev3"
  aux disable_dev "$dev2"
  vgreduce --removemissing --force $vg

The important thing about that test is that we're not running cmirrord,
we're activating the mirror with "-an" so it's inactive and then
vgreduce --removemissing tries to reactivate the mirror images
as part of the _delete_lv function call inside and since cmirrord
is not running, we end up with the "Shared cluster mirrors are not
available." error.

9 years agopvremove: Avoid metadata re-reads & related error messages.
Petr Rockai [Tue, 6 Jan 2015 13:17:53 +0000 (14:17 +0100)]
pvremove: Avoid metadata re-reads & related error messages.

9 years agolvmetad: Re-use fmt from the VG for PVs when possible.
Petr Rockai [Tue, 6 Jan 2015 11:39:57 +0000 (12:39 +0100)]
lvmetad: Re-use fmt from the VG for PVs when possible.

9 years agocmirror: do not check for cmirror availability when creating deactivated cluster...
Peter Rajnoha [Tue, 6 Jan 2015 08:59:04 +0000 (09:59 +0100)]
cmirror: do not check for cmirror availability when creating deactivated cluster mirrors

When creating cluster mirrors while they're not supposed to be activated
immediately after creation, we don't need to check for cmirrord availability.
We can just create these mirrors and let the check to be done on activation
later on. This is addendum for commit cba6186325f0d5806cf1ddec276b3bb8e178687a.

9 years agocmirror: check for cmirror availability during cluster mirror creation and activation
Peter Rajnoha [Mon, 5 Jan 2015 15:45:30 +0000 (16:45 +0100)]
cmirror: check for cmirror availability during cluster mirror creation and activation

When creating/activating clustered mirrors, we should have cmirrord
available and running. If it's not, we ended up with rather cryptic
errors like:

$ lvcreate -l1 -m1 --type mirror vg
  Error locking on node 1: device-mapper: reload ioctl on  failed: Invalid argument
  Failed to activate new LV.

$ vgchange -ay vg
  Error locking on node node 1: device-mapper: reload ioctl on failed: Invalid argument

This patch adds check for cmirror availability and it errors out
properly, also giving a more precise error messge so users are able
to identify the source of the problem easily:

$ lvcreate -l1 -m1 --type mirror vg
  Shared cluster mirrors are not available.

$ vgchange -ay vg
  Error locking on node 1: Shared cluster mirrors are not available.

Exclusively activated cluster mirror LVs are OK even without cmirrord:

$ vgchange -aey vg
  1 logical volume(s) in volume group "vg" now active

9 years agolibdm: report: add more comments about helper macros to get reserved values
Peter Rajnoha [Fri, 19 Dec 2014 08:17:16 +0000 (09:17 +0100)]
libdm: report: add more comments about helper macros to get reserved values

Since GET_FIELD_RESERVED_VALUE always returns a pointer, don't reference
it with "&" when used - we already have that pointer value (this is an
addendum to recent commit 028ff309472834e82fe4b849ea4c243feb5098b9).

Only GET_TYPE_RESERVED_VALUE needs to be referenced with "&" as it
returns directly the value of that type.

9 years agoreport: fix segfault on NULL value hit in cache_settings field
Peter Rajnoha [Thu, 18 Dec 2014 15:12:50 +0000 (16:12 +0100)]
report: fix segfault on NULL value hit in cache_settings field

We have to use empty list, not NULL if we want to denote that the list
has no items. Otherwise, the code further can segfault as it expects
there's always a sane value (= some list), including empty list,
but never NULL.

9 years agoreport: properly set "undefined" reserved value for cache_policy field
Peter Rajnoha [Thu, 18 Dec 2014 14:11:25 +0000 (15:11 +0100)]
report: properly set "undefined" reserved value for cache_policy field

Use helper macros to handle reserved values and also define "undefined"
reserved value as:

FIELD_RESERVED_VALUE(cache_policy, cache_policy_undef, "", "", "undefined")

Which means:

 - print "" if the cache_policy value is undefined (the first name for this reserved value is "")
 - recognize "undefined" reserved name as synonym to ""
   (so statements like "lvs -S cache_policy=undefined" are still recognized)

9 years agocleanup: use helper macros to get reserved value from values.h for vg_mda_copies...
Peter Rajnoha [Thu, 18 Dec 2014 13:52:16 +0000 (14:52 +0100)]
cleanup: use helper macros to get reserved value from values.h for vg_mda_copies and lv_read_ahead fields

Avoid making a copy of the keyword which is already registered in
values.h for "unmanaged" (vg_mda_copies field) and "auto" reserved
value (lv_read_ahead field). Also use helper macros to handle these
reserved - this is the correct approach - just do not copy the same
thing again and do not mix it! The GET_FIELD_RESERVED_VALUE and
GET_FIRST_RESERVED_NAME macros guarantees this - use it!

In addition to that, rename reserved values:
  vg_mda_copies --> vg_mda_copies_unmanaged
  lv_read_ahead --> lv_read_ahead_auto

So the field reserved values follows this scheme:

   "<field_name>_<reserved_value_name>".

The same applies for type reserved values with this scheme:

  "<report type name in lowercase>_<reserved_value_name>"

Add a comment about this scheme for others to follow as well
when adding new fields and their reserved values. This makes
it a bit easier to read the code then.

9 years agorefactor: rename existing helper macros for reserved value handling and add GET_FIELD...
Peter Rajnoha [Thu, 18 Dec 2014 13:42:14 +0000 (14:42 +0100)]
refactor: rename existing helper macros for reserved value handling and add GET_FIELD_RESERVED_VALUE macro

RESERVED(id)   --> GET_TYPE_RESERVED_VALUE(id)
FIRST_NAME(id) --> GET_FIRST_RESERVED_NAME(id)

Also add GET_FIELD_RESERVED_VALUE(id) macro to get per-field reserved value.

This makes it much more readable and hopefully it'll make it
easier to use these helper macros when adding new reporting
fields with reserved values if needed.

9 years agoreport: dup cache policy name string for report in cache_policy field
Peter Rajnoha [Thu, 18 Dec 2014 10:54:40 +0000 (11:54 +0100)]
report: dup cache policy name string for report in cache_policy field

The cache policy name taken as LV segment property must be duped
for report as the VG/LV/seg structure is destroyed after processing,
reporting happens later:

$ valgrind lvs -o+cache_policy
...
==16589== Invalid read of size 1
==16589==    at 0x54ABCC3: dm_report_compact_fields
(libdm-report.c:1739)
==16589==    by 0x153FC7: _report (reporter.c:619)
==16589==    by 0x1540A6: lvs (reporter.c:641)
==16589==    by 0x148021: lvm_run_command (lvmcmdline.c:1452)
==16589==    by 0x1495CB: lvm2_main (lvmcmdline.c:1907)
==16589==    by 0x164712: main (lvm.c:21)
==16589==  Address 0x7d465f2 is 8,338 bytes inside a block of size
16,384 free'd
==16589==    at 0x4C2ACE9: free (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==16589==    by 0x54B8C85: _free_chunk (pool-fast.c:318)
==16589==    by 0x54B84FB: dm_pool_destroy (pool-fast.c:78)
==16589==    by 0x1E59C7: _free_vg (vg.c:78)
==16589==    by 0x1E5A6D: release_vg (vg.c:95)
==16589==    by 0x159B6E: _process_lv_vgnameid_list (toollib.c:1967)
==16589==    by 0x159DD7: process_each_lv (toollib.c:2030)
==16589==    by 0x153ED8: _report (reporter.c:598)
==16589==    by 0x1540A6: lvs (reporter.c:641)
==16589==    by 0x148021: lvm_run_command (lvmcmdline.c:1452)
==16589==    by 0x1495CB: lvm2_main (lvmcmdline.c:1907)
==16589==    by 0x164712: main (lvm.c:21)

9 years agolibdm: report: also check whether field type is supported for field-specific reserved...
Peter Rajnoha [Thu, 18 Dec 2014 10:29:48 +0000 (11:29 +0100)]
libdm: report: also check whether field type is supported for field-specific reserved value

We only checked global per-report-type reserved values for compatibility
with selection code. This patch also adds a check for per-report-field
reserved values. This avoids problems where unsupported report type is
used as reserved value which could cause hard to debug problems
otherwise. So this additional check stops from registering unsupported
and unhandled per-field reserved values.

Registerting such unsupported reserved value is a programmatic error,
so report internal error in this case to stop us from making a mistake
here in the future or even today where STR_LIST fields can't have
reserved values yet.

9 years agoWHATS_NEW: previous commit
Peter Rajnoha [Wed, 17 Dec 2014 14:06:48 +0000 (15:06 +0100)]
WHATS_NEW: previous commit

9 years agoreport: Add cache_policy and cache_settings (LV) segment fields.
Petr Rockai [Mon, 15 Dec 2014 19:48:05 +0000 (20:48 +0100)]
report: Add cache_policy and cache_settings (LV) segment fields.

9 years agoman: put back the --binary reference in {pv,vg,lv}display man page
Peter Rajnoha [Thu, 11 Dec 2014 14:50:37 +0000 (15:50 +0100)]
man: put back the --binary reference in {pv,vg,lv}display man page

9 years agotools, man: --binary option is available with -C for {pv,vg,lv}display
Peter Rajnoha [Thu, 11 Dec 2014 14:16:04 +0000 (15:16 +0100)]
tools, man: --binary option is available with -C for {pv,vg,lv}display

The {pv,vg,lv}display *do* use reporting in case "-C|--columns" is used.
The man page was correct, the recognition for the --binary was missing
in the code though!

9 years agoman: remove reference to --binary in {pv,vg,lv}display man page
Peter Rajnoha [Thu, 11 Dec 2014 09:40:28 +0000 (10:40 +0100)]
man: remove reference to --binary in {pv,vg,lv}display man page

The {pv,vg,lv}display commands don't use reporting capabilites and
as such they can't use --binary. This got into the man pages by
mistake - the display commands do not recognize --binary option.

9 years agovgimportclone: also notify lvmetad about changes if it's used
Peter Rajnoha [Wed, 10 Dec 2014 12:43:54 +0000 (13:43 +0100)]
vgimportclone: also notify lvmetad about changes if it's used

All the LVM commands are run in mode without lvmetad use (since lvmetad
can't handle duplicates). When we're finished with vgimportclone, we
need to notify lvmetad about changes.

Before this patch (/dev/sda and /dev/sdb contains a copy VG called "vg"):
$ vgimportclone --basevgname vg_snap /dev/sdb
  WARNING: lvmetad is running but disabled. Restart lvmetad before enabling it!
  WARNING: lvmetad is running but disabled. Restart lvmetad before enabling it!
  WARNING: lvmetad is running but disabled. Restart lvmetad before enabling it!
  WARNING: Activation disabled. No device-mapper interaction will be attempted.
  WARNING: lvmetad is running but disabled. Restart lvmetad before enabling it!
  Physical volume "/tmp/snap.zcJ8LCmj/vgimport0" changed  1 physical volume changed / 0 physical volumes not changed
  WARNING: lvmetad is running but disabled. Restart lvmetad before enabling it!
  WARNING: lvmetad is running but disabled. Restart lvmetad before enabling it!
  WARNING: Activation disabled. No device-mapper interaction will be attempted.
  WARNING: lvmetad is running but disabled. Restart lvmetad before enabling it!
  Volume group "vg" successfully changed
  WARNING: lvmetad is running but disabled. Restart lvmetad before enabling it!
  WARNING: lvmetad is running but disabled. Restart lvmetad before enabling it!
  Volume group "vg" successfully renamed to "vg_snap"
  Reading all physical volumes.  This may take a while...
  Found volume group "vg" using metadata type lvm2
  Found volume group "fedora" using metadata type lvm2

$ vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  fedora   1   2   0 wz--n-   9.50g      0
  vg       1   1   0 wz--n- 124.00m 120.00m

(...lvmetad doesn't see the new "vg_snap"!)

With this patch applied:
$ vgimportclone --basevgname vg_snap /dev/sdb
  ...
  WARNING: lvmetad is running but disabled. Restart lvmetad before enabling it!
  Volume group "vg" successfully renamed to "vg_snap"
Notifying lvmetad about changes since it was disabled temporarily.
  Reading all physical volumes.  This may take a while...
  Found volume group "vg_snap" using metadata type lvm2
  Found volume group "fedora" using metadata type lvm2
  Found volume group "vg" using metadata type lvm2

$ vgs
  VG      #PV #LV #SN Attr   VSize   VFree
  fedora    1   2   0 wz--n-   9.50g      0
  vg        1   1   0 wz--n- 124.00m 120.00m
  vg_snap   1   1   0 wz--n- 124.00m 120.00m

The "restart lvmetad before enabling it" message is a bit misleading
here - we should probably suppress this one, but we can't suppress
warning messages selectively at the moment and we don't want to lose
other warning/error messages printed...

9 years agovgimportclone: replace awk with dumpconfig to generate temporary lvm.conf for vgimpor...
Peter Rajnoha [Wed, 10 Dec 2014 12:25:23 +0000 (13:25 +0100)]
vgimportclone: replace awk with dumpconfig to generate temporary lvm.conf for vgimportclone

With current dumpconfig, we can generate lvm.conf easily - we can merge
current lvm.conf with the config given on cmd line:
  lvm dumpconfig --mergedconfig --config "..."

This is a bit simpler than using awk and it also avoids problems when some of
the configuration is missing in existing lvm.conf file and hardcoded defaults
are used instead. The dumpconfig handles this transparently.

9 years agoWHATS_NEW: f94f846 actually fixes DM issue, not LVM issue
Peter Rajnoha [Tue, 9 Dec 2014 09:52:07 +0000 (10:52 +0100)]
WHATS_NEW: f94f846 actually fixes DM issue, not LVM issue

9 years agolibdm: report: fix incorrect memory use while using --select with --unbuffered for...
Peter Rajnoha [Tue, 9 Dec 2014 09:36:27 +0000 (10:36 +0100)]
libdm: report: fix incorrect memory use while using --select with --unbuffered for reporting

Under certain circumstances, the selection code can segfault:

$ vgs --select 'pv_name=~/dev/sda' --unbuffered vg0
  VG   #PV #LV #SN Attr   VSize   VFree
  vg0    6   3   0 wz--n- 744.00m 588.00m
Segmentation fault (core dumped)

The problem here is the use of --ubuffered together with regex used in
selection criteria. If the report output is not buffered, each row is
discarded as soon as it is reported. The bug is in the use of report
handle's memory - in the example above, what happens is:

  1) report handle is initialized together with its memory pool

  2) selection tree is initialized from selection criteria string
     (using the report handle's memory pool!)

    2a) this also means the regex is initialized from report handle's mem pool

  3) the object (row) is reported

    3a) any memory needed for output is intialized out of report handle's mem pool
    3b) selection criteria matching is executed - if the regex is checked the
        very first time (for the very first row reported), some more memory
        allocation happens as regex allocates internal structures "on-demand",
        it's allocating from report handle's mem pool (see also step 2a)

  4) the report output is executed

  5) the object (row) is discarded, meaning discarding all the mem pool
     memory used since step 3.

Now, with step 5) we have discarded the regex internal structures from step 3b.
When we execute reporting for another object (row), we're using the same
selection criteria (step 3b), but tihs is second time we're using the regex
and as such, it's already initialized completely. But the regex is missing the
internal structures now as they got discarded in step 5) from previous
object (row) reporting (because we're using "unbuffered" reporting).

To resolve this issue and to prevent any similar future issues where each
object/row memory is discarded after output (the unbuffered reporting) while
selection tree is global for all the object/rows, use separate memory pool
for report's selection.

This patch replaces "struct selection_node *selection_root" in struct
dm_report with new struct selection which contains both "selection_root"
and "mem" for separate mem pool used for selection.

We can change struct dm_report this way as it is not exposed via libdevmapper.

(This patch will have even more meaning for upcoming patches where selection
is used even for non-reporting commands where "internal" reporting and
selection criteria matching happens and where the internal reporting is
not buffered.)

9 years agoconfigure: fix automatic use of configure --enable-udev-systemd-background-jobs
Peter Rajnoha [Mon, 8 Dec 2014 09:51:33 +0000 (10:51 +0100)]
configure: fix automatic use of configure --enable-udev-systemd-background-jobs

Fix incorrect test in configure which sets --enable-udev-systemd-background-jobs
automatically if proper systemd version is available.

The UDEV_SYSTEMD_BACKGROUND_JOBS variable was not properly set to "yes" in
case systemd is available and we had "maybe" for this variable before.

9 years agolibdm: report: return immediately from dm_report_compact_fields without error if...
Peter Rajnoha [Fri, 5 Dec 2014 14:10:50 +0000 (15:10 +0100)]
libdm: report: return immediately from dm_report_compact_fields without error if there are no rows

Let's make dm_report_compact_fields consistent with dm_report_output fn
which also returns with success immediately if there are no rows.

9 years agolibdm: report: compact output applicable only if report is buffered
Peter Rajnoha [Fri, 5 Dec 2014 13:18:32 +0000 (14:18 +0100)]
libdm: report: compact output applicable only if report is buffered

9 years agoraid: properly rename split image
Zdenek Kabelac [Thu, 4 Dec 2014 13:24:44 +0000 (14:24 +0100)]
raid: properly rename split image

When we split leg from raid - we take a proper new lock for a new LV.
However for now activation checks only 'existince' of device UUID,
but it's not validating device has a proper name.

As a quick fix call suspend()/resume() to rename after split mirror.

9 years agoconfig: add report/compact_output lvm.conf setting to enable or isable field compacting
Peter Rajnoha [Fri, 5 Dec 2014 10:46:26 +0000 (11:46 +0100)]
config: add report/compact_output lvm.conf setting to enable or isable field compacting

$ lvm dumpconfig report/compact_output
compact_output=0

$ lvs vg
  LV    VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lvol0 vg   owi-a-s--- 4.00m
  lvol1 vg   -wi-a----- 4.00m
  lvol2 vg   swi-a-s--- 4.00m      lvol0  0.00

$ lvm dumpconfig report/compact_output
compact_output=1

$ lvs vg
  LV    VG   Attr       LSize Origin Data%
  lvol0 vg   owi-a-s--- 4.00m
  lvol1 vg   -wi-a----- 4.00m
  lvol2 vg   swi-a-s--- 4.00m lvol0  0.00

9 years agolibdm: report: add dm_report_compact_fields
Peter Rajnoha [Fri, 5 Dec 2014 10:42:43 +0000 (11:42 +0100)]
libdm: report: add dm_report_compact_fields

Add new dm_report_compact_fields function to cause report outout
(dm_report_output) to ignore fields which don't have any value set
in any of the rows reported. This provides support for compact report
output where only fields which have something to report are displayed.

9 years agolibdm: remove unimplemented dm_report_set_output_selection fn
Peter Rajnoha [Fri, 5 Dec 2014 10:38:51 +0000 (11:38 +0100)]
libdm: remove unimplemented dm_report_set_output_selection fn

The dm_report_set_output_selection was not implemented in the end -
we have dm_report_init_with_selection instead. This is just a remnant
from development code that got into libdevmapper.h by mistake.

9 years agopool: fix typo in error message: then -> than
Peter Rajnoha [Thu, 4 Dec 2014 08:17:48 +0000 (09:17 +0100)]
pool: fix typo in error message: then -> than

9 years agomirror: Validate raid region size config setting.
Alasdair G Kergon [Wed, 3 Dec 2014 22:47:08 +0000 (22:47 +0000)]
mirror: Validate raid region size config setting.

If necessary, round down to a power of 2 the raid/mirror region size
taken from the config files.

9 years agomirror: Restrict region size to power of 2.
Alasdair G Kergon [Tue, 2 Dec 2014 14:24:21 +0000 (14:24 +0000)]
mirror: Restrict region size to power of 2.

9 years agopost-release
Alasdair G Kergon [Fri, 28 Nov 2014 23:07:31 +0000 (23:07 +0000)]
post-release

9 years agopre-release v2_02_114
Alasdair G Kergon [Fri, 28 Nov 2014 23:06:07 +0000 (23:06 +0000)]
pre-release

9 years agolibdaemon: Fix some client leaks.
Alasdair G Kergon [Fri, 28 Nov 2014 21:31:51 +0000 (21:31 +0000)]
libdaemon: Fix some client leaks.

Free (and clear) h.protocol string on daemon_open() error paths
so it's OK for caller to skip calling daemon_close() if returned
h.socket_fd is -1.

Close h.socket_fd in daemon_close() to avoid possible leak.

https://bugzilla.redhat.com/1164234

9 years agoUpdate WHATS_NEW.
Petr Rockai [Thu, 27 Nov 2014 19:23:57 +0000 (20:23 +0100)]
Update WHATS_NEW.

9 years agolvcreate: Implement --cachepolicy/--cachesettings.
Petr Rockai [Thu, 27 Nov 2014 19:21:41 +0000 (20:21 +0100)]
lvcreate: Implement --cachepolicy/--cachesettings.

9 years agometadata: Add cache_policy to lvcreate_params and honour it.
Petr Rockai [Thu, 27 Nov 2014 19:20:48 +0000 (20:20 +0100)]
metadata: Add cache_policy to lvcreate_params and honour it.

9 years agotoollib: Fix uninitialised config value type in get_cachepolicy_params.
Petr Rockai [Thu, 27 Nov 2014 19:19:28 +0000 (20:19 +0100)]
toollib: Fix uninitialised config value type in get_cachepolicy_params.

9 years agotoollib: fix regression in parsing /dev/mapper/vg-lv
Zdenek Kabelac [Wed, 26 Nov 2014 16:09:47 +0000 (17:09 +0100)]
toollib: fix regression in parsing /dev/mapper/vg-lv

Commit b0dde9e8f026ddd679 introduced regression in parsing
/dev/mapper prefix - and tried to check for '/' one char behind.

9 years agocoverity: remove dead code in lv_info_with_seg_status (continued)
Peter Rajnoha [Wed, 26 Nov 2014 10:58:25 +0000 (11:58 +0100)]
coverity: remove dead code in lv_info_with_seg_status (continued)

9 years agocoverity: fix possible NULL dereference
Peter Rajnoha [Wed, 26 Nov 2014 10:46:13 +0000 (11:46 +0100)]
coverity: fix possible NULL dereference

The call to dm_config_destroy can derefence result->mem
while result is still NULL:

struct dm_config_tree *get_cachepolicy_params(struct cmd_context *cmd)
{
...
int ok = 0;
...
if (!(result = dm_config_flatten(current)))
goto_out;
...
ok = 1;
out:
 if (!ok) {
dm_config_destroy(result)
...
}
...
}

9 years agocoverity: remove dead code in lv_info_with_seg_status
Peter Rajnoha [Wed, 26 Nov 2014 10:30:01 +0000 (11:30 +0100)]
coverity: remove dead code in lv_info_with_seg_status

Just call return 0 directly on error path, without using
"goto" - the code is short, no need to use it this way
(the dead code appeared as part of further changes in this
function).

9 years agomakefiles: avoid regeneration of Makefile
Zdenek Kabelac [Tue, 25 Nov 2014 22:01:28 +0000 (23:01 +0100)]
makefiles: avoid regeneration of Makefile

When Makefile.in is touched, it's been matched by 'man' rule
and it's been wrongly regnerated.

Put in explicit rules to avoid Makefile sed processing.

9 years agothin: add missing 64KB rounding
Zdenek Kabelac [Wed, 26 Nov 2014 08:27:40 +0000 (09:27 +0100)]
thin: add missing 64KB rounding

When chunk size needs to be estimated, the code missed to round
to proper 64kb boundaries  (or power of 2 for older thin pool driver).
So for some data and metadata size (i.e. 10GB and 4MB) it resulted
in incorrect chunk size (not being a multiple of 64KB)

Fix it by adding proper rounding and also use 1 routine for 2 places
where the same calculation is made.

Fix also incorrect printed warning that has used 'ffs()'
(which returns first 'least significant' bit in word)
and it was not really giving any useful size info and replace it
with properly estimated chunk size.

9 years agoinitscripts: fix typo in clvmd initscript causing CLVMD_STOP_TIMEOUT variable to...
Peter Rajnoha [Tue, 25 Nov 2014 14:18:58 +0000 (15:18 +0100)]
initscripts: fix typo in clvmd initscript causing CLVMD_STOP_TIMEOUT variable to be ignored

9 years agopvresize: fix size in 'Resizing to ...' verbose message to show proper result size
Peter Rajnoha [Tue, 25 Nov 2014 14:16:09 +0000 (15:16 +0100)]
pvresize: fix size in 'Resizing to ...' verbose message to show proper result size

9 years agopost-release
Alasdair G Kergon [Mon, 24 Nov 2014 17:48:25 +0000 (17:48 +0000)]
post-release

9 years agopre-release v2_02_113
Alasdair G Kergon [Mon, 24 Nov 2014 17:46:50 +0000 (17:46 +0000)]
pre-release

9 years agocache: comment out unsupported pooldatasize
Zdenek Kabelac [Mon, 24 Nov 2014 16:38:39 +0000 (17:38 +0100)]
cache: comment out unsupported pooldatasize

Support for pooldatasize is not yet finished, so keep it commented out
for now.

9 years agoman: update
Zdenek Kabelac [Mon, 24 Nov 2014 13:48:13 +0000 (14:48 +0100)]
man: update

Improve lvconvert.
Put ENV section downward in lvm.8.

9 years agotests: use proper LVMTEST prefix for VG name
Zdenek Kabelac [Sun, 23 Nov 2014 23:44:43 +0000 (00:44 +0100)]
tests: use proper LVMTEST prefix for VG name

Cleaner needs prefix to do its jobs and clean any left VG from python
test as well.

9 years agolvconvert: earlier detection of conflicting names
Zdenek Kabelac [Sun, 23 Nov 2014 23:35:27 +0000 (00:35 +0100)]
lvconvert: earlier detection of conflicting names

Detect same LV names for lvconvert prior opening VG.
i.e. lvconvert --thinpool vg/lvol0  -T lvol0

9 years agoman: fix pages for generators
Zdenek Kabelac [Sun, 23 Nov 2014 23:32:26 +0000 (00:32 +0100)]
man: fix pages for generators

Properly generate man page for systemd generators on make.
Simplified  install_clusters

9 years agolibdm: there is no element in item 0
Zdenek Kabelac [Mon, 24 Nov 2014 13:37:11 +0000 (14:37 +0100)]
libdm: there is no element in item 0

Items[0] holds only counter in .len.
So don't zero already zeroed items[0].len assigned above.

(finishing fc935495c813b7577ac8237459a2cc65ea291ac2)

9 years agoreport: add some comments about how string list is stored internally
Peter Rajnoha [Mon, 24 Nov 2014 12:14:33 +0000 (13:14 +0100)]
report: add some comments about how string list is stored internally

9 years agoreport: add some comments about how string list is stored internally
Peter Rajnoha [Mon, 24 Nov 2014 09:48:01 +0000 (10:48 +0100)]
report: add some comments about how string list is stored internally

9 years agoman/lvchange: Mention --cachepolicy and --cachesettings.
Petr Rockai [Sun, 23 Nov 2014 22:42:20 +0000 (23:42 +0100)]
man/lvchange: Mention --cachepolicy and --cachesettings.

9 years agoman/lvm.conf: Update to reflect changes in config parser.
Petr Rockai [Sun, 23 Nov 2014 22:41:58 +0000 (23:41 +0100)]
man/lvm.conf: Update to reflect changes in config parser.

9 years agoUpdate WHATS_NEW.
Petr Rockai [Sun, 23 Nov 2014 22:30:27 +0000 (23:30 +0100)]
Update WHATS_NEW.

9 years agocleanup: add missing error path check
Zdenek Kabelac [Sat, 22 Nov 2014 21:39:56 +0000 (22:39 +0100)]
cleanup: add missing error path check

New code misses error path check.

9 years agocleanup: warning: declaration of 'remove' shadows a global declaration
Zdenek Kabelac [Sat, 22 Nov 2014 19:14:42 +0000 (20:14 +0100)]
cleanup: warning: declaration of 'remove' shadows a  global declaration

Don't shadow stdio.h declaration.

9 years agolibdm: report fix memleak on error path
Zdenek Kabelac [Sat, 22 Nov 2014 21:40:40 +0000 (22:40 +0100)]
libdm: report fix memleak on error path

When _alloc_selection_node() fails, rh should be destroyed.

Use 'bad:' label since we have goto_bad with stack embeded.

9 years agopool: prevent pool conversion with same name
Zdenek Kabelac [Sat, 22 Nov 2014 22:37:31 +0000 (23:37 +0100)]
pool: prevent pool conversion with same name

When same name is given for converted volume and pool volume,
stop further command processing.

9 years agotests: reduce thin test
Zdenek Kabelac [Sat, 22 Nov 2014 17:15:52 +0000 (18:15 +0100)]
tests: reduce thin test

9 years agotests: use old virt snaps in the test
Zdenek Kabelac [Sat, 22 Nov 2014 17:14:45 +0000 (18:14 +0100)]
tests: use old virt snaps in the test

Don't use thin with its thin requirements for the test.

9 years agolibdm: fix reporting of empty string list
Zdenek Kabelac [Sat, 22 Nov 2014 17:13:21 +0000 (18:13 +0100)]
libdm: fix reporting of empty string list

Don't write behind the allocated array when list is empty.
Use index 0 for the allocated element.

Error triggered by i.e.:  lvs -a -o all,lv_modules

9 years agomakefiles: standard usage of make.tmpl
Zdenek Kabelac [Fri, 21 Nov 2014 15:34:01 +0000 (16:34 +0100)]
makefiles: standard usage of make.tmpl

Use lvm2 standard TARGETS.

Make liblvm_python.c as intermediate target (gets deleted after use)

Properly delete build dir on make distclean.

Mark install_python_bindings as .PHONY.

9 years agodev_manager: fix mknodes
Zdenek Kabelac [Fri, 21 Nov 2014 18:36:51 +0000 (19:36 +0100)]
dev_manager: fix mknodes

Fix regression introduced with a2c1024f6ac7e22ac5c010a267d0c1df331ee416

_setup_task(mknodes ? name : NULL...

has been replaced with:

_setup_task(type != MKNODES ? name : NULL....

Use '=='

9 years agoconfigure: fix CLVMD_PATH location
Zdenek Kabelac [Fri, 21 Nov 2014 15:33:48 +0000 (16:33 +0100)]
configure: fix CLVMD_PATH location

Commit d2c116058e72d365802eb5641be60a615daacb96 introduced regression
with CLVMD_PATH.

+        CLVMD_PATH="$clvmd_prefix/sbin/clvmd"
         test "$prefix" != NONE && clvmd_prefix=$prefix

It has set CLVMD_PATH before clvmd_prefix got its final value.
Move it one line below.

10 years agocleanup: drop unused vars
Zdenek Kabelac [Thu, 20 Nov 2014 16:49:32 +0000 (17:49 +0100)]
cleanup: drop unused vars

10 years agotest: Also test repeated --cachesettings in lvchange-cache.
Petr Rockai [Thu, 20 Nov 2014 11:35:51 +0000 (12:35 +0100)]
test: Also test repeated --cachesettings in lvchange-cache.

10 years agocache: Implement 'default' as a policy settings value to clear the record.
Petr Rockai [Thu, 20 Nov 2014 11:05:40 +0000 (12:05 +0100)]
cache: Implement 'default' as a policy settings value to clear the record.

10 years agotoollib: Split --cachesettings from --cachepolicy.
Petr Rockai [Thu, 20 Nov 2014 10:30:19 +0000 (11:30 +0100)]
toollib: Split --cachesettings from --cachepolicy.

10 years agotest: Add a test for lvchange --cachepolicy.
Petr Rockai [Wed, 19 Nov 2014 17:49:15 +0000 (18:49 +0100)]
test: Add a test for lvchange --cachepolicy.

10 years agolvchange: Accept --cachepolicy.
Petr Rockai [Wed, 19 Nov 2014 17:39:58 +0000 (18:39 +0100)]
lvchange: Accept --cachepolicy.

10 years agotoollib: Add --cachepolicy and implement get_cachepolicy_params.
Petr Rockai [Wed, 19 Nov 2014 17:39:29 +0000 (18:39 +0100)]
toollib: Add --cachepolicy and implement get_cachepolicy_params.

10 years agocache: Add lv_cache_setpolicy to cache_manip.c.
Petr Rockai [Wed, 19 Nov 2014 17:38:30 +0000 (18:38 +0100)]
cache: Add lv_cache_setpolicy to cache_manip.c.

10 years agolibdm-config: Warn about duplicate keys.
Petr Rockai [Thu, 20 Nov 2014 15:18:22 +0000 (16:18 +0100)]
libdm-config: Warn about duplicate keys.

10 years agolibdm-config: Implement dm_config_remove_node.
Petr Rockai [Thu, 20 Nov 2014 11:05:09 +0000 (12:05 +0100)]
libdm-config: Implement dm_config_remove_node.

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