Commit 4f01d6e5 authored by Haoqian He's avatar Haoqian He Committed by Tomasz Zawadzki
Browse files

vhost: check the starting flag when handle vhost msg



When the backend is prepared to live recovery, and adding memory to the vm
immediately, the vsession may be in starting state, and the process_vq
poller will start when memory layout is updating.

Change-Id: I723cef612d6f1fe96513e20e9eb65a5405f5e273
Signed-off-by: default avatarHaoqian He <haoqian.he@smartx.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/20661


Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent 23ab1115
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1474,7 +1474,7 @@ extern_vhost_pre_msg_handler(int vid, void *_msg)
	switch (msg->request) {
	case VHOST_USER_GET_VRING_BASE:
		pthread_mutex_lock(&user_dev->lock);
		if (vsession->started) {
		if (vsession->started || vsession->starting) {
			pthread_mutex_unlock(&user_dev->lock);
			g_spdk_vhost_ops.destroy_device(vid);
			break;
@@ -1483,7 +1483,7 @@ extern_vhost_pre_msg_handler(int vid, void *_msg)
		break;
	case VHOST_USER_SET_MEM_TABLE:
		pthread_mutex_lock(&user_dev->lock);
		if (vsession->started) {
		if (vsession->started || vsession->starting) {
			vsession->original_max_queues = vsession->max_queues;
			pthread_mutex_unlock(&user_dev->lock);
			g_spdk_vhost_ops.destroy_device(vid);
@@ -1570,7 +1570,7 @@ extern_vhost_post_msg_handler(int vid, void *_msg)
		 * its SET_VRING_KICK message. Let's do it!
		 */
		pthread_mutex_lock(&user_dev->lock);
		if (!vsession->started) {
		if (!vsession->started && !vsession->starting) {
			pthread_mutex_unlock(&user_dev->lock);
			g_spdk_vhost_ops.new_device(vid);
			return RTE_VHOST_MSG_RESULT_NOT_HANDLED;