]> sourceware.org Git - lvm2.git/log
lvm2.git
10 years agocleanup: move merge option
Zdenek Kabelac [Wed, 9 Jul 2014 15:22:16 +0000 (17:22 +0200)]
cleanup: move merge option

Put long --merge option into section with long options.

10 years agocleanup: indent changes
Zdenek Kabelac [Fri, 11 Jul 2014 10:25:18 +0000 (12:25 +0200)]
cleanup: indent changes

10 years agocache: warn about metadata size limits
Zdenek Kabelac [Fri, 11 Jul 2014 10:12:51 +0000 (12:12 +0200)]
cache: warn about metadata size limits

Cache pools are similar as with thin pools.
Add (needs %s) - since cache has currently
a bit strange need for extra few kb over
our default 4M extent size so make it more obvious.

10 years agolvconvert: relocate mirror tests
Zdenek Kabelac [Thu, 10 Jul 2014 20:02:54 +0000 (22:02 +0200)]
lvconvert: relocate mirror tests

10 years agotools: arg_is_any_set and arg_is_only_set
Zdenek Kabelac [Thu, 10 Jul 2014 20:52:53 +0000 (22:52 +0200)]
tools: arg_is_any_set and arg_is_only_set

Helpful functions to more easily detect conflicting
set of options.

10 years agopool: callback handle cache
Zdenek Kabelac [Wed, 9 Jul 2014 15:24:34 +0000 (17:24 +0200)]
pool: callback handle cache

Extend the callback functionality to handle also cache pools.

cache_check is now executed on cachepool metadata when
it's activated and deactivated.

10 years agopool: move code to pool source file
Zdenek Kabelac [Tue, 8 Jul 2014 13:19:47 +0000 (15:19 +0200)]
pool: move code to pool source file

More code is used commonly for all pool types (cache & thin)

10 years agodisplay: show C only for cache and cachepool
Zdenek Kabelac [Mon, 7 Jul 2014 20:26:56 +0000 (22:26 +0200)]
display: show C only for cache and cachepool

Keep target type (attr6) as the cache data and metadata volume has.
(i.e. when will show 'raid' type if metadata is raid)

10 years agolvchange: just skip on cache pool
Zdenek Kabelac [Wed, 9 Jul 2014 15:55:10 +0000 (17:55 +0200)]
lvchange: just skip on cache pool

10 years agolv_is_pool: add new defines
Zdenek Kabelac [Mon, 7 Jul 2014 20:14:08 +0000 (22:14 +0200)]
lv_is_pool: add new defines

Defines for lv_is_pool() and  lv_is_pool_metadata()
Also update comments for prompts for their current meaning.
(Though maybe they should be renamed)

10 years agolvconvert: snapshot prompts to confirm conversion
Zdenek Kabelac [Mon, 7 Jul 2014 20:33:31 +0000 (22:33 +0200)]
lvconvert: snapshot prompts to confirm conversion

Since the type passed LV is changed and content of data detroyed,
query user with prompt to confirm this operation.
Also add a proper wiping of header.

Using '--yes' will skip this prompt:

lvconvert -s --yes vg/lv vg/lvcow

10 years agolvconvert: fix return codes
Zdenek Kabelac [Fri, 11 Jul 2014 10:24:32 +0000 (12:24 +0200)]
lvconvert: fix return codes

Error codes in some function are directly used
as command result - thus return 0 is not error code,
but success - switch to proper ECMD_FAILED.

10 years agoprompt: display 'n' for EOF
Zdenek Kabelac [Mon, 7 Jul 2014 19:03:15 +0000 (21:03 +0200)]
prompt: display 'n' for EOF

When EOF is detect - it could be either 'Ctrl+C'
or empty stdin.

For Ctrl+C there is visual ^C sign.
For EOF print 'n' so decision is clear in debug print.

10 years agoconfigure
Zdenek Kabelac [Fri, 4 Jul 2014 14:31:05 +0000 (16:31 +0200)]
configure

10 years agocache: add tool support
Zdenek Kabelac [Fri, 4 Jul 2014 14:31:29 +0000 (16:31 +0200)]
cache: add tool support

Introducing cache tool support.

10 years agometadata: fix ALLOCATABLE_PV for lvm1 format
Peter Rajnoha [Fri, 11 Jul 2014 10:24:15 +0000 (12:24 +0200)]
metadata: fix ALLOCATABLE_PV for lvm1 format

This is addendum for commit 6dc7b783c80c6834aa724df49b5d47b9b5601506.

LVM1 format stores the ALLOCATABLE flag directly in PV header, not
in VG metadata. So the code needs to be fixed further to work
properly for lvm1 format so that the correct PV header is written
(the flag is set only if the PV is in some VG, unset otherwise).

10 years agoreport: display 'unknown' value for lv_active_remotely field if the LV is also active...
Peter Rajnoha [Fri, 11 Jul 2014 09:56:50 +0000 (11:56 +0200)]
report: display 'unknown' value for lv_active_remotely field if the LV is also active locally

Currently, we can't determine whether the LV is active remotely
or not in that case.

10 years agoreport: display 'unknown' value for active/active_locally/active_remotely/active_excl...
Peter Rajnoha [Fri, 11 Jul 2014 09:15:06 +0000 (11:15 +0200)]
report: display 'unknown' value for active/active_locally/active_remotely/active_exclusively if info bypassed

