]> sourceware.org Git - lvm2.git/log
lvm2.git
9 years agospec: Update to use enable_lockd_*
Marian Csontos [Tue, 7 Jul 2015 12:54:57 +0000 (14:54 +0200)]
spec: Update to use enable_lockd_*

9 years agopost-release
Alasdair G Kergon [Tue, 7 Jul 2015 12:57:13 +0000 (13:57 +0100)]
post-release

9 years agopre-release v2_02_125
Alasdair G Kergon [Tue, 7 Jul 2015 12:54:37 +0000 (13:54 +0100)]
pre-release

9 years agolvmpolld: fix possible memory corruption with mem debug
Ondrej Kozina [Tue, 7 Jul 2015 12:03:15 +0000 (14:03 +0200)]
lvmpolld: fix possible memory corruption with mem debug

if lvm2 is built with debug memory options dm_free() is not
mapped directly to std library's free(). This may cause memory corruption
as a line buffer may get reallocated in getline with realloc.

This is a temporary hotfix. Other debug memory failure needs to
be investigated and explained.

9 years agoconf: regenerate
Peter Rajnoha [Tue, 7 Jul 2015 12:27:00 +0000 (14:27 +0200)]
conf: regenerate

9 years agoWHATS_NEW: Update. Fix renamed config setting vsn.
Alasdair G Kergon [Tue, 7 Jul 2015 12:20:01 +0000 (13:20 +0100)]
WHATS_NEW: Update. Fix renamed config setting vsn.

9 years agoconf: regenerate
Peter Rajnoha [Tue, 7 Jul 2015 12:11:16 +0000 (14:11 +0200)]
conf: regenerate

9 years agotests: use old snapshot for huge volumes
Zdenek Kabelac [Sat, 4 Jul 2015 09:41:04 +0000 (11:41 +0200)]
tests: use old snapshot for huge volumes

Avoid stacking thins over thins.

9 years agocache: support clear-needs-check
Zdenek Kabelac [Tue, 7 Jul 2015 07:51:40 +0000 (09:51 +0200)]
cache: support clear-needs-check

Support newer cache tool which support new option
--clear-needs-check-flag.

Code does same as for thin_check.

9 years agolvmetactl: program to interact with lvmetad
David Teigland [Tue, 21 Oct 2014 14:42:20 +0000 (09:42 -0500)]
lvmetactl: program to interact with lvmetad

This is not installed; it's only a developer utility
at this point.

9 years agoman lvmlockd: minor updates
David Teigland [Mon, 6 Jul 2015 20:32:41 +0000 (15:32 -0500)]
man lvmlockd: minor updates

9 years agoconfigure: Separate sanlock and dlm lock config.
Alasdair G Kergon [Mon, 6 Jul 2015 17:20:20 +0000 (18:20 +0100)]
configure: Separate sanlock and dlm lock config.

9 years agoconfig: remove read_only_lock_modes
David Teigland [Mon, 6 Jul 2015 16:42:52 +0000 (11:42 -0500)]
config: remove read_only_lock_modes

It had been added as part of lvmlockd code, but it does
not seem particularly useful.

9 years agolockd: remove unused code for overriding lock modes
David Teigland [Mon, 6 Jul 2015 16:31:21 +0000 (11:31 -0500)]
lockd: remove unused code for overriding lock modes

including the allow_override_lock_modes setting.

It was not possible to override default lock modes any longer,
since the command line options had already been removed.

A mechanism will probably be required later that puts part of
this back.

9 years agoconfig: rename lock_retries lvmlockd_lock_retries
David Teigland [Mon, 6 Jul 2015 16:19:17 +0000 (11:19 -0500)]
config: rename lock_retries lvmlockd_lock_retries

Because it only applies to lvmlockd requests, but
sounded too general.

9 years agoinclude: Standardise around new tool.h.
Alasdair G Kergon [Mon, 6 Jul 2015 16:30:18 +0000 (17:30 +0100)]
include: Standardise around new tool.h.

9 years agoconfigure: enable building lvmlockd without sanlock or dlm
David Teigland [Mon, 6 Jul 2015 15:42:11 +0000 (10:42 -0500)]
configure: enable building lvmlockd without sanlock or dlm

9 years agoclean-up: typos s/bellow/below/
Jonathan Brassow [Mon, 6 Jul 2015 15:15:11 +0000 (10:15 -0500)]
clean-up: typos s/bellow/below/

9 years agomacros: Wrap PRI with FMT.
Alasdair G Kergon [Mon, 6 Jul 2015 14:09:17 +0000 (15:09 +0100)]
macros: Wrap PRI with FMT.

Create a set of wrappers with embedded % such as
  #define FMTu64 "%" PRIu64

9 years agolockd: Clean up spec
Marian Csontos [Fri, 3 Jul 2015 07:46:49 +0000 (09:46 +0200)]
lockd: Clean up spec

9 years agoBuild lockd only for Fedora >= 22 and RHEL >= 7
Marian Csontos [Fri, 26 Jun 2015 17:03:56 +0000 (19:03 +0200)]
Build lockd only for Fedora >= 22 and RHEL >= 7

9 years agopost-release
Alasdair G Kergon [Fri, 3 Jul 2015 15:58:24 +0000 (16:58 +0100)]
post-release

9 years agopre-release v2_02_124
Alasdair G Kergon [Fri, 3 Jul 2015 15:34:40 +0000 (16:34 +0100)]
pre-release

9 years agotests: update for new thin pool messaging
Zdenek Kabelac [Wed, 1 Jul 2015 11:31:23 +0000 (13:31 +0200)]
tests: update for new thin pool messaging

9 years agothin: move pool messaging from resume to suspend
Zdenek Kabelac [Wed, 1 Jul 2015 11:31:37 +0000 (13:31 +0200)]
thin: move pool messaging from resume to suspend

Existing messaging intarface for thin-pool has a few 'weak' points:

* Message were posted with each 'resume' operation, thus not allowing
activation of thin-pool with the existing state.

