bdev_nvme: Support for transport_tos in RPC
Added transport_tos parameter to bdev_nvme_set_options and corresponding rpc.py command line. Signed-off-by: Michael Haeuptle <michael.haeuptle@hpe.com> Change-Id: If95eafbd9963fee8d7b230e91ec84dae8713df23 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15949 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Mellanox Build Bot Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com> Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
031ba90fe1
commit
990cd38a8c
@ -115,6 +115,10 @@ tag that was logged at least once.
|
|||||||
Added `transport_tos` to `spdk_nvme_ctrlr_opts` to support setting of the "type of service"
|
Added `transport_tos` to `spdk_nvme_ctrlr_opts` to support setting of the "type of service"
|
||||||
value in the IPv4 header. Only RDMA is supported at this time.
|
value in the IPv4 header. Only RDMA is supported at this time.
|
||||||
|
|
||||||
|
### bdev_nvme
|
||||||
|
|
||||||
|
Updated `bdev_nvme_set_options` RPC (and rpc.py) to support the new `transport_tos` parameter.
|
||||||
|
|
||||||
## v22.09
|
## v22.09
|
||||||
|
|
||||||
### accel
|
### accel
|
||||||
|
@ -123,6 +123,7 @@ static struct spdk_bdev_nvme_opts g_opts = {
|
|||||||
.fast_io_fail_timeout_sec = 0,
|
.fast_io_fail_timeout_sec = 0,
|
||||||
.disable_auto_failback = false,
|
.disable_auto_failback = false,
|
||||||
.generate_uuids = false,
|
.generate_uuids = false,
|
||||||
|
.transport_tos = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define NVME_HOTPLUG_POLL_PERIOD_MAX 10000000ULL
|
#define NVME_HOTPLUG_POLL_PERIOD_MAX 10000000ULL
|
||||||
@ -4892,6 +4893,7 @@ bdev_nvme_create(struct spdk_nvme_transport_id *trid,
|
|||||||
ctx->drv_opts.transport_ack_timeout = g_opts.transport_ack_timeout;
|
ctx->drv_opts.transport_ack_timeout = g_opts.transport_ack_timeout;
|
||||||
ctx->drv_opts.keep_alive_timeout_ms = g_opts.keep_alive_timeout_ms;
|
ctx->drv_opts.keep_alive_timeout_ms = g_opts.keep_alive_timeout_ms;
|
||||||
ctx->drv_opts.disable_read_ana_log_page = true;
|
ctx->drv_opts.disable_read_ana_log_page = true;
|
||||||
|
ctx->drv_opts.transport_tos = g_opts.transport_tos;
|
||||||
|
|
||||||
if (nvme_bdev_ctrlr_get_by_name(base_name) == NULL || multipath) {
|
if (nvme_bdev_ctrlr_get_by_name(base_name) == NULL || multipath) {
|
||||||
attach_cb = connect_attach_cb;
|
attach_cb = connect_attach_cb;
|
||||||
@ -6706,6 +6708,7 @@ bdev_nvme_opts_config_json(struct spdk_json_write_ctx *w)
|
|||||||
spdk_json_write_named_uint32(w, "reconnect_delay_sec", g_opts.reconnect_delay_sec);
|
spdk_json_write_named_uint32(w, "reconnect_delay_sec", g_opts.reconnect_delay_sec);
|
||||||
spdk_json_write_named_uint32(w, "fast_io_fail_timeout_sec", g_opts.fast_io_fail_timeout_sec);
|
spdk_json_write_named_uint32(w, "fast_io_fail_timeout_sec", g_opts.fast_io_fail_timeout_sec);
|
||||||
spdk_json_write_named_bool(w, "generate_uuids", g_opts.generate_uuids);
|
spdk_json_write_named_bool(w, "generate_uuids", g_opts.generate_uuids);
|
||||||
|
spdk_json_write_named_uint8(w, "transport_tos", g_opts.transport_tos);
|
||||||
spdk_json_write_object_end(w);
|
spdk_json_write_object_end(w);
|
||||||
|
|
||||||
spdk_json_write_object_end(w);
|
spdk_json_write_object_end(w);
|
||||||
|
@ -252,6 +252,8 @@ struct spdk_bdev_nvme_opts {
|
|||||||
uint32_t fast_io_fail_timeout_sec;
|
uint32_t fast_io_fail_timeout_sec;
|
||||||
bool disable_auto_failback;
|
bool disable_auto_failback;
|
||||||
bool generate_uuids;
|
bool generate_uuids;
|
||||||
|
/* Type of Service - RDMA only */
|
||||||
|
uint8_t transport_tos;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct spdk_nvme_qpair *bdev_nvme_get_io_qpair(struct spdk_io_channel *ctrlr_io_ch);
|
struct spdk_nvme_qpair *bdev_nvme_get_io_qpair(struct spdk_io_channel *ctrlr_io_ch);
|
||||||
|
@ -69,6 +69,7 @@ static const struct spdk_json_object_decoder rpc_bdev_nvme_options_decoders[] =
|
|||||||
{"fast_io_fail_timeout_sec", offsetof(struct spdk_bdev_nvme_opts, fast_io_fail_timeout_sec), spdk_json_decode_uint32, true},
|
{"fast_io_fail_timeout_sec", offsetof(struct spdk_bdev_nvme_opts, fast_io_fail_timeout_sec), spdk_json_decode_uint32, true},
|
||||||
{"disable_auto_failback", offsetof(struct spdk_bdev_nvme_opts, disable_auto_failback), spdk_json_decode_bool, true},
|
{"disable_auto_failback", offsetof(struct spdk_bdev_nvme_opts, disable_auto_failback), spdk_json_decode_bool, true},
|
||||||
{"generate_uuids", offsetof(struct spdk_bdev_nvme_opts, generate_uuids), spdk_json_decode_bool, true},
|
{"generate_uuids", offsetof(struct spdk_bdev_nvme_opts, generate_uuids), spdk_json_decode_bool, true},
|
||||||
|
{"transport_tos", offsetof(struct spdk_bdev_nvme_opts, transport_tos), spdk_json_decode_uint8, true},
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -531,7 +531,8 @@ def bdev_nvme_set_options(client, action_on_timeout=None, timeout_us=None, timeo
|
|||||||
nvme_adminq_poll_period_us=None, nvme_ioq_poll_period_us=None, io_queue_requests=None,
|
nvme_adminq_poll_period_us=None, nvme_ioq_poll_period_us=None, io_queue_requests=None,
|
||||||
delay_cmd_submit=None, transport_retry_count=None, bdev_retry_count=None,
|
delay_cmd_submit=None, transport_retry_count=None, bdev_retry_count=None,
|
||||||
transport_ack_timeout=None, ctrlr_loss_timeout_sec=None, reconnect_delay_sec=None,
|
transport_ack_timeout=None, ctrlr_loss_timeout_sec=None, reconnect_delay_sec=None,
|
||||||
fast_io_fail_timeout_sec=None, disable_auto_failback=None, generate_uuids=None):
|
fast_io_fail_timeout_sec=None, disable_auto_failback=None, generate_uuids=None,
|
||||||
|
transport_tos=None):
|
||||||
"""Set options for the bdev nvme. This is startup command.
|
"""Set options for the bdev nvme. This is startup command.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@ -571,6 +572,8 @@ def bdev_nvme_set_options(client, action_on_timeout=None, timeout_us=None, timeo
|
|||||||
By default, immediately failback to the preferred I/O path if it is restored. (optional)
|
By default, immediately failback to the preferred I/O path if it is restored. (optional)
|
||||||
generate_uuids: Enable generation of unique identifiers for NVMe bdevs only if they do not provide UUID themselves.
|
generate_uuids: Enable generation of unique identifiers for NVMe bdevs only if they do not provide UUID themselves.
|
||||||
These strings are based on device serial number and namespace ID and will always be the same for that device.
|
These strings are based on device serial number and namespace ID and will always be the same for that device.
|
||||||
|
transport_tos: IPv4 Type of Service value. Only applicable for RDMA transports.
|
||||||
|
The default is 0 which means no TOS is applied. (optional)
|
||||||
|
|
||||||
"""
|
"""
|
||||||
params = {}
|
params = {}
|
||||||
@ -639,6 +642,9 @@ def bdev_nvme_set_options(client, action_on_timeout=None, timeout_us=None, timeo
|
|||||||
if generate_uuids is not None:
|
if generate_uuids is not None:
|
||||||
params['generate_uuids'] = generate_uuids
|
params['generate_uuids'] = generate_uuids
|
||||||
|
|
||||||
|
if transport_tos is not None:
|
||||||
|
params['transport_tos'] = transport_tos
|
||||||
|
|
||||||
return client.call('bdev_nvme_set_options', params)
|
return client.call('bdev_nvme_set_options', params)
|
||||||
|
|
||||||
|
|
||||||
|
@ -558,7 +558,8 @@ if __name__ == "__main__":
|
|||||||
reconnect_delay_sec=args.reconnect_delay_sec,
|
reconnect_delay_sec=args.reconnect_delay_sec,
|
||||||
fast_io_fail_timeout_sec=args.fast_io_fail_timeout_sec,
|
fast_io_fail_timeout_sec=args.fast_io_fail_timeout_sec,
|
||||||
disable_auto_failback=args.disable_auto_failback,
|
disable_auto_failback=args.disable_auto_failback,
|
||||||
generate_uuids=args.generate_uuids)
|
generate_uuids=args.generate_uuids,
|
||||||
|
transport_tos=args.transport_tos)
|
||||||
|
|
||||||
p = subparsers.add_parser('bdev_nvme_set_options',
|
p = subparsers.add_parser('bdev_nvme_set_options',
|
||||||
help='Set options for the bdev nvme type. This is startup command.')
|
help='Set options for the bdev nvme type. This is startup command.')
|
||||||
@ -627,6 +628,9 @@ if __name__ == "__main__":
|
|||||||
help="""Enable generation of unique identifiers for NVMe bdevs only if they do
|
help="""Enable generation of unique identifiers for NVMe bdevs only if they do
|
||||||
not provide UUID themselves. These strings are based on device serial number and
|
not provide UUID themselves. These strings are based on device serial number and
|
||||||
namespace ID and will always be the same for that device.""", action='store_true')
|
namespace ID and will always be the same for that device.""", action='store_true')
|
||||||
|
p.add_argument('--transport-tos',
|
||||||
|
help="""IPv4 Type of Service value. Only applicable for RDMA transports.
|
||||||
|
The default is 0 which means no TOS is applied.""", type=int)
|
||||||
|
|
||||||
p.set_defaults(func=bdev_nvme_set_options)
|
p.set_defaults(func=bdev_nvme_set_options)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user