Before the patch:

$ lvs -o name,active vg/lvol1 --driverloaded n
  WARNING: Activation disabled. No device-mapper interaction will beattempted.
  LV    Active
  lvol1 active

With this patch applied:
$ lvs -o name,active vg/lvol1 --driverloaded n
  WARNING: Activation disabled. No device-mapper interaction will be attempted.
  LV    Active
  lvol1 unknown

The same for active_{locally,remotely,exclusively} fields.
Also, rename headings for these fields (ActLocal/ActRemote/ActExcl).

10 years agoreport: display 'unknown' value for LVSINFO fields if unable to get info
Peter Rajnoha [Fri, 11 Jul 2014 08:18:59 +0000 (10:18 +0200)]
report: display 'unknown' value for LVSINFO fields if unable to get info

If the lv_info call fails for whatever reason/INFO dm ioctl fails or
the dm driver communication is disabled (--driverloaded n), make
sure we always display "unknown" for LVSINFO fields as that's exactly
what happens - we don't know the state.

Before the patch:

$ lvs -o name,device_open --driverloaded n
  WARNING: Activation disabled. No device-mapper interaction will be attempted.
  Command failed with status code 5.

With this patch applied:

$ lvs -o name,device_open --driverloaded n
  WARNING: Activation disabled. No device-mapper interaction will be attempted.
  LV        DevOpen
  lvol1        unknown

10 years agotest: Test failing due to too few PVs
Jonathan Brassow [Thu, 10 Jul 2014 23:52:55 +0000 (18:52 -0500)]
test: Test failing due to too few PVs

Commit 33d69162e4b45e7926d4c0e4a425fedb4246088e reduced the number of
PVs to a level where the test could not function.  (It is impossible
to replace 3 PVs of a 4-way RAID1 LV if there are only 5 PVs.)

10 years agoreport: also report linear and striped for lv_target_type
Peter Rajnoha [Thu, 10 Jul 2014 14:41:42 +0000 (16:41 +0200)]
report: also report linear and striped for lv_target_type

10 years agoconf: add report/list_item_separator lvm.conf option
Peter Rajnoha [Thu, 10 Jul 2014 14:18:45 +0000 (16:18 +0200)]
conf: add report/list_item_separator lvm.conf option

For example:

$ lvm dumpconfig report/list_item_separator
list_item_separator=","

$ lvs -o name,tags vg/lvol1
  LV    LV Tags
  lvol1 a,x,y

$ lvm dumpconfig report/list_item_separator
list_item_separator=":"

$ lvs -o name,tags vg/lvol1
  LV    LV Tags
  lvol1 a:x:y

10 years agolibdm: report: fix string list internal representation if delimiter is composed of...
Peter Rajnoha [Thu, 10 Jul 2014 14:09:58 +0000 (16:09 +0200)]
libdm: report: fix string list internal representation if delimiter is composed of more than one char

10 years agotests: LV's zero field now reported as binary field
Peter Rajnoha [Thu, 10 Jul 2014 13:30:28 +0000 (15:30 +0200)]
tests: LV's zero field now reported as binary field

10 years agoreport: report LV's zero field as binary field
Peter Rajnoha [Thu, 10 Jul 2014 13:23:56 +0000 (15:23 +0200)]
report: report LV's zero field as binary field

Like other binary fields we already have:

$ lvs -o name,zero vg/lvx vg/pool vg/pool1
  LV    Zero
  lvx   unknown
  pool
  pool1    zero

$ lvs -o name,zero vg/lvx vg/pool vg/pool1 --binary
  LV    Zero
  lvx     -1
  pool     0
  pool1    1

10 years agoreport: reserved value: description for undefined value
Peter Rajnoha [Thu, 10 Jul 2014 11:42:16 +0000 (13:42 +0200)]
report: reserved value: description for undefined value

10 years agocleanup: also use values.h for final dm_report_reserved_value array composition
Peter Rajnoha [Thu, 10 Jul 2014 11:37:26 +0000 (13:37 +0200)]
cleanup: also use values.h for final dm_report_reserved_value array composition

10 years agocleanup: report reserved value macros
Peter Rajnoha [Thu, 10 Jul 2014 09:54:37 +0000 (11:54 +0200)]
cleanup: report reserved value macros

10 years agoconf: command_profile_template: global/binary_values_as_numeric -> report/binary_valu...
Peter Rajnoha [Thu, 10 Jul 2014 07:48:45 +0000 (09:48 +0200)]
conf: command_profile_template: global/binary_values_as_numeric -> report/binary_values_as_numeric

10 years agoreport: add values.h for per-field reserved value declaration
Peter Rajnoha [Thu, 10 Jul 2014 07:22:45 +0000 (09:22 +0200)]
report: add values.h for per-field reserved value declaration

10 years agoactivation: Add "degraded" activation mode
Jonathan Brassow [Thu, 10 Jul 2014 03:56:11 +0000 (22:56 -0500)]
activation: Add "degraded" activation mode

