Commit 7f6b7861 authored by Pawel Wodkowski's avatar Pawel Wodkowski Committed by Jim Harris
Browse files

vhost_blk: don't abort on bdev hotremove



Virtio block doesn't know how to handle hot-remove so no way of
informing guest when that happen but at least we don't crash.

Change-Id: I54576bc0693c2e706ef3c45b0de313e9beb2a2c7
Signed-off-by: default avatarPawel Wodkowski <pawelx.wodkowski@intel.com>
Reviewed-on: https://review.gerrithub.io/368789


Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent fa15dc61
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -443,8 +443,22 @@ spdk_vhost_blk_get_readonly(struct spdk_vhost_dev *vdev)
static void
bdev_remove_cb(void *remove_ctx)
{
	SPDK_ERRLOG("Hot-removing bdev's not supported yet.\n");
	abort();
	struct spdk_vhost_blk_dev *bvdev = remove_ctx;

	if (bvdev->vdev.lcore != -1 && (uint32_t)bvdev->vdev.lcore != spdk_env_get_current_core()) {
		/* Call self on proper core. */
		spdk_vhost_timed_event_send(bvdev->vdev.lcore, bdev_remove_cb, bvdev, 1, "vhost blk hot remove");
		return;
	}

	SPDK_WARNLOG("Controller %s: Hot-removing bdev - all further requests will fail.\n",
		     bvdev->vdev.name);
	if (bvdev->requestq_poller) {
		spdk_poller_unregister(&bvdev->requestq_poller, NULL);
		spdk_poller_register(&bvdev->requestq_poller, no_bdev_vdev_worker, bvdev, bvdev->vdev.lcore, 0);
	}

	bvdev->bdev = NULL;
}

/*