lvol: Remove blobstore on super blob creation/open error
Fixes github issue #929 Signed-off-by: Maciej Szwed <maciej.szwed@intel.com> Change-Id: I54f7dbed3b686bf85b7ead52d51ca86c525d2ca5 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/467327 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
592cbdfa15
commit
039b462d5a
@ -427,6 +427,11 @@ spdk_lvs_load(struct spdk_bs_dev *bs_dev, spdk_lvs_op_with_handle_complete cb_fn
|
||||
spdk_bs_load(bs_dev, &opts, _spdk_lvs_load_cb, req);
|
||||
}
|
||||
|
||||
static void
|
||||
_spdk_remove_bs_on_error_cb(void *cb_arg, int bserrno)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
_spdk_super_create_close_cb(void *cb_arg, int lvolerrno)
|
||||
{
|
||||
@ -436,6 +441,7 @@ _spdk_super_create_close_cb(void *cb_arg, int lvolerrno)
|
||||
if (lvolerrno < 0) {
|
||||
SPDK_ERRLOG("Lvol store init failed: could not close super blob\n");
|
||||
req->cb_fn(req->cb_arg, NULL, lvolerrno);
|
||||
spdk_bs_destroy(lvs->blobstore, _spdk_remove_bs_on_error_cb, NULL);
|
||||
_spdk_lvs_free(lvs);
|
||||
free(req);
|
||||
return;
|
||||
@ -455,6 +461,7 @@ _spdk_super_blob_set_cb(void *cb_arg, int lvolerrno)
|
||||
if (lvolerrno < 0) {
|
||||
req->cb_fn(req->cb_arg, NULL, lvolerrno);
|
||||
SPDK_ERRLOG("Lvol store init failed: could not set uuid for super blob\n");
|
||||
spdk_bs_destroy(lvs->blobstore, _spdk_remove_bs_on_error_cb, NULL);
|
||||
_spdk_lvs_free(lvs);
|
||||
free(req);
|
||||
return;
|
||||
@ -474,6 +481,7 @@ _spdk_super_blob_init_cb(void *cb_arg, int lvolerrno)
|
||||
if (lvolerrno < 0) {
|
||||
req->cb_fn(req->cb_arg, NULL, lvolerrno);
|
||||
SPDK_ERRLOG("Lvol store init failed: could not set super blob\n");
|
||||
spdk_bs_destroy(lvs->blobstore, _spdk_remove_bs_on_error_cb, NULL);
|
||||
_spdk_lvs_free(lvs);
|
||||
free(req);
|
||||
return;
|
||||
@ -495,6 +503,7 @@ _spdk_super_blob_create_open_cb(void *cb_arg, struct spdk_blob *blob, int lvoler
|
||||
if (lvolerrno < 0) {
|
||||
req->cb_fn(req->cb_arg, NULL, lvolerrno);
|
||||
SPDK_ERRLOG("Lvol store init failed: could not open super blob\n");
|
||||
spdk_bs_destroy(lvs->blobstore, _spdk_remove_bs_on_error_cb, NULL);
|
||||
_spdk_lvs_free(lvs);
|
||||
free(req);
|
||||
return;
|
||||
@ -516,6 +525,7 @@ _spdk_super_blob_create_cb(void *cb_arg, spdk_blob_id blobid, int lvolerrno)
|
||||
if (lvolerrno < 0) {
|
||||
req->cb_fn(req->cb_arg, NULL, lvolerrno);
|
||||
SPDK_ERRLOG("Lvol store init failed: could not create super blob\n");
|
||||
spdk_bs_destroy(lvs->blobstore, _spdk_remove_bs_on_error_cb, NULL);
|
||||
_spdk_lvs_free(lvs);
|
||||
free(req);
|
||||
return;
|
||||
|
Loading…
Reference in New Issue
Block a user