Commit 7bae25df authored by Jim Harris's avatar Jim Harris
Browse files

iscsi: remove flush timeout



This concept was added very early in the SPDK iSCSI target
development process when there was a high focus on maximizing
throughput on a single iSCSI connection with 512-byte reads.

Realistically, in multi-connection environments focused on
predominantly 4KB (or more) workloads, this concept loses its
effectiveness - it is relatively rare that PDUs from multiple
I/O would coalesce within the default 8us flush timeout period.

There were no users of flush timeout in the SPDK tree - it was
not even documented in the iSCSI configuration file example and
there was no way to modify it at run time.  So leave the change
out of the CHANGELOG.

Signed-off-by: default avatarJim Harris <james.r.harris@intel.com>
Change-Id: I08c3e959fb3945dc2c9cb89248305d0c88aa778f

Reviewed-on: https://review.gerrithub.io/395520


Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatar <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
parent 5f247660
Loading
Loading
Loading
Loading
+3 −9
Original line number Diff line number Diff line
@@ -1372,7 +1372,6 @@ static int
spdk_iscsi_conn_execute(struct spdk_iscsi_conn *conn)
{
	int				rc = 0;
	uint64_t			tsc;
	bool				conn_active = false;

	if (conn->state == ISCSI_CONN_STATE_EXITED) {
@@ -1399,15 +1398,10 @@ spdk_iscsi_conn_execute(struct spdk_iscsi_conn *conn)
		conn_active = true;
	}

	/* If flush timer has expired, flush all PDUs */
	tsc = spdk_get_ticks();
	if (tsc - conn->last_flush > g_spdk_iscsi.flush_timeout) {
		conn->last_flush = tsc;
	if (spdk_iscsi_conn_flush_pdus(conn) != 0) {
		conn->state = ISCSI_CONN_STATE_EXITING;
		goto conn_exit;
	}
	}

	spdk_iscsi_conn_handle_queued_datain_tasks(conn);

+0 −2
Original line number Diff line number Diff line
@@ -76,7 +76,6 @@
#define DEFAULT_TIMEOUT 60
#define MAX_NOPININTERVAL 60
#define DEFAULT_NOPININTERVAL 30
#define DEFAULT_FLUSH_TIMEOUT 8

/*
 * SPDK iSCSI target currently only supports 64KB as the maximum data segment length
@@ -271,7 +270,6 @@ struct spdk_iscsi_globals {
	int req_discovery_auth;
	int req_discovery_auth_mutual;
	int discovery_auth_group;
	uint64_t flush_timeout;

	uint32_t MaxSessions;
	uint32_t MaxConnectionsPerSession;
+0 −3
Original line number Diff line number Diff line
@@ -1104,9 +1104,6 @@ spdk_rpc_get_iscsi_global_params(struct spdk_jsonrpc_request *request,
	spdk_json_write_name(w, "timeout");
	spdk_json_write_int32(w, g_spdk_iscsi.timeout);

	spdk_json_write_name(w, "flush_timeout");
	spdk_json_write_uint64(w, g_spdk_iscsi.flush_timeout);

	spdk_json_write_name(w, "nop_in_interval");
	spdk_json_write_int32(w, g_spdk_iscsi.nopininterval);

+0 −9
Original line number Diff line number Diff line
@@ -538,7 +538,6 @@ spdk_iscsi_log_globals(void)
	SPDK_DEBUGLOG(SPDK_LOG_ISCSI, "ErrorRecoveryLevel %d\n",
		      g_spdk_iscsi.ErrorRecoveryLevel);
	SPDK_DEBUGLOG(SPDK_LOG_ISCSI, "Timeout %d\n", g_spdk_iscsi.timeout);
	SPDK_DEBUGLOG(SPDK_LOG_ISCSI, "FlushTimeout %"PRIu64"\n", g_spdk_iscsi.flush_timeout);
	SPDK_DEBUGLOG(SPDK_LOG_ISCSI, "NopInInterval %d\n",
		      g_spdk_iscsi.nopininterval);
	if (g_spdk_iscsi.no_discovery_auth != 0) {
@@ -579,7 +578,6 @@ spdk_iscsi_read_parameters_from_config_file(struct spdk_conf_section *sp)
	int nopininterval;
	int min_conn_per_core = 0;
	int conn_idle_interval = 0;
	int flush_timeout = 0;
	const char *ag_tag;
	int ag_tag_i;

@@ -685,10 +683,6 @@ spdk_iscsi_read_parameters_from_config_file(struct spdk_conf_section *sp)
	if (timeout >= 0) {
		g_spdk_iscsi.timeout = timeout;
	}
	flush_timeout = spdk_conf_section_get_intval(sp, "FlushTimeout");
	if (flush_timeout >= 0) {
		g_spdk_iscsi.flush_timeout = flush_timeout;
	}
	nopininterval = spdk_conf_section_get_intval(sp, "NopInInterval");
	if (nopininterval >= 0) {
		if (nopininterval > MAX_NOPININTERVAL) {
@@ -761,7 +755,6 @@ spdk_iscsi_app_read_parameters(void)
	g_spdk_iscsi.AllowDuplicateIsid = 0;
	g_spdk_iscsi.ErrorRecoveryLevel = DEFAULT_ERRORRECOVERYLEVEL;
	g_spdk_iscsi.timeout = DEFAULT_TIMEOUT;
	g_spdk_iscsi.flush_timeout = DEFAULT_FLUSH_TIMEOUT;
	g_spdk_iscsi.nopininterval = DEFAULT_NOPININTERVAL;
	g_spdk_iscsi.no_discovery_auth = 0;
	g_spdk_iscsi.req_discovery_auth = 0;
@@ -799,8 +792,6 @@ spdk_iscsi_app_read_parameters(void)
	 */
	g_spdk_iscsi.MaxConnections = g_spdk_iscsi.MaxSessions;

	g_spdk_iscsi.flush_timeout *= (spdk_get_ticks_hz() >> 20);

	spdk_iscsi_log_globals();

	/* portal groups */