nvmf: add rpc for getting transport information
Change-Id: I8c3cbc1b08a219844c9b25f8c8494efd09e347f6 Signed-off-by: Seth Howell <seth.howell@intel.com> Reviewed-on: https://review.gerrithub.io/430623 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
433a1e7b67
commit
c89b7bac82
@ -3394,6 +3394,41 @@ Example response:
|
|||||||
}
|
}
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
## get_nvmf_transports method {#rpc_get_nvmf_transports}
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
This method has no parameters.
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
Example request:
|
||||||
|
~~~
|
||||||
|
{
|
||||||
|
"jsonrpc": "2.0",
|
||||||
|
"id": 1,
|
||||||
|
"method": "get_nvmf_transports"
|
||||||
|
}
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Example response:
|
||||||
|
~~~
|
||||||
|
{
|
||||||
|
"jsonrpc": "2.0",
|
||||||
|
"id": 1,
|
||||||
|
"result": [
|
||||||
|
{
|
||||||
|
"type": "RDMA".
|
||||||
|
"max_queue_depth": 128,
|
||||||
|
"max_qpairs_per_ctrlr": 64,
|
||||||
|
"in_capsule_data_size": 4096,
|
||||||
|
"max_io_size": 131072,
|
||||||
|
"io_unit_size": 131072
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
~~~
|
||||||
|
|
||||||
# Vhost Target {#jsonrpc_components_vhost_tgt}
|
# Vhost Target {#jsonrpc_components_vhost_tgt}
|
||||||
|
|
||||||
The following common preconditions need to be met in all target types.
|
The following common preconditions need to be met in all target types.
|
||||||
|
@ -1560,3 +1560,51 @@ nvmf_rpc_create_transport(struct spdk_jsonrpc_request *request,
|
|||||||
}
|
}
|
||||||
|
|
||||||
SPDK_RPC_REGISTER("nvmf_create_transport", nvmf_rpc_create_transport, SPDK_RPC_RUNTIME)
|
SPDK_RPC_REGISTER("nvmf_create_transport", nvmf_rpc_create_transport, SPDK_RPC_RUNTIME)
|
||||||
|
|
||||||
|
static void
|
||||||
|
dump_nvmf_transport(struct spdk_json_write_ctx *w, struct spdk_nvmf_transport *transport)
|
||||||
|
{
|
||||||
|
const struct spdk_nvmf_transport_opts *opts = spdk_nvmf_get_transport_opts(transport);
|
||||||
|
spdk_nvme_transport_type_t type = spdk_nvmf_get_transport_type(transport);
|
||||||
|
|
||||||
|
spdk_json_write_object_begin(w);
|
||||||
|
|
||||||
|
spdk_json_write_named_string(w, "trtype", spdk_nvme_transport_id_trtype_str(type));
|
||||||
|
spdk_json_write_named_uint32(w, "max_queue_depth", opts->max_queue_depth);
|
||||||
|
spdk_json_write_named_uint32(w, "max_qpairs_per_ctrlr", opts->max_qpairs_per_ctrlr);
|
||||||
|
spdk_json_write_named_uint32(w, "in_capsule_data_size", opts->in_capsule_data_size);
|
||||||
|
spdk_json_write_named_uint32(w, "max_io_size", opts->max_io_size);
|
||||||
|
spdk_json_write_named_uint32(w, "io_unit_size", opts->io_unit_size);
|
||||||
|
spdk_json_write_named_uint32(w, "max_aq_depth", opts->max_aq_depth);
|
||||||
|
|
||||||
|
spdk_json_write_object_end(w);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
nvmf_rpc_get_nvmf_transports(struct spdk_jsonrpc_request *request,
|
||||||
|
const struct spdk_json_val *params)
|
||||||
|
{
|
||||||
|
struct spdk_json_write_ctx *w;
|
||||||
|
struct spdk_nvmf_transport *transport;
|
||||||
|
|
||||||
|
if (params != NULL) {
|
||||||
|
spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS,
|
||||||
|
"get_nvmf_transports requires no parameters");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
w = spdk_jsonrpc_begin_result(request);
|
||||||
|
if (w == NULL) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
spdk_json_write_array_begin(w);
|
||||||
|
transport = spdk_nvmf_transport_get_first(g_spdk_nvmf_tgt);
|
||||||
|
while (transport) {
|
||||||
|
dump_nvmf_transport(w, transport);
|
||||||
|
transport = spdk_nvmf_transport_get_next(transport);
|
||||||
|
}
|
||||||
|
spdk_json_write_array_end(w);
|
||||||
|
spdk_jsonrpc_end_result(request, w);
|
||||||
|
}
|
||||||
|
SPDK_RPC_REGISTER("get_nvmf_transports", nvmf_rpc_get_nvmf_transports, SPDK_RPC_RUNTIME)
|
||||||
|
@ -1312,6 +1312,14 @@ Format: 'user:u1 secret:s1 muser:mu1 msecret:ms1,user:u2 secret:s2 muser:mu2 mse
|
|||||||
p.add_argument('-a', '--max-aq-depth', help='Max number of admin cmds per AQ', type=int)
|
p.add_argument('-a', '--max-aq-depth', help='Max number of admin cmds per AQ', type=int)
|
||||||
p.set_defaults(func=nvmf_create_transport)
|
p.set_defaults(func=nvmf_create_transport)
|
||||||
|
|
||||||
|
@call_cmd
|
||||||
|
def get_nvmf_transports(args):
|
||||||
|
print_dict(rpc.nvmf.get_nvmf_transports(args.client))
|
||||||
|
|
||||||
|
p = subparsers.add_parser('get_nvmf_transports',
|
||||||
|
help='Display nvmf transports')
|
||||||
|
p.set_defaults(func=get_nvmf_transports)
|
||||||
|
|
||||||
@call_cmd
|
@call_cmd
|
||||||
def get_nvmf_subsystems(args):
|
def get_nvmf_subsystems(args):
|
||||||
print_dict(rpc.nvmf.get_nvmf_subsystems(args.client))
|
print_dict(rpc.nvmf.get_nvmf_subsystems(args.client))
|
||||||
|
@ -98,6 +98,15 @@ def nvmf_create_transport(client,
|
|||||||
return client.call('nvmf_create_transport', params)
|
return client.call('nvmf_create_transport', params)
|
||||||
|
|
||||||
|
|
||||||
|
def get_nvmf_transports(client):
|
||||||
|
"""Get list of NVMe-oF transports.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
List of NVMe-oF transport objects.
|
||||||
|
"""
|
||||||
|
return client.call('get_nvmf_transports')
|
||||||
|
|
||||||
|
|
||||||
def get_nvmf_subsystems(client):
|
def get_nvmf_subsystems(client):
|
||||||
"""Get list of NVMe-oF subsystems.
|
"""Get list of NVMe-oF subsystems.
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user