Change-Id: I49fa42e85f9239869d640b248330529ba8c2243a Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com> Reviewed-on: https://review.gerrithub.io/391047 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
7.4 KiB
JSON-RPC Methods
Overview
SPDK implements a JSON-RPC 2.0 server to allow external management tools to dynamically configure SPDK components.
App Framework
kill_instance
Send a signal to the application.
Parameters
Name | Optional | Type | Description |
---|---|---|---|
sig_name | Required | string | Signal to send (SIGINT, SIGTERM, SIGQUIT, SIGHUP, or SIGKILL) |
Example
Example request:
{
"jsonrpc": "2.0",
"id": 1,
"method": "kill_instance",
"params": {
"sig_name": "SIGINT"
}
}
Example response:
{
"jsonrpc": "2.0",
"id": 1,
"result": true
}
context_switch_monitor
Query, enable, or disable the context switch monitoring functionality.
Parameters
Name | Optional | Type | Description |
---|---|---|---|
enabled | Optional | boolean | Enable (true ) or disable (false ) monitoring (omit this parameter to query the current state) |
Response
The current state of context switch monitoring is returned as a boolean.
Example
Example request:
{
"jsonrpc": "2.0",
"id": 1,
"method": "context_switch_monitor",
"params": {
"enabled": false
}
}
Example response:
{
"jsonrpc": "2.0",
"id": 1,
"result": false
}
Block Device Abstraction Layer
get_bdevs
Get information about block devices (bdevs).
Parameters
The user may specify no parameters in order to list all block devices, or a block device may be specified by name.
Name | Optional | Type | Description |
---|---|---|---|
name | Optional | string | Block device name |
Response
The response is an array of objects containing information about the requested block devices.
Example
Example request:
{
"jsonrpc": "2.0",
"id": 1,
"method": "get_bdevs",
"params": {
"name": "Malloc0"
}
}
Example response:
{
"jsonrpc": "2.0",
"id": 1,
"result": [
{
"name": "Malloc0",
"product_name": "Malloc disk",
"block_size": 512,
"num_blocks": 20480,
"claimed": false,
"supported_io_types": {
"read": true,
"write": true,
"unmap": true,
"write_zeroes": true,
"flush": true,
"reset": true,
"nvme_admin": false,
"nvme_io": false
},
"driver_specific": {}
}
]
}
delete_bdev
Unregister a block device.
Example
Example request:
{
"jsonrpc": "2.0",
"id": 1,
"method": "delete_bdev",
"params": {
"name": "Malloc0"
}
}
Example response:
{
"jsonrpc": "2.0",
"id": 1,
"result": true
}
Parameters
Name | Optional | Type | Description |
---|---|---|---|
name | Required | string | Block device name |
NVMe-oF Target
get_nvmf_subsystems method
Parameters
This method has no parameters.
Example
Example request:
{
"jsonrpc": "2.0",
"id": 1,
"method": "get_nvmf_subsystems"
}
Example response:
{
"jsonrpc": "2.0",
"id": 1,
"result": [
{
"core": 0,
"nqn": "nqn.2014-08.org.nvmexpress.discovery",
"subtype": "Discovery"
"listen_addresses": [],
"hosts": [],
"allow_any_host": true
},
{
"core": 5,
"nqn": "nqn.2016-06.io.spdk:cnode1",
"subtype": "NVMe",
"listen_addresses": [
{
"trtype": "RDMA",
"adrfam": "IPv4",
"traddr": "192.168.0.123",
"trsvcid": "4420"
}
],
"hosts": [
{"nqn": "nqn.2016-06.io.spdk:host1"}
],
"allow_any_host": false,
"serial_number": "abcdef",
"namespaces": [
{"nsid": 1, "name": "Malloc2"},
{"nsid": 2, "name": "Nvme0n1"}
]
}
]
}
construct_nvmf_subsystem method
Construct an NVMe over Fabrics target subsystem.
Parameters
Name | Optional | Type | Description |
---|---|---|---|
core | Optional | number | Core to run the subsystem's poller on. Default: Automatically assign a core. |
nqn | Required | string | Subsystem NQN |
listen_addresses | Required | array | Array of @ref rpc_construct_nvmf_subsystem_listen_address objects |
hosts | Optional | array | Array of strings containing allowed host NQNs. Default: No hosts allowed. |
allow_any_host | Optional | boolean | Allow any host (true ) or enforce allowed host whitelist (false ). Default: false . |
serial_number | Required | string | Serial number of virtual controller |
namespaces | Optional | array | Array of @ref rpc_construct_nvmf_subsystem_namespace objects. Default: No namespaces. |
listen_address
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 |
namespace
Name | Optional | Type | Description |
---|---|---|---|
nsid | Optional | number | Namespace ID between 1 and 4294967294, inclusive. Default: Automatically assign NSID. |
bdev_name | Required | string | Name of bdev to expose as a namespace. |
Example
Example request:
{
"jsonrpc": "2.0",
"id": 1,
"method": "construct_nvmf_subsystem",
"params": {
"core": 5,
"nqn": "nqn.2016-06.io.spdk:cnode1",
"listen_addresses": [
{
"trtype": "RDMA",
"adrfam": "IPv4",
"traddr": "192.168.0.123",
"trsvcid: "4420"
}
],
"hosts": [
"nqn.2016-06.io.spdk:host1",
"nqn.2016-06.io.spdk:host2"
],
"allow_any_host": false,
"serial_number": "abcdef",
"namespaces": [
{"nsid": 1, "name": "Malloc2"},
{"nsid": 2, "name": "Nvme0n1"}
]
}
}
Example response:
{
"jsonrpc": "2.0",
"id": 1,
"result": true
}
delete_nvmf_subsystem method
Delete an existing NVMe-oF subsystem.
Parameters
Parameter | Optional | Type | Description |
---|---|---|---|
nqn | Required | string | Subsystem NQN to delete. |
Example
Example request:
{
"jsonrpc": "2.0",
"id": 1,
"method": "delete_nvmf_subsystem",
"params": {
"nqn": "nqn.2016-06.io.spdk:cnode1"
}
}
Example response:
{
"jsonrpc": "2.0",
"id": 1,
"result": true
}