bdev/gpt: free base bdev_part in gpt after examining
Currently GPT keeps the bdev it is examining open, even after determining there is no GPT on it. It is due to spdk_gpt_base_free() not notifying bdev layer to free base bdev_part. Additionally release of bdev module for that bdev was moved to bdev_part_free, as the module is not claimed until bdev_part on base bdev are created. Functional tests added to verify the changes. Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: Id75f88259267847e8ec476d19750dc1e2690f11a Reviewed-on: https://review.gerrithub.io/378621 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
parent
9197acd42d
commit
5f6306ea24
@ -1726,7 +1726,6 @@ spdk_bdev_part_base_free(struct spdk_bdev_part_base *base)
|
|||||||
{
|
{
|
||||||
assert(base->bdev);
|
assert(base->bdev);
|
||||||
assert(base->desc);
|
assert(base->desc);
|
||||||
spdk_bdev_module_release_bdev(base->bdev);
|
|
||||||
spdk_bdev_close(base->desc);
|
spdk_bdev_close(base->desc);
|
||||||
free(base);
|
free(base);
|
||||||
}
|
}
|
||||||
@ -1746,6 +1745,7 @@ spdk_bdev_part_free(struct spdk_bdev_part *part)
|
|||||||
free(part);
|
free(part);
|
||||||
|
|
||||||
if (__sync_sub_and_fetch(&base->ref, 1) == 0) {
|
if (__sync_sub_and_fetch(&base->ref, 1) == 0) {
|
||||||
|
spdk_bdev_module_release_bdev(base->bdev);
|
||||||
spdk_bdev_part_base_free(base);
|
spdk_bdev_part_base_free(base);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -77,6 +77,7 @@ static bool g_gpt_disabled;
|
|||||||
static void
|
static void
|
||||||
spdk_gpt_base_free(struct gpt_base *gpt_base)
|
spdk_gpt_base_free(struct gpt_base *gpt_base)
|
||||||
{
|
{
|
||||||
|
spdk_bdev_part_base_free(&gpt_base->part_base);
|
||||||
spdk_dma_free(gpt_base->gpt.buf);
|
spdk_dma_free(gpt_base->gpt.buf);
|
||||||
free(gpt_base);
|
free(gpt_base);
|
||||||
}
|
}
|
||||||
|
@ -49,6 +49,15 @@ $rpc_py get_nvmf_subsystems
|
|||||||
|
|
||||||
$rpc_py delete_nvmf_subsystem nqn.2016-06.io.spdk:cnode1
|
$rpc_py delete_nvmf_subsystem nqn.2016-06.io.spdk:cnode1
|
||||||
|
|
||||||
|
$rpc_py delete_bdev Null1
|
||||||
|
$rpc_py delete_bdev Null0
|
||||||
|
|
||||||
|
check_bdevs=$($rpc_py get_bdevs | jq -r '.[].name')
|
||||||
|
if [ -n "$check_bdevs" ]; then
|
||||||
|
echo $check_bdevs
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
trap - SIGINT SIGTERM EXIT
|
trap - SIGINT SIGTERM EXIT
|
||||||
|
|
||||||
nvmfcleanup
|
nvmfcleanup
|
||||||
|
Loading…
Reference in New Issue
Block a user