Commit 40b11d96 authored by Changpeng Liu's avatar Changpeng Liu Committed by Tomasz Zawadzki
Browse files

lib/vhost: define timeout values when stopping a session



These timeout values are hardcoded now, define macros instead.

Change-Id: I664786a94641471406f07ada966fa10316ac435e
Signed-off-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/23055


Community-CI: Mellanox Build Bot
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent db19aa5b
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -843,7 +843,8 @@ _stop_session(struct spdk_vhost_session *vsession)
	int rc;
	uint16_t i;

	rc = vhost_user_wait_for_session_stop(vsession, 3, "stop session");
	rc = vhost_user_wait_for_session_stop(vsession, SPDK_VHOST_SESSION_STOP_TIMEOUT_IN_SEC,
					      "stop session");
	if (rc != 0) {
		SPDK_ERRLOG("Couldn't stop device with vid %d.\n", vsession->vid);
		return rc;
+3 −3
Original line number Diff line number Diff line
@@ -1436,10 +1436,10 @@ vhost_blk_stop(struct spdk_vhost_dev *vdev,
	spdk_poller_unregister(&bvsession->requestq_poller);
	vhost_blk_session_unregister_interrupts(bvsession);

	/* vhost_user_session_send_event timeout is 3 seconds, here set retry within 4 seconds */
	bvsession->vsession.stop_retry_count = 4000;
	bvsession->vsession.stop_retry_count = (SPDK_VHOST_SESSION_STOP_RETRY_TIMEOUT_IN_SEC * 1000 *
						1000) / SPDK_VHOST_SESSION_STOP_RETRY_PERIOD_IN_US;
	bvsession->stop_poller = SPDK_POLLER_REGISTER(destroy_session_poller_cb,
				 bvsession, 1000);
				 bvsession, SPDK_VHOST_SESSION_STOP_RETRY_PERIOD_IN_US);
	return 0;
}

+13 −0
Original line number Diff line number Diff line
@@ -36,6 +36,19 @@
 */
#define SPDK_VHOST_VQ_IOPS_COALESCING_THRESHOLD 60000

/*
 * Timeout in seconds for vhost-user session stop message.
 */
#define SPDK_VHOST_SESSION_STOP_TIMEOUT_IN_SEC 3
/*
 * Stop retry timeout in seconds, this value should be greater than SPDK_VHOST_SESSION_STOP_TIMEOUT_IN_SEC.
 */
#define SPDK_VHOST_SESSION_STOP_RETRY_TIMEOUT_IN_SEC (SPDK_VHOST_SESSION_STOP_TIMEOUT_IN_SEC + 1)
/*
 * Stop retry period in microseconds
 */
#define SPDK_VHOST_SESSION_STOP_RETRY_PERIOD_IN_US 1000

/*
 * Currently coalescing is not used by default.
 * Setting this to value > 0 here or by RPC will enable coalescing.
+3 −3
Original line number Diff line number Diff line
@@ -1553,14 +1553,14 @@ vhost_scsi_stop(struct spdk_vhost_dev *vdev,
	 */
	spdk_poller_unregister(&svsession->mgmt_poller);

	/* vhost_user_session_send_event timeout is 3 seconds, here set retry within 4 seconds */
	svsession->vsession.stop_retry_count = 4000;
	svsession->vsession.stop_retry_count = (SPDK_VHOST_SESSION_STOP_RETRY_TIMEOUT_IN_SEC * 1000 *
						1000) / SPDK_VHOST_SESSION_STOP_RETRY_PERIOD_IN_US;

	/* Wait for all pending I/Os to complete, then process all the
	 * remaining hotremove events one last time.
	 */
	svsession->stop_poller = SPDK_POLLER_REGISTER(destroy_session_poller_cb,
				 svsession, 1000);
				 svsession, SPDK_VHOST_SESSION_STOP_RETRY_PERIOD_IN_US);

	return 0;
}