Commit f6465006 authored by Xiaodong Liu's avatar Xiaodong Liu Committed by Daniel Verkamp
Browse files

nbd: stop nbd if backing bdev is removed



Change-Id: I964b7a37fcb641a610d518a02841b25913c5be2e
Signed-off-by: default avatarXiaodong Liu <xiaodong.liu@intel.com>
Reviewed-on: https://review.gerrithub.io/391733


Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
parent 3a6ff827
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -517,6 +517,14 @@ nbd_start_kernel(void *arg)
	pthread_exit(NULL);
}

static void
spdk_nbd_bdev_hot_remove(void *remove_ctx)
{
	struct spdk_nbd_disk *nbd = remove_ctx;

	spdk_nbd_stop(nbd);
}

struct spdk_nbd_disk *
spdk_nbd_start(const char *bdev_name, const char *nbd_path)
{
@@ -542,7 +550,7 @@ spdk_nbd_start(const char *bdev_name, const char *nbd_path)
	nbd->spdk_sp_fd = -1;
	nbd->kernel_sp_fd = -1;

	rc = spdk_bdev_open(bdev, true, NULL, NULL, &nbd->bdev_desc);
	rc = spdk_bdev_open(bdev, true, spdk_nbd_bdev_hot_remove, nbd, &nbd->bdev_desc);
	if (rc != 0) {
		SPDK_ERRLOG("could not open bdev %s, error=%d\n", spdk_bdev_get_name(bdev), rc);
		goto err;