Commit 64269787 authored by Pawel Wodkowski's avatar Pawel Wodkowski Committed by Jim Harris
Browse files

iscsi/rpc: fix several bugs of set_iscsi_options



In python script:
- timeout should be nop_timeout
- min_connections_per_core was min_connections_per_session by mistake.
- max_queue_depth was not included.
- call_cmd was missing.
- A space should be added after semicolon ":"

In SPDK library:
- type of options was not int32_t but int. Hence decode failed.
- type of options in dump were not correct.

Change-Id: Iaa79236c03d368cdf286a72c2386509ffa81530f
Signed-off-by: default avatarPawel Wodkowski <pawelx.wodkowski@intel.com>
Reviewed-on: https://review.gerrithub.io/419553


Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarSeth Howell <seth.howell5141@gmail.com>
Reviewed-by: default avatarPaweł Niedźwiecki <pawelx.niedzwiecki@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarZiye Yang <optimistyzy@gmail.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent 39ad1e65
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@
static const struct spdk_json_object_decoder rpc_set_iscsi_opts_decoders[] = {
	{"auth_file", offsetof(struct spdk_iscsi_opts, authfile), spdk_json_decode_string, true},
	{"node_base", offsetof(struct spdk_iscsi_opts, nodebase), spdk_json_decode_string, true},
	{"timeout", offsetof(struct spdk_iscsi_opts, timeout), spdk_json_decode_int32, true},
	{"nop_timeout", offsetof(struct spdk_iscsi_opts, timeout), spdk_json_decode_int32, true},
	{"nop_in_interval", offsetof(struct spdk_iscsi_opts, nopininterval), spdk_json_decode_int32, true},
	{"no_discovery_auth", offsetof(struct spdk_iscsi_opts, no_discovery_auth), spdk_json_decode_bool, true},
	{"req_discovery_auth", offsetof(struct spdk_iscsi_opts, req_discovery_auth), spdk_json_decode_bool, true},
+6 −6
Original line number Diff line number Diff line
@@ -268,12 +268,12 @@ struct spdk_iscsi_poll_group {
struct spdk_iscsi_opts {
	char *authfile;
	char *nodebase;
	int timeout;
	int nopininterval;
	int32_t timeout;
	int32_t nopininterval;
	bool no_discovery_auth;
	bool req_discovery_auth;
	bool req_discovery_auth_mutual;
	int discovery_auth_group;
	int32_t discovery_auth_group;
	uint32_t MaxSessions;
	uint32_t MaxConnectionsPerSession;
	uint32_t MaxConnections;
@@ -295,12 +295,12 @@ struct spdk_iscsi_globals {
	TAILQ_HEAD(, spdk_iscsi_init_grp)	ig_head;
	TAILQ_HEAD(, spdk_iscsi_tgt_node)	target_head;

	int timeout;
	int nopininterval;
	int32_t timeout;
	int32_t nopininterval;
	bool no_discovery_auth;
	bool req_discovery_auth;
	bool req_discovery_auth_mutual;
	int discovery_auth_group;
	int32_t discovery_auth_group;

	uint32_t MaxSessions;
	uint32_t MaxConnectionsPerSession;
+3 −3
Original line number Diff line number Diff line
@@ -1036,7 +1036,7 @@ spdk_iscsi_opts_info_json(struct spdk_json_write_ctx *w)

	spdk_json_write_named_uint32(w, "error_recovery_level", g_spdk_iscsi.ErrorRecoveryLevel);

	spdk_json_write_named_uint32(w, "timeout", g_spdk_iscsi.timeout);
	spdk_json_write_named_int32(w, "nop_timeout", g_spdk_iscsi.timeout);
	spdk_json_write_named_int32(w, "nop_in_interval", g_spdk_iscsi.nopininterval);

	spdk_json_write_named_bool(w, "no_discovery_auth", g_spdk_iscsi.no_discovery_auth);
@@ -1045,7 +1045,7 @@ spdk_iscsi_opts_info_json(struct spdk_json_write_ctx *w)
				   g_spdk_iscsi.req_discovery_auth_mutual);
	spdk_json_write_named_int32(w, "discovery_auth_group", g_spdk_iscsi.discovery_auth_group);

	spdk_json_write_named_int32(w, "min_connections_per_core",
	spdk_json_write_named_uint32(w, "min_connections_per_core",
				     spdk_iscsi_conn_get_min_per_core());

	spdk_json_write_object_end(w);
+5 −2
Original line number Diff line number Diff line
@@ -443,6 +443,7 @@ if __name__ == "__main__":
    p.set_defaults(func=apply_firmware)

    # iSCSI
    @call_cmd
    def set_iscsi_options(args):
        rpc.iscsi.set_iscsi_options(
            args.client,
@@ -455,13 +456,14 @@ if __name__ == "__main__":
            req_discovery_auth_mutual=args.req_discovery_auth_mutual,
            discovery_auth_group=args.discovery_auth_group,
            max_sessions=args.max_sessions,
            max_queue_depth=args.max_queue_depth,
            max_connections_per_session=args.max_connections_per_session,
            default_time2wait=args.default_time2wait,
            default_time2retain=args.default_time2retain,
            immediate_data=args.immediate_data,
            error_recovery_level=args.error_recovery_level,
            allow_duplicated_isid=args.allow_duplicated_isid,
            min_connections_per_session=args.min_connections_per_session)
            min_connections_per_core=args.min_connections_per_core)

    p = subparsers.add_parser('set_iscsi_options', help="""Set options of iSCSI subsystem""")
    p.add_argument('-f', '--auth-file', help='Path to CHAP shared secret file for discovery session')
@@ -476,13 +478,14 @@ if __name__ == "__main__":
    p.add_argument('-g', '--discovery-auth-group', help="""Authentication group ID for discovery session.
    *** Authentication group must be precreated ***""", type=int)
    p.add_argument('-a', '--max-sessions', help='Maximum number of sessions in the host.', type=int)
    p.add_argument('-q', '--max-queue-depth', help='Max number of outstanding I/Os per queue.', type=int)
    p.add_argument('-c', '--max-connections-per-session', help='Negotiated parameter, MaxConnections.', type=int)
    p.add_argument('-w', '--default-time2wait', help='Negotiated parameter, DefaultTime2Wait.', type=int)
    p.add_argument('-v', '--default-time2retain', help='Negotiated parameter, DefaultTime2Retain.', type=int)
    p.add_argument('-i', '--immediate-data', help='Negotiated parameter, ImmediateData.', action='store_true')
    p.add_argument('-l', '--error-recovery-level', help='Negotiated parameter, ErrorRecoveryLevel', type=int)
    p.add_argument('-p', '--allow-duplicated-isid', help='Allow duplicated initiator session ID.', action='store_true')
    p.add_argument('-u', '--min-connections-per-session', help='Allocation unit of connections per core', type=int)
    p.add_argument('-u', '--min-connections-per-core', help='Allocation unit of connections per core', type=int)
    p.set_defaults(func=set_iscsi_options)

    @call_cmd
+10 −6
Original line number Diff line number Diff line
@@ -11,13 +11,14 @@ def set_iscsi_options(
        req_discovery_auth_mutual=None,
        discovery_auth_group=None,
        max_sessions=None,
        max_queue_depth=None,
        max_connections_per_session=None,
        default_time2wait=None,
        default_time2retain=None,
        immediate_data=None,
        error_recovery_level=None,
        allow_duplicated_isid=None,
        min_connections_per_session=None):
        min_connections_per_core=None):
    """Set iSCSI target options.

    Args:
@@ -30,13 +31,14 @@ def set_iscsi_options(
        req_discovery_auth_mutual: CHAP for discovery session should be mutual
        discovery_auth_group: Authentication group ID for discovery session
        max_sessions: Maximum number of sessions in the host
        max_queue_depth: Maximum number of outstanding I/Os per queue
        max_connections_per_session: Negotiated parameter, MaxConnections
        default_time2wait: Negotiated parameter, DefaultTime2Wait
        default_time2retain: Negotiated parameter, DefaultTime2Retain
        immediate_data: Negotiated parameter, ImmediateData
        error_recovery_level: Negotiated parameter, ErrorRecoveryLevel
        allow_duplicated_isid: Allow duplicated initiator session ID
        min_connections_per_session: Allocation unit of connections per core
        min_connections_per_core: Allocation unit of connections per core

    Returns:
        True or False
@@ -61,6 +63,8 @@ def set_iscsi_options(
        params['discovery_auth_group'] = discovery_auth_group
    if max_sessions:
        params['max_sessions'] = max_sessions
    if max_queue_depth:
        params['max_queue_depth'] = max_queue_depth
    if max_connections_per_session:
        params['max_connections_per_session'] = max_connections_per_session
    if default_time2wait:
@@ -73,8 +77,8 @@ def set_iscsi_options(
        params['error_recovery_level'] = error_recovery_level
    if allow_duplicated_isid:
        params['allow_duplicated_isid'] = allow_duplicated_isid
    if min_connections_per_session:
        params['min_connections_per_session'] = min_connections_per_session
    if min_connections_per_core:
        params['min_connections_per_core'] = min_connections_per_core

    return client.call('set_iscsi_options', params)