]> sourceware.org Git - lvm2.git/log
lvm2.git
11 years agopost-release
Alasdair G Kergon [Tue, 13 Aug 2013 10:54:48 +0000 (11:54 +0100)]
post-release

11 years agorelease 2.02.100 v2_02_100
Alasdair G Kergon [Tue, 13 Aug 2013 10:29:21 +0000 (11:29 +0100)]
release 2.02.100

 84 files changed, 1540 insertions(+), 442 deletions(-)

Mostly bug fixes this time.

Also note:
  md raid replaces dm mirroring as the default implementation.
  Can call out to thin_repair to fix thin metadata.
  Improved clvmd error detection/debugging information.

11 years agoMirror: Fix inability to remove VG's cluster flag if it contains a mirror
Jonathan Brassow [Mon, 12 Aug 2013 18:56:47 +0000 (13:56 -0500)]
Mirror: Fix inability to remove VG's cluster flag if it contains a mirror

According to bug 995193, if a volume group
1) contains a mirror
2) is clustered
3) 'locking_type' = 0 is used
then it is not possible to remove the 'c'luster flag from the VG.  This
is due to the way _lv_is_active behaves.

We shouldn't allow the cluster flag to be flipped unless the mirrors in
the cluster are not active.  This is because different kernel modules
are used depending on whether a mirror is cluster or not.  When we
attempt to see if the mirror is active, we first check locally.  If it
is not, then we attempt to check for remotely active instances if the VG
is clustered.  Since the no_lock locking type is LCK_CLUSTERED, but does
not implement 'query_resource', remote_lock_held will always return an
error in this case.  An error from remove_lock_held is treated as though
the lock _is_ held (i.e. the LV is active remotely).  This blocks the
cluster flag from changing.

The solution is to implement 'query_resource' for the no_lock type.  It
will report a message and return 1.  This will allow _lv_is_active to
function properly.  The LV would be considered not active remotely and
the VG can change its flag.

11 years agoRAID: Fix bug making lvchange unable to change recovery rate for RAID
Jonathan Brassow [Mon, 12 Aug 2013 17:40:52 +0000 (12:40 -0500)]
RAID: Fix bug making lvchange unable to change recovery rate for RAID

Commit ID 8615234c0fa331852a11e1bf595bf1d4b858f4bc failed to include
the actual code changes that were made to fix the bug.  Instead, all
tests went in to validate the bug fix.  This patch adds the missing
code changes.

11 years agologging: tidy log_sys_error when string empty
Alasdair G Kergon [Mon, 12 Aug 2013 17:40:41 +0000 (18:40 +0100)]
logging: tidy log_sys_error when string empty

11 years agoWHATSNEW: typo
Jonathan Brassow [Fri, 9 Aug 2013 22:17:53 +0000 (17:17 -0500)]
WHATSNEW: typo

11 years agoRAID: Fix bug making lvchange unable to change recovery rate for RAID
Jonathan Brassow [Fri, 9 Aug 2013 22:09:47 +0000 (17:09 -0500)]
RAID: Fix bug making lvchange unable to change recovery rate for RAID

1) Since the min|maxrecoveryrate args are size_kb_ARGs and they
   are recorded (and sent to the kernel) in terms of kB/sec/disk,
   we must back out the factor multiple done by size_kb_arg.  This
   is already performed by 'lvcreate' for these arguments.
2) Allow all RAID types, not just RAID1, to change these values.
3) Add min|maxrecoveryrate_ARG to the list of 'update_partial_unsafe'
   commands so that lvchange will not complain about needing at
   least one of a certain set of arguments and failing.
4) Add tests that check that these values can be set via lvchange
   and lvcreate and that 'lvs' reports back the proper results.

11 years agotest: can convert pool to external origin
Zdenek Kabelac [Fri, 9 Aug 2013 21:17:15 +0000 (23:17 +0200)]
test: can convert pool to external origin

Test for http://bugzilla.redhat.com/show_bug.cgi?id=983743

11 years agothin: thin pool can't be external origin
Zdenek Kabelac [Fri, 9 Aug 2013 21:04:30 +0000 (23:04 +0200)]
thin: thin pool can't be external origin

Avoid trying to convert thin-pool to external origin.

11 years agoworkaround: gcc v4.8 on 32 bit param. passing bug when -02 opimization used
Peter Rajnoha [Fri, 9 Aug 2013 11:06:17 +0000 (13:06 +0200)]
workaround: gcc v4.8 on 32 bit param. passing bug when -02 opimization used

gcc -O2 v4.8 on 32 bit architecture is causing a bug in parameter
passing. It does not happen with -01 nor -O0.

The problematic part of the code was strlen use in config.c in
the config_def_check fn and the call for _config_def_check_tree in it:

<snip>
  rplen = strlen(rp);
  if (!_config_def_check_tree(handle, vp, vp + strlen(vp), rp, rp + rplen, CFG_PATH_MAX_LEN - rplen, cn, cmd->cft_def_hash)) ...
</snip>

If compiled with -O0 (correct):

Breakpoint 1, config_def_check (cmd=0x819b050, handle=0x81a04f8) at config/config.c:775
(gdb) p vp
$1 = 0x8189ee0 <_cfg_path> "config"
(gdb) p strlen(vp)
$2 = 6
(gdb)
_config_def_check_tree (handle=0x81a04f8, vp=0x8189ee0 <_cfg_path>
"config", pvp=0x8189ee6 <_cfg_path+6> "", rp=0xbfffe1e8 "config",
prp=0xbfffe1ee "", buf_size=58, root=0x81a2568, ht=0x81a65
48) at config/config.c:680
(gdb) p vp
$4 = 0x8189ee0 <_cfg_path> "config"
(gdb) p pvp
$5 = 0x8189ee6 <_cfg_path+6> ""

