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: Pawel Wodkowski <pawelx.wodkowski@intel.com>
Reviewed-on: https://review.gerrithub.io/368789
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Pawel Wodkowski 2017-07-10 21:25:22 +02:00 committed by Jim Harris
parent fa15dc611a
commit 7f6b78611a

View File

@ -443,8 +443,22 @@ spdk_vhost_blk_get_readonly(struct spdk_vhost_dev *vdev)
static void static void
bdev_remove_cb(void *remove_ctx) bdev_remove_cb(void *remove_ctx)
{ {
SPDK_ERRLOG("Hot-removing bdev's not supported yet.\n"); struct spdk_vhost_blk_dev *bvdev = remove_ctx;
abort();
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;
} }
/* /*