Currently, we have two modes of activation, an unnamed nominal mode
(which I will refer to as "complete") and "partial" mode.  The
"complete" mode requires that a volume group be 'complete' - that
is, no missing PVs.  If there are any missing PVs, no affected LVs
are allowed to activate - even RAID LVs which might be able to
tolerate a failure.  The "partial" mode allows anything to be
activated (or at least attempted).  If a non-redundant LV is
missing a portion of its addressable space due to a device failure,
it will be replaced with an error target.  RAID LVs will either
activate or fail to activate depending on how badly their
redundancy is compromised.

This patch adds a third option, "degraded" mode.  This mode can
be selected via the '--activationmode {complete|degraded|partial}'
option to lvchange/vgchange.  It can also be set in lvm.conf.
The "degraded" activation mode allows RAID LVs with a sufficient
level of redundancy to activate (e.g. a RAID5 LV with one device
failure, a RAID6 with two device failures, or RAID1 with n-1
failures).  RAID LVs with too many device failures are not allowed
to activate - nor are any non-redundant LVs that may have been
affected.  This patch also makes the "degraded" mode the default
activation mode.

The degraded activation mode does not yet work in a cluster.  A
new cluster lock flag (LCK_DEGRADED_MODE) will need to be created
to make that work.  Currently, there is limited space for this
extra flag and I am looking for possible solutions.  One possible
solution is to usurp LCK_CONVERT, as it is not used.  When the
locking_type is 3, the degraded mode flag simply gets dropped and
the old ("complete") behavior is exhibited.

10 years agoreport: Rename common fields to special fields.
Alasdair G Kergon [Wed, 9 Jul 2014 22:33:09 +0000 (23:33 +0100)]
report: Rename common fields to special fields.

Change the help heading from 'Common Fields' to 'Special Fields' for
the fields: selected, help, ?

Remove the code that does 'all' processing with these special fields as
each of them changes the behaviour of the command in an undesirable way.

'lvs -o all,selected' was of course just printing help.
(via internal expansion to 'lv_all,common_all')

and if we ignored the help fields, then '-o common_all' would still
pull in 'selected' and change the way rows were output.

10 years agoreport: also recognize 'yes'/'no' for selection criteria on binary fields
Peter Rajnoha [Wed, 9 Jul 2014 13:10:43 +0000 (15:10 +0200)]
report: also recognize 'yes'/'no' for selection criteria on binary fields

We have 1/"descriptive word"/"yes" for 1 and 0/"no" for 0.
For example (the new recognized values are "yes" and "no"):

$ lvs -o name,device_open fedora vg/lvol1 vg/lvol2
  LV    DevOpen
  root        open
  swap        open
  lvol1       open
  lvol2

$ lvs -o name,device_open fedora vg/lvol1 vg/lvol2 -S 'device_open=open'
  LV    DevOpen
  root        open
  swap        open
  lvol1       open

$ lvs -o name,device_open fedora vg/lvol1 vg/lvol2 -S 'device_open=1'
  LV    DevOpen
  root        open
  swap        open
  lvol1       open

$ lvs -o name,device_open fedora vg/lvol1 vg/lvol2 -S 'device_open=yes'
  LV    DevOpen
  root        open
  swap        open
  lvol1       open

$ lvs -o name,device_open fedora vg/lvol1 vg/lvol2 -S 'device_open=0'
  LV    DevOpen
  lvol2

$ lvs -o name,device_open fedora vg/lvol1 vg/lvol2 -S 'device_open=no'
  LV    DevOpen
  lvol2

10 years agocleanup: move _lvactive_disp and _thinzero_disp under 'attribute' display functions
Peter Rajnoha [Wed, 9 Jul 2014 12:37:01 +0000 (14:37 +0200)]
cleanup: move _lvactive_disp and _thinzero_disp under 'attribute' display functions

So all attribute reporting functions are all in one section of code
for quick orientation (all these functions are defined in the order
of their attribute character displayed in pv/vg/lv_attr field).

10 years agoreport: add lv_active_{locally,remotely,exclusively} LV reporting fields
Peter Rajnoha [Wed, 9 Jul 2014 12:28:50 +0000 (14:28 +0200)]
report: add lv_active_{locally,remotely,exclusively} LV reporting fields

lv_active_{locally,remotely,exclusively} display the original
"lv_active" field in a more separate way so that we can create
selection criteria in a binary-based form (yes/no).

10 years agoreport: 'whether' -> 'set if' in field description
Peter Rajnoha [Wed, 9 Jul 2014 11:41:25 +0000 (13:41 +0200)]
report: 'whether' -> 'set if' in field description

10 years agocleanup: use macros for definition of reporting/selection reserved values
Peter Rajnoha [Tue, 8 Jul 2014 10:40:45 +0000 (12:40 +0200)]
cleanup: use macros for definition of reporting/selection reserved values

The macros for reserved value definition makes the process a bit easier,
but there's still a place for improvement and make this even more
transparent. We can optimize and provide better automatism here later on.

10 years agoreport: report unknown/-1 for binary fields with unknown value
Peter Rajnoha [Tue, 8 Jul 2014 10:15:14 +0000 (12:15 +0200)]
report: report unknown/-1 for binary fields with unknown value

Also respect --binary arg and/or report/binary_values_as_numeric
when displaying unknown values. If textual form is used, use "unknown",
if numeric value is used, use "-1" (which we already use to denote
unknown numeric values in other reports like lv_kernel_major and
lv_kernel_minor).