If compiled with -O2 (incorrect):

Breakpoint 1, config_def_check (cmd=cmd@entry=0x8183050, handle=0x81884f8) at config/config.c:775
(gdb) p vp
$1 = 0x8172fc0 <_cfg_path> "config"
(gdb) p strlen(vp)
$2 = 6
(gdb) p vp + strlen(vp)
$3 = 0x8172fc6 <_cfg_path+6> ""
(gdb)
_config_def_check_tree (handle=handle@entry=0x81884f8, pvp=0x8172fc7
<_cfg_path+7> "host_list", rp=rp@entry=0xbffff190 "config",
prp=prp@entry=0xbffff196 "", buf_size=buf_size@entry=58, ht=0x
818e548, root=0x818a568, vp=0x8172fc0 <_cfg_path> "config") at
config/config.c:674
(gdb) p pvp
$4 = 0x8172fc7 <_cfg_path+7> "host_list"

The difference is in passing the "pvp" arg for _config_def_check_tree.
While in the correct case, the value of _cfg_path+6 is passed
(the result of vp + strlen(vp) - see the snippet of the code above),
in the incorrect case, this value is increased by 1 to _cfg_path+7,
hence totally malforming the string that is being processed.

This ends up with incorrect validation check and incorrect warning
messages are issued like:

 "Configuration setting "config/checks" has invalid type. Found integer, expected section."

To workaround this issue, remove the "static" qualifier from the
"static char _cfg_path[CFG_PATH_MAX_LEN]". This causes the optimalizer
to be less aggressive (also shuffling the arg list for
_config_def_check_tree call helps).

11 years agoWHATS_NEW: entry for 19baf84290186a550b212260144523266350252b
Peter Rajnoha [Thu, 8 Aug 2013 08:04:53 +0000 (10:04 +0200)]
WHATS_NEW: entry for 19baf84290186a550b212260144523266350252b

11 years agoWHATS_NEW: update WHATS_NEW for previous commit
Jonathan Brassow [Wed, 7 Aug 2013 22:51:21 +0000 (17:51 -0500)]
WHATS_NEW: update WHATS_NEW for previous commit

11 years agoMirror: Fix issue preventing PV creation on mirror LVs
Jonathan Brassow [Wed, 7 Aug 2013 22:42:26 +0000 (17:42 -0500)]
Mirror: Fix issue preventing PV creation on mirror LVs

Commit b248ba0a396d7fc9a459eea02cfdc70b33ce3441 attempted to
prevent mirror devices which had a failed device in their
mirrored log from being usable/readable by LVM.  This was to
protect against circular dependancies where one LVM command
could be blocked trying to read one of these affected mirrors
while the LVM command to fix/unblock that mirror was stuck
behind the currently running command.

The above commit went wrong when it used 'device_is_usable()' to
recurse on the mirrored log device to check if it was suspended
or blocked.  The 'device_is_usable' function also contains a check
for reserved names - like *_mlog, etc.  This last check always
triggered when checking a mirror's log simply because of the name,
not because it was suspended or blocked - a false positive.

The solution is to create a new function like 'device_is_usable',
but without the check for reserved names.  Using this new function
(device_is_suspended_or_blocked), we can check the status of a
mirror's log device properly.

11 years agoMirror/RAID1: When up|down-converting default to segtype of current LV
Jonathan Brassow [Wed, 7 Aug 2013 21:01:45 +0000 (16:01 -0500)]
Mirror/RAID1: When up|down-converting default to segtype of current LV

If there is no RAID support in the kernel but the default mirror
segtype is "raid1", converting legacy mirrors can be problematic.
For example, changing the log type or converting a mirror to a linear
LV does not require the RAID modules to be present.  However, because
lp->segtype is set to be RAID1 by the configuration file, the command
fails.

We should only be setting lp->segtype when converting mirrors if it is
going to change (e.g. to linear or between mirror types).

11 years agoTEST: Be explicit about which mirror segment type to use.
Jonathan Brassow [Wed, 7 Aug 2013 20:48:31 +0000 (15:48 -0500)]
TEST: Be explicit about which mirror segment type to use.

In those places where mirrors were being created while assuming
a default segment type of "mirror", we include the '--type mirror'
argument to explicitly set the segment type.  This will preserve
the mirror testing that is performed even though the default
mirroring segment type is now "raid1".

11 years agotests: add profiles.sh test
Peter Rajnoha [Wed, 7 Aug 2013 10:17:36 +0000 (12:17 +0200)]
tests: add profiles.sh test

11 years agoRAID: Make "raid10" the default striped + mirror segment type
Jonathan Brassow [Tue, 6 Aug 2013 19:15:08 +0000 (14:15 -0500)]
RAID: Make "raid10" the default striped + mirror segment type

When both the '-i' and '-m' arguments are specified on the command
line, use the "raid10" segment type.  This way, the native RAID10
personality is used through dm-raid rather than layering a mirror
on striped LVs.  If the old behavior is desired, the '--type'
argument to use would be "mirror" rather than "raid10".

11 years agoRAID: Make "raid1" the default mirror segment type
Jonathan Brassow [Tue, 6 Aug 2013 19:13:55 +0000 (14:13 -0500)]
RAID: Make "raid1" the default mirror segment type

11 years agothin: fix commit e195b5227e624cb125b070b4a10e24efdab16d53
Peter Rajnoha [Tue, 6 Aug 2013 14:28:12 +0000 (16:28 +0200)]
thin: fix commit e195b5227e624cb125b070b4a10e24efdab16d53

