master - cov: looks like cut&paste error
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=a355aeb17a4fda7fab7...
Commit: a355aeb17a4fda7fab76a2c85bdc7ff03159424a
Parent: 8db2527c6edec81d3b90d30384e32784ab2ec687
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Dec 21 20:22:55 2018 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Dec 21 21:45:08 2018 +0100
cov: looks like cut&paste error
Fua and nofua code path should have different compares.
---
tools/lvconvert.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/tools/lvconvert.c b/tools/lvconvert.c
index baabb00..b63dc34 100644
--- a/tools/lvconvert.c
+++ b/tools/lvconvert.c
@@ -5292,7 +5292,7 @@ static int _get_one_writecache_setting(struct cmd_context *cmd, struct writecach
}
if (!strncmp(key, "nofua", strlen("nofua"))) {
- if (settings->nofua_set) {
+ if (settings->fua_set) {
log_error("Setting fua and nofua cannot both be set.");
return 0;
}
5 years, 4 months
master - cov: ensure lock_type is not NULL
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=8db2527c6edec81d3b9...
Commit: 8db2527c6edec81d3b90d30384e32784ab2ec687
Parent: e2c017fdace76f0c03f43e3e435ae8a72d6bb15f
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Dec 21 20:04:35 2018 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Dec 21 21:45:08 2018 +0100
cov: ensure lock_type is not NULL
---
tools/vgchange.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/tools/vgchange.c b/tools/vgchange.c
index 0f9241c..bbdf2e4 100644
--- a/tools/vgchange.c
+++ b/tools/vgchange.c
@@ -818,7 +818,7 @@ static int _vgchange_locktype(struct cmd_context *cmd, struct volume_group *vg)
int lv_lock_count = 0;
/* Special recovery case. */
- if (lockopt && !strcmp(lock_type, "none") && !strcmp(lockopt, "force")) {
+ if (lock_type && lockopt && !strcmp(lock_type, "none") && !strcmp(lockopt, "force")) {
vg->status &= ~CLUSTERED;
vg->lock_type = "none";
vg->lock_args = NULL;
@@ -867,7 +867,7 @@ static int _vgchange_locktype(struct cmd_context *cmd, struct volume_group *vg)
}
/* clvm to none */
- if (!strcmp(vg->lock_type, "clvm") && !strcmp(lock_type, "none")) {
+ if (lock_type && !strcmp(vg->lock_type, "clvm") && !strcmp(lock_type, "none")) {
vg->status &= ~CLUSTERED;
vg->lock_type = "none";
return 1;
@@ -963,7 +963,7 @@ static int _vgchange_locktype(struct cmd_context *cmd, struct volume_group *vg)
}
/* ... to none */
- if (!strcmp(lock_type, "none")) {
+ if (lock_type && !strcmp(lock_type, "none")) {
vg->lock_type = NULL;
vg->system_id = cmd->system_id ? dm_pool_strdup(vg->vgmem, cmd->system_id) : NULL;
return 1;
5 years, 4 months
master - mangenerator: check strdup was successfull
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=e2c017fdace76f0c03f...
Commit: e2c017fdace76f0c03f43e3e435ae8a72d6bb15f
Parent: 2724a09e586acb38a7fd9ce68223213a32aa37fc
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Dec 21 21:08:31 2018 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Dec 21 21:45:08 2018 +0100
mangenerator: check strdup was successfull
Check for strdup != NULL
and drop unneeded zeroing when buffer is overwritten.
---
tools/command.c | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/tools/command.c b/tools/command.c
index c994c39..6931e44 100644
--- a/tools/command.c
+++ b/tools/command.c
@@ -1460,11 +1460,10 @@ int define_commands(struct cmd_context *cmdtool, const char *run_name)
if (_is_desc_line(line_argv[0]) && !skip && cmd) {
char *desc = dm_pool_strdup(cmdtool->libmem, line_orig);
- if (cmd->desc) {
+ if (cmd->desc && desc) {
int newlen = strlen(cmd->desc) + strlen(desc) + 2;
char *newdesc = dm_pool_alloc(cmdtool->libmem, newlen);
if (newdesc) {
- memset(newdesc, 0, newlen);
snprintf(newdesc, newlen, "%s %s", cmd->desc, desc);
cmd->desc = newdesc;
} else {
5 years, 4 months
master - debug: tracing close errors
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=2724a09e586acb38a7f...
Commit: 2724a09e586acb38a7fd9ce68223213a32aa37fc
Parent: 095c9791caa01bbfc14ac5caef45c9c5ba05e721
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Dec 21 20:26:15 2018 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Dec 21 21:45:08 2018 +0100
debug: tracing close errors
---
lib/device/dev-type.c | 9 ++++++---
tools/pvscan.c | 3 ++-
2 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/lib/device/dev-type.c b/lib/device/dev-type.c
index d96f00b..638f4b2 100644
--- a/lib/device/dev-type.c
+++ b/lib/device/dev-type.c
@@ -58,15 +58,18 @@ int dev_is_pmem(struct device *dev)
if (!fgets(buffer, sizeof(buffer), fp)) {
log_warn("Failed to read %s.", path);
- fclose(fp);
+ if (fclose(fp))
+ log_sys_debug("fclose", path);
return 0;
} else if (sscanf(buffer, "%d", &is_pmem) != 1) {
log_warn("Failed to parse %s '%s'.", path, buffer);
- fclose(fp);
+ if (fclose(fp))
+ log_sys_debug("fclose", path);
return 0;
}
- fclose(fp);
+ if (fclose(fp))
+ log_sys_debug("fclose", path);
if (is_pmem) {
log_debug("%s is pmem", dev_name(dev));
diff --git a/tools/pvscan.c b/tools/pvscan.c
index 6841f20..3f3c745 100644
--- a/tools/pvscan.c
+++ b/tools/pvscan.c
@@ -291,7 +291,8 @@ static int _online_pvid_file_create(struct device *dev)
if (rv < 0) {
log_error("Failed to write fd %d buf %s dev %s to %s: %d",
fd, buf, dev_name(dev), path, errno);
- close(fd);
+ if (close(fd))
+ log_sys_debug("close", path);
return 0;
}
len -= rv;
5 years, 4 months
master - debug: drop some extra backtraces
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=095c9791caa01bbfc14...
Commit: 095c9791caa01bbfc14ac5caef45c9c5ba05e721
Parent: 82f66834ef779414cd2c5cb258d9a45580c07009
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Dec 21 20:24:56 2018 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Dec 21 21:45:08 2018 +0100
debug: drop some extra backtraces
Unneeded tracking after log_*.
---
tools/lvconvert.c | 10 +++++-----
1 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/tools/lvconvert.c b/tools/lvconvert.c
index 17d7454..baabb00 100644
--- a/tools/lvconvert.c
+++ b/tools/lvconvert.c
@@ -2423,7 +2423,7 @@ static int _lvconvert_cache_repair(struct cmd_context *cmd,
if (lv_is_cache(cache_lv) && lv_is_cache_single(first_seg(cache_lv)->pool_lv)) {
log_error("Manual repair required.");
- return_0;
+ return 0;
}
pool_lv = lv_is_cache_pool(cache_lv) ? cache_lv : first_seg(cache_lv)->pool_lv;
@@ -5283,7 +5283,7 @@ static int _get_one_writecache_setting(struct cmd_context *cmd, struct writecach
if (!strncmp(key, "fua", strlen("fua"))) {
if (settings->nofua_set) {
log_error("Setting fua and nofua cannot both be set.");
- return_0;
+ return 0;
}
if (sscanf(val, "%u", &settings->fua) != 1)
goto_bad;
@@ -5294,7 +5294,7 @@ static int _get_one_writecache_setting(struct cmd_context *cmd, struct writecach
if (!strncmp(key, "nofua", strlen("nofua"))) {
if (settings->nofua_set) {
log_error("Setting fua and nofua cannot both be set.");
- return_0;
+ return 0;
}
if (sscanf(val, "%u", &settings->nofua) != 1)
goto_bad;
@@ -5310,7 +5310,7 @@ static int _get_one_writecache_setting(struct cmd_context *cmd, struct writecach
log_warn("Unrecognized writecache setting \"%s\" may cause activation failure.", key);
if (yes_no_prompt("Use unrecognized writecache setting? [y/n]: ") == 'n') {
log_error("Aborting writecache conversion.");
- return_0;
+ return 0;
}
log_warn("Using unrecognized writecache setting: %s = %s.", key, val);
@@ -5356,7 +5356,7 @@ static int _get_writecache_settings(struct cmd_context *cmd, struct writecache_s
if (sscanf(str + pos, " %63[^=]=%63s %n", key, val, &num) != 2) {
log_error("Invalid setting at: %s", str+pos);
- return_0;
+ return 0;
}
pos += num;
5 years, 4 months
master - lvconvert: writecache fix return code
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=65cb8efd16f636a42f6...
Commit: 65cb8efd16f636a42f6ce13b29d86298f10667aa
Parent: fb85d5d02478a34ab6648bdbdf09a931176dee71
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Dec 21 20:49:36 2018 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Dec 21 21:42:30 2018 +0100
lvconvert: writecache fix return code
Detach function return 0 for error and 1 for success.
Add missing log errors from failing deactivation.
Add missing log error from failing synchronization.
---
tools/lvconvert.c | 19 +++++++++++--------
1 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/tools/lvconvert.c b/tools/lvconvert.c
index f6f94c0..17d7454 100644
--- a/tools/lvconvert.c
+++ b/tools/lvconvert.c
@@ -5165,7 +5165,7 @@ static int _lvconvert_detach_writecache(struct cmd_context *cmd,
}
if (!archive(lv->vg))
- goto_bad;
+ return_0;
/*
* Activate LV internally since the LV needs to be active to flush.
@@ -5180,17 +5180,23 @@ static int _lvconvert_detach_writecache(struct cmd_context *cmd,
return 0;
}
- sync_local_dev_names(cmd);
+ if (!sync_local_dev_names(cmd)) {
+ log_error("Failed to sync local devices before detaching LV %s.",
+ display_lvname(lv));
+ return 0;
+ }
if (!lv_writecache_message(lv, "flush")) {
log_error("Failed to flush writecache for %s.", display_lvname(lv));
- deactivate_lv(cmd, lv);
+ if (!deactivate_lv(cmd, lv))
+ log_error("Failed to deactivate %s.", display_lvname(lv));
return 0;
}
if (!_get_writecache_kernel_error(cmd, lv, &kernel_error)) {
log_error("Failed to get writecache error status for %s.", display_lvname(lv));
- deactivate_lv(cmd, lv);
+ if (!deactivate_lv(cmd, lv))
+ log_error("Failed to deactivate %s.", display_lvname(lv));
return 0;
}
@@ -5219,10 +5225,7 @@ static int _lvconvert_detach_writecache(struct cmd_context *cmd,
log_print_unless_silent("Logical volume %s write cache has been detached.",
display_lvname(lv));
- return ECMD_PROCESSED;
-bad:
- return ECMD_FAILED;
-
+ return 1;
}
static int _get_one_writecache_setting(struct cmd_context *cmd, struct writecache_settings *settings,
5 years, 4 months
master - bcache: fix memory leak on error path
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=82f66834ef779414cd2...
Commit: 82f66834ef779414cd2c5cb258d9a45580c07009
Parent: a13fa75d8e89d2eb88a707e35ba472b7d6189d07
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Dec 21 21:01:18 2018 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Dec 21 21:45:03 2018 +0100
bcache: fix memory leak on error path
Coverity noticed missing free of io struct on error path.
---
WHATS_NEW | 1 +
lib/device/bcache.c | 1 +
2 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index 1bebff6..3fe1f3e 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.03.02 -
===================================
+ Fix memleak on bcache error path code.
Fix missing unlock on lvm2 dmeventd plugin error path initialization.
Improve Makefile dependency tracking.
Move VDO support towards V2 target (6.2) support.
diff --git a/lib/device/bcache.c b/lib/device/bcache.c
index d646d2b..7b09353 100644
--- a/lib/device/bcache.c
+++ b/lib/device/bcache.c
@@ -409,6 +409,7 @@ static bool _sync_issue(struct io_engine *ioe, enum dir d, int fd,
(unsigned long long)offset,
(unsigned long long)nbytes,
(unsigned long long)_last_byte_offset);
+ free(io);
return false;
}
5 years, 4 months
master - dmeventd: unlock lvm2 lock on error path
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=a13fa75d8e89d2eb88a...
Commit: a13fa75d8e89d2eb88a707e35ba472b7d6189d07
Parent: 65cb8efd16f636a42f6ce13b29d86298f10667aa
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Dec 21 21:29:05 2018 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Dec 21 21:43:36 2018 +0100
dmeventd: unlock lvm2 lock on error path
New code missed to unlock locked lvm2 on error path when
command is not configured.
---
WHATS_NEW | 1 +
daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c | 1 +
2 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index 1a9c521..1bebff6 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.03.02 -
===================================
+ Fix missing unlock on lvm2 dmeventd plugin error path initialization.
Improve Makefile dependency tracking.
Move VDO support towards V2 target (6.2) support.
Fix missing proper initialization of pv_list struct when adding pv.
diff --git a/daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c b/daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c
index 95ec360..04bc899 100644
--- a/daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c
+++ b/daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c
@@ -159,6 +159,7 @@ int dmeventd_lvm2_command(struct dm_pool *mem, char *buffer, size_t size,
dmeventd_lvm2_lock();
if (!dmeventd_lvm2_run(cmd) ||
!(env = getenv(cmd))) {
+ dmeventd_lvm2_unlock();
log_error("Unable to find configured command.");
return 0;
}
5 years, 4 months
master - lvconvert: use standard wiping code
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=fb85d5d02478a34ab66...
Commit: fb85d5d02478a34ab6648bdbdf09a931176dee71
Parent: 9830aa207c192d6d25d6a7ab2d7186eb91b043b9
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Dec 21 20:39:39 2018 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Dec 21 21:42:30 2018 +0100
lvconvert: use standard wiping code
---
tools/lvconvert.c | 48 +-----------------------------------------------
1 files changed, 1 insertions(+), 47 deletions(-)
diff --git a/tools/lvconvert.c b/tools/lvconvert.c
index c260ee0..f6f94c0 100644
--- a/tools/lvconvert.c
+++ b/tools/lvconvert.c
@@ -5225,52 +5225,6 @@ bad:
}
-static int _writecache_zero(struct cmd_context *cmd, struct logical_volume *lv)
-{
- struct device *dev;
- char name[PATH_MAX];
- int ret = 0;
-
- if (!activate_lv(cmd, lv)) {
- log_error("Failed to activate LV %s for zeroing.", lv->name);
- return 0;
- }
-
- sync_local_dev_names(cmd);
-
- if (dm_snprintf(name, sizeof(name), "%s%s/%s",
- cmd->dev_dir, lv->vg->name, lv->name) < 0) {
- log_error("Name too long - device not cleared (%s)", lv->name);
- goto out;
- }
-
- if (!(dev = dev_cache_get(cmd, name, NULL))) {
- log_error("%s: not found: device not zeroed", name);
- goto out;
- }
-
- if (!label_scan_open(dev)) {
- log_error("Failed to open %s/%s for zeroing.", lv->vg->name, lv->name);
- goto out;
- }
-
- if (!dev_write_zeros(dev, UINT64_C(0), (size_t) 1 << SECTOR_SHIFT))
- goto_out;
-
- log_debug("Zeroed the first sector of %s", lv->name);
-
- label_scan_invalidate(dev);
-
- ret = 1;
-out:
- if (!deactivate_lv(cmd, lv)) {
- log_error("Failed to deactivate LV %s for zeroing.", lv->name);
- ret = 0;
- }
-
- return ret;
-}
-
static int _get_one_writecache_setting(struct cmd_context *cmd, struct writecache_settings *settings,
char *key, char *val, uint32_t *block_size_sectors)
{
@@ -5513,7 +5467,7 @@ static int _lvconvert_writecache_attach_single(struct cmd_context *cmd,
* writecache block_size value matching the sector size of lv.
*/
- if (!_writecache_zero(cmd, lv_fast)) {
+ if (!activate_and_wipe_lv(lv_fast, 0)) {
log_error("LV %s could not be zeroed.", display_lvname(lv_fast));
return 0;
}
5 years, 4 months
master - cleanup: missing copyright header
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=9830aa207c192d6d25d...
Commit: 9830aa207c192d6d25d6a7ab2d7186eb91b043b9
Parent: 3750b0cff5ab1c41076afdf8275e3fa20aa756d0
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Dec 21 12:58:03 2018 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Dec 21 21:42:30 2018 +0100
cleanup: missing copyright header
---
scripts/generator-internals.c | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/scripts/generator-internals.c b/scripts/generator-internals.c
index 9919247..0929b78 100644
--- a/scripts/generator-internals.c
+++ b/scripts/generator-internals.c
@@ -1,3 +1,17 @@
+/*
+ * Copyright (C) 2018 Red Hat, Inc. All rights reserved.
+ *
+ * This file is part of the device-mapper userspace tools.
+ *
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU General Public License v.2.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
// This file contains the unit testable parts of
// lvm2_activation_generator_systemd_red_hat
5 years, 4 months