stable-2.02 - tests: add extra settle
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=2f615e73de8aad74da7...
Commit: 2f615e73de8aad74da77e69d57d012e5a1006389
Parent: 0e3e974bffa4e9842127451072eab1646ac39a1a
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Nov 8 15:09:17 2019 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Nov 8 15:12:51 2019 +0100
tests: add extra settle
To avoid removing, while 'add' might not have been processed yet.
(when emulating reboot in pvmove-restart)
---
test/lib/aux.sh | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/test/lib/aux.sh b/test/lib/aux.sh
index 804200d..2241062 100644
--- a/test/lib/aux.sh
+++ b/test/lib/aux.sh
@@ -1678,6 +1678,10 @@ wait_pvmove_lv_ready() {
retries=$((retries-1))
done
fi
+
+ # Adding settle here, to avoid remove, before processing of 'add' is finished
+ # (masking systemd-udevd issue)
+ udevadm settle --timeout=2 || true
}
# Holds device open with sleep which automatically expires after given timeout
4 years, 5 months
stable-2.02 - tests: skip unneeded status check
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=0e3e974bffa4e984212...
Commit: 0e3e974bffa4e9842127451072eab1646ac39a1a
Parent: bbdcdc12b2240e00f6ab8ff105e954629412b234
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Nov 8 13:12:31 2019 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Nov 8 15:12:51 2019 +0100
tests: skip unneeded status check
If 'remove' was succesful - we can break loop immediatelly.
---
test/shell/pvmove-restart.sh | 11 +++++------
1 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/test/shell/pvmove-restart.sh b/test/shell/pvmove-restart.sh
index dcf4c37..6a5ba58 100644
--- a/test/shell/pvmove-restart.sh
+++ b/test/shell/pvmove-restart.sh
@@ -51,12 +51,11 @@ wait
# First take down $lv1 then it's pvmove0
j=0
for i in $lv1 pvmove0 pvmove0_mimage_0 pvmove0_mimage_1 ; do
- while dmsetup status "$vg-$i"; do
- dmsetup remove "$vg-$i" || {
- j=$(( j + 1 ))
- test $j -le 100 || die "Cannot take down devices."
- sleep .1;
- }
+ while dmsetup status "$vg-$i" ; do
+ dmsetup remove "$vg-$i" && break
+ j=$(( j + 1 ))
+ test $j -le 100 || die "Cannot take down devices."
+ sleep .1;
done
done
dmsetup table | grep $PREFIX
4 years, 5 months
stable-2.02 - daemons: check for non-zero thread_id
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=bbdcdc12b2240e00f6a...
Commit: bbdcdc12b2240e00f6ab8ff105e954629412b234
Parent: e9b2148dab3a1f501637b628978c93be4d2be086
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Nov 8 13:10:49 2019 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Nov 8 15:12:51 2019 +0100
daemons: check for non-zero thread_id
Do not call pthread_join if thread_id would be 0.
---
libdaemon/server/daemon-server.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/libdaemon/server/daemon-server.c b/libdaemon/server/daemon-server.c
index aa9ff2a..9408440 100644
--- a/libdaemon/server/daemon-server.c
+++ b/libdaemon/server/daemon-server.c
@@ -560,7 +560,8 @@ static void _reap(daemon_state s, int waiting)
while (ts) {
if (waiting || !ts->active) {
- if ((errno = pthread_join(ts->client.thread_id, &rv)))
+ if (ts->client.thread_id &&
+ (errno = pthread_join(ts->client.thread_id, &rv)))
ERROR(&s, "pthread_join failed: %s", strerror(errno));
last->next = ts->next;
dm_free(ts);
4 years, 5 months
stable-2.02 - daemon: better error path handling for shutdown
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=e9b2148dab3a1f50163...
Commit: e9b2148dab3a1f501637b628978c93be4d2be086
Parent: 34bde8b6c7e517239a05334683a09f2b5075fdcc
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Nov 8 13:07:06 2019 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Nov 8 15:12:51 2019 +0100
daemon: better error path handling for shutdown
Report errors for open in better order.
Ensure descriptors are not leaked.
---
libdaemon/server/daemon-server.c | 25 +++++++++++++++++--------
1 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/libdaemon/server/daemon-server.c b/libdaemon/server/daemon-server.c
index 51e5866..aa9ff2a 100644
--- a/libdaemon/server/daemon-server.c
+++ b/libdaemon/server/daemon-server.c
@@ -513,20 +513,23 @@ 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 || _shutdown_requested) {
- if (errno != EAGAIN || !_shutdown_requested)
+ if (client.socket_fd < 0) {
+ if (errno != EAGAIN)
ERROR(&s, "Failed to accept connection: %s.", strerror(errno));
- return 0;
+ goto bad;
+ }
+
+ if (_shutdown_requested) {
+ ERROR(&s, "Shutdown requested.");
+ goto bad;
}
- if (fcntl(client.socket_fd, F_SETFD, FD_CLOEXEC))
+ if (fcntl(client.socket_fd, F_SETFD, FD_CLOEXEC))
WARN(&s, "setting CLOEXEC on client socket fd %d failed", client.socket_fd);
if (!(ts = dm_malloc(sizeof(thread_state)))) {
- if (close(client.socket_fd))
- perror("close");
ERROR(&s, "Failed to allocate thread state");
- return 0;
+ goto bad;
}
ts->next = s.threads->next;
@@ -538,10 +541,16 @@ static int _handle_connect(daemon_state s)
if ((errno = pthread_create(&ts->client.thread_id, NULL, _client_thread, ts))) {
ERROR(&s, "Failed to create client thread: %s.", strerror(errno));
- return 0;
+ ts->active = 0;
+ goto bad;
}
return 1;
+bad:
+ if ((client.socket_fd >= 0) && close(client.socket_fd))
+ perror("close");
+
+ return 0;
}
static void _reap(daemon_state s, int waiting)
4 years, 5 months
stable-2.02 - lvmcache: free resource on error path
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=34bde8b6c7e517239a0...
Commit: 34bde8b6c7e517239a05334683a09f2b5075fdcc
Parent: f90c3d69cedf94fa094bc71cc98376d58d970223
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Nov 8 12:51:48 2019 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Nov 8 15:11:50 2019 +0100
lvmcache: free resource on error path
Free allocated svg on error path.
Also explicitely ignore dm_strncpy() result.
(We know it will end with failure here.)
---
lib/cache/lvmcache.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/lib/cache/lvmcache.c b/lib/cache/lvmcache.c
index 9890325..c12ec2b 100644
--- a/lib/cache/lvmcache.c
+++ b/lib/cache/lvmcache.c
@@ -325,10 +325,12 @@ void lvmcache_save_vg(struct volume_group *vg, int precommitted)
dm_list_init(&svg->saved_vg_to_free);
- dm_strncpy(svg->vgid, (const char *)vg->id.uuid, sizeof(svg->vgid));
+ /* Ignore result code, size we intentionally short-cut & pad with 0 */
+ (void) dm_strncpy(svg->vgid, (const char *)vg->id.uuid, sizeof(svg->vgid));
if (!dm_hash_insert(_saved_vg_hash, svg->vgid, svg)) {
log_error("lvmcache: failed to insert saved_vg %s", svg->vgid);
+ dm_free(svg);
return;
}
} else {
4 years, 5 months
stable-2.02 - cov: ensure read_ahead is available
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=f90c3d69cedf94fa094...
Commit: f90c3d69cedf94fa094bc71cc98376d58d970223
Parent: 67bdae069751e4779e738283e3d8a5873622bfc0
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Nov 1 21:01:51 2019 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Nov 8 13:04:45 2019 +0100
cov: ensure read_ahead is available
Make sure read_ahead pointer is not NULL when quering for RA.
---
lib/activate/dev_manager.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/lib/activate/dev_manager.c b/lib/activate/dev_manager.c
index feec861..7acb3e9 100644
--- a/lib/activate/dev_manager.c
+++ b/lib/activate/dev_manager.c
@@ -270,7 +270,7 @@ static int _info_run(const char *dlid, struct dm_info *dminfo,
(strcmp(name_check, devname) != 0))
dminfo->exists = 0; /* mismatching name -> device does not exist */
- if (with_read_ahead && dminfo->exists) {
+ if (with_read_ahead && read_ahead && dminfo->exists) {
if (!dm_task_get_read_ahead(dmt, read_ahead))
goto_out;
} else if (read_ahead)
4 years, 5 months
stable-2.02 - cov: missing checks of syscalls
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=67bdae069751e4779e7...
Commit: 67bdae069751e4779e738283e3d8a5873622bfc0
Parent: 50fb24f5c208ff9b89b80a1f7aa32dcdafd98e12
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Nov 1 20:25:39 2019 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Nov 8 13:04:02 2019 +0100
cov: missing checks of syscalls
Check for sigaction,sigprocmask,pthread_sigmask errors
---
daemons/clvmd/clvmd.c | 10 ++++++----
libdaemon/server/daemon-server.c | 9 ++++++---
tools/toollib.c | 3 ++-
3 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/daemons/clvmd/clvmd.c b/daemons/clvmd/clvmd.c
index 829c5e5..e1d8a79 100644
--- a/daemons/clvmd/clvmd.c
+++ b/daemons/clvmd/clvmd.c
@@ -887,7 +887,8 @@ static void main_loop(int cmd_timeout)
sigemptyset(&ss);
sigaddset(&ss, SIGINT);
sigaddset(&ss, SIGTERM);
- pthread_sigmask(SIG_UNBLOCK, &ss, NULL);
+ if (pthread_sigmask(SIG_UNBLOCK, &ss, NULL))
+ log_warn("WARNING: Failed to unblock SIGCHLD.");
/* Main loop */
while (!quit) {
fd_set in;
@@ -1731,11 +1732,12 @@ static __attribute__ ((noreturn)) void *pre_and_post_thread(void *arg)
SIGUSR2 (kills subthreads) */
sigemptyset(&ss);
sigaddset(&ss, SIGUSR1);
- pthread_sigmask(SIG_BLOCK, &ss, NULL);
-
+ if (pthread_sigmask(SIG_BLOCK, &ss, NULL))
+ log_warn("WARNING: Failed to block SIGUSR1.");
sigdelset(&ss, SIGUSR1);
sigaddset(&ss, SIGUSR2);
- pthread_sigmask(SIG_UNBLOCK, &ss, NULL);
+ if (pthread_sigmask(SIG_UNBLOCK, &ss, NULL))
+ log_warn("WARNING: Failed to unblock SIGUSR2.");
/* Loop around doing PRE and POST functions until the client goes away */
while (!client->bits.localsock.finished) {
diff --git a/libdaemon/server/daemon-server.c b/libdaemon/server/daemon-server.c
index 62f403a..51e5866 100644
--- a/libdaemon/server/daemon-server.c
+++ b/libdaemon/server/daemon-server.c
@@ -663,14 +663,17 @@ void daemon_start(daemon_state s)
FD_SET(s.socket_fd, &in);
_reap(s, 0);
- sigprocmask(SIG_SETMASK, &new_set, NULL);
+ if (sigprocmask(SIG_SETMASK, &new_set, NULL))
+ perror("sigprocmask error");
if (_shutdown_requested && !s.threads->next) {
- sigprocmask(SIG_SETMASK, &old_set, NULL);
+ if (sigprocmask(SIG_SETMASK, &old_set, NULL))
+ perror("sigprocmask error");
INFO(&s, "%s shutdown requested", s.name);
break;
}
ret = pselect(s.socket_fd + 1, &in, NULL, NULL, _get_timeout(s), &old_set);
- sigprocmask(SIG_SETMASK, &old_set, NULL);
+ if (sigprocmask(SIG_SETMASK, &old_set, NULL))
+ perror("sigprocmask error");
if (ret < 0) {
if (errno != EINTR && errno != EAGAIN &&
diff --git a/tools/toollib.c b/tools/toollib.c
index 42179d9..0c1c095 100644
--- a/tools/toollib.c
+++ b/tools/toollib.c
@@ -59,7 +59,8 @@ int become_daemon(struct cmd_context *cmd, int skip_lvm)
log_verbose("Forking background process from command: %s", cmd->cmd_line);
- sigaction(SIGCHLD, &act, NULL);
+ if (sigaction(SIGCHLD, &act, NULL))
+ log_warn("WARNING: Failed to set SIGCHLD action.");
if (!skip_lvm)
if (!sync_local_dev_names(cmd)) { /* Flush ops and reset dm cookie */
4 years, 5 months
stable-2.02 - gcc: avoid declartion shadowing
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=50fb24f5c208ff9b89b...
Commit: 50fb24f5c208ff9b89b80a1f7aa32dcdafd98e12
Parent: ffd959d2c0c1a5108e91efa77ac06d185fd8edb6
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Nov 1 19:35:28 2019 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Nov 8 13:03:20 2019 +0100
gcc: avoid declartion shadowing
dev_name is global in device.h
---
lib/activate/dev_manager.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/activate/dev_manager.c b/lib/activate/dev_manager.c
index 317a2a7..feec861 100644
--- a/lib/activate/dev_manager.c
+++ b/lib/activate/dev_manager.c
@@ -251,7 +251,7 @@ static int _info_run(const char *dlid, struct dm_info *dminfo,
void *target = NULL;
uint64_t target_start, target_length, start, length;
char *target_name, *target_params;
- const char *dev_name;
+ const char *devname;
if (seg_status) {
dmtask = DM_DEVICE_STATUS;
@@ -266,8 +266,8 @@ static int _info_run(const char *dlid, struct dm_info *dminfo,
return_0;
if (name_check && dminfo->exists &&
- (dev_name = dm_task_get_name(dmt)) &&
- (strcmp(name_check, dev_name) != 0))
+ (devname = dm_task_get_name(dmt)) &&
+ (strcmp(name_check, devname) != 0))
dminfo->exists = 0; /* mismatching name -> device does not exist */
if (with_read_ahead && dminfo->exists) {
4 years, 5 months
stable-2.02 - man: adjust 'disks' to 'devices' as used throughout
by Heinz Mauelshagen
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=ffd959d2c0c1a5108e9...
Commit: ffd959d2c0c1a5108e91efa77ac06d185fd8edb6
Parent: 343d80a7fe883d84aaa27f0a6960a20fa20ce790
Author: Heinz Mauelshagen <heinzm(a)redhat.com>
AuthorDate: Thu Nov 7 17:47:35 2019 +0100
Committer: Heinz Mauelshagen <heinzm(a)redhat.com>
CommitterDate: Thu Nov 7 17:47:35 2019 +0100
man: adjust 'disks' to 'devices' as used throughout
---
man/lvmraid.7_main | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/man/lvmraid.7_main b/man/lvmraid.7_main
index c27f1fa..151771b 100644
--- a/man/lvmraid.7_main
+++ b/man/lvmraid.7_main
@@ -1688,7 +1688,7 @@ raid6_ls_6
RAID6 N continue
.br
\[bu]
-Same as raid5_ls for N-1 disks with fixed Q-Syndrome N
+Same as raid5_ls for N-1 devices with fixed Q-Syndrome N
.br
\[bu]
Used for RAID Takeover
@@ -1699,7 +1699,7 @@ raid6_la_6
RAID6 N continue
.br
\[bu]
-Same as raid5_la for N-1 disks with fixed Q-Syndrome N
+Same as raid5_la for N-1 devices with fixed Q-Syndrome N
.br
\[bu]
Used forRAID Takeover
@@ -1710,7 +1710,7 @@ raid6_rs_6
RAID6 N continue
.br
\[bu]
-Same as raid5_rs for N-1 disks with fixed Q-Syndrome N
+Same as raid5_rs for N-1 devices with fixed Q-Syndrome N
.br
\[bu]
Used for RAID Takeover
@@ -1721,7 +1721,7 @@ raid6_ra_6
RAID6 N continue
.br
\[bu]
-Same as raid5_ra for N-1 disks with fixed Q-Syndrome N
+Same as raid5_ra for N-1 devices with fixed Q-Syndrome N
.br
\[bu]
Used for RAID Takeover
4 years, 5 months
master - man: adjust 'disks' to 'devices' as used throughout
by Heinz Mauelshagen
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=e184f77109d973297fa...
Commit: e184f77109d973297fa80edaa8dca7447b64b40e
Parent: 8263e62b00959c2bef18dff7821b242aefd5547f
Author: Heinz Mauelshagen <heinzm(a)redhat.com>
AuthorDate: Thu Nov 7 17:45:37 2019 +0100
Committer: Heinz Mauelshagen <heinzm(a)redhat.com>
CommitterDate: Thu Nov 7 17:45:37 2019 +0100
man: adjust 'disks' to 'devices' as used throughout
---
man/lvmraid.7_main | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/man/lvmraid.7_main b/man/lvmraid.7_main
index c27f1fa..498de90 100644
--- a/man/lvmraid.7_main
+++ b/man/lvmraid.7_main
@@ -1688,7 +1688,7 @@ raid6_ls_6
RAID6 N continue
.br
\[bu]
-Same as raid5_ls for N-1 disks with fixed Q-Syndrome N
+Same as raid5_ls for N-1 devices with fixed Q-Syndrome N
.br
\[bu]
Used for RAID Takeover
@@ -1699,7 +1699,7 @@ raid6_la_6
RAID6 N continue
.br
\[bu]
-Same as raid5_la for N-1 disks with fixed Q-Syndrome N
+Same as raid5_la for N-1 devices with fixed Q-Syndrome N
.br
\[bu]
Used forRAID Takeover
@@ -1710,7 +1710,7 @@ raid6_rs_6
RAID6 N continue
.br
\[bu]
-Same as raid5_rs for N-1 disks with fixed Q-Syndrome N
+Same as raid5_rs for N-1 devices with fixed Q-Syndrome N
.br
\[bu]
Used for RAID Takeover
@@ -1721,7 +1721,7 @@ raid6_ra_6
RAID6 N continue
.br
\[bu]
-Same as raid5_ra for N-1 disks with fixed Q-Syndrome N
+ame as raid5_ra for N-1 devices with fixed Q-Syndrome N
.br
\[bu]
Used for RAID Takeover
4 years, 5 months