Check chunk_size range unconditionally.

11 years agoclogd: fix descriptor leak when daemonzing
Zdenek Kabelac [Tue, 6 Aug 2013 14:08:31 +0000 (16:08 +0200)]
clogd: fix descriptor leak when daemonzing

11 years agoclmvd: fix decriptor leak on restart
Zdenek Kabelac [Tue, 6 Aug 2013 14:07:50 +0000 (16:07 +0200)]
clmvd: fix decriptor leak on restart

Do not leave descriptor used for dup2() openned.

11 years agolibdm: update DM_ABORT_ON_INTERNAL_ERRORS
Zdenek Kabelac [Tue, 6 Aug 2013 13:22:26 +0000 (15:22 +0200)]
libdm: update DM_ABORT_ON_INTERNAL_ERRORS

Update behavior to disable  aborting when macro is unset
or its set to 0.  In other cases it will abort.
i.e. set to anything....

11 years agothin: use pipe_open instead of popen
Zdenek Kabelac [Tue, 6 Aug 2013 13:21:42 +0000 (15:21 +0200)]
thin: use pipe_open instead of popen

Use new function to directly exec command and read its output.

11 years agoexec: pipe open
Zdenek Kabelac [Tue, 6 Aug 2013 12:27:37 +0000 (14:27 +0200)]
exec: pipe open

Function replaces popen() system and avoids shell execution
and argument parsing (no surprices).

11 years agocleanup: update exec_cmd comment and error
Zdenek Kabelac [Tue, 6 Aug 2013 12:26:00 +0000 (14:26 +0200)]
cleanup: update exec_cmd comment and error

Use log_sys_error for reporting error of system call.
Fix comment for return value.

11 years agoWHATS_NEW: previous commit
Peter Rajnoha [Tue, 6 Aug 2013 12:03:43 +0000 (14:03 +0200)]
WHATS_NEW: previous commit

11 years agolvmetad: fix mda offset/size overflow if >= 4g (32bit)
Peter Rajnoha [Tue, 6 Aug 2013 11:37:42 +0000 (13:37 +0200)]
lvmetad: fix mda offset/size overflow if >= 4g (32bit)

When reading an info about MDAs from lvmetad, we need to use 64 bit
int to read the value of the offset/size, otherwise the value is
overflows and then it's used throughout!

This is dangerous if we're trying to write such metadata area then,
mostly visible if we're using 2 mdas where the 2nd one is at the end
of the underlying device and hence the value of the mda offset is
high enough to cause problems:

