Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=e0dc3d5efb6da6d4…
Commit: e0dc3d5efb6da6d45994f88e9d89e6657a183aac
Parent: bea003e94ceec717c2c5b847a9a28ea3f8f42dad
Author: David Teigland <teigland(a)redhat.com>
AuthorDate: Wed Jan 21 11:08:12 2015 -0600
Committer: David Teigland <teigland(a)redhat.com>
CommitterDate: Wed Jan 21 14:31:36 2015 -0600
lvmthin: update data space exhaustion
---
man/lvmthin.7.in | 56 ++++++++++++++++++++++++++++-------------------------
1 files changed, 30 insertions(+), 26 deletions(-)
diff --git a/man/lvmthin.7.in b/man/lvmthin.7.in
index 86456a5..908701a 100644
--- a/man/lvmthin.7.in
+++ b/man/lvmthin.7.in
@@ -716,14 +716,16 @@ For a 1G pool, using 700M will trigger a resize to 1.2G. When the usage exceeds
\&
When properly managed, thin pool data space should be extended before it
-is exhausted (see previous section). But, if thin pool data space is
-exhausted, the thin pool behavior is configurable with the --errorwhenfull
-y|n option to lvcreate or lvchange. The errorwhenfull setting applies
-only to writes; reading thin LVs can continue even when data space is
-exhausted.
+is exhausted (see the section "Automatically extend thin pool LV"). If
+thin pool data space is already exhausted, it can still be extended (see
+the section "Manually manage free data space of thin pool LV".)
-Command to change the handling of data space exhaustion of an existing
-thin pool LV:
+The behavior of a full thin pool with no remaining data space is
+configurable with the --errorwhenfull y|n option to lvcreate or lvchange.
+The errorwhenfull setting applies only to writes; reading thin LVs can
+continue even when data space is exhausted.
+
+Command to change the handling of no data space of a thin pool:
.B lvchange --errorwhenfull {y|n} VG/ThinPoolLV
@@ -737,24 +739,25 @@ is extended, the queued writes will be processed, and the thin pool will
return to normal operation.
While waiting to be extended, the thin pool will queue writes for up to 60
-seconds. If data space has not been extended after this time, the queued
-writes will return an error to the caller, e.g. the file system. This can
-result in file system corruption that may require fsck to repair.
+seconds (the default). If data space has not been extended after this
+time, the queued writes will return an error to the caller, e.g. the file
+system. This can result in file system corruption that may require fsck.
The 60 second timeout can be changed or disabled with the dm\-thin\-pool
kernel module option
.B no_space_timeout.
This option sets the number of seconds that thin pools will queue writes.
-If set to 0, writes will not time out. Disabling timeouts may result in
-the system exhausting memory if too many writes are queued.
+If set to 0, writes will not time out. Disabling timeouts can result in
+the system running out of resources, memory exhaustion, hung tasks, and
+deadlocks. (The timeout applies to all thin pools on the system.)
.B errorwhenfull y
Writes to thin LVs immediately return an error, and no writes are queued.
In the case of a file system, this can result in corruption that may
-require fsck to repair (the specific consequences depend on the thin LV
-user.)
+require fsck (the specific consequences depend on the thin LV user.)
+.B display data percent
When data space is exhausted, the lvs command displays 100 under Data% for
the thin pool LV:
@@ -765,24 +768,25 @@ the thin pool LV:
pool0 vg twi-a-tz-- 512.00m 100.00
.fi
-A thin pool can run out of data blocks for any of the following reasons:
+.B causes
+
+A thin pool may run out of data space for any of the following reasons:
-1. Automatic extension of the thin pool is disabled, and the thin pool is
-not manually extended. (Disabling automatic extension is not
-recommended.)
+.IP \[bu] 2
+Automatic extension of the thin pool is disabled, and the thin pool is not
+manually extended. (Disabling automatic extension is not recommended.)
-2. The dmeventd daemon is not running and the thin pool is not manually
+.IP \[bu]
+The dmeventd daemon is not running and the thin pool is not manually
extended. (Disabling dmeventd is not recommended.)
-3. Automatic extension of the thin pool is too slow given the rate of
-writes to thin LVs in the pool. (This can be addressed by tuning the
+.IP \[bu]
+Automatic extension of the thin pool is too slow given the rate of writes
+to thin LVs in the pool. (This can be addressed by tuning the
thin_pool_autoextend_threshold and thin_pool_autoextend_percent.)
-4. The VG does not have enough free blocks to extend the thin pool.
-
-The response to data space exhaustion is to extend the thin pool. This is
-described in the section "Manually manage free data space of thin pool
-LV".
+.IP \[bu]
+The VG does not have enough free blocks to extend the thin pool.
.SS Metadata space exhaustion
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=bea003e94ceec717…
Commit: bea003e94ceec717c2c5b847a9a28ea3f8f42dad
Parent: 57f67ce8558d9688d1e743aba5d65d1e1545aad6
Author: Peter Rajnoha <prajnoha(a)redhat.com>
AuthorDate: Wed Jan 21 16:44:02 2015 +0100
Committer: Peter Rajnoha <prajnoha(a)redhat.com>
CommitterDate: Wed Jan 21 16:44:02 2015 +0100
config: improve config validation to check if setting with string value can be empty.
For example, with dmeventd/executable set to "" which is not allowed for
this setting, the config validation now ends up with:
$ lvm dumpconfig --validate
Configuration setting "dmeventd/executable" invalid. It cannot be set to an empty value.
LVM configuration invalid.
This check for empty values for string config settings was not
done before (we only checked empty arrays, but not scalar strings).
---
WHATS_NEW | 1 +
lib/config/config.c | 5 +++++
2 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index 15ab94f..02f76be 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.116 -
====================================
+ Improve config validation to check if setting with string value can be empty.
Version 2.02.115 - 21st January 2015
====================================
diff --git a/lib/config/config.c b/lib/config/config.c
index 58efb31..b47984f 100644
--- a/lib/config/config.c
+++ b/lib/config/config.c
@@ -790,6 +790,11 @@ static int _config_def_check_node_single_value(struct cft_check_handle *handle,
} else if (!(def->type & CFG_TYPE_STRING)) {
_log_type_error(rp, CFG_TYPE_STRING, def->type, handle->suppress_messages);
return 0;
+ } else if (!(def->flags & CFG_ALLOW_EMPTY) && !*v->v.str) {
+ log_warn_suppress(handle->suppress_messages,
+ "Configuration setting \"%s\" invalid. "
+ "It cannot be set to an empty value.", rp);
+ return 0;
}
break;
default: ;
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=972a6f4b1972eb66…
Commit: 972a6f4b1972eb661bbcd6b487b3b250257da67c
Parent: 0000000000000000000000000000000000000000
Author: Alasdair G Kergon <agk(a)redhat.com>
AuthorDate: 2015-01-21 13:08 +0000
Committer: Alasdair G Kergon <agk(a)redhat.com>
CommitterDate: 2015-01-21 13:08 +0000
annotated tag: v2_02_115 has been created
at 972a6f4b1972eb661bbcd6b487b3b250257da67c (tag)
tagging fa01faaa4aa96de834ba7e8fbb9d9aff908571c3 (commit)
replaces v2_02_114
Release 2.02.115.
67 files changed, 1428 insertions(+), 445 deletions(-)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.14 (GNU/Linux)
iEYEABECAAYFAlS/pRsACgkQIoGRwVZ+LBfA5QCgt3KrilCXnFUQqqEGndew8T/K
f0wAn0K25dCX6HhDqAI5+R621/Zh9QSI
=6l77
-----END PGP SIGNATURE-----
Alasdair G Kergon (10):
post-release
mirror: Restrict region size to power of 2.
mirror: Validate raid region size config setting.
libdm-report: Fix order of NULL dm_report check.
man: Remove renamed writebehind field from lvs.8.
vgimportclone: Say safe to ignore lvmetad message.
report: Fix warning in _str_list_append.
libdevmapper: Improve incompatible version msg.
dmeventd: Reduce waitevent EINTR message severity.
pre-release
David Teigland (8):
toollib: process_each_pv should match by device
toollib: handle duplicate pvs in process_in_pv
toollib: override the PV device with duplicates
toollib: pvs -a should display VG name for each duplicate PV
toollib: search for duplicate PVs only when needed
WHATS_NEW: previous commits related to duplicate PVs
vgimportclone: remove arg check that uses pvs
lvmthin: include errorwhenfull
Heinz Mauelshagen (3):
raid: fix mirror image naming when converting from mirror to raid1
raid_manip: fix multi-segment misallocation on 'lvconvert --repair'
raid_manip: v2 fix multi-segment misallocation on 'lvconvert --repair'
Peter Rajnoha (37):
pool: fix typo in error message: then -> than
libdm: remove unimplemented dm_report_set_output_selection fn
libdm: report: add dm_report_compact_fields
config: add report/compact_output lvm.conf setting to enable or isable field compacting
libdm: report: compact output applicable only if report is buffered
libdm: report: return immediately from dm_report_compact_fields without error if there are no rows
configure: fix automatic use of configure --enable-udev-systemd-background-jobs
libdm: report: fix incorrect memory use while using --select with --unbuffered for reporting
WHATS_NEW: f94f846 actually fixes DM issue, not LVM issue
vgimportclone: replace awk with dumpconfig to generate temporary lvm.conf for vgimportclone
vgimportclone: also notify lvmetad about changes if it's used
man: remove reference to --binary in {pv,vg,lv}display man page
tools, man: --binary option is available with -C for {pv,vg,lv}display
man: put back the --binary reference in {pv,vg,lv}display man page
WHATS_NEW: previous commit
libdm: report: also check whether field type is supported for field-specific reserved value
report: dup cache policy name string for report in cache_policy field
refactor: rename existing helper macros for reserved value handling and add GET_FIELD_RESERVED_VALUE macro
cleanup: use helper macros to get reserved value from values.h for vg_mda_copies and lv_read_ahead fields
report: properly set "undefined" reserved value for cache_policy field
report: fix segfault on NULL value hit in cache_settings field
libdm: report: add more comments about helper macros to get reserved values
cmirror: check for cmirror availability during cluster mirror creation and activation
cmirror: do not check for cmirror availability when creating deactivated cluster mirrors
mirror: do not try to reactivate inactive mirror when removing its LVs which have missing PVs
WHATS_NEW: previous commit
dev_manager: do not mark snapshot origins as unusable devices just because of possible blocked mirror underneath
WHATS_NEW: line for previous commit
metadata: log_error instead of log_warn on failed mda write
metadata: add "Failed to write VG <vg_name>." on failed vg_write and revert previous patch
scripts: clvmd: replace awk functionality with LVM's selection
pvscan: notify lvmetad about device that is gone and pvscan is run with device path instead of major:minor pair
dev-type: filter out partitioned device-mapper devices as unsuitable for use as PVs
tests: pvscan --cache DevicePath does not fail if the device is just filtered
report: add separate LVSINFOSTATUS field type for info+status combined fields
report: rename lv_error_when_full field to lv_when_full and display either "error", "queue" or ""
cleanup: for commit 7bcb3fb02d6aacc566871326c0d01c331497a5b2
Petr Rockai (4):
report: Add cache_policy and cache_settings (LV) segment fields.
lvmetad: Re-use fmt from the VG for PVs when possible.
pvremove: Avoid metadata re-reads & related error messages.
dmeventd: Call lvscan --cache also for mirrors (in addition to RAID).
Zdenek Kabelac (19):
raid: properly rename split image
cleanup: update API for segment reporting
cleanup: properly align code lines
lv_status: track layered device
lv_status: enable lv_status for thinpool
cleanup: missed for build without devmapper
thin: errrorwhenfull support
WHATS_NEW
cleanup: add lv_is_error_when_full() macro
thin: lvchange support for errorwhenfull
report: reporting unknown status
report: use same info also for lv_attr
report: update report_object API
report: seg_monitor undefined
man: errorwhenfull doc
cleanup: indent
report: use info
thin: support errorwhenfull with thin creation
report: proper lv_attr_dup emulation