10 years agoconf: comment out devices/preferred_names and filter setting
Peter Rajnoha [Tue, 8 Jul 2014 08:22:59 +0000 (10:22 +0200)]
conf: comment out devices/preferred_names and filter setting

This avoids creating void matchers which have no effect anyway and
they just use resources. Also, it makes lvm dumpconfig --type diff
to mark these settings properly as not being different from defaults
(where by default, devices/preferred_names as well as devices/filter
are void).

Also, add a few comments about builtin rules used to select device
alias in case preferred_names is not defined or it doesn't match
any of device aliases.

10 years agolv_manip: pool-metadata-spare is just a spare LV, not tightly bound to thin or cache
Peter Rajnoha [Mon, 7 Jul 2014 15:02:06 +0000 (17:02 +0200)]
lv_manip: pool-metadata-spare is just a spare LV, not tightly bound to thin or cache

10 years agoWHATS_NEW: commits a473435..7021c8f1
Peter Rajnoha [Mon, 7 Jul 2014 14:52:43 +0000 (16:52 +0200)]
WHATS_NEW: commits a473435..7021c8f1

10 years agoreport: addendum for previous commit
Peter Rajnoha [Mon, 7 Jul 2014 14:28:13 +0000 (16:28 +0200)]
report: addendum for previous commit

Really call lv_info only if needed!

10 years agoreport: fix segfault while reporting PV/LV segment fields together with LV fields...
Peter Rajnoha [Mon, 7 Jul 2014 13:54:13 +0000 (15:54 +0200)]
report: fix segfault while reporting PV/LV segment fields together with LV fields needeing device status (LVSINFO)

There was missing lv_info call for situations where there were
mixed PV/LV segment fields together with LVSINFO fields which
require extra lv_info call for LV device status. This ended up
with NULL lvinfo passed to the field reporting functions, hence
the segfault.

10 years agometadata: fix regression causing PVs not in VGs to be marked as allocatable
Peter Rajnoha [Mon, 7 Jul 2014 11:58:42 +0000 (13:58 +0200)]
metadata: fix regression causing PVs not in VGs to be marked as allocatable

If the PV is not yet in a VG, it's not allocatable.
A regression introduced by commit 0283c439ec2dc195184a12f86a060b271476aae0
(_pv_create) and later commit a7ca10151795b4c4ed6fa4bf7d3d6b1a687430b0
(pv_read).

10 years agoreport: define reserved values/synonyms for some attribute fields
Peter Rajnoha [Fri, 4 Jul 2014 10:08:52 +0000 (12:08 +0200)]
report: define reserved values/synonyms for some attribute fields

All binary attr fields have synonyms so selection criteria can use
either 0/1 or words to match against the field value (base type
for these binary fields is numeric one - DM_REPORT_FIELD_TYPE_NUMBER
so words are registered as reserved values):

pv_allocatable          - "allocatable"
pv_exported             - "exported"
pv_missing              - "missing"

vg_extendable           - "extendable"
vg_exported             - "exported"
vg_partial              - "partial"
vg_clustered            - "clustered"

lv_initial_image_sync   - "initial image sync", "sync"
lv_image_synced_names   - "image synced", "synced"
lv_merging_names        - "merging"
lv_converting_names     - "converting"
lv_allocation_locked    - "allocation locked", "locked"
lv_fixed_minor          - "fixed minor", "fixed"
lv_merge_failed         - "merge failed", "failed"

For example, these three are all equivalent:

$ lvs -o name,fixed_minor -S 'fixed_minor=fixed'
  LV    FixMin
  lvol8 fixed minor

$ lvs -o name,fixed_minor -S 'fixed_minor="fixed minor"'
  LV    FixMin
  lvol8 fixed minor

$ lvs -o name,fixed_minor -S 'fixed_minor=1'
  LV    FixMin
  lvol8 fixed minor

The same with binary output - it has no effect on this functionality:

$ lvs -o name,fixed_minor --binary -S 'fixed_minor=fixed'
  LV    FixMin
  lvol8          1

$ lvs -o name,fixed_minor --binary -S 'fixed_minor="fixed
minor"'
  LV    FixMin
  lvol8          1

[1] f20/~ # lvs -o name,fixed_minor --binary -S 'fixed_minor=1'
  LV    FixMin
  lvol8          1

10 years agoreport: adapt selection code to recognize per-field reserved values
Peter Rajnoha [Fri, 4 Jul 2014 09:21:38 +0000 (11:21 +0200)]
report: adapt selection code to recognize per-field reserved values

In contrast to per-type reserved values that are applied for all fields
of that type, per-field reserved values are only applied for concrete
field only.

Also add 'struct dm_report_field_reserved_value' to libdm for per-field
reserved value definition. This is defined by field number (an index
in the 'fields' array which is given for the dm_report_init_with_selection
function during report initialization) and the value to use for any
of the specified reserved names.

10 years agotools: add --binary arg to pvs,vgs,lvs and {pv,vg,lv}display -C and report/binary_val...
Peter Rajnoha [Wed, 2 Jul 2014 11:16:32 +0000 (13:16 +0200)]
tools: add --binary arg to pvs,vgs,lvs and {pv,vg,lv}display -C and report/binary_values_as_numeric lvm.conf option