(the offset trimmed to value of 0 instead of 4096m, so we write
at the very start of the disk (or elsewhere if the offset has
some other value!)

[1] raw/~ # lvcreate -s -l 100%FREE vg --virtualsize 4097m
  Logical volume "lvol0" created

[1] raw/~ # pvcreate --metadatacopies 2 /dev/vg/lvol0
  Physical volume "/dev/vg/lvol0" successfully created

[1] raw/~ # hexdump -n 512 /dev/vg/lvol0
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
0000200

[1] raw/~ # pvchange -u /dev/vg/lvol0
  Physical volume "/dev/vg/lvol0" changed
  1 physical volume changed / 0 physical volumes not changed

[1] raw/~ # hexdump -n 512 /dev/vg/lvol0
0000000 d43e d2a5 4c20 4d56 2032 5b78 4135 7225
0000010 4e30 3e2a 0001 0000 0000 0000 0000 0000
0000020 0000 0010 0000 0000 0000 0000 0000 0000
0000030 0000 0000 0000 0000 0000 0000 0000 0000
*
0000200

=======

(the offset overflows to undefined values which is far behind
the end of the disk)

[1] raw/~ # lvcreate -s -l 100%FREE vg --virtualsize 100g
  Logical volume "lvol0" created

[1] raw/~ # pvcreate --metadatacopies 2 /dev/vg/lvol0
  Physical volume "/dev/vg/lvol0" successfully created

[1] raw/~ # pvchange -u /dev/vg/lvol0
  /dev/vg/lvol0: lseek 18446744073708503040 failed: Invalid argument
  /dev/vg/lvol0: lseek 18446744073708503040 failed: Invalid argument
  Failed to store physical volume "/dev/vg/lvol0"
  0 physical volumes changed / 1 physical volume not changed

11 years agothin: chunk_size check already part of get_profilable_pool_params fn
Peter Rajnoha [Tue, 6 Aug 2013 09:46:48 +0000 (11:46 +0200)]
thin: chunk_size check already part of get_profilable_pool_params fn

11 years agothin: apply VG profile if creating a new thin pool
Peter Rajnoha [Tue, 6 Aug 2013 09:42:40 +0000 (11:42 +0200)]
thin: apply VG profile if creating a new thin pool

When creating a new thin pool and there's no profile requested
via "lvcreate --profile ...", inherit any VG profile if it's attached.

Currently this applies to these settings:
  allocation/thin_pool_chunk_size
  allocation/thin_pool_discards
  allocation/thin_pool_zero

11 years agoWHATS_NEW: move line to WHATS_NEW_DM
Peter Rajnoha [Tue, 6 Aug 2013 09:42:01 +0000 (11:42 +0200)]
WHATS_NEW: move line to WHATS_NEW_DM

11 years agoclvmd: verify messages before processing
David Teigland [Tue, 30 Jul 2013 19:12:33 +0000 (14:12 -0500)]
clvmd: verify messages before processing

Check that fields in clvm_header are valid when
local or remote messages are received.  If not,
log an error, dump the message data and ignore
the message.

11 years agodmeventd: Fix memory leak
Jonathan Brassow [Wed, 31 Jul 2013 20:23:13 +0000 (15:23 -0500)]
dmeventd: Fix memory leak

When creating a timeout thread for snapshots, the thread is not
tracked and thus never joined.  This means that the exit status
of the timeout thread is held indefinitely.  Saves a bit of
memory to set PTHREAD_CREATE_DETACHED when creating this thread.

I've also added pthread_attr_init|destroy to setup the creation
pthread_attr_t.

Reported-by: NeilBrown <neilb@suse.de>
Signed-off-by: Jonathan Brassow <jbrassow@redhat.com>
11 years agoconfigure: autoreconf
Peter Rajnoha [Wed, 31 Jul 2013 13:59:05 +0000 (15:59 +0200)]
configure: autoreconf

11 years agothin: initial --repair support for pools
Zdenek Kabelac [Wed, 24 Jul 2013 13:25:34 +0000 (15:25 +0200)]
thin: initial --repair support for pools

Initial basic support for repair.
It currently takes pool metadata spare volume, which
is used for recovery.  New spare is created if the volume
is successfuly repaired.

After the operation the previous _tmeta volume is moved
into  _tmeta%d volume and if everything is ok, this volume
could be removed.
New _tmeta needs to be pvmoved to proper place and also
converted to i.e. mirror if it should be mirrored.

Later version will try to automate some steps here.

11 years agothin: add thin_repair and thin_dump options
Zdenek Kabelac [Wed, 31 Jul 2013 12:38:10 +0000 (14:38 +0200)]
thin: add thin_repair and thin_dump options

Add new configure lvm.conf options for binaries thin_repair
and thin_dump.

Those are part of device-mapper-persistent-data package
and will be used for recovery of thin_pool.

11 years agothin: metadata resize needs 1.9 version
Zdenek Kabelac [Thu, 25 Jul 2013 12:35:08 +0000 (14:35 +0200)]
thin: metadata resize needs 1.9 version

Version 1.8 is not yet fully usable for metadata resize.

11 years agothin: move setting of THIN_POOL
Zdenek Kabelac [Wed, 31 Jul 2013 13:13:54 +0000 (15:13 +0200)]
thin: move setting of THIN_POOL

Set flag when attaching data LV which make segment THIN_POOL.

11 years agolibdm: add DM_ABORT_ON_INTERNAL_ERRORS
Zdenek Kabelac [Thu, 25 Jul 2013 12:32:09 +0000 (14:32 +0200)]
libdm: add DM_ABORT_ON_INTERNAL_ERRORS

Support tests with abort when libdm encounters internal
error - i.e. for dmsetup tool.

Code execution will be aborted when
env var DM_ABORT_ON_INTERNAL_ERRORS is set to 1

11 years agocleanup: use compile time strlen
Zdenek Kabelac [Thu, 25 Jul 2013 12:18:18 +0000 (14:18 +0200)]
cleanup: use compile time strlen

Use sizeof instead of strlen().

11 years agotests: add profileconf fn to generate profiles
Peter Rajnoha [Tue, 30 Jul 2013 13:44:15 +0000 (15:44 +0200)]
tests: add profileconf fn to generate profiles

profileconf <profile_name> <config> ...

11 years agoalloc: fix lvextend when stripe number varies
Alasdair G Kergon [Mon, 29 Jul 2013 18:35:45 +0000 (19:35 +0100)]
alloc: fix lvextend when stripe number varies

The PREFERRED allocation mechanism requires the number of areas in the
previous LV segment to match the number in the new segment being
allocated.  If they do not match, the code may crash.
  E.g. https://bugzilla.redhat.com/989347

Introduce A_AREA_COUNT_MATCHES and when not set avoid referring
to the previous segment with the contiguous and cling policies.

11 years agopython unit test: Limit PVs to use
Tony Asleson [Fri, 26 Jul 2013 14:51:58 +0000 (09:51 -0500)]
python unit test: Limit PVs to use

When running in the context of the test framework
we need to limit our PVs to use to those created
in the framework.

Signed-off-by: Tony Asleson <tasleson@redhat.com>
11 years agopython unit test: White space/pep8 cleanup
Tony Asleson [Thu, 25 Jul 2013 22:24:52 +0000 (18:24 -0400)]
python unit test: White space/pep8 cleanup

pep8 compliant, except for using tabs instead of
spaces.

Signed-off-by: Tony Asleson <tasleson@redhat.com>
11 years agopython-lvm: Correct parsing arguments for integers
Tony Asleson [Thu, 25 Jul 2013 19:54:57 +0000 (15:54 -0400)]
python-lvm: Correct parsing arguments for integers

There were a few places where the code was incorrectly
using parse arguments for the supplied variable type &
size.  Changing the variables to be declared exactly
like python is expecting so if we build on an arch
where the size of type is different than typically
expected we will continue to match.  In addition the
parse character needed to be corrected in a few spots
too.

Signed-off-by: Tony Asleson <tasleson@redhat.com>
11 years agofilters: fix segfault on incorrect global_filter
Peter Rajnoha [Fri, 26 Jul 2013 10:47:28 +0000 (12:47 +0200)]
filters: fix segfault on incorrect global_filter

When using a global_filter and if this filter is incorrectly
specified, we ended up with a segfault:

  raw/~ $ pvs
    Invalid filter pattern "r|/dev/sda".
  Segmentation fault (core dumped)

In the example above a closing '|' character is missing at the end
of the regex. The segfault itself was caused by trying to destroy
the same filter twice in _init_filters fn within the error path
(the "bad" goto target):

bad:
        if (f3)
                f3->destroy(f3);
        if (f4)
                f4->destroy(f4);

Where f3 is the composite filter (sysfs + regex + type + md + mpath filter)
and f4 is the persistent filter which encompasses this composite filter
within persistent filter's 'real' field in 'struct pfilter'.

So in the end, we need to destroy the persistent filter only as
this will also destroy any 'real' filter attached to it.

11 years agopost-release
Alasdair G Kergon [Wed, 24 Jul 2013 23:38:53 +0000 (00:38 +0100)]
post-release

11 years agorelease 2.02.99 v2_02_99
Alasdair G Kergon [Wed, 24 Jul 2013 22:59:03 +0000 (23:59 +0100)]
release 2.02.99

 363 files changed, 19863 insertions(+), 9055 deletions(-)

This is a very large release - so expect bugs!

Please treat this release like a release candidate.
Changes to the external interfaces since 2.02.98 are not yet frozen.

Updated releases will follow quickly (days not weeks) as any problems
are handled.

11 years agopython-lvm: Change exception back to LibLVMerror
Tony Asleson [Wed, 24 Jul 2013 22:29:41 +0000 (18:29 -0400)]
python-lvm: Change exception back to LibLVMerror

This is an API exposed name and shouldn't be changed
to _LibLVMError.

Signed-off-by: Tony Asleson <tasleson@redhat.com>
11 years agocleanup: comments and a message
Alasdair G Kergon [Wed, 24 Jul 2013 21:10:37 +0000 (22:10 +0100)]
cleanup: comments and a message

11 years agopython: Introduce pyexecdir
Alasdair G Kergon [Wed, 24 Jul 2013 21:07:10 +0000 (22:07 +0100)]
python: Introduce pyexecdir

Use pyexecdir for $DESTDIR + $prefix

11 years agopython: fix Makefile installation path
Alasdair G Kergon [Wed, 24 Jul 2013 20:52:39 +0000 (21:52 +0100)]
python: fix Makefile installation path

Use --prefix rather than --root.
(Needs more thorough investigation, but this seems to avoid /usr/usr
paths.)

11 years agoRevert a previous change
Jonathan Brassow [Wed, 24 Jul 2013 19:18:07 +0000 (14:18 -0500)]
Revert a previous change

commit d00d45a8b609d50302c94a0fff20849f0cc13a48 introduced changes
that are causing cluster mirror tests to fail.  Ultimately, I think
the change was right, but a proper clean-up will have to wait.
The portion of the commit we are reverting correlates to the
following commit comment:
    2) lib/metadata/mirror.c:_delete_lv() - should have been calling
       _activate_lv_like_model() with 'mirror_lv'.  This is because
       'mirror_lv' is the LV that the overall operation is being
       performed on.  We need to use this LV as the basis for
       determining whether to activate locally, or across the
       cluster, etc.
