master - fix spurios char
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=c7a89323f53c79...
Commit: c7a89323f53c791e907478a7338a1bdbbb151fe1
Parent: 4ebdfcfb596bc2611c8b54d46c0a4ce6cc05ba9f
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Thu Mar 27 13:49:24 2014 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Thu Mar 27 13:49:24 2014 +0100
fix spurios char
Mistyped char left in code.
---
lib/metadata/lv_manip.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
index e5ab4f7..7f042e3 100644
--- a/lib/metadata/lv_manip.c
+++ b/lib/metadata/lv_manip.c
@@ -3232,7 +3232,7 @@ static int _rename_sub_lv(struct logical_volume *lv,
return 0;
}
- if (!validate_name(new_name)) { *
+ if (!validate_name(new_name)) {
log_error("Cannot rename \"%s\". New logical volume name \"%s\" is invalid.",
lv->name, new_name);
return 0;
8 years, 10 months
master - tests: more pvchange options examined
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=4ebdfcfb596bc2...
Commit: 4ebdfcfb596bc2611c8b54d46c0a4ce6cc05ba9f
Parent: 04a6918518d9c74b761a5ca74e8f67cf2b170d71
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Thu Mar 27 11:23:08 2014 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Thu Mar 27 13:13:22 2014 +0100
tests: more pvchange options examined
---
test/shell/pvchange-usage.sh | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/test/shell/pvchange-usage.sh b/test/shell/pvchange-usage.sh
index d5a2ebb..8506747 100644
--- a/test/shell/pvchange-usage.sh
+++ b/test/shell/pvchange-usage.sh
@@ -30,8 +30,10 @@ do
# "vgchange disable/enable allocation for pvs with metadatacopies = $mda (bz452982)"
pvchange "$dev1" -x n
+ pvchange "$dev1" -x n # already disabled
check pv_field "$dev1" pv_attr ---
pvchange "$dev1" -x y
+ pvchange "$dev1" -x y # already enabled
check pv_field "$dev1" pv_attr a--
# 'remove pv'
@@ -46,6 +48,13 @@ vgcreate $vg1 "$dev1" "$dev2"
pvchange -u "$dev1"
pvchange -u "$dev2"
check pvlv_counts $vg1 2 0 0
+
+# -a needs more params
+not pvchange -a
+# -a is searching for devs, so passing it some is error
+not pvchange -a "$dev1"
+not pvchange -u "$dev1-notfound"
+
pvchange -u --all
check pvlv_counts $vg1 2 0 0
8 years, 10 months
master - tests: cover more commands
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=04a6918518d9c7...
Commit: 04a6918518d9c74b761a5ca74e8f67cf2b170d71
Parent: fc8185601d09d7a9725f3519f9acf5f43e40f844
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Thu Mar 27 11:22:23 2014 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Thu Mar 27 13:13:09 2014 +0100
tests: cover more commands
Visit more code lines.
---
test/shell/covercmd.sh | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/test/shell/covercmd.sh b/test/shell/covercmd.sh
index 06a9082..e5773ad 100644
--- a/test/shell/covercmd.sh
+++ b/test/shell/covercmd.sh
@@ -123,6 +123,10 @@ pvresize "$dev1"
# test various errors and obsoleted tools
not lvmchange
+not lvmsadc
+not lvmsar
+not pvdata
+
not lvrename $vg
not lvrename $vg-xxx
not lvrename $vg $vg/$lv-rename $vg/$lv
8 years, 10 months
master - cleanup: indent change
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=fc8185601d09d7...
Commit: fc8185601d09d7a9725f3519f9acf5f43e40f844
Parent: 5076456a735163243a8593870fed44fb0cc1c20e
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Wed Mar 26 21:01:47 2014 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Thu Mar 27 13:13:09 2014 +0100
cleanup: indent change
---
lib/metadata/merge.c | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/lib/metadata/merge.c b/lib/metadata/merge.c
index f6a14a8..146034f 100644
--- a/lib/metadata/merge.c
+++ b/lib/metadata/merge.c
@@ -231,8 +231,7 @@ int check_lv_segments(struct logical_volume *lv, int complete_vg)
(seg->chunk_size > DM_THIN_MAX_DATA_BLOCK_SIZE))) ||
(seg_is_cache_pool(seg) &&
((seg->chunk_size < DM_CACHE_MIN_DATA_BLOCK_SIZE) ||
- (seg->chunk_size > DM_CACHE_MAX_DATA_BLOCK_SIZE))))
-{
+ (seg->chunk_size > DM_CACHE_MAX_DATA_BLOCK_SIZE)))) {
log_error("LV %s: %spool segment %u has chunk size %u out of range.",
lv->name,
seg_is_thin_pool(seg) ?
8 years, 10 months
master - debug: avoid warning when compiled with valgrind
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=5076456a735163...
Commit: 5076456a735163243a8593870fed44fb0cc1c20e
Parent: 356fdda46d673015446e8a0410e9dfe7fa67c66e
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Thu Mar 27 11:21:05 2014 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Thu Mar 27 13:13:08 2014 +0100
debug: avoid warning when compiled with valgrind
Declare 'c' only when compiling without valgrind.
This cleans compiler warning about unused var when
compiled with valgrind pool support.
---
libdm/mm/dbg_malloc.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/libdm/mm/dbg_malloc.c b/libdm/mm/dbg_malloc.c
index a2a6b76..e26f05e 100644
--- a/libdm/mm/dbg_malloc.c
+++ b/libdm/mm/dbg_malloc.c
@@ -205,7 +205,6 @@ int dm_dump_memory_debug(void)
unsigned long tot = 0;
struct memblock *mb;
char str[32];
- size_t c;
if (_head)
log_very_verbose("You have a memory leak:");
@@ -218,6 +217,8 @@ int dm_dump_memory_debug(void)
*/
str[0] = '\0';
#else
+ size_t c;
+
for (c = 0; c < sizeof(str) - 1; c++) {
if (c >= mb->length)
str[c] = ' ';
8 years, 10 months
master - lv_manip: drop cmd pointer from for_each_sub_lv
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=356fdda46d6730...
Commit: 356fdda46d673015446e8a0410e9dfe7fa67c66e
Parent: 22579b4451b00b50ad7e6acacf9265fa41620449
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Thu Mar 27 10:35:07 2014 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Thu Mar 27 13:10:13 2014 +0100
lv_manip: drop cmd pointer from for_each_sub_lv
Drop unused passed cmd pointer from function.
TODO:
We have two similar functions (though not identical)
lv_manip.c: for_each_sub_lv()
metadata.c: _lv_each_dependency()
They seem to not always match - we should probably convert
to use only a single function.
---
WHATS_NEW | 1 +
lib/activate/activate.c | 4 +-
lib/metadata/lv_manip.c | 51 +++++++++++++++++++++-------------------------
lib/metadata/metadata.h | 5 +--
4 files changed, 28 insertions(+), 33 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index 71b074a..9cda1d5 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.106 -
====================================
+ Drop unused cmd pointer for internal function for_each_sub_lv().
Validate name for renamed sub LVs.
When lvrename fails on argument parsing return invalid cmd line error (5->3).
Fix exit code regression in failing pvchange command (2.02.66).
diff --git a/lib/activate/activate.c b/lib/activate/activate.c
index ff13fe4..2fd1840 100644
--- a/lib/activate/activate.c
+++ b/lib/activate/activate.c
@@ -1795,7 +1795,7 @@ struct detached_lv_data {
int *flush_required;
};
-static int _preload_detached_lv(struct cmd_context *cmd, struct logical_volume *lv, void *data)
+static int _preload_detached_lv(struct logical_volume *lv, void *data)
{
struct detached_lv_data *detached = data;
struct lv_list *lvl_pre;
@@ -1897,7 +1897,7 @@ static int _lv_suspend(struct cmd_context *cmd, const char *lvid_s,
detached.laopts = laopts;
detached.flush_required = &flush_required;
- if (!for_each_sub_lv(cmd, ondisk_lv, &_preload_detached_lv, &detached))
+ if (!for_each_sub_lv(ondisk_lv, &_preload_detached_lv, &detached))
goto_out;
/*
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
index ae0bef2..e5ab4f7 100644
--- a/lib/metadata/lv_manip.c
+++ b/lib/metadata/lv_manip.c
@@ -78,8 +78,7 @@ struct pv_and_int {
struct physical_volume *pv;
int *i;
};
-static int _lv_is_on_pv(struct cmd_context *cmd,
- struct logical_volume *lv, void *data)
+static int _lv_is_on_pv(struct logical_volume *lv, void *data)
{
int *is_on_pv = ((struct pv_and_int *)data)->i;
struct physical_volume *pv = ((struct pv_and_int *)data)->pv;
@@ -136,8 +135,8 @@ int lv_is_on_pv(struct logical_volume *lv, struct physical_volume *pv)
int is_on_pv = 0;
struct pv_and_int context = { pv, &is_on_pv };
- if (!_lv_is_on_pv(lv->vg->cmd, lv, &context) ||
- !for_each_sub_lv(lv->vg->cmd, lv, _lv_is_on_pv, &context))
+ if (!_lv_is_on_pv(lv, &context) ||
+ !for_each_sub_lv(lv, _lv_is_on_pv, &context))
/* Failure only happens if bad arguments are passed */
log_error(INTERNAL_ERROR "for_each_sub_lv failure.");
@@ -169,8 +168,7 @@ struct dm_list_and_mempool {
struct dm_list *list;
struct dm_pool *mem;
};
-static int _get_pv_list_for_lv(struct cmd_context *cmd,
- struct logical_volume *lv, void *data)
+static int _get_pv_list_for_lv(struct logical_volume *lv, void *data)
{
int dup_found;
uint32_t s;
@@ -233,10 +231,10 @@ int get_pv_list_for_lv(struct dm_pool *mem,
log_debug_metadata("Generating list of PVs that %s/%s uses:",
lv->vg->name, lv->name);
- if (!_get_pv_list_for_lv(lv->vg->cmd, lv, &context))
+ if (!_get_pv_list_for_lv(lv, &context))
return_0;
- return for_each_sub_lv(lv->vg->cmd, lv, &_get_pv_list_for_lv, &context);
+ return for_each_sub_lv(lv, &_get_pv_list_for_lv, &context);
}
/*
@@ -3197,8 +3195,7 @@ static int _rename_single_lv(struct logical_volume *lv, char *new_name)
* Rename sub LV.
* 'lv_name_old' and 'lv_name_new' are old and new names of the main LV.
*/
-static int _rename_sub_lv(struct cmd_context *cmd,
- struct logical_volume *lv,
+static int _rename_sub_lv(struct logical_volume *lv,
const char *lv_name_old, const char *lv_name_new)
{
const char *suffix;
@@ -3246,21 +3243,19 @@ static int _rename_sub_lv(struct cmd_context *cmd,
}
/* Callback for for_each_sub_lv */
-static int _rename_cb(struct cmd_context *cmd, struct logical_volume *lv,
- void *data)
+static int _rename_cb(struct logical_volume *lv, void *data)
{
struct lv_names *lv_names = (struct lv_names *) data;
- return _rename_sub_lv(cmd, lv, lv_names->old, lv_names->new);
+ return _rename_sub_lv(lv, lv_names->old, lv_names->new);
}
/*
* Loop down sub LVs and call fn for each.
* fn is responsible to log necessary information on failure.
*/
-int for_each_sub_lv(struct cmd_context *cmd, struct logical_volume *lv,
- int (*fn)(struct cmd_context *cmd,
- struct logical_volume *lv, void *data),
+int for_each_sub_lv(struct logical_volume *lv,
+ int (*fn)(struct logical_volume *lv, void *data),
void *data)
{
struct logical_volume *org;
@@ -3268,33 +3263,33 @@ int for_each_sub_lv(struct cmd_context *cmd, struct logical_volume *lv,
uint32_t s;
if (lv_is_cow(lv) && lv_is_virtual_origin(org = origin_from_cow(lv))) {
- if (!fn(cmd, org, data))
+ if (!fn(org, data))
return_0;
- if (!for_each_sub_lv(cmd, org, fn, data))
+ if (!for_each_sub_lv(org, fn, data))
return_0;
}
dm_list_iterate_items(seg, &lv->segments) {
if (seg->log_lv) {
- if (!fn(cmd, seg->log_lv, data))
+ if (!fn(seg->log_lv, data))
return_0;
- if (!for_each_sub_lv(cmd, seg->log_lv, fn, data))
+ if (!for_each_sub_lv(seg->log_lv, fn, data))
return_0;
}
if (seg->metadata_lv) {
- if (!fn(cmd, seg->metadata_lv, data))
+ if (!fn(seg->metadata_lv, data))
return_0;
- if (!for_each_sub_lv(cmd, seg->metadata_lv, fn, data))
+ if (!for_each_sub_lv(seg->metadata_lv, fn, data))
return_0;
}
for (s = 0; s < seg->area_count; s++) {
if (seg_type(seg, s) != AREA_LV)
continue;
- if (!fn(cmd, seg_lv(seg, s), data))
+ if (!fn(seg_lv(seg, s), data))
return_0;
- if (!for_each_sub_lv(cmd, seg_lv(seg, s), fn, data))
+ if (!for_each_sub_lv(seg_lv(seg, s), fn, data))
return_0;
}
@@ -3305,9 +3300,9 @@ int for_each_sub_lv(struct cmd_context *cmd, struct logical_volume *lv,
for (s = 0; s < seg->area_count; s++) {
if (seg_metatype(seg, s) != AREA_LV)
continue;
- if (!fn(cmd, seg_metalv(seg, s), data))
+ if (!fn(seg_metalv(seg, s), data))
return_0;
- if (!for_each_sub_lv(cmd, seg_metalv(seg, s), fn, data))
+ if (!for_each_sub_lv(seg_metalv(seg, s), fn, data))
return_0;
}
}
@@ -3352,7 +3347,7 @@ int lv_rename_update(struct cmd_context *cmd, struct logical_volume *lv,
/* rename sub LVs */
lv_names.old = lv->name;
lv_names.new = new_name;
- if (!for_each_sub_lv(cmd, lv, _rename_cb, (void *) &lv_names))
+ if (!for_each_sub_lv(lv, _rename_cb, (void *) &lv_names))
return 0;
/* rename main LV */
@@ -5366,7 +5361,7 @@ struct logical_volume *insert_layer_for_lv(struct cmd_context *cmd,
if (strcmp(layer_suffix, "_tdata") == 0) {
lv_names.old = lv_where->name;
lv_names.new = layer_lv->name;
- if (!for_each_sub_lv(cmd, layer_lv, _rename_cb, (void *) &lv_names))
+ if (!for_each_sub_lv(layer_lv, _rename_cb, (void *) &lv_names))
return 0;
}
diff --git a/lib/metadata/metadata.h b/lib/metadata/metadata.h
index 83959bb..ed78cb6 100644
--- a/lib/metadata/metadata.h
+++ b/lib/metadata/metadata.h
@@ -429,9 +429,8 @@ int add_seg_to_segs_using_this_lv(struct logical_volume *lv, struct lv_segment *
int remove_seg_from_segs_using_this_lv(struct logical_volume *lv, struct lv_segment *seg);
struct lv_segment *get_only_segment_using_this_lv(struct logical_volume *lv);
-int for_each_sub_lv(struct cmd_context *cmd, struct logical_volume *lv,
- int (*fn)(struct cmd_context *cmd,
- struct logical_volume *lv, void *data),
+int for_each_sub_lv(struct logical_volume *lv,
+ int (*fn)(struct logical_volume *lv, void *data),
void *data);
int move_lv_segments(struct logical_volume *lv_to,
struct logical_volume *lv_from,
8 years, 10 months
master - lv_rename: validate renamed sublv
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=22579b4451b00b...
Commit: 22579b4451b00b50ad7e6acacf9265fa41620449
Parent: 28e4bf0b6dae2cad6bb996c0c87d41b256f59517
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Thu Mar 27 10:35:51 2014 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Thu Mar 27 13:06:23 2014 +0100
lv_rename: validate renamed sublv
Use proper vgmem memory pool for allocation of LV name in the vg
and check if new renamed LV is a valid name.
TODO: validation should really use also VG name, othewise we are not
able to tell "vgname-lvname" will be valid.
---
WHATS_NEW | 1 +
lib/metadata/lv_manip.c | 8 +++++++-
2 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index 007fb75..71b074a 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.106 -
====================================
+ Validate name for renamed sub LVs.
When lvrename fails on argument parsing return invalid cmd line error (5->3).
Fix exit code regression in failing pvchange command (2.02.66).
Include 'lvm dumpconfig --type missing' and '--type diff' output to lvmdump.
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
index 6e4ba71..ae0bef2 100644
--- a/lib/metadata/lv_manip.c
+++ b/lib/metadata/lv_manip.c
@@ -3225,7 +3225,7 @@ static int _rename_sub_lv(struct cmd_context *cmd,
* a new name for main LV is "lvol1"
*/
len = strlen(lv_name_new) + strlen(suffix) + 1;
- new_name = dm_pool_alloc(cmd->mem, len);
+ new_name = dm_pool_alloc(lv->vg->vgmem, len);
if (!new_name) {
log_error("Failed to allocate space for new name");
return 0;
@@ -3235,6 +3235,12 @@ static int _rename_sub_lv(struct cmd_context *cmd,
return 0;
}
+ if (!validate_name(new_name)) { *
+ log_error("Cannot rename \"%s\". New logical volume name \"%s\" is invalid.",
+ lv->name, new_name);
+ return 0;
+ }
+
/* Rename it */
return _rename_single_lv(lv, new_name);
}
8 years, 10 months
master - lvrename: fix exit code
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=28e4bf0b6dae2c...
Commit: 28e4bf0b6dae2cad6bb996c0c87d41b256f59517
Parent: 80fe100afa3bb2cbbc81bb4517a762159f0ebe65
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Thu Mar 27 12:24:35 2014 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Thu Mar 27 13:04:55 2014 +0100
lvrename: fix exit code
Return invalid cmd line (3) when error is detect on cmd line input.
Cmd failed (5) is used when command processing fails.
---
WHATS_NEW | 1 +
tools/lvrename.c | 10 ++++++----
2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index a9289b5..007fb75 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.106 -
====================================
+ When lvrename fails on argument parsing return invalid cmd line error (5->3).
Fix exit code regression in failing pvchange command (2.02.66).
Include 'lvm dumpconfig --type missing' and '--type diff' output to lvmdump.
Return failure when specifying negative size for pvresize.
diff --git a/tools/lvrename.c b/tools/lvrename.c
index 5b1f50b..dd66ba4 100644
--- a/tools/lvrename.c
+++ b/tools/lvrename.c
@@ -75,16 +75,18 @@ int lvrename(struct cmd_context *cmd, int argc, char **argv)
if (strlen(lv_name_new) > maxlen) {
log_error("New logical volume path exceeds maximum length "
"of %" PRIsize_t "!", maxlen);
- return ECMD_FAILED;
+ return EINVALID_CMD_LINE;
}
if (!*lv_name_new) {
log_error("New logical volume name may not be blank");
- return ECMD_FAILED;
+ return EINVALID_CMD_LINE;
}
- if (!apply_lvname_restrictions(lv_name_new))
- return_ECMD_FAILED;
+ if (!apply_lvname_restrictions(lv_name_new)) {
+ stack;
+ return EINVALID_CMD_LINE;
+ }
if (!validate_name(lv_name_new)) {
log_error("New logical volume name \"%s\" is invalid",
8 years, 10 months
master - pvchange: fix exit code regression
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=80fe100afa3bb2...
Commit: 80fe100afa3bb2cbbc81bb4517a762159f0ebe65
Parent: 2a93eba68e518fff7f0c16406b5a9e802d732e1d
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Thu Mar 27 11:27:42 2014 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Thu Mar 27 13:01:51 2014 +0100
pvchange: fix exit code regression
Commit 1a832398a7caa96faab2ccbac773cc4047c8f9c1 moved
some code from _pvchange_single() to main pvchange() and
introduced exit code regression as return codes have not
been properly changed, thus pvchange command exited
with '0' exit code, even though it has reported error.
Also there is a missing vg unlock in error path.
Fix it by counting the total number of expected calls before
checking for pvname and also unlock and relase vg when
pv is not found.
---
WHATS_NEW | 1 +
tools/pvchange.c | 3 ++-
2 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index e6fa1d7..a9289b5 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.106 -
====================================
+ Fix exit code regression in failing pvchange command (2.02.66).
Include 'lvm dumpconfig --type missing' and '--type diff' output to lvmdump.
Return failure when specifying negative size for pvresize.
Fix memory corruption in cmd context refresh if clvmd leaks opened device.
diff --git a/tools/pvchange.c b/tools/pvchange.c
index d2a3d9b..5c05db6 100644
--- a/tools/pvchange.c
+++ b/tools/pvchange.c
@@ -184,6 +184,7 @@ int pvchange(struct cmd_context *cmd, int argc, char **argv)
if (argc) {
log_verbose("Using physical volume(s) on command line");
for (; opt < argc; opt++) {
+ total++;
pv_name = argv[opt];
dm_unescape_colons_and_at_signs(pv_name, NULL, NULL);
vg_name = find_vgname_from_pvname(cmd, pv_name);
@@ -200,12 +201,12 @@ int pvchange(struct cmd_context *cmd, int argc, char **argv)
}
pvl = find_pv_in_vg(vg, pv_name);
if (!pvl || !pvl->pv) {
+ unlock_and_release_vg(cmd, vg, vg_name);
log_error("Unable to find %s in %s",
pv_name, vg_name);
continue;
}
- total++;
done += _pvchange_single(cmd, vg,
pvl->pv, NULL);
unlock_and_release_vg(cmd, vg, vg_name);
8 years, 10 months
master - cleanup: easier casting
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=2a93eba68e518f...
Commit: 2a93eba68e518fff7f0c16406b5a9e802d732e1d
Parent: 0499e87ace39997c64b33d27a65011b1b3c6cecc
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Wed Mar 26 14:02:31 2014 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Wed Mar 26 14:11:37 2014 +0100
cleanup: easier casting
Use 32bit for extent calcs.
Drop uneeded implicit case.
---
lib/display/display.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/display/display.c b/lib/display/display.c
index d2450dd..1846f90 100644
--- a/lib/display/display.c
+++ b/lib/display/display.c
@@ -828,14 +828,14 @@ void vgdisplay_full(const struct volume_group *vg)
(uint64_t) vg->extent_count * vg->extent_size));
log_print("PE Size %s",
- display_size(vg->cmd, (uint64_t) vg->extent_size));
+ display_size(vg->cmd, vg->extent_size));
log_print("Total PE %u", vg->extent_count);
log_print("Alloc PE / Size %u / %s",
vg->extent_count - vg->free_count,
display_size(vg->cmd,
- ((uint64_t) vg->extent_count - vg->free_count) *
+ (uint64_t) (vg->extent_count - vg->free_count) *
vg->extent_size));
log_print("Free PE / Size %u / %s", vg->free_count,
8 years, 10 months