The --binary option, if used, causes all the binary values reported
in reporting commands to be displayed as "0" or "1" instead of descriptive
literal values (value "unknown" is still used for values that could not be
determined).

Also, add report/binary_values_as_numeric lvm.conf option with the same
functionality as the --binary option (the --binary option prevails
if both --binary cmd option and report/binary_values_as_numeric lvm.conf
option is used at the same time). The report/binary_values_as_numeric is
also profilable.

This makes it easier to use and check lvm reporting command output in scripts.

10 years agoreport: add separate fields for PV/VG/LV attributes
Peter Rajnoha [Wed, 2 Jul 2014 09:09:14 +0000 (11:09 +0200)]
report: add separate fields for PV/VG/LV attributes

Physical Volume Fields:
  pv_allocatable         - Whether this device can be used for allocation.
  pv_exported            - Whether this device is exported.
  pv_missing             - Whether this device is missing in system.

Volume Group Fields:
  vg_permissions         - VG permissions.
  vg_extendable          - Whether VG is extendable.
  vg_exported            - Whether VG is exported.
  vg_partial             - Whether VG is partial.
  vg_allocation_policy   - VG allocation policy.
  vg_clustered           - Whether VG is clustered.

Logical Volume Fields:
  lv_volume_type         - LV volume type.
  lv_initial_image_sync  - Whether mirror/RAID images underwent initial resynchronization.
  lv_image_synced        - Whether mirror/RAID image is synchronized.
  lv_merging             - Whether snapshot LV is being merged to origin.
  lv_converting          - Whether LV is being converted.
  lv_allocation_policy   - LV allocation policy.
  lv_allocation_locked   - Whether LV is locked against allocation changes.
  lv_fixed_minor         - Whether LV has fixed minor number assigned.
  lv_merge_failed        - Whether snapshot merge failed.
  lv_snapshot_invalid    - Whether snapshot LV is invalid.
  lv_target_type         - Kernel target type the LV is related to.
  lv_health_status       - LV health status.
  lv_skip_activation     - Whether LV is skipped on activation.

Logical Volume Info Fields
  lv_permissions         - LV permissions.
  lv_suspended           - Whether LV is suspended.
  lv_live_table          - Whether LV has live table present.
  lv_inactive_table      - Whether LV has inactive table present.
  lv_device_open         - Whether LV device is open.

10 years agorefactor: use new LVSINFO report type for lv_kernel_{major,minor,read_ahead} field
Peter Rajnoha [Wed, 2 Jul 2014 12:31:39 +0000 (14:31 +0200)]
refactor: use new LVSINFO report type for lv_kernel_{major,minor,read_ahead} field

10 years agoreporter: add separate LVSINFO report type
Peter Rajnoha [Wed, 2 Jul 2014 07:45:53 +0000 (09:45 +0200)]
reporter: add separate LVSINFO report type

LVSINFO is exactly the same as existing LVS report type,
but it has the "struct lvinfo" populated in addition for
use - this is useful for fields that display the status
of the LV device itself (e.g. suspended state, tables
present/missing...).

Currently, such properties are reported within the "lv_attr"
field so separation is unnecessary - the "lvinfo" call
to populate the "struct lvinfo" is directly a part of the
field reporting function - _lvstatus_disp/lv_attr_dup.

With upcoming patches, we'd like the lv_attr field bits
to be separated into their own fields. To avoid calling
"lvinfo" fn as many times as there are fields requiring
the "lv_info" structure to be populated while reporting
one row related to one LV, we're separating former LVS
into LVS and LVSINFO report type. With this, there's
just one "lvinfo" call for one report row and LV reporting
fields will take the info needed from this struct then,
hence reusing it and not calling "lvinfo" fn on their own.

10 years agolv_manip: add get_lv_type_name/lv_is_linear and lv_is_striped helper fns
Peter Rajnoha [Tue, 1 Jul 2014 08:37:01 +0000 (10:37 +0200)]
lv_manip: add get_lv_type_name/lv_is_linear and lv_is_striped helper fns

The get_lv_type_name helps with translating volume type
to human readable form (can be used in reports or
various messages if needed).

The lv_is_linear and lv_is_striped complete the set of
lv_is_* functions that identify exact volume types.

10 years agorefactor: remove static modifier for lv_raid_image_in_sync and lv_raid_healthy fn
Peter Rajnoha [Tue, 1 Jul 2014 07:56:03 +0000 (09:56 +0200)]
refactor: remove static modifier for lv_raid_image_in_sync and lv_raid_healthy fn

...to make use of it in other parts of the code.

10 years agocleanup: just safely copy string
Zdenek Kabelac [Thu, 3 Jul 2014 19:31:15 +0000 (21:31 +0200)]
cleanup: just safely copy string

Keep analyzers happier and use constrained strcpy.

10 years agocleanup: drop unneeded initialization
Zdenek Kabelac [Thu, 3 Jul 2014 19:30:27 +0000 (21:30 +0200)]
cleanup: drop unneeded initialization

Code assigns this variable right after clearing.

10 years agodev-type: print aborting log_error
Zdenek Kabelac [Thu, 3 Jul 2014 10:15:19 +0000 (12:15 +0200)]
dev-type: print aborting log_error

When wiping is aborted print immediate log_error message
(log_error comes 1st.)

