Commit 05aeb9db authored by Alexey Marchuk's avatar Alexey Marchuk Committed by Tomasz Zawadzki
Browse files

bdev/nvme/rpc: Add params to enable TCP hdgst and ddgst



Function bdev_nvme_create accpets new parameter - ctrlr
opts which is passed and filled by RPC handler. That
will allow us to add config parameters for other ctrlr
options with minimal changes.

Change-Id: I96ac1b21e7a3816c652765cddade75423eb843ca
Signed-off-by: default avatarAlexey Marchuk <alexeymar@mellanox.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6023


Community-CI: Broadcom CI
Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarZiye Yang <ziye.yang@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatar <dongx.yi@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 4c26a8e7
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -2561,6 +2561,8 @@ hostaddr | Optional | string | NVMe-oF host address: ip addr
hostsvcid               | Optional | string      | NVMe-oF host trsvcid: port number
prchk_reftag            | Optional | bool        | Enable checking of PI reference tag for I/O processing
prchk_guard             | Optional | bool        | Enable checking of PI guard for I/O processing
hdgst                   | Optional | bool        | Enable TCP header digest
ddgst                   | Optional | bool        | Enable TCP data digest

### Example

+8 −2
Original line number Diff line number Diff line
@@ -2019,7 +2019,8 @@ bdev_nvme_create(struct spdk_nvme_transport_id *trid,
		 const char *hostnqn,
		 uint32_t prchk_flags,
		 spdk_bdev_create_nvme_fn cb_fn,
		 void *cb_ctx)
		 void *cb_ctx,
		 struct spdk_nvme_ctrlr_opts *opts)
{
	struct nvme_probe_skip_entry	*entry, *tmp;
	struct nvme_async_probe_ctx	*ctx;
@@ -2054,7 +2055,12 @@ bdev_nvme_create(struct spdk_nvme_transport_id *trid,
		}
	}

	if (opts) {
		memcpy(&ctx->opts, opts, sizeof(*opts));
	} else {
		spdk_nvme_ctrlr_get_default_ctrlr_opts(&ctx->opts, sizeof(ctx->opts));
	}

	ctx->opts.transport_retry_count = g_opts.retry_count;
	ctx->opts.keep_alive_timeout_ms = g_opts.keep_alive_timeout_ms;

+2 −1
Original line number Diff line number Diff line
@@ -77,7 +77,8 @@ int bdev_nvme_create(struct spdk_nvme_transport_id *trid,
		     const char *hostnqn,
		     uint32_t prchk_flags,
		     spdk_bdev_create_nvme_fn cb_fn,
		     void *cb_ctx);
		     void *cb_ctx,
		     struct spdk_nvme_ctrlr_opts *opts);
struct spdk_nvme_ctrlr *bdev_nvme_get_ctrlr(struct spdk_bdev *bdev);

/**
+7 −2
Original line number Diff line number Diff line
@@ -176,6 +176,7 @@ struct rpc_bdev_nvme_attach_controller {
	char *hostsvcid;
	bool prchk_reftag;
	bool prchk_guard;
	struct spdk_nvme_ctrlr_opts opts;
};

static void
@@ -207,7 +208,9 @@ static const struct spdk_json_object_decoder rpc_bdev_nvme_attach_controller_dec
	{"hostsvcid", offsetof(struct rpc_bdev_nvme_attach_controller, hostsvcid), spdk_json_decode_string, true},

	{"prchk_reftag", offsetof(struct rpc_bdev_nvme_attach_controller, prchk_reftag), spdk_json_decode_bool, true},
	{"prchk_guard", offsetof(struct rpc_bdev_nvme_attach_controller, prchk_guard), spdk_json_decode_bool, true}
	{"prchk_guard", offsetof(struct rpc_bdev_nvme_attach_controller, prchk_guard), spdk_json_decode_bool, true},
	{"hdgst", offsetof(struct rpc_bdev_nvme_attach_controller, opts.header_digest), spdk_json_decode_bool, true},
	{"ddgst", offsetof(struct rpc_bdev_nvme_attach_controller, opts.data_digest), spdk_json_decode_bool, true}
};

#define NVME_MAX_BDEVS_PER_RPC 128
@@ -263,6 +266,8 @@ rpc_bdev_nvme_attach_controller(struct spdk_jsonrpc_request *request,
		return;
	}

	spdk_nvme_ctrlr_get_default_ctrlr_opts(&ctx->req.opts, sizeof(ctx->req.opts));

	if (spdk_json_decode_object(params, rpc_bdev_nvme_attach_controller_decoders,
				    SPDK_COUNTOF(rpc_bdev_nvme_attach_controller_decoders),
				    &ctx->req)) {
@@ -375,7 +380,7 @@ rpc_bdev_nvme_attach_controller(struct spdk_jsonrpc_request *request,
	ctx->request = request;
	ctx->count = NVME_MAX_BDEVS_PER_RPC;
	rc = bdev_nvme_create(&trid, &hostid, ctx->req.name, ctx->names, ctx->count, ctx->req.hostnqn,
			      prchk_flags, rpc_bdev_nvme_attach_controller_done, ctx);
			      prchk_flags, rpc_bdev_nvme_attach_controller_done, ctx, &ctx->req.opts);
	if (rc) {
		spdk_jsonrpc_send_error_response(request, rc, spdk_strerror(-rc));
		goto cleanup;
+7 −1
Original line number Diff line number Diff line
@@ -510,7 +510,9 @@ if __name__ == "__main__":
                                                         hostaddr=args.hostaddr,
                                                         hostsvcid=args.hostsvcid,
                                                         prchk_reftag=args.prchk_reftag,
                                                         prchk_guard=args.prchk_guard))
                                                         prchk_guard=args.prchk_guard,
                                                         hdgst=args.hdgst,
                                                         ddgst=args.ddgst))

    p = subparsers.add_parser('bdev_nvme_attach_controller', aliases=['construct_nvme_bdev'],
                              help='Add bdevs with nvme backend')
@@ -535,6 +537,10 @@ if __name__ == "__main__":
                   help='Enable checking of PI reference tag for I/O processing.', action='store_true')
    p.add_argument('-g', '--prchk-guard',
                   help='Enable checking of PI guard for I/O processing.', action='store_true')
    p.add_argument('-e', '--hdgst',
                   help='Enable TCP header digest.', action='store_true')
    p.add_argument('-d', '--ddgst',
                   help='Enable TCP data digest.', action='store_true')
    p.set_defaults(func=bdev_nvme_attach_controller)

    def bdev_nvme_get_controllers(args):
Loading