It appears that when legs or logs are removed from a mirror, they
are being activated before they are deleted in order to make them
top-level LVs that can be acted upon.  When doing this, it appears
they are not activated based on the characteristics of the mirror
from which they came.  IOW, if the mirror was exclusively active,
the sub-LVs are activated globally.  This is a no-no.  This then
made it impossible to activate_lv_like_model if the model was
"mirror_lv" instead of "lv" in _delete_lv().  Thus, at some point
this change should probably be put back and those location where
the sub-LVs are being improperly activated "shared" instead of
EX should be corrected.

11 years agolibdm: move new added field to structure end
Zdenek Kabelac [Wed, 24 Jul 2013 14:49:48 +0000 (16:49 +0200)]
libdm: move new added field to structure end

For backwared compatibility add new struct field to the end.

(in release fix)

11 years agothin: lvconvert cannot convert pool to mirror
Zdenek Kabelac [Wed, 24 Jul 2013 13:25:22 +0000 (15:25 +0200)]
thin: lvconvert cannot convert pool to mirror

Suggest to use _tdata and _tmeta devices for that.
This fixes regression from too relaxed change in
f1d5f6ae81f4723e6aeb2f04bd68cba59cd65403

Without this patch there are some empty LVs created before
mirror code recognizes it cannot continue.

(in release fix)

11 years agopython: make clean removes build dir
Zdenek Kabelac [Wed, 24 Jul 2013 11:57:49 +0000 (13:57 +0200)]
python: make clean removes build dir

Cleanning compiled objects for clean: target.

11 years agosystemd: udevadm settle for lvm2-activation-net.service
Peter Rajnoha [Wed, 24 Jul 2013 09:06:28 +0000 (11:06 +0200)]
systemd: udevadm settle for lvm2-activation-net.service

In case lvmetad is not used, we need to wait for udev to complete
after net-attached storage is initialized (after iscsi/fcoe service).
N.B. This also requires the storage to be attached synchronously
in the kernel itself.

11 years agoRevert "lvm2app: lvm_vg_list_lvs filter hidden LVs"
Alasdair G Kergon [Wed, 24 Jul 2013 00:49:18 +0000 (01:49 +0100)]
Revert "lvm2app: lvm_vg_list_lvs filter hidden LVs"

This reverts commit a2b51476007aae91acfc121a7fd2ce04f3b08781.

The function has behaved like this for a long time so let's
not change this part of the API.

11 years agothin: not zeroing for non-zeroed thin pool snaps
Zdenek Kabelac [Tue, 23 Jul 2013 23:11:15 +0000 (01:11 +0200)]
thin: not zeroing for non-zeroed thin pool snaps

Do not zero initial 4KB of thin snapshot volume for thin pool with
disabled zeroing.