10 years agodev-type: print log_sys_debug
Zdenek Kabelac [Thu, 3 Jul 2014 10:03:16 +0000 (12:03 +0200)]
dev-type: print log_sys_debug

For non-fatal error use log_sys_debug as the tool
is not stopping on these errors.

10 years agovgsplit: Improve message when LV still active.
Alasdair G Kergon [Fri, 4 Jul 2014 00:13:51 +0000 (01:13 +0100)]
vgsplit: Improve message when LV still active.

Mention parent LV as well as the LV triggering the warning.

Still leaves some confusing cases but its not worth fixing them
at the moment.
(Thin pool inactive but a thin volume active => deactivate thin vol.
Inactive mirror/raid with pvmove in progress => complete pvmove and
active&deactivate mirror/raid.
If new VG already exists it requires some LVs to be inactive
unnecessarily.)

10 years agoreport: Add lv_parent field.
Alasdair G Kergon [Thu, 3 Jul 2014 22:49:34 +0000 (23:49 +0100)]
report: Add lv_parent field.

Only defined for thin/cache/raid/mirror at this stage as it
relies on get_only_segment_using_this_lv().

10 years agovgsplit: Fix VG component of lvid.
Alasdair G Kergon [Thu, 3 Jul 2014 18:06:04 +0000 (19:06 +0100)]
vgsplit: Fix VG component of lvid.

Fix VG component of lvid in vgsplit and vgmerge
Update vg_validate() to detect the error.
Call lv_is_active() before moving LV into new VG, not after.

10 years agoreport: Add lv_dm_path and lv_full_name fields.
Alasdair G Kergon [Wed, 2 Jul 2014 16:24:05 +0000 (17:24 +0100)]
report: Add lv_dm_path and lv_full_name fields.

10 years agoreport: Exclude hidden devices from lv_path field.
Alasdair G Kergon [Wed, 2 Jul 2014 13:57:00 +0000 (14:57 +0100)]
report: Exclude hidden devices from lv_path field.

10 years agotests: ensure data hits cow
Zdenek Kabelac [Wed, 2 Jul 2014 13:02:56 +0000 (15:02 +0200)]
tests: ensure data hits cow

10 years agocleanup: drop inline and add prefix _ for static
Zdenek Kabelac [Wed, 2 Jul 2014 13:09:06 +0000 (15:09 +0200)]
cleanup: drop inline and add prefix _ for static

Leave inline decision on compiler.
Add '_'prefix for static functions.

