diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2017-10-28 00:10:16 +0200 |
---|---|---|
committer | Zdenek Kabelac <zkabelac@redhat.com> | 2017-10-30 11:53:39 +0100 |
commit | 90ee7783b4c2b1b13122e6107cebeb28ca30326d (patch) | |
tree | 1324ee5c62a93abdb68f1b3214732e6abcc3e4e8 /tools/lvcreate.c | |
parent | 52fd66210b120bf1185fbbc91b6bc487d99dd33a (diff) | |
download | lvm2-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.c | 7 |
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; } |