summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2014-10-22 13:38:47 +0200
committerZdenek Kabelac <zkabelac@redhat.com>2014-10-24 16:39:32 +0200
commit21798418fc81a232d00e5a93ce4071004e6f0fed (patch)
treedbbde8b32e9e5f38683ba4a36c58cae8a4a96f30
parenta330640063fed88616379e3c2e4e85b8e2e355b0 (diff)
downloadlvm2-21798418fc81a232d00e5a93ce4071004e6f0fed.tar.gz
cleanup: better stack tracing
Show proper backtrace on error path.
-rw-r--r--lib/metadata/lv_manip.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
index fe0eead38..5125412fb 100644
--- a/lib/metadata/lv_manip.c
+++ b/lib/metadata/lv_manip.c
@@ -7113,16 +7113,20 @@ static struct logical_volume *_lv_create_an_lv(struct volume_group *vg,
}
/* A virtual origin must be activated explicitly. */
- if (lp->voriginsize &&
- (!(origin_lv = _create_virtual_origin(cmd, vg, lv->name,
- lp->permission,
- lp->voriginextents)) ||
- !activate_lv_excl(cmd, origin_lv))) {
- log_error("Couldn't create virtual origin for LV %s",
- lv->name);
- if (origin_lv && !lv_remove(origin_lv))
+ if (lp->voriginsize) {
+ if (!(origin_lv = _create_virtual_origin(cmd, vg, lv->name,
+ lp->permission,
+ lp->voriginextents))) {
stack;
- goto deactivate_and_revert_new_lv;
+ goto deactivate_and_revert_new_lv;
+ }
+ if (!activate_lv_excl(cmd, origin_lv)) {
+ log_error("Couldn't get exclusive lock for virtual origin LV %s",
+ lv->name);
+ if (!lv_remove(origin_lv))
+ stack;
+ goto deactivate_and_revert_new_lv;
+ }
}
/*