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:
parent
fa15dc611a
commit
7f6b78611a
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user