nvmf: make transport service id optional
There are transport types like vfio-user or fc for which this field is optional so there is no need to explicitly specify it for the add listener rpc. Still validation of this filed is preserved for rdma and tcp transport. Signed-off-by: Jacek Kalwas <jacek.kalwas@intel.com> Change-Id: I6aef55bed45b3653472fd356e5a7cfead22c6f2b Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/5605 Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
This commit is contained in:
parent
e6f73c8045
commit
9a1cf1c594
@ -5131,7 +5131,7 @@ Name | Optional | Type | Description
|
||||
trtype | Required | string | Transport type ("RDMA")
|
||||
adrfam | Required | string | Address family ("IPv4", "IPv6", "IB", or "FC")
|
||||
traddr | Required | string | Transport address
|
||||
trsvcid | Required | string | Transport service ID
|
||||
trsvcid | Optional | string | Transport service ID (required for RDMA or TCP)
|
||||
|
||||
### Example
|
||||
|
||||
|
@ -554,7 +554,7 @@ static const struct spdk_json_object_decoder rpc_listen_address_decoders[] = {
|
||||
{"trtype", offsetof(struct rpc_listen_address, transport), spdk_json_decode_string, true},
|
||||
{"adrfam", offsetof(struct rpc_listen_address, adrfam), spdk_json_decode_string, true},
|
||||
{"traddr", offsetof(struct rpc_listen_address, traddr), spdk_json_decode_string},
|
||||
{"trsvcid", offsetof(struct rpc_listen_address, trsvcid), spdk_json_decode_string},
|
||||
{"trsvcid", offsetof(struct rpc_listen_address, trsvcid), spdk_json_decode_string, true},
|
||||
};
|
||||
|
||||
static int
|
||||
@ -787,13 +787,16 @@ rpc_listen_address_to_trid(const struct rpc_listen_address *address,
|
||||
}
|
||||
memcpy(trid->traddr, address->traddr, len + 1);
|
||||
|
||||
len = strlen(address->trsvcid);
|
||||
if (len > sizeof(trid->trsvcid) - 1) {
|
||||
SPDK_ERRLOG("Transport service id longer than %zu characters: %s\n",
|
||||
sizeof(trid->trsvcid) - 1, address->trsvcid);
|
||||
return -EINVAL;
|
||||
trid->trsvcid[0] = '\0';
|
||||
if (address->trsvcid) {
|
||||
len = strlen(address->trsvcid);
|
||||
if (len > sizeof(trid->trsvcid) - 1) {
|
||||
SPDK_ERRLOG("Transport service id longer than %zu characters: %s\n",
|
||||
sizeof(trid->trsvcid) - 1, address->trsvcid);
|
||||
return -EINVAL;
|
||||
}
|
||||
memcpy(trid->trsvcid, address->trsvcid, len + 1);
|
||||
}
|
||||
memcpy(trid->trsvcid, address->trsvcid, len + 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -2654,6 +2654,11 @@ nvmf_rdma_listen(struct spdk_nvmf_transport *transport, const struct spdk_nvme_t
|
||||
int family;
|
||||
int rc;
|
||||
|
||||
if (!strlen(trid->trsvcid)) {
|
||||
SPDK_ERRLOG("Service id is required\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
rtransport = SPDK_CONTAINEROF(transport, struct spdk_nvmf_rdma_transport, transport);
|
||||
assert(rtransport->event_channel != NULL);
|
||||
|
||||
|
@ -666,6 +666,11 @@ nvmf_tcp_listen(struct spdk_nvmf_transport *transport, const struct spdk_nvme_tr
|
||||
uint8_t adrfam;
|
||||
struct spdk_sock_opts opts;
|
||||
|
||||
if (!strlen(trid->trsvcid)) {
|
||||
SPDK_ERRLOG("Service id is required\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
ttransport = SPDK_CONTAINEROF(transport, struct spdk_nvmf_tcp_transport, transport);
|
||||
|
||||
trsvcid_int = nvmf_tcp_trsvcid_to_int(trid->trsvcid);
|
||||
|
@ -1928,7 +1928,7 @@ Format: 'user:u1 secret:s1 muser:mu1 msecret:ms1,user:u2 secret:s2 muser:mu2 mse
|
||||
p.add_argument('-a', '--traddr', help='NVMe-oF transport address: e.g., an ip address', required=True)
|
||||
p.add_argument('-p', '--tgt_name', help='The name of the parent NVMe-oF target (optional)', type=str)
|
||||
p.add_argument('-f', '--adrfam', help='NVMe-oF transport adrfam: e.g., ipv4, ipv6, ib, fc, intra_host')
|
||||
p.add_argument('-s', '--trsvcid', help='NVMe-oF transport service id: e.g., a port number')
|
||||
p.add_argument('-s', '--trsvcid', help='NVMe-oF transport service id: e.g., a port number (required for RDMA or TCP)')
|
||||
p.set_defaults(func=nvmf_subsystem_add_listener)
|
||||
|
||||
def nvmf_subsystem_remove_listener(args):
|
||||
|
@ -277,7 +277,7 @@ def nvmf_subsystem_add_listener(client, nqn, trtype, traddr, trsvcid, adrfam, tg
|
||||
nqn: Subsystem NQN.
|
||||
trtype: Transport type ("RDMA").
|
||||
traddr: Transport address.
|
||||
trsvcid: Transport service ID.
|
||||
trsvcid: Transport service ID (required for RDMA or TCP).
|
||||
tgt_name: name of the parent NVMe-oF target (optional).
|
||||
adrfam: Address family ("IPv4", "IPv6", "IB", or "FC").
|
||||
|
||||
@ -285,8 +285,10 @@ def nvmf_subsystem_add_listener(client, nqn, trtype, traddr, trsvcid, adrfam, tg
|
||||
True or False
|
||||
"""
|
||||
listen_address = {'trtype': trtype,
|
||||
'traddr': traddr,
|
||||
'trsvcid': trsvcid}
|
||||
'traddr': traddr}
|
||||
|
||||
if trsvcid:
|
||||
listen_address['trsvcid'] = trsvcid
|
||||
|
||||
if adrfam:
|
||||
listen_address['adrfam'] = adrfam
|
||||
|
Loading…
Reference in New Issue
Block a user