[lvm-devel] [PATCH 2/4] Fix unlocking for vgrelease for error paths
Zdenek Kabelac
zkabelac at redhat.com
Thu Dec 10 12:53:58 UTC 2009
Signed-off-by: Zdenek Kabelac <zkabelac at redhat.com>
---
tools/pvresize.c | 8 ++++++--
tools/toollib.c | 6 +++---
2 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/tools/pvresize.c b/tools/pvresize.c
index 7a911ac..292e3cc 100644
--- a/tools/pvresize.c
+++ b/tools/pvresize.c
@@ -60,8 +60,12 @@ static int _pv_resize_single(struct cmd_context *cmd,
vg = vg_read_for_update(cmd, vg_name, NULL, 0);
- if (vg_read_error(vg))
- goto bad;
+ if (vg_read_error(vg)) {
+ vg_release(vg);
+ log_error("Unable to read volume group \"%s\".",
+ vg_name);
+ return 0;
+ }
if (!(pvl = find_pv_in_vg(vg, pv_name))) {
log_error("Unable to find \"%s\" in volume group \"%s\"",
diff --git a/tools/toollib.c b/tools/toollib.c
index 33daf30..fce399b 100644
--- a/tools/toollib.c
+++ b/tools/toollib.c
@@ -315,7 +315,7 @@ int process_each_lv(struct cmd_context *cmd, int argc, char **argv,
dm_pool_strdup(cmd->mem,
lv_name + 1))) {
log_error("strlist allocation failed");
- vg_release(vg);
+ unlock_and_release_vg(cmd, vg, vgname);
return ECMD_FAILED;
}
}
@@ -367,8 +367,8 @@ int process_each_segment_in_pv(struct cmd_context *cmd,
if (!(pvl = find_pv_in_vg(vg, pv_dev_name(pv)))) {
log_error("Unable to find %s in volume group %s",
pv_dev_name(pv), vg_name);
- vg_release(vg);
- return ECMD_FAILED;
+ unlock_and_release_vg(cmd, vg, vg_name);
+ return ECMD_FAILED;
}
pv = pvl->pv;
--
1.6.5.3
More information about the lvm-devel
mailing list