Commit 5f6306ea authored by Tomasz Zawadzki's avatar Tomasz Zawadzki Committed by Daniel Verkamp
Browse files

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: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Change-Id: Id75f88259267847e8ec476d19750dc1e2690f11a
Reviewed-on: https://review.gerrithub.io/378621


Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
parent 9197acd4
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1726,7 +1726,6 @@ spdk_bdev_part_base_free(struct spdk_bdev_part_base *base)
{
	assert(base->bdev);
	assert(base->desc);
	spdk_bdev_module_release_bdev(base->bdev);
	spdk_bdev_close(base->desc);
	free(base);
}
@@ -1746,6 +1745,7 @@ spdk_bdev_part_free(struct spdk_bdev_part *part)
	free(part);

	if (__sync_sub_and_fetch(&base->ref, 1) == 0) {
		spdk_bdev_module_release_bdev(base->bdev);
		spdk_bdev_part_base_free(base);
	}
}
+1 −0
Original line number Diff line number Diff line
@@ -77,6 +77,7 @@ static bool g_gpt_disabled;
static void
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);
	free(gpt_base);
}
+9 −0
Original line number Diff line number Diff line
@@ -49,6 +49,15 @@ $rpc_py get_nvmf_subsystems

$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

nvmfcleanup