Commit a497ee9b authored by yidong0635's avatar yidong0635 Committed by Tomasz Zawadzki
Browse files

splite/vbdev_split: Free base part bdev on the error path.



spdk_bdev_part_base_construct_ext is called by spdk_bdev_part_base_construct.
there's already an example if a base bdev is an abnormal case we need to do
spdk_bdev_part_base_free to close the base bdev.

From constructing a successful part base bdev util finishing vbdev_split_create.
there're except failure cases to exit.

if a bdev is open and when runs into bdev_unregister_unsafe, it's in an EBUSY
state, bdev will not finished from the list. That spdk_io_device_unregister
will no be executed in spdk_bdev_unregister.

That a subsytem with it callback which is app_reactors_stop can't be finished.

Signed-off-by: default avataryidong0635 <dongx.yi@intel.com>
Change-Id: Idc156557f936da5f2618421ede2619f1f2e29c51
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6599


Community-CI: Broadcom CI
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@mellanox.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent 81525cc4
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -317,6 +317,7 @@ vbdev_split_create(struct spdk_vbdev_split_config *cfg)
err:
	split_base_tailq = spdk_bdev_part_base_get_tailq(cfg->split_base);
	spdk_bdev_part_base_hotremove(cfg->split_base, split_base_tailq);
	spdk_bdev_part_base_free(cfg->split_base);
	return rc;
}