11 years agoClean-up: Addressing a few FIXME's
Jonathan Brassow [Tue, 23 Jul 2013 19:46:22 +0000 (14:46 -0500)]
Clean-up:  Addressing a few FIXME's

Three fixme's addressed in this commit:
1) lib/metadata/lv_manip.c:_calc_area_multiple() - this could be
   safely changed to a comment explaining that currently because
   RAID10 can only have a 2-way mirror, we don't need to know the
   number of stripes.  However, we will need to know that in the
   future if RAID10 is to support more than 2-way mirroring.

2) lib/metadata/mirror.c:_delete_lv() - should have been calling
   _activate_lv_like_model() with 'mirror_lv'.  This is because
   'mirror_lv' is the LV that the overall operation is being
   performed on.  We need to use this LV as the basis for
   determining whether to activate locally, or across the
   cluster, etc.

3) tools/lvcreate.c:_lvcreate_params() - Minor clean-up.  If
   '-m 0' is given, treat it as though the mirroring argument
   was not given (i.e. as though the requested segment type
   was 'stripe' and not mirror).

11 years agolvm2app: lvm_vg_list_lvs filter hidden LVs
Tony Asleson [Tue, 23 Jul 2013 18:57:53 +0000 (14:57 -0400)]
lvm2app: lvm_vg_list_lvs filter hidden LVs

The function lvm_vg_list_lvs was returning all logical
volumes, including *_tmeta and *_tdata.  Added check
to verify that LV is visible before including in list
of returned logical volumes.

Signed-off-by: Tony Asleson <tasleson@redhat.com>
11 years agolvconvert: add more checks for lvconvert --type
Peter Rajnoha [Tue, 23 Jul 2013 15:04:43 +0000 (17:04 +0200)]
lvconvert: add more checks for lvconvert --type

The --type mirror requires -m/--mirrrors:

  lvconvert --type mirror vg/lvol0
    --type mirror requires -m/--mirrors
    Run `lvconvert --help' for more information.

The --type raid* is allowed (the checks already existed):

  lvconvert --type raid10 vg/lvol0
    Converting the segment type for vg/lvol0 from linear to raid10 is not yet supported.

The --type snapshot is a synonym to -s/--snapshot:

  lvconvert -s vg/lvol0 vg/lvol1
    Logical volume lvol1 converted to snapshot.

  lvconvert --type snapshot vg/lvol0 vg/lvol1
    Logical volume lvol1 converted to snapshot.

All the other segment types are not supported, e.g.:

  lvconvert --type zero vg/lvol0
    Conversion using --type zero is not supported.
    Run `lvconvert --help' for more information.

11 years agosnapshot: update merging fix
Zdenek Kabelac [Tue, 23 Jul 2013 13:15:04 +0000 (15:15 +0200)]
snapshot: update merging fix

Activation is needed only for clustered VG.
For non-clustered VG skip activation, since deactivate_lv()
is called without problems (no testing for lock presence).

(updates f6ded62291682e40c7976d27e48915d9d1538940)

11 years agothin: use 64bit arithmetic for checking meta size
Zdenek Kabelac [Tue, 23 Jul 2013 08:46:50 +0000 (10:46 +0200)]
thin: use 64bit arithmetic for checking meta size

Avoid overflow since extents are just 32bit values.

(in release fix 87aca628)

11 years agocleanup: add explicit cast to proper enum type
Zdenek Kabelac [Tue, 23 Jul 2013 08:46:07 +0000 (10:46 +0200)]
cleanup: add explicit cast to proper enum type

11 years agoman: pvs -o ba_start,ba_size -> pv_ba_start,pv_ba_size
Peter Rajnoha [Tue, 23 Jul 2013 12:44:30 +0000 (14:44 +0200)]
man: pvs -o ba_start,ba_size -> pv_ba_start,pv_ba_size

11 years agodeptree: don't remove live node on resume failure
Alasdair G Kergon [Tue, 23 Jul 2013 12:33:35 +0000 (13:33 +0100)]
deptree: don't remove live node on resume failure

When resuming a node needed by a higher layer of the tree,
if the resume fails, only remove it if the node did not
originally have a live table.

Ref. 97f8454eccefe29464336ba1823448f4d1fa009b

11 years agothin: rename extend_pool to create_pool
Alasdair G Kergon [Tue, 23 Jul 2013 12:33:14 +0000 (13:33 +0100)]
thin: rename extend_pool to create_pool

11 years agocleanup: suppress compiler warning
Alasdair G Kergon [Tue, 23 Jul 2013 12:32:47 +0000 (13:32 +0100)]
cleanup: suppress compiler warning

11 years agoMan Pages: Update man pages to reflect changes to various RAID options
Jonathan Brassow [Mon, 22 Jul 2013 18:02:32 +0000 (13:02 -0500)]
Man Pages:  Update man pages to reflect changes to various RAID options

Some of the names for various RAID options have been changed and the man
pages need to reflect it.
lvcreate:
from: minrecoveryrate to: [raid]minrecoveryrate
from: maxrecoveryrate to: [raid]maxrecoveryrate
* plus better clarity on what the arg to these options is
  specifying

lvchange:
from: minrecoveryrate   to: [raid]minrecoveryrate
from: maxrecoveryrate   to: [raid]maxrecoveryrate
* plus better clarity on what the arg to these options is
  specifying
from: syncaction        to: [raid]syncaction
from: writebehind to  [raid]writebehind
* plus change arg from BehindCount to IO/count
from: writemostly to: [raid]writemostly
* plus addition to document [:{t|n|y}] option
lvs:
from: mismatches to: raid_mismatch_count
from: sync_action to: raid_sync_action
add : raid_min|max_recovery_rate, raid_write_behind

