stable-2.02 - lvmetad: fix timeout on shutdown
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=61358d92cbf202dbb48...
Commit: 61358d92cbf202dbb483d63a63d5adf0463bb934
Parent: 5d6bf1efb225b964bfff398277e68345acdac1d0
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Wed Sep 25 17:22:49 2019 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon Sep 30 13:39:44 2019 +0200
lvmetad: fix timeout on shutdown
When lvmetad is going to be shutdown - there were 2 issue:
If there was endless stream of command contacting lvmetad - the process
would never finish - so now when we recieved SIGTERM - we are no longer
accepting new connections and we just wait till the existing ones are
finished.
2nd. issue is that actually when we are waiting for finish of all client
threads - we basically want an usleep() and check if all threads
are already finished - proper solution would be to singal from a thread
there is some work to do for master thread - but that would be a bigger
change and since lvmetad is no longer developed - keep the change
minimal and just use pselect() as our '1sec.' sleeping call once
we are in 'shutdown' mode.
Reported-by: wangjufeng(a)huawei.com
---
WHATS_NEW | 1 +
libdaemon/server/daemon-server.c | 11 +++++++++--
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index 3811c5c..80ba83d 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.187 -
===================================
+ Fix lvmetad shutdown and avoid lenghty timeouts when rebooting system.
Prevent creating VGs with PVs with different logical block sizes.
Pvmove runs in exlusively activating mode for exclusively active LVs.
Activate thin-pool layered volume as 'read-only' device.
diff --git a/libdaemon/server/daemon-server.c b/libdaemon/server/daemon-server.c
index bc58f7b..62f403a 100644
--- a/libdaemon/server/daemon-server.c
+++ b/libdaemon/server/daemon-server.c
@@ -89,6 +89,13 @@ static int _is_idle(daemon_state s)
static struct timespec *_get_timeout(daemon_state s)
{
+ static struct timespec _tm = { 0 };
+
+ if (_shutdown_requested) {
+ _tm.tv_sec = 1;
+ return &_tm;
+ }
+
return s.idle ? s.idle->ptimeout : NULL;
}
@@ -506,7 +513,7 @@ static int _handle_connect(daemon_state s)
socklen_t sl = sizeof(sockaddr);
client.socket_fd = accept(s.socket_fd, (struct sockaddr *) &sockaddr, &sl);
- if (client.socket_fd < 0) {
+ if (client.socket_fd < 0 || _shutdown_requested) {
if (errno != EAGAIN || !_shutdown_requested)
ERROR(&s, "Failed to accept connection: %s.", strerror(errno));
return 0;
@@ -672,7 +679,7 @@ void daemon_start(daemon_state s)
continue;
}
- if (FD_ISSET(s.socket_fd, &in)) {
+ if (!_shutdown_requested && FD_ISSET(s.socket_fd, &in)) {
timeout_count = 0;
_handle_connect(s);
}
4 years, 6 months
master - vdo: restore monitoring of vdo pool
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=5c0264d68954e5677f2...
Commit: 5c0264d68954e5677f21459bb18d50704b2b9d77
Parent: a98b77c16455ee97f5bd4b89536a3ae4efd8e009
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Mon Sep 30 13:28:20 2019 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon Sep 30 13:34:34 2019 +0200
vdo: restore monitoring of vdo pool
Switch to -vpool layered name needs to monitor proper device.
---
lib/activate/activate.c | 2 ++
tools/lvchange.c | 2 +-
2 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/lib/activate/activate.c b/lib/activate/activate.c
index 2588816..6f5fa1a 100644
--- a/lib/activate/activate.c
+++ b/lib/activate/activate.c
@@ -1604,6 +1604,8 @@ static char *_build_target_uuid(struct cmd_context *cmd, const struct logical_vo
if (lv_is_thin_pool(lv))
layer = "tpool"; /* Monitor "tpool" for the "thin pool". */
+ else if (lv_is_vdo_pool(lv))
+ layer = "vpool"; /* Monitor "vpool" for the "VDO pool". */
else if (lv_is_origin(lv) || lv_is_external_origin(lv))
layer = "real"; /* Monitor "real" for "snapshot-origin". */
else
diff --git a/tools/lvchange.c b/tools/lvchange.c
index 65cea6c..5f0fcab 100644
--- a/tools/lvchange.c
+++ b/tools/lvchange.c
@@ -145,7 +145,7 @@ static int _lvchange_monitoring(struct cmd_context *cmd,
{
struct lvinfo info;
- if (!lv_info(cmd, lv, lv_is_thin_pool(lv) ? 1 : 0,
+ if (!lv_info(cmd, lv, (lv_is_thin_pool(lv) || lv_is_vdo_pool(lv)) ? 1 : 0,
&info, 0, 0) || !info.exists) {
log_error("Logical volume %s is not active.", display_lvname(lv));
return 0;
4 years, 6 months
master - vdo: properly check percentage for resize
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=a98b77c16455ee97f5b...
Commit: a98b77c16455ee97f5bd4b89536a3ae4efd8e009
Parent: c813db8fc2ec15a8370bb291f662e15ba26682e8
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Mon Sep 30 13:25:42 2019 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon Sep 30 13:34:34 2019 +0200
vdo: properly check percentage for resize
Avoid checking 'lv_is_active()' since special LV types does this
validation anyway what calling _percent() function and call it
ONLY when none of special types is queried.
This restores support for VDO resize (as with support for
separate VDO pool activation, plain query for lv_is_active()
is not working in this case).
---
lib/metadata/lv_manip.c | 13 +++++--------
1 files changed, 5 insertions(+), 8 deletions(-)
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
index 21d21ca..47ff167 100644
--- a/lib/metadata/lv_manip.c
+++ b/lib/metadata/lv_manip.c
@@ -4850,12 +4850,6 @@ static int _lvresize_adjust_policy(const struct logical_volume *lv,
return 0;
}
- if (!lv_is_active(lv)) {
- log_error("Can't read state of locally inactive LV %s.",
- display_lvname(lv));
- return 0;
- }
-
if (lv_is_thin_pool(lv)) {
if (!lv_thin_pool_percent(lv, 1, &percent))
return_0;
@@ -4870,9 +4864,12 @@ static int _lvresize_adjust_policy(const struct logical_volume *lv,
} else if (lv_is_vdo_pool(lv)) {
if (!lv_vdo_pool_percent(lv, &percent))
return_0;
- } else {
- if (!lv_snapshot_percent(lv, &percent))
+ } else if (!lv_snapshot_percent(lv, &percent))
return_0;
+ else if (!lv_is_active(lv)) {
+ log_error("Can't read state of locally inactive LV %s.",
+ display_lvname(lv));
+ return 0;
}
*amount = _adjust_amount(percent, policy_threshold, policy_amount);
4 years, 6 months
master - vdo: deactivate forgotten vdo pool
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=c813db8fc2ec15a8370...
Commit: c813db8fc2ec15a8370bb291f662e15ba26682e8
Parent: fd5b8b72da79e2f0a10785d055a27643d9eaaf19
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Mon Sep 30 13:22:42 2019 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon Sep 30 13:34:34 2019 +0200
vdo: deactivate forgotten vdo pool
If the linear mapping is lost (for whatever reason, i.e.
test suite forcible 'dmsetup remove' linear LV,
lvm2 had hard times figuring out how to deactivate such DM table.
So add function which is in case inactive VDO pool LV checks if
the pool is actually still active (-vpool device present) and
it has open count == 0. In this case deactivation is allowed
to continue and cleanup DM table.
---
lib/activate/activate.c | 11 +++++++++++
1 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/lib/activate/activate.c b/lib/activate/activate.c
index 29cd2d3..2588816 100644
--- a/lib/activate/activate.c
+++ b/lib/activate/activate.c
@@ -2434,6 +2434,17 @@ int lv_deactivate(struct cmd_context *cmd, const char *lvid_s, const struct logi
}
}
+ if (lv_is_vdo_pool(lv)) {
+ /* If someone has remove 'linear' mapping over VDO device
+ * we may still be able to deactivate the rest of the tree
+ * i.e. in test-suite we simulate this via 'dmsetup remove' */
+ if (!lv_info(cmd, lv, 1, &info, 1, 0))
+ goto_out;
+
+ if (info.exists && !info.open_count)
+ r = 0; /* Unused VDO device left in table? */
+ }
+
if (r)
goto out;
}
4 years, 6 months
master - tests: mdadm stop in test cleanup
by David Teigland
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=fd5b8b72da79e2f0a10...
Commit: fd5b8b72da79e2f0a10785d055a27643d9eaaf19
Parent: 9680fd6d78dc9aede50ed797317ec579e4969522
Author: David Teigland <teigland(a)redhat.com>
AuthorDate: Fri Sep 27 12:51:34 2019 -0500
Committer: David Teigland <teigland(a)redhat.com>
CommitterDate: Fri Sep 27 12:51:34 2019 -0500
tests: mdadm stop in test cleanup
try to clear any existing md devs remaining after
a test
---
test/lib/aux.sh | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/test/lib/aux.sh b/test/lib/aux.sh
index 9c9e1fd..7b0ef22 100644
--- a/test/lib/aux.sh
+++ b/test/lib/aux.sh
@@ -421,9 +421,14 @@ teardown_devs() {
teardown_udev_cookies
test ! -f MD_DEV || cleanup_md_dev
+ udev_wait
+ mdadm --stop --scan || true
+ udev_wait
test ! -f DEVICES || teardown_devs_prefixed "$PREFIX"
test ! -f RAMDISK || { modprobe -r brd || true ; }
+ mdadm --stop --scan || true
+
# NOTE: SCSI_DEBUG_DEV test must come before the LOOP test because
# prepare_scsi_debug_dev() also sets LOOP to short-circuit prepare_loop()
if test -f SCSI_DEBUG_DEV; then
4 years, 7 months
master - tests: skip md tests if system not clean
by David Teigland
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=9680fd6d78dc9aede50...
Commit: 9680fd6d78dc9aede50ed797317ec579e4969522
Parent: 0673d13518ac7d058ca70b04c29fd30f4fedeab6
Author: David Teigland <teigland(a)redhat.com>
AuthorDate: Fri Sep 27 12:40:42 2019 -0500
Committer: David Teigland <teigland(a)redhat.com>
CommitterDate: Fri Sep 27 12:40:42 2019 -0500
tests: skip md tests if system not clean
---
test/shell/duplicate-pvs-md0.sh | 2 +-
test/shell/duplicate-pvs-md1.sh | 2 +-
test/shell/lvm-on-md.sh | 2 +-
test/shell/pvcreate-operation-md.sh | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/test/shell/duplicate-pvs-md0.sh b/test/shell/duplicate-pvs-md0.sh
index d64da4a..d5164ce 100644
--- a/test/shell/duplicate-pvs-md0.sh
+++ b/test/shell/duplicate-pvs-md0.sh
@@ -32,7 +32,7 @@ wipefs -V || skip
test -f /proc/mdstat && grep -q raid0 /proc/mdstat || \
modprobe raid0 || skip
-not grep md0 /proc/mdstat
+not grep md0 /proc/mdstat || skip
aux lvmconf 'devices/md_component_detection = 1'
diff --git a/test/shell/duplicate-pvs-md1.sh b/test/shell/duplicate-pvs-md1.sh
index d186c0f..626c55c 100644
--- a/test/shell/duplicate-pvs-md1.sh
+++ b/test/shell/duplicate-pvs-md1.sh
@@ -37,7 +37,7 @@ wipefs -V || skip
test -f /proc/mdstat && grep -q raid1 /proc/mdstat || \
modprobe raid1 || skip
-not grep md0 /proc/mdstat
+not grep md0 /proc/mdstat || skip
aux lvmconf 'devices/md_component_detection = 1'
diff --git a/test/shell/lvm-on-md.sh b/test/shell/lvm-on-md.sh
index 7bcc276..a8df814 100644
--- a/test/shell/lvm-on-md.sh
+++ b/test/shell/lvm-on-md.sh
@@ -32,7 +32,7 @@ wipefs -V || skip
test -f /proc/mdstat && grep -q raid1 /proc/mdstat || \
modprobe raid1 || skip
-not grep md0 /proc/mdstat
+not grep md0 /proc/mdstat || skip
aux lvmconf 'devices/md_component_detection = 1'
diff --git a/test/shell/pvcreate-operation-md.sh b/test/shell/pvcreate-operation-md.sh
index 1774d23..6e43e5f 100644
--- a/test/shell/pvcreate-operation-md.sh
+++ b/test/shell/pvcreate-operation-md.sh
@@ -22,7 +22,7 @@ wipefs -V || skip
test -f /proc/mdstat && grep -q raid0 /proc/mdstat || \
modprobe raid0 || skip
-not grep md0 /proc/mdstat
+not grep md0 /proc/mdstat || skip
aux lvmconf 'devices/md_component_detection = 1'
aux extend_filter_md "a|/dev/md|"
4 years, 7 months
master - tests: writecache-split check have_writecache
by David Teigland
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=0673d13518ac7d058ca...
Commit: 0673d13518ac7d058ca70b04c29fd30f4fedeab6
Parent: 90fe4b106b1e13a2d1244951710d642761f2fd16
Author: David Teigland <teigland(a)redhat.com>
AuthorDate: Thu Sep 26 10:45:53 2019 -0500
Committer: David Teigland <teigland(a)redhat.com>
CommitterDate: Thu Sep 26 10:45:53 2019 -0500
tests: writecache-split check have_writecache
---
test/shell/writecache-split.sh | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/test/shell/writecache-split.sh b/test/shell/writecache-split.sh
index b28cec9..6a7a2cd 100644
--- a/test/shell/writecache-split.sh
+++ b/test/shell/writecache-split.sh
@@ -45,7 +45,7 @@ mount_umount()
lvchange -an $vg/$lvt
}
-aux have_cache 1 10 0 || skip
+aux have_writecache 1 0 0 || skip
which mkfs.xfs || skip
mount_dir="mnt"
4 years, 7 months
stable-2.02 - lvmetad: fix sync cache to lvmetad
by David Teigland
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=5d6bf1efb225b964bff...
Commit: 5d6bf1efb225b964bfff398277e68345acdac1d0
Parent: 2327f3997bfb70d67299f3dfa45436132e0a8521
Author: David Teigland <teigland(a)redhat.com>
AuthorDate: Wed Sep 25 14:23:14 2019 -0500
Committer: David Teigland <teigland(a)redhat.com>
CommitterDate: Wed Sep 25 14:31:08 2019 -0500
lvmetad: fix sync cache to lvmetad
error could be reproduced follow those steps:
#!/bin/bash
vgcreate vgtest /dev/sdb
lvcreate -L 100M -n lv1 vgtest
while :
do
service lvm2-lvmetad restart
vgs &
pvscan &
lvcreate -L 100M -n lv2 vgtest &
lvchange /dev/vgtest/lv1 --addtag xxxxx &
wait
if ! lvs|grep lv2;then
echo "err create"
break
fi
sleep 1
lvremove -y /dev/vgtest/lv2
lvchange /dev/vgtest/lv1 --deltag xxxxx
done
and then fail to create vgtest/lv2, actually lv2 was created, while
the metadata written on disk is replaced by lvchange. It could look
up lv2 by calling dmsetup table, while lvs could not.
This is because, when lvmetad restarted, several lvm commands update
token concurrently, when lvcreate recieve "token_mismatch", it cancle
communicating with lvmetad, which leads to that lvmetad cache is not
sync with the metadata on disk, then lv2 is not committed to lvmetad
cache. The metadata of vgtest which lvchange query from lvmetad is
out of date. After lvchange, it use the old metadata cover the new one.
This patch let lvm process update token synchronously, only one command
update lvmetad token at a time.
lvmetad_pvscan_single send the metadata on a pv by sending "pv_found"
to lvmetad, while the metadata maybe out of date after waiting for the
chance to update lvmetad token. Call label_read to read metadata again.
Token mismatch may lead to problems, increase log level.
Signed-off-by: wangjufeng<wangjufeng(a)huawei.com>
---
daemons/lvmetad/lvmetad-core.c | 21 ++++++++++++++++-----
lib/cache/lvmetad.c | 31 +++++++++++++++++++++++++++++--
2 files changed, 45 insertions(+), 7 deletions(-)
diff --git a/daemons/lvmetad/lvmetad-core.c b/daemons/lvmetad/lvmetad-core.c
index 9ae359b..2628022 100644
--- a/daemons/lvmetad/lvmetad-core.c
+++ b/daemons/lvmetad/lvmetad-core.c
@@ -2669,6 +2669,7 @@ static response handler(daemon_state s, client_handle h, request r)
int pid;
int cache_lock = 0;
int info_lock = 0;
+ uint64_t timegap = 0;
rq = daemon_request_str(r, "request", "NONE");
token = daemon_request_str(r, "token", "NONE");
@@ -2711,12 +2712,22 @@ static response handler(daemon_state s, client_handle h, request r)
state->update_cmd);
} else if (prev_in_progress && this_in_progress) {
+ timegap = _monotonic_seconds() - state->update_begin;
+ if (timegap < state->update_timeout) {
+ pthread_mutex_unlock(&state->token_lock);
+ return daemon_reply_simple("token_updating",
+ "expected = %s", state->token,
+ "update_pid = " FMTd64, (int64_t)state->update_pid,
+ "reason = %s", "another command has populated the cache",
+ NULL);
+ }
+
/* Current update is cancelled and replaced by a new update */
- DEBUGLOG(state, "token_update replacing pid %d begin %llu len %d cmd %s",
+ WARN(state, "token_update replacing pid %d begin %llu len %d cmd %s",
state->update_pid,
(unsigned long long)state->update_begin,
- (int)(_monotonic_seconds() - state->update_begin),
+ (int)(timegap),
state->update_cmd);
(void) dm_strncpy(prev_token, state->token, sizeof(prev_token));
@@ -2726,7 +2737,7 @@ static response handler(daemon_state s, client_handle h, request r)
state->update_pid = pid;
strncpy(state->update_cmd, cmd, CMD_NAME_SIZE - 1);
- DEBUGLOG(state, "token_update begin %llu timeout %d pid %d cmd %s",
+ WARN(state, "token_update begin %llu timeout %d pid %d cmd %s",
(unsigned long long)state->update_begin,
state->update_timeout,
state->update_pid,
@@ -2737,7 +2748,7 @@ static response handler(daemon_state s, client_handle h, request r)
if (state->update_pid != pid) {
/* If a pid doing update was cancelled, ignore its token update at the end. */
- DEBUGLOG(state, "token_update ignored from cancelled update pid %d", pid);
+ WARN(state, "token_update ignored from cancelled update pid %d", pid);
pthread_mutex_unlock(&state->token_lock);
return daemon_reply_simple("token_mismatch",
@@ -2748,7 +2759,7 @@ static response handler(daemon_state s, client_handle h, request r)
NULL);
}
- DEBUGLOG(state, "token_update end len %d pid %d new token %s",
+ WARN(state, "token_update end len %d pid %d new token %s",
(int)(_monotonic_seconds() - state->update_begin),
state->update_pid, token);
diff --git a/lib/cache/lvmetad.c b/lib/cache/lvmetad.c
index d242260..61ba53e 100644
--- a/lib/cache/lvmetad.c
+++ b/lib/cache/lvmetad.c
@@ -565,7 +565,12 @@ static int _token_update(int *replaced_update)
const char *reply_str;
int update_pid;
int ending_our_update;
+ unsigned int wait_sec = 0;
+ uint64_t now = 0, wait_start = 0;
+ wait_sec = (unsigned int)_lvmetad_update_timeout;
+ unsigned int delay_usec = 0;
+retry:
log_debug_lvmetad("Sending lvmetad token_update %s", _lvmetad_token);
reply = _lvmetad_send(NULL, "token_update", NULL);
@@ -581,6 +586,28 @@ static int _token_update(int *replaced_update)
update_pid = (int)daemon_reply_int(reply, "update_pid", 0);
reply_str = daemon_reply_str(reply, "response", "");
+ if (!strcmp(reply_str, "token_updating")) {
+ daemon_reply_destroy(reply);
+ if (!(now = _monotonic_seconds())) {
+ log_print_unless_silent("_monotonic_seconds error");
+ return 0;
+ }
+
+ if (!wait_start)
+ wait_start = now;
+
+ if (now - wait_start <= wait_sec) {
+ log_warn("lvmetad is being updated, retry for %u more seconds.",
+ wait_sec - (unsigned int)(now - wait_start));
+ delay_usec = 1000000 + lvm_even_rand(&_lvmetad_cmd->rand_seed, 1000000);
+ usleep(delay_usec);
+ goto retry;
+ }
+
+ log_print_unless_silent("Not using lvmetad after %u sec lvmetad_update_wait_time, no more try.", wait_sec);
+ return 0;
+ }
+
/*
* A mismatch can only happen when this command attempts to set the
* token to filter:<hash> at the end of its update, but the update has
@@ -591,11 +618,11 @@ static int _token_update(int *replaced_update)
ending_our_update = strcmp(_lvmetad_token, LVMETAD_TOKEN_UPDATE_IN_PROGRESS);
- log_debug_lvmetad("Received token update mismatch expected \"%s\" our token \"%s\" update_pid %d our pid %d",
+ log_print_unless_silent("Received token update mismatch expected \"%s\" our token \"%s\" update_pid %d our pid %d",
token_expected, _lvmetad_token, update_pid, getpid());
if (ending_our_update && (update_pid != getpid())) {
- log_warn("WARNING: lvmetad was updated by another command (pid %d).", update_pid);
+ log_print_unless_silent("WARNING: lvmetad was updated by another command (pid %d).", update_pid);
} else {
/*
* Shouldn't happen.
4 years, 7 months
master - spec: enable writecache
by Marian Csontos
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=90fe4b106b1e13a2d12...
Commit: 90fe4b106b1e13a2d1244951710d642761f2fd16
Parent: dc3f0e067d2f402853551142bc917dc9c070d499
Author: Marian Csontos <mcsontos(a)redhat.com>
AuthorDate: Wed Sep 25 08:39:56 2019 +0200
Committer: Marian Csontos <mcsontos(a)redhat.com>
CommitterDate: Wed Sep 25 08:40:30 2019 +0200
spec: enable writecache
---
spec/source.inc | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/spec/source.inc b/spec/source.inc
index 8309c3f..9bb8740 100644
--- a/spec/source.inc
+++ b/spec/source.inc
@@ -37,8 +37,10 @@
%with thin_check %{_sbindir}/thin_check
%with thin_repair %{_sbindir}/thin_repair
%with thin_dump %{_sbindir}/thin_dump
+# TODO disable vdo and writecache for older releases
%with vdo internal
%with vdo-format %{_bindir}/vdoformat
+%with writecache internal
%global buildreq_udev systemd-devel
%global req_udev udev >= 181-1
4 years, 7 months
master - build: make generate
by Marian Csontos
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=dc3f0e067d2f4028535...
Commit: dc3f0e067d2f402853551142bc917dc9c070d499
Parent: 9a8e6ad014c7dd6785ad6859551d68a264bad1f8
Author: Marian Csontos <mcsontos(a)redhat.com>
AuthorDate: Wed Sep 25 08:27:49 2019 +0200
Committer: Marian Csontos <mcsontos(a)redhat.com>
CommitterDate: Wed Sep 25 08:27:49 2019 +0200
build: make generate
---
man/lvchange.8_pregen | 4 +++-
man/lvconvert.8_pregen | 39 +++++++++++++++++++++++++++++++++++++++
man/pvscan.8_pregen | 13 +++++++++++++
3 files changed, 55 insertions(+), 1 deletions(-)
diff --git a/man/lvchange.8_pregen b/man/lvchange.8_pregen
index 110dd91..51172f2 100644
--- a/man/lvchange.8_pregen
+++ b/man/lvchange.8_pregen
@@ -360,7 +360,9 @@ required, after which the others are optional.
.br
-
-Resyncronize a mirror or raid LV.
+Resyncronize a mirror or raid LV.
+.br
+Use to reset 'R' attribute on a not initially synchronized LV.
.br
.P
\fBlvchange\fP \fB--resync\fP \fIVG\fP|\fILV\fP\fI_mirror_raid\fP|\fITag\fP|\fISelect\fP ...
diff --git a/man/lvconvert.8_pregen b/man/lvconvert.8_pregen
index 846ea2d..b676e72 100644
--- a/man/lvconvert.8_pregen
+++ b/man/lvconvert.8_pregen
@@ -1807,6 +1807,45 @@ Attach a cache pool to an LV (infers --type cache).
.br
-
+Attach a cache to an LV, converts the LV to type cache.
+.br
+.P
+\fBlvconvert\fP \fB-H\fP|\fB--cache\fP \fB--cachevol\fP \fILV\fP \fILV\fP\fI_linear_striped_thinpool_raid\fP
+.br
+.RS 4
+.ad l
+[ \fB-Z\fP|\fB--zero\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB--cachemetadataformat\fP \fBauto\fP|\fB1\fP|\fB2\fP ]
+.ad b
+.br
+.ad l
+[ \fB--cachemode\fP \fBwritethrough\fP|\fBwriteback\fP|\fBpassthrough\fP ]
+.ad b
+.br
+.ad l
+[ \fB--cachepolicy\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[ \fB--cachesettings\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[ \fB--poolmetadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+-
+
Convert LV to type vdopool.
.br
.P
diff --git a/man/pvscan.8_pregen b/man/pvscan.8_pregen
index ed5ba92..94c4268 100644
--- a/man/pvscan.8_pregen
+++ b/man/pvscan.8_pregen
@@ -115,6 +115,10 @@ Autoactivate a VG when all PVs are online.
[ \fB--minor\fP \fINumber\fP ]
.ad b
.br
+.ad l
+[ \fB--noudevsync\fP ]
+.ad b
+.br
[ COMMON_OPTIONS ]
.RE
.br
@@ -289,6 +293,15 @@ Disable locking.
.ad b
.HP
.ad l
+\fB--noudevsync\fP
+.br
+Disables udev synchronisation. The process will not wait for notification
+from udev. It will continue irrespective of any possible udev processing
+in the background. Only use this if udev is not running or has rules that
+ignore the devices LVM creates.
+.ad b
+.HP
+.ad l
\fB-n\fP|\fB--novolumegroup\fP
.br
Only show PVs not belonging to any VG.
4 years, 7 months