* Acceleration skipped suspend step has not worked in cluster,
since clvmd resumes only nodes which are suspended (have proper lock
state).

* Resume may fail and code is not really designed to 'fail' in this
phase (generic rule here is resume DOES NOT fail unless something serious
is wrong and lvm2 tool usually doesn't handle recovery path in this case.)

* Full thin-pool suspend happened, when taken a thin-volume snapshot.

With this patch the new method relocates message passing into suspend
state.

This has a few drawbacks with current API, but overal it performs
better and gives are more posibilities to deal with errors.

Patch introduces a new logic for 'origin-only' suspend of thin-pool and
this also relates to thin-volume when taking snapshot.

When suspend_origin_only operation is invoked on a pool with
queued messages then only those messages are posted to thin-pool and
actual suspend of thin pool and data and metadata volume is skipped.

This makes taking a snapshot of thin-volume lighter operation and
avoids blocking of other unrelated active thin volumes.

Also fail now happens in 'suspend' state where the 'Fail' is more expected
and it is better handled through error paths.

Activation of thin-pool is now not sending any message and leaves upto a tool
to decided later how to finish unfinished double-commit transaction.

Problem which needs some API improvements relates to the lvm2 tree
construction. For the suspend tree we do not add target table line
into the tree, but only a device is inserted into a tree.
Current mechanism to attach messages for thin-pool requires the libdm
to know about thin-pool target, so lvm2 currently takes assumption, node
is really a thin-pool and fills in the table line for this node (which
should be ensured by the PRELOAD phase, but it's a misuse of internal API)
we would possibly need to be able to attach message to 'any' node.

Other thing to notice - current messaging interface in thin-pool
target requires to suspend thin volume origin first and then send
a create message, but this could not have any 'nice' solution on lvm2
side and IMHO we should introduce something like 'create_after_resume'
message.

Patch also changes the moment, where lvm2 transaction id is increased.
Now it happens only after successful finish of kernel transaction id
change. This change was needed to handle properly activation of pool,
which is in the middle of unfinished transaction, and also this corrects
usage of thin-pool by external apps like Docker.

9 years agolibdm: support for posting messages in suspend
Zdenek Kabelac [Wed, 1 Jul 2015 11:30:14 +0000 (13:30 +0200)]
libdm: support for posting messages in suspend

Add support for sending message in suspend tree for thin-pools.
When this operation is requested whole subtree suspend is then skipped.

This is experimantal support for new lvm2 code for sending message
in suspend phase where 'thin-pool origin-only suspend' will send
messages instead of really suspending thin-pool tree.

When suspening thin volume origin-only - only thin volume is suspended,
then messages are posted and thin-pool suspend is skipped.

9 years agothin: check for overprovisioning
Zdenek Kabelac [Fri, 3 Jul 2015 13:31:31 +0000 (15:31 +0200)]
thin: check for overprovisioning

9 years agoreport: select: add handler to recognize fuzzy time specification
Peter Rajnoha [Fri, 3 Jul 2015 08:43:07 +0000 (10:43 +0200)]
report: select: add handler to recognize fuzzy time specification

Recognize date and time specification within selection criteria
that is formulated in a more free-form way besides to the original
basic YYYY-MM-DD HH:MM format that libdevmapper supports.

Currently, this free-form format is recognized for lv_time field.

Users are able to use expressions from this set:
  - weekday names ("Sunday" - "Saturday" or abbreviated as "Sun" - "Sat")
  - labels for points in time ("noon", "midnight")
  - labels for a day relative to current day ("today", "yesterday")
  - points back in time with relative offset from today (N is a number)
    ( "N" "seconds"/"minutes"/"hours"/"days"/"weeks"/"years" "ago")
    ( "N" "secs"/"mins"/"hrs" ... "ago")
    ( "N" "s"/"m"/"h" ... "ago")
  - time specification either in hh:mm:ss format or with AM/PM suffixes
  - month names ("January" - "December" or abbreviated as "Jan" - "Dec")

For example:

$ date
Fri Jul  3 10:11:13 CEST 2015

$ lvmconfig --type full report/time_format
time_format="%a %Y-%m-%d %T %z %Z [%s]"

$ lvs
  LV    VG     Time
  lvol0 vg     Fri 2014-08-22 21:25:41 +0200 CEST [1408735541]
  lvol2 vg     Sun 2015-04-26 14:52:20 +0200 CEST [1430052740]
  root  fedora Wed 2015-05-27 08:09:21 +0200 CEST [1432706961]
  swap  fedora Wed 2015-05-27 08:09:21 +0200 CEST [1432706961]
  lvol1 vg     Tue 2015-06-30 03:25:43 +0200 CEST [1435627543]
  lvol3 vg     Tue 2015-06-30 14:52:23 +0200 CEST [1435668743]
  lvol6 vg     Wed 2015-07-01 13:35:56 +0200 CEST [1435750556]
  lvol4 vg     Thu 2015-07-02 12:12:02 +0200 CEST [1435831922]
  lvol5 vg     Thu 2015-07-02 14:30:32 +0200 CEST [1435840232]

$ lvs -S 'time=yesterday'
  LV    VG   Time
  lvol4 vg   Thu 2015-07-02 12:12:02 +0200 CEST [1435831922]
  lvol5 vg   Thu 2015-07-02 14:30:32 +0200 CEST [1435840232]

$ lvs -S 'time since "June 30"'
  LV    VG   Time
  lvol1 vg   Tue 2015-06-30 03:25:43 +0200 CEST [1435627543]
  lvol3 vg   Tue 2015-06-30 14:52:23 +0200 CEST [1435668743]
  lvol6 vg   Wed 2015-07-01 13:35:56 +0200 CEST [1435750556]
  lvol4 vg   Thu 2015-07-02 12:12:02 +0200 CEST [1435831922]
  lvol5 vg   Thu 2015-07-02 14:30:32 +0200 CEST [1435840232]

$ lvs -S 'time since "noon June 30"'
  LV    VG   Time
  lvol3 vg   Tue 2015-06-30 14:52:23 +0200 CEST [1435668743]
  lvol6 vg   Wed 2015-07-01 13:35:56 +0200 CEST [1435750556]
  lvol4 vg   Thu 2015-07-02 12:12:02 +0200 CEST [1435831922]
  lvol5 vg   Thu 2015-07-02 14:30:32 +0200 CEST [1435840232]

$ lvs -S 'time since "2 July 9AM"'
  LV    VG   Time
  lvol4 vg   Thu 2015-07-02 12:12:02 +0200 CEST [1435831922]
  lvol5 vg   Thu 2015-07-02 14:30:32 +0200 CEST [1435840232]

$ lvs -S 'time since "2 July 1PM"'
  LV    VG   Time
  lvol5 vg   Thu 2015-07-02 14:30:32 +0200 CEST [1435840232]

...and so on.

9 years agoreport: call appropriate handler to evaluate fuzzy reserved names and dynamic reserve...
Peter Rajnoha [Wed, 20 May 2015 16:47:54 +0000 (18:47 +0200)]
report: call appropriate handler to evaluate fuzzy reserved names and dynamic reserved values

Wire the dm_report_reserved_handler instance call in reporting/selection
infrastructure to handle reserved value actions (currently only
DM_REPORT_RESERVED_PARSE_FUZZY_NAME and DM_REPORT_RESERVED_GET_DYNAMIC_VALUE
actions).

9 years agoreport: add infrastructure to recognize fuzzy reserved names and returning dynamic...
Peter Rajnoha [Tue, 19 May 2015 11:01:48 +0000 (13:01 +0200)]
report: add infrastructure to recognize fuzzy reserved names and returning dynamic reserved values

With fuzzy names we mean the names for which it's hard or even impossible
to enumerate all possible variations of the name - the name needs to
be evaluated. An example of fuzzy name is a name which has a base
(substring) which matches and it can contain arbitrary variations
around this base. We can cover human language better with fuzzy
names as people may use several different names (or sentences) to
denote the same thing.

With dynamic values we mean the values which are not constants
and they need to be evaluated in runtime. An example of dynamic
value is a value which depends on current system state (e.g. time,
current configuration or any other state which may change and it
needs runtime evaluation).

There's a handler that can be registered with reporting/selection
using dm_report_reserved_handler instance. This is a central point
in which the computation/evaluation happens when processing reserved
values. Currently, there are two actions declared:

  DM_REPORT_RESERVED_PARSE_FUZZY_NAME
  (translates fuzzy name into canonical name)

  DM_REPORT_RESERVED_GET_DYNAMIC_VALUE
  (gets value for canonical name)

The handler is then registered as value in struct
dm_report_reserved_value (see explaining comments besided
the struct dm_report_reserved_value in libdevmapper.h).

Also, this patch provides support for simple caching of values
used during report/selection via dm_report_value_cache_{set,get}.
This is supposed to be used mainly in the dm_report_reserved_handler
instances to save values among calls so all the handler calls work
with the same base value used in computation/evaluation and/or
possibly to save resources if the evaluation is more time-consuming.
The cache is attached to the dm_report handle and so the cache is
dropped one dm_report is dropped.

9 years agocleanup: commit fe70b03 turned lv_time to STR, put it back to TIM
Peter Rajnoha [Fri, 3 Jul 2015 07:22:48 +0000 (09:22 +0200)]
cleanup: commit fe70b03 turned lv_time to STR, put it back to TIM

9 years agolockd: fix stub functions for LV locking
David Teigland [Thu, 2 Jul 2015 21:33:51 +0000 (16:33 -0500)]
lockd: fix stub functions for LV locking

The stub functions for lockd LV locking were returning
the wrong result when lvm was compiled without lvmlockd.

9 years agoAdd lvmlockd
David Teigland [Thu, 5 Mar 2015 20:00:44 +0000 (14:00 -0600)]
Add lvmlockd

9 years agoreport: adjust shared flags based on expected type for reserved values
Peter Rajnoha [Thu, 2 Jul 2015 14:05:25 +0000 (16:05 +0200)]
report: adjust shared flags based on expected type for reserved values

Generic numbers and time values share some operators so make sure
we have the flags correctly adjusted based on expected type if
we're using reserved values.

9 years agotests: add test for 454782f (select with synonyms for string field types)
Peter Rajnoha [Thu, 2 Jul 2015 09:46:58 +0000 (11:46 +0200)]
tests: add test for 454782f (select with synonyms for string field types)

9 years agoreport: fix regression while selecting string fields using synonyms
Peter Rajnoha [Thu, 2 Jul 2015 09:31:54 +0000 (11:31 +0200)]
report: fix regression while selecting string fields using synonyms

$ lvs -o name,cache_policy vg/lvol0
  LV    Cache Policy
  lvol0

Before this patch:
$ lvs -o name,cache_policy -S 'cache_policy=undefined' vg/lvol0
  (no match)

With this patch applied:
$ lvs -o name,cache_policy -S 'cache_policy=undefined' vg/lvol0
  LV    Cache Policy
  lvol0

9 years agodisplay: missed to count with 0
Zdenek Kabelac [Wed, 1 Jul 2015 22:04:38 +0000 (00:04 +0200)]
display: missed to count with 0

dm_snprintf() returns upon success the number of characters printed
(excluding the null byte used to end output to strings).

So add extra byte to preserve \0.
This fixes regression when displaying more then a single lv name.

9 years agolibdm: enhance tracing messages
Zdenek Kabelac [Wed, 1 Jul 2015 11:29:32 +0000 (13:29 +0200)]
libdm: enhance tracing messages

Use new _node_name() and print name major:minor for thin-pool device.

9 years agolibdm: add helper function to print _node_name
Zdenek Kabelac [Wed, 1 Jul 2015 07:54:57 +0000 (09:54 +0200)]
libdm: add helper function to print _node_name

_node_name() prepares into dm_tree internal buffer device
name and it (major:minor) for easy usage for debug messages.

To avoid any allocation a small buffer in struct dm_tree is preallocated
to store this message.

9 years agoconfig: report/time_format appeared in v2.02.123
Peter Rajnoha [Wed, 1 Jul 2015 06:19:40 +0000 (08:19 +0200)]
config: report/time_format appeared in v2.02.123

9 years agolocking: Add missing error handling.
Alasdair G Kergon [Tue, 30 Jun 2015 17:54:38 +0000 (18:54 +0100)]
locking: Add missing error handling.

Add missing error logging and detection to unlock_vg and callers
of sync_local_dev_names etc.

9 years agopost-release
Alasdair G Kergon [Tue, 30 Jun 2015 16:12:56 +0000 (17:12 +0100)]
post-release

9 years agopre-release v2_02_123
Alasdair G Kergon [Tue, 30 Jun 2015 16:11:21 +0000 (17:11 +0100)]
pre-release

9 years agoconf: Regenerate.
Alasdair G Kergon [Tue, 30 Jun 2015 16:09:56 +0000 (17:09 +0100)]
conf: Regenerate.

Fix missing --clear-needs-check-flag.

9 years agolibdm: Rename struct time_value variables.
Alasdair G Kergon [Tue, 30 Jun 2015 15:17:22 +0000 (16:17 +0100)]
libdm: Rename struct time_value variables.

warning: declaration of ‘time’ shadows a global declaration

9 years agoreport: add support for time (basic)
Peter Rajnoha [Thu, 21 May 2015 13:19:03 +0000 (15:19 +0200)]
report: add support for time (basic)

This patch adds support for time values used in reporting fields.
The raw values are always stored as number of seconds since epoch.

The support that comes with this patch is the basic one which allows
only for recognition of strictly formatted date and time in selection
criteria (the format follows a subset of formats defined by ISO 8601):

  date time timezone

  date:
    YYYY-MM-DD (or shortly YYYYMMDD)
    YYYY-MM (shortly YYYYMM), auto DD=1
    YYYY, auto MM=01 and DD=01

  time:
    hh:mm:ss (or shortly hhmmss)
    hh:mm (or shortly hhmm), auto ss=0
    hh (or shortly hh), auto mm=0, auto ss=0

  timezone (always with + or - sign):
    +hh:mm or -hh:mm (or shortly +hhmm or -hhmm)
    +hh or -hh

Or directly the time (number of seconds) since Epoch (1970-01-01 00:00:00 UTC)
when the number value is prefixed by "@":

   @number_of_seconds_since_epoch

This patch also adds aliases for comparison operators
used together with time values which are more intuitive
to use:
  since (as alias for >=)
  after (as alias for >)
  until (as alias for <=)
  before (as alias for <)

For example:

$ lvmconfig --type full report/time_format
time_format="%Y-%m-%d %T %z %Z [%s]"

$ lvs -o name,time vg
  LV    Time
  lvol0 2015-06-28 21:25:41 +0200 CEST [1435519541]
  lvol1 2015-06-30 03:25:43 +0200 CEST [1435627543]
  lvol2 2015-04-26 14:52:20 +0200 CEST [1430052740]
  lvol3 2015-06-30 14:52:23 +0200 CEST [1435668743]

$ lvs vg -o name,time -S 'time since "2015-04-26 15:00" && time until "2015-06-30"'
  LV    Time
  lvol0 2015-06-28 21:25:41 +0200 CEST [1435519541]
  lvol1 2015-06-30 03:25:43 +0200 CEST [1435627543]
  lvol3 2015-06-30 14:52:23 +0200 CEST [1435668743]

$ lvs vg -o name,time -S 'time since "2015-04-26 15:00" && time until "2015-06-30 6:00"'
  LV    Time
  lvol0 2015-06-28 21:25:41 +0200 CEST [1435519541]
  lvol1 2015-06-30 03:25:43 +0200 CEST [1435627543]

$ lvs vg -o name,time -S 'time since @1435519541'
  LV    Time
  lvol0 2015-06-28 21:25:41 +0200 CEST [1435519541]
  lvol1 2015-06-30 03:25:43 +0200 CEST [1435627543]
  lvol3 2015-06-30 14:52:23 +0200 CEST [1435668743]

This is basic time recognition support that is directly a part of
libdevmapper. Recognition of more free-form expressions will be a
part of subsequent patches.

9 years agoconfigure: set DEFAULT_FALLBACK_TO_LVM1 in configure and use it in config_settings.h
Peter Rajnoha [Tue, 30 Jun 2015 12:09:00 +0000 (14:09 +0200)]
configure: set DEFAULT_FALLBACK_TO_LVM1 in configure and use it in config_settings.h

Just like we have DEFAULT_USE_LVMETAD (or DEFUALT_USE_LVMPOLLD), use
fallback_to_lvm1=1 lvm.conf setting if we configured lvm2 with
--enable-lvm1-fallback and use fallback_to_lvm1=0 otherwise.

Also, generate proper lvm.conf.in with unconfigured value.

9 years agocleanup: report: use internal wrapper for various variables used for handling reserve...
Peter Rajnoha [Tue, 30 Jun 2015 08:23:35 +0000 (10:23 +0200)]
cleanup: report: use internal wrapper for various variables used for handling reserved values

Just a cleanup - wrap several variables we use to handle reserved
values into a structure for easier manipulation in the code.

9 years agoselect: add support for range reserved values and flagging named-only values
Peter Rajnoha [Tue, 30 Jun 2015 08:13:35 +0000 (10:13 +0200)]
select: add support for range reserved values and flagging named-only values

This patch allows for registration and recognition of reserved
values which are ranges, so they're composed of two values actually
to denote the lower and upper bound for the range (stored as an array
with exactly two items to define the boundaries).

Also, this patch allows for flagging reserved values as named-only
which means that such values are not strictly reserved. The strictly
reserved values are reserved values as used before this patch.

Distinction between strictly-reserved and named-only values
is clearly visible with comparisons. Normally, strictly reserved
value is not accounted for if we do "greater than" or "lower than"
comparisons, for example:

1  2  3 ....
   |
  abc

- we have "abc" as reserved value for field with value "2"
- the value reported for the field is "abc" (or "2", it doesn't matter here)
- the selection we're processing is -S 'field < abc'
- the result of the selection gives nothing as "abc" is strictly
reserved value (bound to "2") and there's no order defined for
it and it would only match if we directly compared the value
(so -S 'field = abc' would match)

With named-only values, the "abc" is named-only value for "2",
so selection -S 'field < abc" is the same as using -S 'field < 2'.
The "abc" is just an alias for some value so the value or its
assigned name can be used equally in selection criteria.

9 years agocleanup: time: error out on incorrect time_format and indentation in config_settings.h
Peter Rajnoha [Mon, 29 Jun 2015 14:16:58 +0000 (16:16 +0200)]
cleanup: time: error out on incorrect time_format and indentation in config_settings.h

9 years agolv: time: increase buffer to 4k in lv_time_dup
Peter Rajnoha [Mon, 29 Jun 2015 13:24:00 +0000 (15:24 +0200)]
lv: time: increase buffer to 4k in lv_time_dup

9 years agotoolcontext: use proper set of chars to check time format against
Peter Rajnoha [Mon, 29 Jun 2015 12:45:45 +0000 (14:45 +0200)]
toolcontext: use proper set of chars to check time format against

9 years agoconf: make time format configurable
Peter Rajnoha [Mon, 25 May 2015 14:13:07 +0000 (16:13 +0200)]
conf: make time format configurable

Make it possible to define format for time that is displayed.
The way the format is defined is equal to the way that is used
for strftime function, although not all formatting options as
used in strftime are available for LVM2 - the set is restricted
(e.g. we do not allow newline to be printed). The lvm.conf
comments contain the whole list that LVM2 accepts for time format
together with brief description (copied from strftime man page).

For example:
(defaults used - the format is the same as used before this patch)
$ lvs -o+time vg/lvol0 vg/lvol1
  LV    VG   Attr       LSize Time
  lvol0 vg   -wi-a----- 4.00m 2015-06-25 16:18:34 +0200
  lvol1 vg   -wi-a----- 4.00m 2015-06-29 09:17:11 +0200

(using 'time_format = "@%s"' in lvm.conf - number of seconds
since the Epoch)
$ lvs -o+time vg/lvol0 vg/lvol1
  LV    VG   Attr       LSize Time
  lvol0 vg   -wi-a----- 4.00m @1435241914
  lvol1 vg   -wi-a----- 4.00m @1435562231

9 years agoconfig: regenerate lvm.conf.in and lvmlocal.conf.in
Peter Rajnoha [Mon, 29 Jun 2015 11:43:28 +0000 (13:43 +0200)]
config: regenerate lvm.conf.in and lvmlocal.conf.in

9 years agorefactor: rename _out_tags fn to _out_list and use it for string lists in general
Peter Rajnoha [Wed, 6 May 2015 12:06:44 +0000 (14:06 +0200)]
refactor: rename _out_tags fn to _out_list and use it for string lists in general

9 years agocleanup: remove unused tags.c file
Peter Rajnoha [Wed, 6 May 2015 11:59:49 +0000 (13:59 +0200)]
cleanup: remove unused tags.c file

9 years agorefactor: rename alloc_printed_tags fn to _alloc_printed_str_list and use it for...
Peter Rajnoha [Wed, 6 May 2015 11:58:17 +0000 (13:58 +0200)]
refactor: rename alloc_printed_tags fn to _alloc_printed_str_list and use it for string lists in general

9 years agorefactor: rename read_tags fn to _read_str_list and use it for string lists in general
Peter Rajnoha [Wed, 6 May 2015 11:19:21 +0000 (13:19 +0200)]
refactor: rename read_tags fn to _read_str_list and use it for string lists in general

9 years agotests: tests needs pre 1.13 thin-pool extorg
Zdenek Kabelac [Fri, 26 Jun 2015 20:16:01 +0000 (22:16 +0200)]
tests: tests needs pre 1.13 thin-pool extorg

This test is testing older style, so disable feature when present.

9 years agotests: deactivate before remove
Zdenek Kabelac [Fri, 26 Jun 2015 20:00:40 +0000 (22:00 +0200)]
tests: deactivate before remove

Testing if this avoids udev race with removal of snapshot on some
test machines.
See: https://bugzilla.redhat.com/show_bug.cgi?id=1217819

9 years agomakefiles: avoid bash == operator syntax, use = instead
Ferenc Wágner [Fri, 26 Jun 2015 07:00:16 +0000 (09:00 +0200)]
makefiles: avoid bash == operator syntax, use = instead

Commit e587b0677b705786a78f21bac1966621f70b2752 broke the build on
systems where /bin/sh is Dash, for example.

Origin patch by Ferenc Wágner <wferi@niif.hu>  changed later to
avoid using shell call, so makefile add 'server' target when
one of  metad or polld daemon is requested.

9 years agolvmconfig: do not display settings with undefined default values
Peter Rajnoha [Thu, 25 Jun 2015 10:49:59 +0000 (12:49 +0200)]
lvmconfig: do not display settings with undefined default values

Do not display settings with undefined default values, but do display
these settings in case the value is defined directly in any part of
the existing config cascade.

For example, the lvmconfig --type current always displays these settings
(as it's somewhere in "current" configuration cascade that makes it defined).
The lvmconfig --type full displays these settings only if it's defined
somewhere in the cascade, but not if default value is used instead
The lvmconfig --type default never displays these settings...

More concrete example - let's have activation/volume_list directly
set in lvm.conf and activation/read_only_volume_list not set.
Both of these settings have *undefined default* values.

  $lvmconfig --type full activation/volume_list activation/read_only_volume_list
  volume_list="/dev/vg/lv"

(...only volume_list is defined, hence it's printed)

However, the comments will display more info (see also previous commit):

  $lvmconfig --type full activation/volume_list activation/read_only_volume_list --withsummary

  # Configuration option activation/volume_list.
  # Only LVs selected by this list are activated.
  # This configuration option does not have a default value defined.
  # Value defined in existing configuration has been used for this setting.
  volume_list="/dev/vg/lv"

  # Configuration option activation/read_only_volume_list.
  # LVs in this list are activated in read-only mode.
  # This configuration option does not have a default value defined.

9 years agolvmconfig: display comment about value from existing config being used
Peter Rajnoha [Thu, 25 Jun 2015 11:03:31 +0000 (13:03 +0200)]
lvmconfig: display comment about value from existing config being used

Display comment abour value from existing config being used. For example:

$ lvmconfig --type full --withsummary report/compact_output report/buffered

 # Configuration option report/compact_output.
 # Do not print empty report fields.
 # Value defined in existing configuration has been used for this setting.
 compact_output=1

 # Configuration option report/buffered.
 # Buffer report output.
 buffered=1

9 years agolvmconfig: add --type full to display full tree of settings
Peter Rajnoha [Thu, 25 Jun 2015 08:51:30 +0000 (10:51 +0200)]
lvmconfig: add --type full to display full tree of settings

The lvmconfig --type full is actually a combination of --type current
and --type missing together with --mergedconfig options used.

The overall outcome is a configuration tree with settings as LVM sees
it when it looks for the values - that means, if the setting is defined
in some config source (lvm.conf, --config, lvmlocal.conf or any profile
that is used), the setting is used. Otherwise, if the setting is not
defined in any part of the config cascade, the defaults are used.

The --type full displays exactly this final tree with all the values
defined, either coming from configuration tree or from defaults.

9 years agoconfig: also clone associated id when cloning node using dm_config_clone_node{_with_mem}
Peter Rajnoha [Thu, 25 Jun 2015 08:21:07 +0000 (10:21 +0200)]
config: also clone associated id when cloning node using dm_config_clone_node{_with_mem}

9 years agoman: Add missing env vars to lvm man page.
Alasdair G Kergon [Wed, 24 Jun 2015 19:43:35 +0000 (20:43 +0100)]
man: Add missing env vars to lvm man page.

9 years agolibdaemon: add comment about using main and init
David Teigland [Wed, 24 Jun 2015 17:16:26 +0000 (12:16 -0500)]
libdaemon: add comment about using main and init

9 years agotests: workaround udev problem
Zdenek Kabelac [Wed, 24 Jun 2015 11:21:21 +0000 (13:21 +0200)]
tests: workaround udev problem

If udev has not removed 'dir' entry - just issue TEST WARNING, clear
dir, but do not fail whole rest of test.

9 years agosnapshot: add synchronization point
Zdenek Kabelac [Wed, 24 Jun 2015 13:12:43 +0000 (15:12 +0200)]
snapshot: add synchronization point

Synchronize with udev logic before reusing device as snapshot.

This patch tries to fix the problem with udev, where we manage
to 'active' LV for clearing, then we deactivate such device and
active again as member of 'origin&snapshot' tree all in 1 step.

There needs to be a sync point where udev has time to remove all links,
otherwise we race with scans and we may end-up with mysterious 'free'
links in the system pointing to wrong dm names.

This patch tries to fix failing topology cluster tests..

9 years agocommands: --withspaces also for config and lvmconfig cmd aliases
Peter Rajnoha [Wed, 24 Jun 2015 11:28:40 +0000 (13:28 +0200)]
commands: --withspaces also for config and lvmconfig cmd aliases

9 years agomake: use lvmconfig ... --withspaces when generating lvm.conf and lvmlocal.conf
Peter Rajnoha [Wed, 24 Jun 2015 11:18:50 +0000 (13:18 +0200)]
make: use lvmconfig ... --withspaces when generating lvm.conf and lvmlocal.conf

9 years agolvmconfig: add --withspaces option
Peter Rajnoha [Wed, 24 Jun 2015 11:14:30 +0000 (13:14 +0200)]
lvmconfig: add --withspaces option

We shouldn't be adding spaces by default in output as that
may be be used already in scripts and especially for the eval
in shell scripts where spaces are not allowed between key
and value!

Add --withspaces option to lvmconfig for pretty output with
more space in for readability.

9 years agoWHATS_NEW: recent commits - config value format flags
Peter Rajnoha [Wed, 24 Jun 2015 09:33:34 +0000 (11:33 +0200)]
WHATS_NEW: recent commits - config value format flags

9 years agoconfig: regenerate configure.in to accomodate all recent changes
Peter Rajnoha [Tue, 23 Jun 2015 13:21:18 +0000 (15:21 +0200)]
config: regenerate configure.in to accomodate all recent changes

Hopefully closer to the ideal.

9 years agoconfig: devices/filter and devices/global_filter setting have 'a/.*/' as default...
Peter Rajnoha [Wed, 24 Jun 2015 09:21:12 +0000 (11:21 +0200)]
config: devices/filter and devices/global_filter setting have 'a/.*/' as default value

9 years agoconfig: allow empty values for {thin,cache}_{check,repair}_options
Peter Rajnoha [Tue, 23 Jun 2015 13:35:24 +0000 (15:35 +0200)]
config: allow empty values for {thin,cache}_{check,repair}_options

It's not an error to define empty values for
{thin,cache}_{check,repair}_options - such empty value means no
options are passed when these external commands are called.

9 years agoconfigure: add DEFAULT_USE_BLKID_WIPING
Peter Rajnoha [Tue, 23 Jun 2015 13:20:51 +0000 (15:20 +0200)]
configure: add DEFAULT_USE_BLKID_WIPING

If blkid wiping is possible, than set use_blkid_wiping=1 and
use_blkid_wiping=0 otherwise for its default value. If blkid wiping
is disabled during configure and use_blkid_wiping=1 is set by chance,
it's simply ignored - this patch is just a cleanup that makes it more
obvious for the user (we use similar logic for use_lvmetad and
use_lvmpolld settings).

9 years agoconfig: display global/umask in octal form
Peter Rajnoha [Tue, 23 Jun 2015 11:24:15 +0000 (13:24 +0200)]
config: display global/umask in octal form

9 years agoconfig: use proper unconfigured default values for use_lvmetad and use_lvmpolld settings
Peter Rajnoha [Tue, 23 Jun 2015 12:13:12 +0000 (14:13 +0200)]
config: use proper unconfigured default values for use_lvmetad and use_lvmpolld settings

Default value for lvmetad and lvmpolld has hooks in configure script,
the "lvmconfig --type default --unconfigured" should display:

   use_lvmetad = @DEFAULT_USE_LVMETAD@
   use_lvmpolld = @DEFAULT_USE_LVMPOLLD@

Note that these settings are not of string type. Recent change (the
DM_CONFIG_VALUE_FMT_STRING_NO_QUOTES formatting flag) makes it
possible to recognize that the setting is not of string type and if
there's unconfigured value defined for it, the enclosing " " is
automatically removed on output.

9 years agoconfig: cleanup default values for some configuration settings with array values
Peter Rajnoha [Tue, 23 Jun 2015 11:18:53 +0000 (13:18 +0200)]
config: cleanup default values for some configuration settings with array values

Do not use "#S" (blank string) as default value as that ends up with
'key = [ "" ]' to be generated which is not what we want in most cases.

Also, fix default values for global/{thin,cache}_{check,repair}_options
and avoid assigning blank values. For example, the thin_check_options
had this set as default value previously:

  "#S" DEFAULT_THIN_CHECK_OPTION1 "#S" DEFAULT_THIN_CHECK_OPTION2

If any (or both) of DEFAULT_THIN_CHECK_OPTION* variables was set
to "", we ended up with clumsy default value generated like:

  thin_check_options = [ "-q", "" ]

With this patch, we end up with correct:

  thin_check_options = [ "-q" ]

or, if all options are undefined:

  thin_check_options = [ ]

Which is the correct way to express this.

9 years agoconfig: add support for config value formatting flags
Peter Rajnoha [Tue, 23 Jun 2015 11:02:45 +0000 (13:02 +0200)]
config: add support for config value formatting flags

There are two basic groups of formatting flags (32 bits):
  - common ones applicable for all config value types (lower 16 bits)
  - type-related formatting flags (higher 16 bits)

With this patch, we initially support four new flags that
modify the the way the config value is displayed:

  Common flags:
  =============

  DM_CONFIG_VALUE_FMT_COMMON_ARRAY - causes array config values
    to be enclosed in "[ ]" even if there's only one item
    (previously, there was no way to recognize an array with one
     item and scalar value, hence array values with one member
     were always displayed without "[ ]" which libdm accepted
     when reading, but it may have been misleading for users)

  DM_CONFIG_VALUE_FMT_COMMON_EXTRA_SPACE - causes extra spaces to
    be inserted in "key = value" (or key = [ value, value, ... ] in
    case of arrays), compared to "key=value" seen on output before.
    This makes the output more readable for users.

  Type-related flags:
  ===================

  DM_CONFIG_VALUE_FMT_INT_OCTAL - prints integers in octal form with
    "0" as a prefix (libdm's config reading code can handle this via
    strtol just fine so it's properly recognized as number in octal
    form already if there's "0" used as prefix)

  DM_CONFIG_VALUE_FMT_STRING_NO_QUOTES - makes it possible to print
    strings without enclosing " "

This patch also adds dm_config_value_set_format_flags and
dm_config_value_get_format_flags functions to set and get
these formatting flags.

9 years agolibdaemon: allow main processing function to be specified
David Teigland [Tue, 2 Dec 2014 20:08:58 +0000 (14:08 -0600)]
libdaemon: allow main processing function to be specified

9 years agodoc: mention new invalid states in lvmetad_design
David Teigland [Tue, 23 Jun 2015 21:48:28 +0000 (16:48 -0500)]
doc: mention new invalid states in lvmetad_design

9 years agoReread global state the lvmetad copy is stale
David Teigland [Fri, 7 Nov 2014 18:51:42 +0000 (12:51 -0600)]
Reread global state the lvmetad copy is stale

This is the client side handling of the global_invalid state
added to lvmetad in commit c595b50cec8a6b95c6ac4988912d1412f3cc0237.

The function added here:
. checks if the global state in lvmetad is invalid
. if so, scans disks to update the state in lvmetad
. clears the global_invalid flag in lvmetad
. updates the local udev db to reflect any changes

9 years agoReread a VG if the lvmetad copy is stale
David Teigland [Thu, 6 Nov 2014 20:01:12 +0000 (14:01 -0600)]
Reread a VG if the lvmetad copy is stale

and update the lvmetad copy after it is reread from disk.

This is the client side handling of the vg_invalid state
added to lvmetad in commit c595b50cec8a6b95c6ac4988912d1412f3cc0237.

9 years agolvmetad: add invalidation method
David Teigland [Tue, 21 Oct 2014 14:40:13 +0000 (09:40 -0500)]
lvmetad: add invalidation method

Add the ability to invalidate global or individual VG metadata.
The invalid state is returned to lvm commands along with the metadata.
This allows lvm commands to detect stale metadata from the cache and
reread the latest metadata from disk (in a subsequent patch.)

These changes do not change the protocol or compatibility between
lvm commands and lvmetad.

Global information
------------------

Global information refers to metadata that is not isolated
to a single VG , e.g. the list of vg names, or the list of pvs.

When an external system, e.g. a locking system, detects that global
information has been changed from another host (e.g. a new vg has been
created) it sends lvmetad the message: set_global_info: global_invalid=1.
lvmetad sets the global invalid flag to indicate that its cached data is
stale.

When lvm commands request information from lvmetad, lvmetad returns the
cached information, along with an additional top-level config node called
"global_invalid".  This new info tells the lvm command that the cached
information is stale.

When an lvm command sees global_invalid from lvmated, it knows it should
rescan devices and update lvmetad with the latest information.  When this
is complete, it sends lvmetad the message: set_global_info:
global_invalid=0, and lvmetad clears the global invalid flag.  Further lvm
commands will use the lvmetad cache until it is invalidated again.

The most common commands that cause global invalidation are vgcreate and
vgextend.  These are uncommon compared to commands that report global
information, e.g. vgs.  So, the percentage of lvmetad replies containing
global_invalid should be very small.

VG information
--------------

VG information refers to metadata that is isolated to a single VG,
e.g. an LV or the size of an LV.

When an external system determines that VG information has been changed
from another host (e.g. an lvcreate or lvresize), it sends lvmetad the
message: set_vg_info: uuid=X version=N.  X is the VG uuid, and N is the
latest VG seqno that was written.  lvmetad checks the seqno of its cached
VG, and if the version from the message is newer, it sets an invalid flag
for the cached VG.  The invalid flag, along with the newer seqno are saved
in a new vg_info struct.

When lvm commands request VG metadata from lvmetad, lvmetad includes the
invalid flag along with the VG metadata.  The lvm command checks for this
flag, and rereads the VG from disk if set.  The VG read from disk is sent
to lvmetad.  lvmetad sees that the seqno in the new version matches the
seqno from the last set_vg_info message, and clears the vg invalid flag.
Further lvm commands will use the VG metadata from lvmetad until it is
next invalidated.

9 years agotests: use vgscan after enable_dev
Zdenek Kabelac [Tue, 23 Jun 2015 11:39:57 +0000 (13:39 +0200)]
tests: use vgscan after enable_dev

Since our test environment runs also in non-real-udev world,
it's using  /etc/.cache file with scanned files.

So in this case it is mandatory the user runs 'vgscan'
after a device reappears in the system.

This 'first' lvm2 command then fixes metadata (just like vgs did).

9 years agotests: skip when snapshot does not work
Zdenek Kabelac [Tue, 23 Jun 2015 11:25:09 +0000 (13:25 +0200)]
tests: skip when snapshot does not work

Some older kernel (i.e. 3.11.10 on fc20) do not work properly.
Skip the test if snapshot does not meet 50%.

9 years agotests: newer version needed for ext-orig
Zdenek Kabelac [Tue, 23 Jun 2015 09:56:42 +0000 (11:56 +0200)]
tests: newer version needed for ext-orig

9 years agocleanup: avoid printing gcc warning
Zdenek Kabelac [Tue, 23 Jun 2015 09:03:46 +0000 (11:03 +0200)]
cleanup: avoid printing gcc warning

Casting to (void) with gcc doesn't remove unused_result warning.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25509

9 years agopost-release
Alasdair G Kergon [Sat, 20 Jun 2015 00:05:21 +0000 (01:05 +0100)]
post-release

9 years agopre-release v2_02_122
Alasdair G Kergon [Fri, 19 Jun 2015 23:57:35 +0000 (00:57 +0100)]
pre-release

9 years agotests: external origin updates
Zdenek Kabelac [Fri, 19 Jun 2015 14:26:18 +0000 (16:26 +0200)]
tests: external origin updates

Update test for recent updates to support unalligned sizes
and extension of reduced volume.

9 years agolog: flush stdout before print to stderr
Zdenek Kabelac [Fri, 19 Jun 2015 14:24:32 +0000 (16:24 +0200)]
log: flush stdout before print to stderr

Keep logging readable and fflush stdout before printing to stderr.

9 years agolvm: move hyphen mangling code
Zdenek Kabelac [Fri, 19 Jun 2015 07:44:14 +0000 (09:44 +0200)]
lvm: move hyphen mangling code

Relocate hyphen code from lvm main into lvm_run_command()
so all command and library user will have it.

Update WHATS_NEW with missing changes.

9 years agodisplay: drop allocation from display_lvname
Zdenek Kabelac [Tue, 16 Jun 2015 11:47:43 +0000 (13:47 +0200)]
display: drop allocation from display_lvname

Use of display_lvname() in plain log_debug() may accumulate memory in
command context mempool. Use instead small ringbuffer which allows to
store cuple (10 ATM) names so upto 10 full names can be used at one.

We are not keeping full VG/LV names as it may eventually consume larger
amount of RAM resouces if vgname is longer and lots of LVs are in use.

Note: if there would be ever needed for displaing more names at once,
the limit should be raised (e.g. log_debug() would need to print more
then 10 LVs on a single line).

9 years agothin: support unaligned size of external origin and thin pool
Zdenek Kabelac [Thu, 18 Jun 2015 12:38:57 +0000 (14:38 +0200)]
thin: support unaligned size of external origin and thin pool

With thin-pool kernel target module 1.13 it's now support usage of
external origin with sizes which are not 'alligned' with chunk size
of thin-pool.

Enable lvm2 support for this and also fix reporting of data_percent
usage for case sizes are not alligned.

9 years agothin: drop limitation for extension of reduced thin volume
Zdenek Kabelac [Thu, 18 Jun 2015 12:38:05 +0000 (14:38 +0200)]
thin: drop limitation for extension of reduced thin volume

Drop check which has prevented resize of reduce thin volume with
external origin. User is supposed to use 'zeroing' to get 'clean'
chunks.

9 years agolibdm: add dm_tree_node_set_thin_pool_read_only
Zdenek Kabelac [Thu, 18 Jun 2015 13:15:39 +0000 (15:15 +0200)]
libdm: add dm_tree_node_set_thin_pool_read_only

Support thin-pool tree node with activation in read-only mode.
(Native kernel API).

9 years agolibdaemon: move compare_config to lib
David Teigland [Wed, 17 Jun 2015 18:06:37 +0000 (13:06 -0500)]
libdaemon: move compare_config to lib

so it can be used elsewhere.

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