11 years agosnapshot: fix merging
Zdenek Kabelac [Mon, 22 Jul 2013 14:20:36 +0000 (16:20 +0200)]
snapshot: fix merging

When the merging of snapshot is finished, we need to clean dm table
intries for snapshot and -cow device. So for merging snapshot
we have to activate_lv plain 'cow' LV and let the table
resolver to its work - shortly deactivation_lv() request
will follow - in cluster this needs LV lock to be held by clvmd.

Also update a test - add small wait - if lvremove is not 'fast enough'
and merging process has not been stopped and $lv1 removed in background.
Ortherwise the following lvcreate occasionally finds name $lv1 still in use.

(in release fix)

11 years agotests: comment about pvscan --cache return value
Peter Rajnoha [Mon, 22 Jul 2013 13:57:18 +0000 (15:57 +0200)]
tests: comment about pvscan --cache return value

11 years agoTEST: Support testing new RAID features in RHEL6 kernels
Jonathan Brassow [Mon, 22 Jul 2013 13:50:27 +0000 (08:50 -0500)]
TEST: Support testing new RAID features in RHEL6 kernels

We check the version number of dm-raid before testing certain
features to make sure they are present.  However, this has
become somewhat complicated by the fact that the version #'s
in the upstream kernel and the REHL6 kernel have been diverging.
This has been a necessity because the upstream kernel has
undergone ABI changes that have necessitated a bump in the
'Y' component of the version #, while the RHEL6 kernel has not.
Thus, we need to know that the ABI has not changed but the
features have been added.  So, the current version #'ing stands
as follows:

RHEL6   Upstream   Comment
======|==========|========
** Same until version 1.3.1 **
------|----------|--------
 N/A  |   1.4.0  | Non-functional change.
      |          | Removes arg from mapping function.
------|----------|--------
1.3.2 |   1.4.1  | RAID10 fix redundancy validation checks.
------|----------|--------
1.3.5 |   1.4.2  | Add RAID10 "far" and "offset" algorithm support.
      |          | Note this feature came later in RHEL6 as part of
      |          | a separate update/feature.
------|----------|--------
1.3.3 |   1.5.0  | Add message interface to allow manipulation of
      |          | the sync_action.
      |          | New status (STATUSTYPE_INFO) fields: sync_action
      |          | and mismatch_cnt.
------|----------|--------
1.3.4 |   1.5.1  | Add ability to restore transiently failed devices
      |          | on resume.
------|----------|--------
1.3.5 |   1.5.2  | 'mismatch_cnt' is zero unless [last_]sync_action
      |          | is "check".
------|----------|--------

To simplify, writemostly/writebehind, scrubbing, and transient device
failure restoration are all tested based on the same version
requirements: (1.3.5 < V < 1.4.0) || (V > 1.5.2).  Since kernel
support for writemostly/writebehind has been around for some time,
this could mean a reduction in the scope of kernels tested for this
feature.  I don't view this as much of a problem, since support for
this feature was only recently added to LVM.  Thus, the user would
have to be using a very recent LVM version with an older kernel.

11 years agopvscan: Respect lvmetad (global) filter in --cache w/ a device.
Petr Rockai [Mon, 22 Jul 2013 13:03:56 +0000 (15:03 +0200)]
pvscan: Respect lvmetad (global) filter in --cache w/ a device.

11 years agosystemd: lvm2-activation-generator: use LOG_DEBUG/ERR severity for kmsg
Peter Rajnoha [Mon, 22 Jul 2013 12:04:12 +0000 (14:04 +0200)]
systemd: lvm2-activation-generator: use LOG_DEBUG/ERR severity for kmsg

11 years agolvconvert: drop limit on thin pool conversion
Zdenek Kabelac [Sun, 16 Jun 2013 19:05:00 +0000 (21:05 +0200)]
lvconvert: drop limit on thin pool conversion

11 years agopython: make install to prefix dir
Zdenek Kabelac [Fri, 19 Jul 2013 18:48:41 +0000 (20:48 +0200)]
python: make install to prefix dir

Respect $prefix and avoid install to live system.

11 years agodumpconfig: check conf tree was created
Zdenek Kabelac [Fri, 19 Jul 2013 15:32:08 +0000 (17:32 +0200)]
dumpconfig: check conf tree was created

Missing error path.

11 years agoliblvm: check lvmetad cache return values
Zdenek Kabelac [Fri, 19 Jul 2013 15:31:13 +0000 (17:31 +0200)]
liblvm: check lvmetad cache return values

Missing error path.

11 years agocleanup: do not return stack content
Zdenek Kabelac [Fri, 19 Jul 2013 15:29:37 +0000 (17:29 +0200)]
cleanup: do not return stack content

Return initialized struct in error path.

11 years agocoverity: pointer validation
Zdenek Kabelac [Fri, 19 Jul 2013 15:28:43 +0000 (17:28 +0200)]
coverity: pointer validation

Check for metadata_lv and make sure we have got proper thin pool segment.

Check we are working with merging snapshot when adding merging target.

11 years agoliblvm: check extents_from_size
Zdenek Kabelac [Fri, 19 Jul 2013 13:35:04 +0000 (15:35 +0200)]
liblvm: check extents_from_size

Since the function may fail, check for error.
(in release fix)

11 years agocleanup: lvm complient style
Zdenek Kabelac [Fri, 19 Jul 2013 13:33:26 +0000 (15:33 +0200)]
cleanup: lvm complient style

drop unused assignments.

