summaryrefslogtreecommitdiff
path: root/tools/lvcreate.c
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2017-10-28 00:10:16 +0200
committerZdenek Kabelac <zkabelac@redhat.com>2017-10-30 11:53:39 +0100
commit90ee7783b4c2b1b13122e6107cebeb28ca30326d (patch)
tree1324ee5c62a93abdb68f1b3214732e6abcc3e4e8 /tools/lvcreate.c
parent52fd66210b120bf1185fbbc91b6bc487d99dd33a (diff)
downloadlvm2-90ee7783b4c2b1b13122e6107cebeb28ca30326d.tar.gz
pool: drop create spare on error path
When thin/cache pool creation fails and command created _pmspare, such volume is now removed on error path.
Diffstat (limited to 'tools/lvcreate.c')
-rw-r--r--tools/lvcreate.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/tools/lvcreate.c b/tools/lvcreate.c
index 09bbe10b7..7f86a3731 100644
--- a/tools/lvcreate.c
+++ b/tools/lvcreate.c
@@ -1579,6 +1579,7 @@ static int _lvcreate_single(struct cmd_context *cmd, const char *vg_name,
struct processing_params *pp = (struct processing_params *) handle->custom_handle;
struct lvcreate_params *lp = pp->lp;
struct lvcreate_cmdline_params *lcp = pp->lcp;
+ struct logical_volume *spare = vg->pool_metadata_spare_lv;
int ret = ECMD_FAILED;
if (!_read_activation_params(cmd, vg, lp))
@@ -1652,6 +1653,12 @@ static int _lvcreate_single(struct cmd_context *cmd, const char *vg_name,
ret = ECMD_PROCESSED;
out:
+ if (ret != ECMD_PROCESSED && !spare && vg->pool_metadata_spare_lv)
+ /* Remove created spare volume for failed pool creation */
+ if (!lvremove_single(cmd, vg->pool_metadata_spare_lv, NULL))
+ log_error("Removal of created spare volume failed. "
+ "Manual intervention required.");
+
return ret;
}