10 years agotests: replace cat with $(<
Zdenek Kabelac [Mon, 30 Jun 2014 19:00:08 +0000 (21:00 +0200)]
tests: replace cat with $(<

Use shell built-in $(<
Print lvm.conf in use for test.

10 years agotests: avoid hiding results in local
Zdenek Kabelac [Mon, 30 Jun 2014 18:04:24 +0000 (20:04 +0200)]
tests: avoid hiding results in local

There is a difference between:

local a=$(shell)

and

local a
a=$(shell)

The first return exit code from shells' local command.

10 years agocleanup: add braces for if()
Zdenek Kabelac [Wed, 2 Jul 2014 08:28:39 +0000 (10:28 +0200)]
cleanup: add braces for if()

10 years agocleanup: use unsigned type for command
Zdenek Kabelac [Wed, 2 Jul 2014 08:27:13 +0000 (10:27 +0200)]
cleanup: use unsigned type for command

Keep command unsigned (as _IOWR() produces them).

10 years agocleanup: a bit better error message
Zdenek Kabelac [Wed, 2 Jul 2014 07:50:04 +0000 (09:50 +0200)]
cleanup: a bit better error message

10 years agocleanup: verbose in human readable size
Zdenek Kabelac [Tue, 1 Jul 2014 09:03:31 +0000 (11:03 +0200)]
cleanup: verbose in human readable size

Use normal size like we use everywhere else.

10 years agocleanup: line indent
Zdenek Kabelac [Tue, 1 Jul 2014 08:17:41 +0000 (10:17 +0200)]
cleanup: line indent

10 years agocleanup: libdm simplier error comparation
Zdenek Kabelac [Tue, 1 Jul 2014 22:00:31 +0000 (00:00 +0200)]
cleanup: libdm simplier error comparation

When testing return value from snprintf
use simplier form '>=' instead of  '+1 >'.

10 years agodisplay: add display_lvname
Zdenek Kabelac [Tue, 1 Jul 2014 22:01:46 +0000 (00:01 +0200)]
display: add display_lvname

Add simple function to print vg/lv name.
Useful i.e. in error messages.

10 years agofsadm: avoid using -a in test
Zdenek Kabelac [Mon, 30 Jun 2014 18:03:05 +0000 (20:03 +0200)]
fsadm: avoid using -a in test

10 years agopool: delay conversion prompt
Zdenek Kabelac [Tue, 1 Jul 2014 09:06:36 +0000 (11:06 +0200)]
pool: delay conversion prompt

First validate as much params as possible before prompting user
about conversion to data and metadata LV.

10 years agothin: fix chunk_size conversion prompt skip
Zdenek Kabelac [Tue, 1 Jul 2014 09:04:14 +0000 (11:04 +0200)]
thin: fix chunk_size conversion prompt skip

Use --force only enables prompting for dangerous operation.
User has to add --yes to skip this prompt.

10 years agolvremove: remove thin volumes on damaged pools
Zdenek Kabelac [Tue, 1 Jul 2014 22:13:32 +0000 (00:13 +0200)]
lvremove: remove thin volumes on damaged pools

Support remove of thin volumes With --force --force
when thin pools is damaged.

This way it's possible to remove thin pool with
unrepairable metadata without requiring to
manually edit lvm2 metadata.

lvremove -ff vg/pool

removes all thin volumes and pool even when
thin pool cannot be activated (to accept
removal of thin volumes in kernel metadata)

10 years agoraid: don't skip prompt with force
Zdenek Kabelac [Tue, 1 Jul 2014 07:55:04 +0000 (09:55 +0200)]
raid: don't skip prompt with force

Yes is meant to be used to skip all new prompts.
(--force just adds more prompts).

10 years agoraid: switch to log_warn
Zdenek Kabelac [Tue, 1 Jul 2014 07:53:58 +0000 (09:53 +0200)]
raid: switch to log_warn

Use log_warn for warning message.
log_error is printed when command returns error code.

10 years agomirror: mirror_or_raid_type_requested update
Zdenek Kabelac [Tue, 1 Jul 2014 08:13:10 +0000 (10:13 +0200)]
mirror: mirror_or_raid_type_requested update

mirror_or_raid_type_requested really checks for mirror type.

Convert macros mirror_or_raid_type_requested() and
snapshot_type_requested() into inline functions.

10 years agomake: Fix pofile and .d file generation.
Alasdair G Kergon [Tue, 1 Jul 2014 23:48:50 +0000 (00:48 +0100)]
make: Fix pofile and .d file generation.

Use builddir not srcdir with make pofile.

Append 'incfile:' lines to %.d files to handle newly-missing dependencies
without 'make clean' after a file is moved or deleted.

10 years agouuid: revert uuids for mirrors and raids
Zdenek Kabelac [Mon, 30 Jun 2014 12:04:25 +0000 (14:04 +0200)]
uuid: revert uuids for mirrors and raids

Using suffixes for mirrors and raids will need more work,
before this could be enabled.

Meanwhile revert to previous behavior.

Keep suffixes for thins and caches.

10 years agocleanup: ignore vg_name in /lib
Zdenek Kabelac [Mon, 30 Jun 2014 10:02:05 +0000 (12:02 +0200)]
cleanup: ignore vg_name in /lib

Since  vg_name inside /lib function has already been ignored mostly
except for a few debug prints - make it and official internal API
feature.

vg_name is used only in  /tools while the VG is not yet openned,
and when  lvresize/lvcreate /lib function is called with VG pointer
already being used, then vg_name becomes irrelevant (it's not been
validated anyway).

So any internal user of lvcreate_params and lvresize_params does not
need to set vg_name pointer and may leave it NULL.

10 years agouuid: add more private uuid sufixes
Zdenek Kabelac [Thu, 26 Jun 2014 22:03:31 +0000 (00:03 +0200)]
uuid: add more private uuid sufixes

Use suffixes for easier detection of private volumes.

This commit makes older volume UUIDs incompatible and
it most probably needs machine reboot after upgrade.

10 years agocleanup: more lv_is_ functions
Zdenek Kabelac [Thu, 26 Jun 2014 22:02:58 +0000 (00:02 +0200)]
cleanup: more lv_is_ functions

10 years agothin: do not create reserved LVs
Zdenek Kabelac [Mon, 30 Jun 2014 09:33:23 +0000 (11:33 +0200)]
thin: do not create reserved LVs

When creating pool's metadata - create initial LV for clearing with some
generic name and after the volume is create & cleared - rename it to
reserved name '_tmeta/_cmeta'.

We should not expose  'reserved' names for public LVs.

10 years agothin: repaired LV uses _meta%d
Zdenek Kabelac [Mon, 30 Jun 2014 09:01:04 +0000 (11:01 +0200)]
thin: repaired LV uses _meta%d

Don't leave 'regular' LV with reserved suffix for a user.
After succefull repair use 'normal' (non-reserved) LV name
for backup of original metadata.

10 years agoactivation: fix typo in 'activation skip' message
Peter Rajnoha [Mon, 30 Jun 2014 09:02:45 +0000 (11:02 +0200)]
activation: fix typo in 'activation skip' message

10 years agolibdm: fix double const for "value" in dm_report_reserved_value structure
Peter Rajnoha [Mon, 30 Jun 2014 07:44:23 +0000 (09:44 +0200)]
libdm: fix double const for "value" in dm_report_reserved_value structure

C++ may have

10 years agoman: do not mention '(i)nherited' for alloc policy in vg_attr field
Peter Rajnoha [Thu, 26 Jun 2014 13:14:54 +0000 (15:14 +0200)]
man: do not mention '(i)nherited' for alloc policy in vg_attr field

VG has nothing to inherit from...

10 years agoraid: Allow repair to reuse PVs from same image that suffered a PV failure
Jonathan Brassow [Thu, 26 Jun 2014 03:26:06 +0000 (22:26 -0500)]
raid: Allow repair to reuse PVs from same image that suffered a PV failure

When repairing RAID LVs that have multiple PVs per image, allow
replacement images to be reallocated from the PVs that have not
failed in the image if there is sufficient space.

This allows for scenarios where a 2-way RAID1 is spread across 4 PVs,
where each image lives on two PVs but doesn't use the entire space
on any of them.  If one PV fails and there is sufficient space on the
remaining PV in the image, the image can be reallocated on just the
remaining PV.

10 years agomisc: after releasing a PV segment, merge it with any adjacent free space
Jonathan Brassow [Thu, 26 Jun 2014 03:04:58 +0000 (22:04 -0500)]
misc: after releasing a PV segment, merge it with any adjacent free space

Previously, the seg_pvs used to track free and allocated space where left
in place after 'release_pv_segment' was called to free space from an LV.
Now, an attempt is made to combine any adjacent seg_pvs that also track
free space.  Usually, this doesn't provide much benefit, but in a case
where one command might free some space and then do an allocation, it
can make a difference.  One such case is during a repair of a RAID LV,
where one PV of a multi-PV image fails.  This new behavior is used when
the replacement image can be allocated from the remaining space of the
PV that did not fail.  (First the entire image with the failed PV is
removed.  Then the image is reallocated from the remaining PVs.)

10 years agoraid/misc: Allow creation of parallel areas by LV vs segment
Jonathan Brassow [Thu, 26 Jun 2014 02:20:41 +0000 (21:20 -0500)]
raid/misc: Allow creation of parallel areas by LV vs segment

I've changed build_parallel_areas_from_lv to take a new parameter
that allows the caller to build parallel areas by LV vs by segment.
Previously, the function created a list of parallel areas for each
segment in the given LV.  When it came time for allocation, the
parallel areas were honored on a segment basis.  This was problematic
for RAID because any new RAID image must avoid being placed on any
PVs used by other images in the RAID.  For example, if we have a
linear LV that has half its space on one PV and half on another, we
do not want an up-convert to use either of those PVs.  It should
especially not wind up with the following, where the first portion
of one LV is paired up with the second portion of the other:
------PV1-------  ------PV2-------
[ 2of2 image_1 ]  [ 1of2 image_1 ]
[ 1of2 image_0 ]  [ 2of2 image_0 ]
----------------  ----------------
Previously, it was possible for this to happen.  The change makes
it so that the returned parallel areas list contains one "super"
segment (seg_pvs) with a list of all the PVs from every actual
segment in the given LV and covering the entire logical extent range.

This change allows RAID conversions to function properly when there
are existing images that contain multiple segments that span more
than one PV.

10 years agotest: Test addition to show incorrect allocator behavior
Jonathan Brassow [Sat, 21 Jun 2014 20:33:52 +0000 (15:33 -0500)]
test:  Test addition to show incorrect allocator behavior

If a RAID LV has images that are spread across more than one PV
and you allocate a new image that requires more than one PV,
parallel_areas is only honored for one segment.  This commit
adds a test for this condition.

10 years agofilters: always reevaluate filter before creating a PV
Peter Rajnoha [Wed, 25 Jun 2014 14:19:27 +0000 (16:19 +0200)]
filters: always reevaluate filter before creating a PV

...to avoid using cached value (persistent filter) and therefore
not noticing any change made after last scan/filtering - the state
of the device may have changed, for example new signatures added.

$ lvm dumpconfig --type diff
allocation {
use_blkid_wiping=0
}
devices {
obtain_device_list_from_udev=0
}

$ cat /etc/lvm/cache/.cache | grep sda

$ vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "fedora" using metadata type lvm2

$ cat /etc/lvm/cache/.cache | grep sda
"/dev/sda",

$ parted /dev/sda mklabel gpt
Information: You may need to update /etc/fstab.

$ parted /dev/sda print
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sda: 134MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start  End  Size  File system  Name  Flags

$ cat /etc/lvm/cache/.cache | grep sda
"/dev/sda",

====

Before this patch:
$ pvcreate /dev/sda
  Physical volume "/dev/sda" successfully created

With this patch applied:
$ pvcreate /dev/sda
  Physical volume /dev/sda not found
  Device /dev/sda not found (or ignored by filtering).

10 years agocoverity: mark new switch cases with 'fall through' comment for coverity to stop...
Peter Rajnoha [Wed, 25 Jun 2014 06:51:37 +0000 (08:51 +0200)]
coverity: mark new switch cases with 'fall through' comment for coverity to stop complaining

10 years agocoverity: fix issues reported by coverity
Peter Rajnoha [Tue, 24 Jun 2014 12:58:53 +0000 (14:58 +0200)]
coverity: fix issues reported by coverity

10 years agopost-release
Alasdair G Kergon [Mon, 23 Jun 2014 14:23:09 +0000 (15:23 +0100)]
post-release

10 years agopre-release v2_02_107
Alasdair G Kergon [Mon, 23 Jun 2014 13:16:39 +0000 (14:16 +0100)]
pre-release

10 years agopre-release
Alasdair G Kergon [Mon, 23 Jun 2014 13:03:32 +0000 (14:03 +0100)]
pre-release

10 years agoman: More /dev/vg and /dev/mapper documentation.
Alasdair G Kergon [Mon, 23 Jun 2014 13:01:31 +0000 (14:01 +0100)]
man: More /dev/vg and /dev/mapper documentation.

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