11 years agocleanup: simplier string reset
Zdenek Kabelac [Fri, 19 Jul 2013 13:32:49 +0000 (15:32 +0200)]
cleanup: simplier string reset

11 years agocleanup: remove unused headers
Zdenek Kabelac [Fri, 19 Jul 2013 13:31:26 +0000 (15:31 +0200)]
cleanup: remove unused headers

11 years agometadata: Fix tracking of read_status flags in _vg_make_handle.
Petr Rockai [Mon, 22 Jul 2013 10:04:47 +0000 (12:04 +0200)]
metadata: Fix tracking of read_status flags in _vg_make_handle.

11 years agometadata: Do not ignore errors in _vg_update_vg_ondisk.
Petr Rockai [Mon, 22 Jul 2013 10:00:48 +0000 (12:00 +0200)]
metadata: Do not ignore errors in _vg_update_vg_ondisk.

11 years agoTEST: Add a regression test for the ondisk/orphan bug.
Petr Rockai [Mon, 22 Jul 2013 09:57:23 +0000 (11:57 +0200)]
TEST: Add a regression test for the ondisk/orphan bug.

11 years agometadata: Do not try to maintain an ondisk copy of orphan VGs.
Petr Rockai [Mon, 22 Jul 2013 09:51:35 +0000 (11:51 +0200)]
metadata: Do not try to maintain an ondisk copy of orphan VGs.

11 years agoTEST: Update syncaction test to match latest kernel updates
Jonathan Brassow [Fri, 19 Jul 2013 20:24:34 +0000 (15:24 -0500)]
TEST: Update syncaction test to match latest kernel updates

The mismatch count reported by a dm-raid kernel target used
to be effectively random, unless it was checked after a
"check" scrubbing action had been performed.  Updates to the
kernel now mean that the mismatch count will be 0 unless a
check has been performed and discrepancies had been found.
This has been the intended behaviour all along.

This patch updates the test suite to handle the change.

11 years agocmdline: support ARG_GROUPABLE in merge_synonym
Alasdair G Kergon [Fri, 19 Jul 2013 19:37:43 +0000 (20:37 +0100)]
cmdline: support ARG_GROUPABLE in merge_synonym

11 years agocommandline: add prefix aliases for raid options
Alasdair G Kergon [Fri, 19 Jul 2013 18:24:54 +0000 (19:24 +0100)]
commandline: add prefix aliases for raid options

Accept --raidwritemostly as well as --writemostly etc.

11 years agoRAID: Fix segfault when reporting raid_syncaction field on older kernel
Jonathan Brassow [Fri, 19 Jul 2013 15:01:48 +0000 (10:01 -0500)]
RAID: Fix segfault when reporting raid_syncaction field on older kernel

The status printed for dm-raid targets on older kernels does not include
the syncaction field.  This is handled by dev_manager_raid_status() just
fine by populating the raid status structure with NULL for that field.
However, lv_raid_sync_action() does not properly handle that field being
NULL.  So, check for it and return 0 if it is NULL.

11 years agodev-type: dev_get_primary_dev default error code 0, not -1
Peter Rajnoha [Fri, 19 Jul 2013 13:26:53 +0000 (15:26 +0200)]
dev-type: dev_get_primary_dev default error code 0, not -1

11 years agoreporting: tidy recent new fields
Alasdair G Kergon [Fri, 19 Jul 2013 00:30:02 +0000 (01:30 +0100)]
reporting: tidy recent new fields

Add underscores and prefixes to recently-added fields.
(Might add more alias functionality in future.)

11 years agopython-lvm: Add call to close/re-open C lib.
Tony Asleson [Thu, 18 Jul 2013 20:53:43 +0000 (16:53 -0400)]
python-lvm: Add call to close/re-open C lib.

As the library handle has a dm pool associated with
it for long running processes it is required to close and
re-open the library to free the dm pool.  Call added so
python clients can reclaim memory, lvm.gc().

Note: Any python objects on the heap become invalid at the
time this call is made.  If referenced, a seg. fault could
occur.  No simple way to make this safe with the current
memory management in the C library.  Use with caution!

Signed-off-by: Tony Asleson <tasleson@redhat.com>
11 years agodisplay: fix units for sizes <1k
Alasdair G Kergon [Thu, 18 Jul 2013 16:55:58 +0000 (17:55 +0100)]
display: fix units for sizes <1k

11 years agothin: vgsplit and vgmerge spare support
Zdenek Kabelac [Tue, 9 Jul 2013 10:01:25 +0000 (12:01 +0200)]
thin: vgsplit and vgmerge spare support

When spliting a VG with spare, update to which VG it will belong.

When merging and both VGs have spare, unmark the smaller one first.

11 years agothin: add lvconvert pool metadata spare
Zdenek Kabelac [Tue, 25 Jun 2013 11:35:12 +0000 (13:35 +0200)]
thin: add lvconvert pool metadata spare

Support poolmetadataspare when convering volumes into thin pool.
Same rules applied as with lvcreate.

11 years agothin: add spare lvcreate support
Zdenek Kabelac [Tue, 25 Jun 2013 11:34:31 +0000 (13:34 +0200)]
thin: add spare lvcreate support

Add --poolmetadataspare option and creates and handles
pool metadata spare lv when thin pool is created.
With default setting 'y' it tries to ensure, spare has
at least the size of created LV.

11 years agothin: removal of spare disables recovery
Zdenek Kabelac [Mon, 17 Jun 2013 17:54:15 +0000 (19:54 +0200)]
thin: removal of spare disables recovery

Warn user when removing spare LV.
Remove spare automatically, when last pool from VG is removed.

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