]> sourceware.org Git - lvm2.git/log
lvm2.git
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.

10 years agoselect: add message about 'help' field to get more help on each error hit during...
Peter Rajnoha [Mon, 23 Jun 2014 10:12:01 +0000 (12:12 +0200)]
select: add message about 'help' field to get more help on each error hit during selection parsing

Inform about 'help' to get more help about selection fields and operators
after each syntax error hit:

  "Use 'help' for selection to get more help."

10 years agoselect: also mark uncomparable/unselectable fields in field/selection help
Peter Rajnoha [Mon, 23 Jun 2014 08:46:45 +0000 (10:46 +0200)]
select: also mark uncomparable/unselectable fields in field/selection help

10 years agoselect: add FLD_UNCOMPARABLE flag for fields which can't be compared
Peter Rajnoha [Mon, 23 Jun 2014 07:57:46 +0000 (09:57 +0200)]
select: add FLD_UNCOMPARABLE flag for fields which can't be compared

A field where it has no meaning to do any type of comparison is the
implicit "help" or "?" field. The error given was a bit cryptic
before this patch, the FLD_UNCOMPARABLE flag makes it easier to identify
this situation anywhere in the code and provide much better error message.
This flag can be applied to other fields that may appear in the future -
mostly usable for implicit fields as they always have special purpose
(so we're not exporting it in libdevmapper for now - usual reporting
fields don't need this).

Before this patch:

$ vgs -S help=1
  dm_report_object: no data assigned to field help
  dm_report_object: no data assigned to field help

(...which is true actually, but let's provide something better...)

With this patch applied:

$vgs -S help=1
  Selection field is uncomparable: help.
  Selection syntax error at 'help=1'.

$vgs -S '(name=vg && help=1) || vg_size > 1g'
  Selection field is uncomparable: help.
  Selection syntax error at 'help=1) || vg_size > 1g'.

10 years agolocking: fix cluster locking
Alasdair G Kergon [Fri, 20 Jun 2014 15:38:48 +0000 (16:38 +0100)]
locking: fix cluster locking

Hunk missed from last commit 78533f72d30f6e840f66e0aae89126ef139c1f2c.

10 years agolocking: Introduce LCK_ACTIVATION.
Alasdair G Kergon [Fri, 20 Jun 2014 12:24:02 +0000 (13:24 +0100)]
locking: Introduce LCK_ACTIVATION.

Take a local file lock to prevent concurrent activation/deactivation of LVs.
Thin/cache types and an extension for cluster support are excluded for
now.

'lvchange -ay $lv' and 'lvchange -an $lv' should no longer cause trouble
if issued concurrently: the new lock should make sure they
activate/deactivate $lv one-after-the-other, instead of overlapping.

(If anyone wants to experiment with the cluster patch, please get in touch.)

10 years agopvvmove: add a few comments
Alasdair G Kergon [Fri, 20 Jun 2014 10:41:20 +0000 (11:41 +0100)]
pvvmove: add a few comments

10 years agolv: fix lv_is_raid
Zdenek Kabelac [Fri, 20 Jun 2014 09:37:45 +0000 (11:37 +0200)]
lv: fix lv_is_raid

10 years agotests: add udev sync point
Zdenek Kabelac [Fri, 20 Jun 2014 09:11:39 +0000 (11:11 +0200)]
tests: add udev sync point

Missed synchronization with udev may lead to error on vgcreate,
if previous vgremove was not handled fast enough by udev.

10 years agocleanup: use simplier test
Zdenek Kabelac [Thu, 19 Jun 2014 19:08:05 +0000 (21:08 +0200)]
cleanup: use simplier test

Just like all other tests - use direct LV function test

10 years agomemlock: skip more entries
Zdenek Kabelac [Fri, 20 Jun 2014 09:10:42 +0000 (11:10 +0200)]
memlock: skip more entries

Add more entries for memlock skipping - since those are never
used by lvm code in critical section (suspend state).

10 years agodmsetup: no need to check for "help" field name after report init
Peter Rajnoha [Thu, 19 Jun 2014 16:20:30 +0000 (18:20 +0200)]
dmsetup: no need to check for "help" field name after report init

The "help" field (as well as "?") is implicit now - libdevmapper
takes care of it completely.

10 years agopvmove: Fix code that looks up the "move pv" for display
Jonathan Brassow [Thu, 19 Jun 2014 15:57:08 +0000 (10:57 -0500)]
pvmove: Fix code that looks up the "move pv" for display

'lvs' would segfault if trying to display the "move pv" if the
pvmove was run with '--atomic'.  The structure of an atomic pvmove
is different and requires us to descend another level in the
LV tree to retrieve the PV information.

10 years agopvmove: Clean-up iterator.
Jonathan Brassow [Thu, 19 Jun 2014 15:52:09 +0000 (10:52 -0500)]
pvmove: Clean-up iterator.

In 'find_pvmove_lv', separate the code that searches the atomic
pvmove LVs from the code that searches the normal pvmove LVs.  This
cleans up the segment iterator code a bit.

10 years agoreport: display explicit fields first, then implicit fields in field help
Peter Rajnoha [Thu, 19 Jun 2014 13:54:22 +0000 (15:54 +0200)]
report: display explicit fields first, then implicit fields in field help

It's better to have implicit fields at the very end of the output
so users can see them without scrolling back if the list of fields
is long (the "help" is also an implicit field now so it should be
easily visible).

10 years agolibdevmapper: revoke commit 7c86131233011c9fb81190bcb40d5d4ac54a533d
Peter Rajnoha [Thu, 19 Jun 2014 13:47:24 +0000 (15:47 +0200)]
libdevmapper: revoke commit 7c86131233011c9fb81190bcb40d5d4ac54a533d

We have "help" and "?" defined as implicit fields now. As such, we
don't need to export these names in libdevmapper (as it was introduced
by commit 7c86131233011c9fb81190bcb40d5d4ac54a533d within this release).
If anyone uses these field names by mistake, the libdevmapper code can
error out correctly if it detects that the set of explicit field names
(the ones supplied by "fields" arg in dm_report_init/dm_report_init_with_selection)
contains any of the implicit field names (the ones defined internally
by libdevmapper itself).

10 years agoreport: make "help" and "?" field implicit
Peter Rajnoha [Thu, 19 Jun 2014 13:33:16 +0000 (15:33 +0200)]
report: make "help" and "?" field implicit

Making "help" and "?" implicit also simplifies code since the
dm_report_init caller (lvm/dmsetup) doesn't need to check on
dm_report_init return whether "help" or "?" was hit while parsing
fields/sort keys in libdevmapper.

The libdevmapper now sets internal "RH_ALREADY_REPORTED" flag
after it reports the "help" or "?" implicit field. Then libdevmapper
itself checks for this flag in dm_report_object and if found,
the actual reporting is skipped (because the "help" implicit field
was reported instead of the actual report).

10 years agoselect: add list of allowed types for each selection operator mentioned in help
Peter Rajnoha [Thu, 19 Jun 2014 13:19:54 +0000 (15:19 +0200)]
select: add list of allowed types for each selection operator mentioned in help

10 years agopvmove: tidy
Alasdair G Kergon [Thu, 19 Jun 2014 12:40:47 +0000 (13:40 +0100)]
pvmove: tidy

10 years agotests: remove dmeventd usage
Zdenek Kabelac [Thu, 19 Jun 2014 10:48:21 +0000 (12:48 +0200)]
tests: remove dmeventd usage

This test is testing --use-policies on cmdline.
So monitoring must not be used.

10 years agocleanup: rename variable wait
Zdenek Kabelac [Thu, 19 Jun 2014 09:33:11 +0000 (11:33 +0200)]
cleanup: rename variable wait

With older system headers (sys/wait.h) this shadows declaration.

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