RPC: rename start_subsystem_init to framework_start_init
Signed-off-by: Maciej Wawryk <maciejx.wawryk@intel.com> Change-Id: I44a96f87f5565b3984f0a6919bf7f276207637a3 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/468130 Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
68ee93aac7
commit
e85d47123c
@ -76,12 +76,12 @@ SPDK applications progress through a set of states beginning with `STARTUP` and
|
|||||||
ending with `RUNTIME`.
|
ending with `RUNTIME`.
|
||||||
|
|
||||||
If the `--wait-for-rpc` parameter is provided SPDK will pause just before starting
|
If the `--wait-for-rpc` parameter is provided SPDK will pause just before starting
|
||||||
subsystem initialization. This state is called `STARTUP`. The JSON RPC server is
|
framework initialization. This state is called `STARTUP`. The JSON RPC server is
|
||||||
ready but only a small subsystem of commands are available to set up initialization
|
ready but only a small subset of commands are available to set up initialization
|
||||||
parameters. Those parameters can't be changed after the SPDK application enters
|
parameters. Those parameters can't be changed after the SPDK application enters
|
||||||
`RUNTIME` state. When the client finishes configuring the SPDK subsystems it
|
`RUNTIME` state. When the client finishes configuring the SPDK subsystems it
|
||||||
needs to issue the @ref rpc_start_subsystem_init RPC command to begin the
|
needs to issue the @ref rpc_framework_start_init RPC command to begin the
|
||||||
initialization process. After `rpc_start_subsystem_init` returns `true` SPDK
|
initialization process. After `rpc_framework_start_init` returns `true` SPDK
|
||||||
will enter the `RUNTIME` state and the list of available commands becomes much
|
will enter the `RUNTIME` state and the list of available commands becomes much
|
||||||
larger.
|
larger.
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ for any kind of error.
|
|||||||
|
|
||||||
Code | Description
|
Code | Description
|
||||||
------ | -----------
|
------ | -----------
|
||||||
-1 | Invalid state - given method exists but it is not callable in [current runtime state](@ref rpc_start_subsystem_init)
|
-1 | Invalid state - given method exists but it is not callable in [current runtime state](@ref rpc_framework_start_init)
|
||||||
-32600 | Invalid request - not compliant with JSON-RPC 2.0 Specification
|
-32600 | Invalid request - not compliant with JSON-RPC 2.0 Specification
|
||||||
-32601 | Method not found
|
-32601 | Method not found
|
||||||
-32602 | @ref jsonrpc_invalid_params
|
-32602 | @ref jsonrpc_invalid_params
|
||||||
@ -134,7 +134,7 @@ Example response:
|
|||||||
}
|
}
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
## start_subsystem_init {#rpc_start_subsystem_init}
|
## framework_start_init {#rpc_framework_start_init}
|
||||||
|
|
||||||
Start initialization of SPDK subsystems when it is deferred by starting SPDK application with option -w.
|
Start initialization of SPDK subsystems when it is deferred by starting SPDK application with option -w.
|
||||||
During its deferral some RPCs can be used to set global parameters for SPDK subsystems.
|
During its deferral some RPCs can be used to set global parameters for SPDK subsystems.
|
||||||
@ -156,7 +156,7 @@ Example request:
|
|||||||
{
|
{
|
||||||
"jsonrpc": "2.0",
|
"jsonrpc": "2.0",
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"method": "start_subsystem_init"
|
"method": "framework_start_init"
|
||||||
}
|
}
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
@ -238,7 +238,7 @@ Example response:
|
|||||||
"jsonrpc": "2.0",
|
"jsonrpc": "2.0",
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"result": [
|
"result": [
|
||||||
"start_subsystem_init",
|
"framework_start_init",
|
||||||
"rpc_get_methods",
|
"rpc_get_methods",
|
||||||
"get_scsi_devices",
|
"get_scsi_devices",
|
||||||
"net_get_interfaces",
|
"net_get_interfaces",
|
||||||
|
@ -1056,7 +1056,7 @@ spdk_app_usage(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
spdk_rpc_start_subsystem_init_cpl(int rc, void *arg1)
|
spdk_rpc_framework_start_init_cpl(int rc, void *arg1)
|
||||||
{
|
{
|
||||||
struct spdk_jsonrpc_request *request = arg1;
|
struct spdk_jsonrpc_request *request = arg1;
|
||||||
struct spdk_json_write_ctx *w;
|
struct spdk_json_write_ctx *w;
|
||||||
@ -1065,7 +1065,7 @@ spdk_rpc_start_subsystem_init_cpl(int rc, void *arg1)
|
|||||||
|
|
||||||
if (rc) {
|
if (rc) {
|
||||||
spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR,
|
spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR,
|
||||||
"subsystem_initialization failed");
|
"framework_initialization failed");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1078,18 +1078,19 @@ spdk_rpc_start_subsystem_init_cpl(int rc, void *arg1)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
spdk_rpc_start_subsystem_init(struct spdk_jsonrpc_request *request,
|
spdk_rpc_framework_start_init(struct spdk_jsonrpc_request *request,
|
||||||
const struct spdk_json_val *params)
|
const struct spdk_json_val *params)
|
||||||
{
|
{
|
||||||
if (params != NULL) {
|
if (params != NULL) {
|
||||||
spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS,
|
spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS,
|
||||||
"start_subsystem_init requires no parameters");
|
"framework_start_init requires no parameters");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
spdk_subsystem_init(spdk_rpc_start_subsystem_init_cpl, request);
|
spdk_subsystem_init(spdk_rpc_framework_start_init_cpl, request);
|
||||||
}
|
}
|
||||||
SPDK_RPC_REGISTER("start_subsystem_init", spdk_rpc_start_subsystem_init, SPDK_RPC_STARTUP)
|
SPDK_RPC_REGISTER("framework_start_init", spdk_rpc_framework_start_init, SPDK_RPC_STARTUP)
|
||||||
|
SPDK_RPC_REGISTER_ALIAS_DEPRECATED(framework_start_init, start_subsystem_init)
|
||||||
|
|
||||||
struct subsystem_init_poller_ctx {
|
struct subsystem_init_poller_ctx {
|
||||||
struct spdk_poller *init_poller;
|
struct spdk_poller *init_poller;
|
||||||
|
@ -401,7 +401,7 @@ subsystem_init_done(int rc, void *arg1)
|
|||||||
|
|
||||||
spdk_rpc_set_state(SPDK_RPC_RUNTIME);
|
spdk_rpc_set_state(SPDK_RPC_RUNTIME);
|
||||||
/* Another round. This time for RUNTIME methods */
|
/* Another round. This time for RUNTIME methods */
|
||||||
SPDK_DEBUG_APP_CFG("'start_subsystem_init' done - continuing configuration\n");
|
SPDK_DEBUG_APP_CFG("'framework_start_init' done - continuing configuration\n");
|
||||||
|
|
||||||
assert(ctx != NULL);
|
assert(ctx != NULL);
|
||||||
if (ctx->subsystems) {
|
if (ctx->subsystems) {
|
||||||
@ -424,7 +424,7 @@ static struct spdk_json_object_decoder subsystem_decoders[] = {
|
|||||||
* There are two iterations:
|
* There are two iterations:
|
||||||
*
|
*
|
||||||
* In first iteration only STARTUP RPC methods are used, other methods are ignored. When
|
* In first iteration only STARTUP RPC methods are used, other methods are ignored. When
|
||||||
* allsubsystems are walked the ctx->subsystems_it became NULL and "start_subsystem_init"
|
* allsubsystems are walked the ctx->subsystems_it became NULL and "framework_start_init"
|
||||||
* is called to let the SPDK move to RUNTIME state (initialize all subsystems) and
|
* is called to let the SPDK move to RUNTIME state (initialize all subsystems) and
|
||||||
* second iteration begins.
|
* second iteration begins.
|
||||||
*
|
*
|
||||||
@ -440,7 +440,7 @@ spdk_app_json_config_load_subsystem(void *_ctx)
|
|||||||
|
|
||||||
if (ctx->subsystems_it == NULL) {
|
if (ctx->subsystems_it == NULL) {
|
||||||
if (spdk_rpc_get_state() == SPDK_RPC_STARTUP) {
|
if (spdk_rpc_get_state() == SPDK_RPC_STARTUP) {
|
||||||
SPDK_DEBUG_APP_CFG("No more entries for current state, calling 'start_subsystem_init'\n");
|
SPDK_DEBUG_APP_CFG("No more entries for current state, calling 'framework_start_init'\n");
|
||||||
spdk_subsystem_init(subsystem_init_done, ctx);
|
spdk_subsystem_init(subsystem_init_done, ctx);
|
||||||
} else {
|
} else {
|
||||||
spdk_app_json_config_load_done(ctx, 0);
|
spdk_app_json_config_load_done(ctx, 0);
|
||||||
|
@ -39,11 +39,12 @@ if __name__ == "__main__":
|
|||||||
parser.set_defaults(dry_run=False)
|
parser.set_defaults(dry_run=False)
|
||||||
subparsers = parser.add_subparsers(help='RPC methods', dest='called_rpc_name')
|
subparsers = parser.add_subparsers(help='RPC methods', dest='called_rpc_name')
|
||||||
|
|
||||||
def start_subsystem_init(args):
|
def framework_start_init(args):
|
||||||
rpc.start_subsystem_init(args.client)
|
rpc.framework_start_init(args.client)
|
||||||
|
|
||||||
p = subparsers.add_parser('start_subsystem_init', help='Start initialization of subsystems')
|
p = subparsers.add_parser('framework_start_init', aliases=['start_subsystem_init'],
|
||||||
p.set_defaults(func=start_subsystem_init)
|
help='Start initialization of subsystems')
|
||||||
|
p.set_defaults(func=framework_start_init)
|
||||||
|
|
||||||
def wait_subsystem_init(args):
|
def wait_subsystem_init(args):
|
||||||
rpc.wait_subsystem_init(args.client)
|
rpc.wait_subsystem_init(args.client)
|
||||||
|
@ -21,9 +21,10 @@ from . import client as rpc_client
|
|||||||
from .helpers import deprecated_alias
|
from .helpers import deprecated_alias
|
||||||
|
|
||||||
|
|
||||||
def start_subsystem_init(client):
|
@deprecated_alias('start_subsystem_init')
|
||||||
|
def framework_start_init(client):
|
||||||
"""Start initialization of subsystems"""
|
"""Start initialization of subsystems"""
|
||||||
return client.call('start_subsystem_init')
|
return client.call('framework_start_init')
|
||||||
|
|
||||||
|
|
||||||
def wait_subsystem_init(client):
|
def wait_subsystem_init(client):
|
||||||
@ -99,8 +100,8 @@ def load_config(client, fd, include_aliases=False):
|
|||||||
|
|
||||||
# check if methods in the config file are known
|
# check if methods in the config file are known
|
||||||
allowed_methods = client.call('rpc_get_methods', {'include_aliases': include_aliases})
|
allowed_methods = client.call('rpc_get_methods', {'include_aliases': include_aliases})
|
||||||
if not subsystems and 'start_subsystem_init' in allowed_methods:
|
if not subsystems and 'framework_start_init' in allowed_methods:
|
||||||
start_subsystem_init(client)
|
framework_start_init(client)
|
||||||
return
|
return
|
||||||
|
|
||||||
for subsystem in list(subsystems):
|
for subsystem in list(subsystems):
|
||||||
@ -127,8 +128,8 @@ def load_config(client, fd, include_aliases=False):
|
|||||||
if not config:
|
if not config:
|
||||||
subsystems.remove(subsystem)
|
subsystems.remove(subsystem)
|
||||||
|
|
||||||
if 'start_subsystem_init' in allowed_methods:
|
if 'framework_start_init' in allowed_methods:
|
||||||
start_subsystem_init(client)
|
framework_start_init(client)
|
||||||
allowed_found = True
|
allowed_found = True
|
||||||
|
|
||||||
if not allowed_found:
|
if not allowed_found:
|
||||||
|
@ -27,7 +27,7 @@ class UIRoot(UINode):
|
|||||||
if self.is_init is False:
|
if self.is_init is False:
|
||||||
methods = "\n".join(self.methods)
|
methods = "\n".join(self.methods)
|
||||||
self.shell.log.warning("SPDK Application is not yet initialized.\n"
|
self.shell.log.warning("SPDK Application is not yet initialized.\n"
|
||||||
"Please initialize subsystems with start_subsystem_init command.\n"
|
"Please initialize subsystems with framework_start_init command.\n"
|
||||||
"List of available commands in current state:\n"
|
"List of available commands in current state:\n"
|
||||||
"%s" % methods)
|
"%s" % methods)
|
||||||
else:
|
else:
|
||||||
@ -74,8 +74,8 @@ class UIRoot(UINode):
|
|||||||
return []
|
return []
|
||||||
return w
|
return w
|
||||||
|
|
||||||
def ui_command_start_subsystem_init(self):
|
def ui_command_framework_start_init(self):
|
||||||
if rpc.start_subsystem_init(self.client):
|
if rpc.framework_start_init(self.client):
|
||||||
self.is_init = True
|
self.is_init = True
|
||||||
self.refresh()
|
self.refresh()
|
||||||
|
|
||||||
@ -99,7 +99,7 @@ class UIRoot(UINode):
|
|||||||
return rpc.rpc_get_methods(self.client, current=current)
|
return rpc.rpc_get_methods(self.client, current=current)
|
||||||
|
|
||||||
def check_init(self):
|
def check_init(self):
|
||||||
return "start_subsystem_init" not in self.rpc_get_methods(current=True)
|
return "framework_start_init" not in self.rpc_get_methods(current=True)
|
||||||
|
|
||||||
def bdev_get_bdevs(self, bdev_type):
|
def bdev_get_bdevs(self, bdev_type):
|
||||||
if self.is_init:
|
if self.is_init:
|
||||||
|
@ -41,5 +41,5 @@ always be started with the --wait-for-rpc argument. Please see below for an exam
|
|||||||
./test/app/fuzz/vhost_fuzz/vhost_fuzz -t 30 --wait-for-rpc &
|
./test/app/fuzz/vhost_fuzz/vhost_fuzz -t 30 --wait-for-rpc &
|
||||||
./scripts/rpc.py fuzz_vhost_create_dev -s ./Vhost.1 -b -v
|
./scripts/rpc.py fuzz_vhost_create_dev -s ./Vhost.1 -b -v
|
||||||
./scripts/rpc.py fuzz_vhost_create_dev -s ./naa.VhostScsi0.1 -l -v
|
./scripts/rpc.py fuzz_vhost_create_dev -s ./naa.VhostScsi0.1 -l -v
|
||||||
./scripts/rpc.py start_subsystem_init
|
./scripts/rpc.py framework_start_init
|
||||||
~~~
|
~~~
|
||||||
|
@ -65,7 +65,7 @@ if [ "$TEST_TRANSPORT" == "scsi" ] || [ "$TEST_TRANSPORT" == "all" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# The test won't actually begin until this option is passed in.
|
# The test won't actually begin until this option is passed in.
|
||||||
$fuzz_generic_rpc_py start_subsystem_init
|
$fuzz_generic_rpc_py framework_start_init
|
||||||
|
|
||||||
wait $fuzzpid
|
wait $fuzzpid
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ waitforlisten $pid
|
|||||||
$rpc_py iscsi_set_options -o 30 -a 4
|
$rpc_py iscsi_set_options -o 30 -a 4
|
||||||
# Minimal number of bdev io pool (5) and cache (1)
|
# Minimal number of bdev io pool (5) and cache (1)
|
||||||
$rpc_py bdev_set_options -p 5 -c 1
|
$rpc_py bdev_set_options -p 5 -c 1
|
||||||
$rpc_py start_subsystem_init
|
$rpc_py framework_start_init
|
||||||
echo "iscsi_tgt is listening. Running tests..."
|
echo "iscsi_tgt is listening. Running tests..."
|
||||||
|
|
||||||
timing_exit start_iscsi_tgt
|
timing_exit start_iscsi_tgt
|
||||||
|
@ -38,7 +38,7 @@ trap 'killprocess $pid; delete_tmp_conf_files; exit 1 ' SIGINT SIGTERM EXIT
|
|||||||
|
|
||||||
waitforlisten $pid
|
waitforlisten $pid
|
||||||
$rpc_py load_subsystem_config < $testdir/iscsi.json
|
$rpc_py load_subsystem_config < $testdir/iscsi.json
|
||||||
$rpc_py start_subsystem_init
|
$rpc_py framework_start_init
|
||||||
echo "iscsi_tgt is listening. Running tests..."
|
echo "iscsi_tgt is listening. Running tests..."
|
||||||
|
|
||||||
timing_exit start_iscsi_tgt
|
timing_exit start_iscsi_tgt
|
||||||
|
@ -75,7 +75,7 @@ trap 'killprocess $pid; iscsitestfini $1 $2; exit 1' SIGINT SIGTERM EXIT
|
|||||||
|
|
||||||
waitforlisten $pid
|
waitforlisten $pid
|
||||||
$rpc_py iscsi_set_options -o 30 -a 16
|
$rpc_py iscsi_set_options -o 30 -a 16
|
||||||
$rpc_py start_subsystem_init
|
$rpc_py framework_start_init
|
||||||
echo "iscsi_tgt is listening. Running tests..."
|
echo "iscsi_tgt is listening. Running tests..."
|
||||||
|
|
||||||
timing_exit start_iscsi_tgt
|
timing_exit start_iscsi_tgt
|
||||||
|
@ -24,7 +24,7 @@ trap '$rpc_py bdev_split_delete Name0n1 || true; killprocess $pid; iscsitestfini
|
|||||||
|
|
||||||
waitforlisten $pid
|
waitforlisten $pid
|
||||||
$rpc_py iscsi_set_options -o 30 -a 4 -b $node_base
|
$rpc_py iscsi_set_options -o 30 -a 4 -b $node_base
|
||||||
$rpc_py start_subsystem_init
|
$rpc_py framework_start_init
|
||||||
$rootdir/scripts/gen_nvme.sh --json | $rpc_py load_subsystem_config
|
$rootdir/scripts/gen_nvme.sh --json | $rpc_py load_subsystem_config
|
||||||
$rpc_py bdev_malloc_create 512 4096 --name Malloc0
|
$rpc_py bdev_malloc_create 512 4096 --name Malloc0
|
||||||
echo "iscsi_tgt is listening. Running tests..."
|
echo "iscsi_tgt is listening. Running tests..."
|
||||||
|
@ -37,7 +37,7 @@ trap 'killprocess $pid; iscsitestfini $1 $2; exit 1' SIGINT SIGTERM EXIT
|
|||||||
|
|
||||||
waitforlisten $pid
|
waitforlisten $pid
|
||||||
$rpc_py iscsi_set_options -o 30 -a 16
|
$rpc_py iscsi_set_options -o 30 -a 16
|
||||||
$rpc_py start_subsystem_init
|
$rpc_py framework_start_init
|
||||||
echo "iscsi_tgt is listening. Running tests..."
|
echo "iscsi_tgt is listening. Running tests..."
|
||||||
|
|
||||||
timing_exit start_iscsi_tgt
|
timing_exit start_iscsi_tgt
|
||||||
|
@ -24,7 +24,7 @@ echo "iSCSI target launched. pid: $pid"
|
|||||||
trap 'killprocess $pid;exit 1' SIGINT SIGTERM EXIT
|
trap 'killprocess $pid;exit 1' SIGINT SIGTERM EXIT
|
||||||
waitforlisten $pid
|
waitforlisten $pid
|
||||||
$rpc_py iscsi_set_options -o 30 -a 4
|
$rpc_py iscsi_set_options -o 30 -a 4
|
||||||
$rpc_py start_subsystem_init
|
$rpc_py framework_start_init
|
||||||
echo "iscsi_tgt is listening. Running tests..."
|
echo "iscsi_tgt is listening. Running tests..."
|
||||||
|
|
||||||
timing_exit start_iscsi_tgt
|
timing_exit start_iscsi_tgt
|
||||||
|
@ -55,7 +55,7 @@ for ((i = 0; i < 2; i++)); do
|
|||||||
|
|
||||||
waitforlisten $pid $rpc_addr
|
waitforlisten $pid $rpc_addr
|
||||||
$rpc_py -s $rpc_addr iscsi_set_options -o 30 -a 64
|
$rpc_py -s $rpc_addr iscsi_set_options -o 30 -a 64
|
||||||
$rpc_py -s $rpc_addr start_subsystem_init
|
$rpc_py -s $rpc_addr framework_start_init
|
||||||
echo "iscsi_tgt is listening. Running tests..."
|
echo "iscsi_tgt is listening. Running tests..."
|
||||||
|
|
||||||
timing_exit start_iscsi_tgt_$i
|
timing_exit start_iscsi_tgt_$i
|
||||||
|
@ -34,7 +34,7 @@ trap 'iscsicleanup; killprocess $pid; iscsitestfini $1 $2; exit 1' SIGINT SIGTER
|
|||||||
|
|
||||||
waitforlisten $pid
|
waitforlisten $pid
|
||||||
$rpc_py iscsi_set_options -o 30 -a 16
|
$rpc_py iscsi_set_options -o 30 -a 16
|
||||||
$rpc_py start_subsystem_init
|
$rpc_py framework_start_init
|
||||||
echo "iscsi_tgt is listening. Running tests..."
|
echo "iscsi_tgt is listening. Running tests..."
|
||||||
|
|
||||||
timing_exit start_iscsi_tgt
|
timing_exit start_iscsi_tgt
|
||||||
|
@ -44,7 +44,7 @@ trap 'remove_backends; iscsicleanup; killprocess $iscsipid; iscsitestfini $1 $2;
|
|||||||
|
|
||||||
waitforlisten $iscsipid
|
waitforlisten $iscsipid
|
||||||
$rpc_py iscsi_set_options -o 30 -a 128
|
$rpc_py iscsi_set_options -o 30 -a 128
|
||||||
$rpc_py start_subsystem_init
|
$rpc_py framework_start_init
|
||||||
$rootdir/scripts/gen_nvme.sh --json | $rpc_py load_subsystem_config
|
$rootdir/scripts/gen_nvme.sh --json | $rpc_py load_subsystem_config
|
||||||
timing_exit start_iscsi_tgt
|
timing_exit start_iscsi_tgt
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ function run_nvme_remote() {
|
|||||||
trap 'killprocess $iscsipid; iscsitestfini $1 $2; nvmftestfini; exit 1' SIGINT SIGTERM EXIT
|
trap 'killprocess $iscsipid; iscsitestfini $1 $2; nvmftestfini; exit 1' SIGINT SIGTERM EXIT
|
||||||
waitforlisten $iscsipid "$iscsi_rpc_addr"
|
waitforlisten $iscsipid "$iscsi_rpc_addr"
|
||||||
$rpc_py -s "$iscsi_rpc_addr" iscsi_set_options -o 30 -a 16
|
$rpc_py -s "$iscsi_rpc_addr" iscsi_set_options -o 30 -a 16
|
||||||
$rpc_py -s "$iscsi_rpc_addr" start_subsystem_init
|
$rpc_py -s "$iscsi_rpc_addr" framework_start_init
|
||||||
if [ "$1" = "remote" ]; then
|
if [ "$1" = "remote" ]; then
|
||||||
$rpc_py -s $iscsi_rpc_addr bdev_nvme_attach_controller -b "Nvme0" -t "rdma" -f "ipv4" -a $NVMF_FIRST_TARGET_IP -s $NVMF_PORT -n nqn.2016-06.io.spdk:cnode1
|
$rpc_py -s $iscsi_rpc_addr bdev_nvme_attach_controller -b "Nvme0" -t "rdma" -f "ipv4" -a $NVMF_FIRST_TARGET_IP -s $NVMF_PORT -n nqn.2016-06.io.spdk:cnode1
|
||||||
fi
|
fi
|
||||||
@ -62,7 +62,7 @@ nvmfpid=$!
|
|||||||
echo "NVMf target launched. pid: $nvmfpid"
|
echo "NVMf target launched. pid: $nvmfpid"
|
||||||
trap 'iscsitestfini $1 $2; nvmftestfini; exit 1' SIGINT SIGTERM EXIT
|
trap 'iscsitestfini $1 $2; nvmftestfini; exit 1' SIGINT SIGTERM EXIT
|
||||||
waitforlisten $nvmfpid
|
waitforlisten $nvmfpid
|
||||||
$rpc_py start_subsystem_init
|
$rpc_py framework_start_init
|
||||||
$rpc_py nvmf_create_transport -t RDMA -u 8192
|
$rpc_py nvmf_create_transport -t RDMA -u 8192
|
||||||
echo "NVMf target has started."
|
echo "NVMf target has started."
|
||||||
bdevs=$($rpc_py bdev_malloc_create 64 512)
|
bdevs=$($rpc_py bdev_malloc_create 64 512)
|
||||||
|
@ -84,7 +84,7 @@ pid=$!
|
|||||||
trap 'rm -f $testdir/perf.job; killprocess $pid; print_backtrace; exit 1' ERR SIGTERM SIGABRT
|
trap 'rm -f $testdir/perf.job; killprocess $pid; print_backtrace; exit 1' ERR SIGTERM SIGABRT
|
||||||
waitforlisten "$pid" "$testdir/rpc_iscsi.sock"
|
waitforlisten "$pid" "$testdir/rpc_iscsi.sock"
|
||||||
$rpc_py iscsi_set_options -b "iqn.2016-06.io.spdk" -f "/usr/local/etc/spdk/auth.conf" -o 30 -i -l 0 -a 16
|
$rpc_py iscsi_set_options -b "iqn.2016-06.io.spdk" -f "/usr/local/etc/spdk/auth.conf" -o 30 -i -l 0 -a 16
|
||||||
$rpc_py start_subsystem_init
|
$rpc_py framework_start_init
|
||||||
$rootdir/scripts/gen_nvme.sh --json | $rpc_py load_subsystem_config
|
$rootdir/scripts/gen_nvme.sh --json | $rpc_py load_subsystem_config
|
||||||
sleep 1
|
sleep 1
|
||||||
timing_exit run_iscsi_app
|
timing_exit run_iscsi_app
|
||||||
|
@ -26,7 +26,7 @@ trap 'iscsicleanup; killprocess $pid; rm -f /tmp/pool_file*; exit 1' SIGINT SIGT
|
|||||||
|
|
||||||
waitforlisten $pid
|
waitforlisten $pid
|
||||||
$rpc_py iscsi_set_options -o 30 -a 16
|
$rpc_py iscsi_set_options -o 30 -a 16
|
||||||
$rpc_py start_subsystem_init
|
$rpc_py framework_start_init
|
||||||
echo "iscsi_tgt is listening. Running tests..."
|
echo "iscsi_tgt is listening. Running tests..."
|
||||||
timing_exit start_iscsi_target
|
timing_exit start_iscsi_target
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ trap 'killprocess $pid; rbd_cleanup; iscsitestfini $1 $2; exit 1' SIGINT SIGTERM
|
|||||||
|
|
||||||
waitforlisten $pid
|
waitforlisten $pid
|
||||||
$rpc_py iscsi_set_options -o 30 -a 16
|
$rpc_py iscsi_set_options -o 30 -a 16
|
||||||
$rpc_py start_subsystem_init
|
$rpc_py framework_start_init
|
||||||
echo "iscsi_tgt is listening. Running tests..."
|
echo "iscsi_tgt is listening. Running tests..."
|
||||||
|
|
||||||
timing_exit start_iscsi_tgt
|
timing_exit start_iscsi_tgt
|
||||||
|
@ -31,7 +31,7 @@ trap 'killprocess $pid; exit 1' SIGINT SIGTERM EXIT
|
|||||||
|
|
||||||
waitforlisten $pid
|
waitforlisten $pid
|
||||||
$rpc_py iscsi_set_options -o 30 -a 16
|
$rpc_py iscsi_set_options -o 30 -a 16
|
||||||
$rpc_py start_subsystem_init
|
$rpc_py framework_start_init
|
||||||
echo "iscsi_tgt is listening. Running tests..."
|
echo "iscsi_tgt is listening. Running tests..."
|
||||||
|
|
||||||
timing_exit start_iscsi_tgt
|
timing_exit start_iscsi_tgt
|
||||||
|
@ -39,7 +39,7 @@ $rpc_py iscsi_set_options -o 30 -a 16
|
|||||||
# RPC wait_subsystem_init should be blocked, so its process must be existed
|
# RPC wait_subsystem_init should be blocked, so its process must be existed
|
||||||
ps $rpc_wait_pid
|
ps $rpc_wait_pid
|
||||||
|
|
||||||
$rpc_py start_subsystem_init
|
$rpc_py framework_start_init
|
||||||
echo "iscsi_tgt is listening. Running tests..."
|
echo "iscsi_tgt is listening. Running tests..."
|
||||||
|
|
||||||
# RPC wait_subsystem_init should be already returned, so its process must be non-existed
|
# RPC wait_subsystem_init should be already returned, so its process must be non-existed
|
||||||
|
@ -71,9 +71,9 @@ if __name__ == "__main__":
|
|||||||
check_empty
|
check_empty
|
||||||
check if provided configuration is logically empty
|
check if provided configuration is logically empty
|
||||||
delete_global_parameters
|
delete_global_parameters
|
||||||
remove pre-init configuration (pre start_subsystem_init RPC methods)
|
remove pre-init configuration (pre framework_start_init RPC methods)
|
||||||
delete_configs
|
delete_configs
|
||||||
remove post-init configuration (post start_subsystem_init RPC methods)
|
remove post-init configuration (post framework_start_init RPC methods)
|
||||||
sort
|
sort
|
||||||
remove nothing - just sort JSON objects (and subobjects but not arrays)
|
remove nothing - just sort JSON objects (and subobjects but not arrays)
|
||||||
in lexicographical order. This can be used to do plain text diff.""")
|
in lexicographical order. This can be used to do plain text diff.""")
|
||||||
|
@ -344,7 +344,7 @@ function json_config_test_init()
|
|||||||
|
|
||||||
#TODO: global subsystem params
|
#TODO: global subsystem params
|
||||||
|
|
||||||
# Load nvme configuration. The load_config will issue start_subsystem_init automatically
|
# Load nvme configuration. The load_config will issue framework_start_init automatically
|
||||||
(
|
(
|
||||||
echo '{"subsystems": [';
|
echo '{"subsystems": [';
|
||||||
$rootdir/scripts/gen_nvme.sh --json | jq -r "del(.config[] | select(.params.name!=\"Nvme0\"))"
|
$rootdir/scripts/gen_nvme.sh --json | jq -r "del(.config[] | select(.params.name!=\"Nvme0\"))"
|
||||||
|
@ -16,7 +16,7 @@ nvmfappstart "-m 0xF --wait-for-rpc"
|
|||||||
|
|
||||||
# Minimal number of bdev io pool (5) and cache (1)
|
# Minimal number of bdev io pool (5) and cache (1)
|
||||||
$rpc_py bdev_set_options -p 5 -c 1
|
$rpc_py bdev_set_options -p 5 -c 1
|
||||||
$rpc_py start_subsystem_init
|
$rpc_py framework_start_init
|
||||||
$rpc_py nvmf_create_transport $NVMF_TRANSPORT_OPTS -u 8192
|
$rpc_py nvmf_create_transport $NVMF_TRANSPORT_OPTS -u 8192
|
||||||
|
|
||||||
$rpc_py bdev_malloc_create $MALLOC_BDEV_SIZE $MALLOC_BLOCK_SIZE -b Malloc0
|
$rpc_py bdev_malloc_create $MALLOC_BDEV_SIZE $MALLOC_BLOCK_SIZE -b Malloc0
|
||||||
|
@ -14,11 +14,11 @@ trap 'on_error_exit;' ERR
|
|||||||
|
|
||||||
timing_enter run_iscsi_tgt
|
timing_enter run_iscsi_tgt
|
||||||
|
|
||||||
# Running iscsi target with --wait-for-rpc. Implies start_subsystem_init later
|
# Running iscsi target with --wait-for-rpc. Implies framework_start_init later
|
||||||
$rootdir/app/iscsi_tgt/iscsi_tgt -m 0x3 -p 0 -s 4096 --wait-for-rpc &
|
$rootdir/app/iscsi_tgt/iscsi_tgt -m 0x3 -p 0 -s 4096 --wait-for-rpc &
|
||||||
iscsi_tgt_pid=$!
|
iscsi_tgt_pid=$!
|
||||||
waitforlisten $iscsi_tgt_pid
|
waitforlisten $iscsi_tgt_pid
|
||||||
$rootdir/scripts/rpc.py start_subsystem_init
|
$rootdir/scripts/rpc.py framework_start_init
|
||||||
|
|
||||||
timing_exit run_iscsi_tgt
|
timing_exit run_iscsi_tgt
|
||||||
|
|
||||||
|
@ -45,6 +45,7 @@ DEFINE_STUB(spdk_event_allocate, struct spdk_event *, (uint32_t core, spdk_event
|
|||||||
DEFINE_STUB_V(spdk_subsystem_init, (spdk_subsystem_init_fn cb_fn, void *cb_arg));
|
DEFINE_STUB_V(spdk_subsystem_init, (spdk_subsystem_init_fn cb_fn, void *cb_arg));
|
||||||
DEFINE_STUB_V(spdk_rpc_register_method, (const char *method, spdk_rpc_method_handler func,
|
DEFINE_STUB_V(spdk_rpc_register_method, (const char *method, spdk_rpc_method_handler func,
|
||||||
uint32_t state_mask));
|
uint32_t state_mask));
|
||||||
|
DEFINE_STUB_V(spdk_rpc_register_alias_deprecated, (const char *method, const char *alias));
|
||||||
DEFINE_STUB_V(spdk_rpc_set_state, (uint32_t state));
|
DEFINE_STUB_V(spdk_rpc_set_state, (uint32_t state));
|
||||||
DEFINE_STUB(spdk_rpc_get_state, uint32_t, (void), SPDK_RPC_RUNTIME);
|
DEFINE_STUB(spdk_rpc_get_state, uint32_t, (void), SPDK_RPC_RUNTIME);
|
||||||
DEFINE_STUB_V(spdk_app_json_config_load, (const char *json_config_file, const char *rpc_addr,
|
DEFINE_STUB_V(spdk_app_json_config_load, (const char *json_config_file, const char *rpc_addr,
|
||||||
|
@ -45,7 +45,7 @@ $fuzz_specific_rpc_py fuzz_vhost_create_dev -s $(pwd)/naa.VhostScsi0.1 -l -v
|
|||||||
# test the vhost scsi management queue with valid data buffers.
|
# test the vhost scsi management queue with valid data buffers.
|
||||||
$fuzz_specific_rpc_py fuzz_vhost_create_dev -s $(pwd)/naa.VhostScsi0.2 -v -m
|
$fuzz_specific_rpc_py fuzz_vhost_create_dev -s $(pwd)/naa.VhostScsi0.2 -v -m
|
||||||
# The test won't actually begin until this option is passed in.
|
# The test won't actually begin until this option is passed in.
|
||||||
$fuzz_generic_rpc_py start_subsystem_init
|
$fuzz_generic_rpc_py framework_start_init
|
||||||
|
|
||||||
wait $fuzzpid
|
wait $fuzzpid
|
||||||
|
|
||||||
@ -59,7 +59,7 @@ trap 'killprocess $vhostpid; killprocess $fuzzpid; exit 1' SIGINT SIGTERM exit
|
|||||||
$fuzz_specific_rpc_py fuzz_vhost_create_dev -s $(pwd)/Vhost.1 -b -v
|
$fuzz_specific_rpc_py fuzz_vhost_create_dev -s $(pwd)/Vhost.1 -b -v
|
||||||
$fuzz_specific_rpc_py fuzz_vhost_create_dev -s $(pwd)/naa.VhostScsi0.1 -l -v
|
$fuzz_specific_rpc_py fuzz_vhost_create_dev -s $(pwd)/naa.VhostScsi0.1 -l -v
|
||||||
$fuzz_specific_rpc_py fuzz_vhost_create_dev -s $(pwd)/naa.VhostScsi0.2 -v -m
|
$fuzz_specific_rpc_py fuzz_vhost_create_dev -s $(pwd)/naa.VhostScsi0.2 -v -m
|
||||||
$fuzz_generic_rpc_py start_subsystem_init
|
$fuzz_generic_rpc_py framework_start_init
|
||||||
|
|
||||||
wait $fuzzpid
|
wait $fuzzpid
|
||||||
|
|
||||||
|
@ -97,7 +97,7 @@ function migration_tc2_configure_vhost()
|
|||||||
local nvmf_tgt_pid=$!
|
local nvmf_tgt_pid=$!
|
||||||
echo $nvmf_tgt_pid > $nvmf_dir/nvmf_tgt.pid
|
echo $nvmf_tgt_pid > $nvmf_dir/nvmf_tgt.pid
|
||||||
waitforlisten "$nvmf_tgt_pid" "$nvmf_dir/rpc.sock"
|
waitforlisten "$nvmf_tgt_pid" "$nvmf_dir/rpc.sock"
|
||||||
$rpc_nvmf start_subsystem_init
|
$rpc_nvmf framework_start_init
|
||||||
$rpc_nvmf nvmf_create_transport -t RDMA -u 8192
|
$rpc_nvmf nvmf_create_transport -t RDMA -u 8192
|
||||||
$rootdir/scripts/gen_nvme.sh --json | $rpc_nvmf load_subsystem_config
|
$rootdir/scripts/gen_nvme.sh --json | $rpc_nvmf load_subsystem_config
|
||||||
timing_exit start_nvmf_tgt
|
timing_exit start_nvmf_tgt
|
||||||
|
@ -107,7 +107,7 @@ function host1_start_nvmf()
|
|||||||
nvmf_tgt_pid=$!
|
nvmf_tgt_pid=$!
|
||||||
echo $nvmf_tgt_pid > $nvmf_dir/nvmf_tgt.pid
|
echo $nvmf_tgt_pid > $nvmf_dir/nvmf_tgt.pid
|
||||||
waitforlisten "$nvmf_tgt_pid" "$nvmf_dir/nvmf_rpc.sock"
|
waitforlisten "$nvmf_tgt_pid" "$nvmf_dir/nvmf_rpc.sock"
|
||||||
$rpc_nvmf start_subsystem_init
|
$rpc_nvmf framework_start_init
|
||||||
$rpc_nvmf nvmf_create_transport -t RDMA -u 8192
|
$rpc_nvmf nvmf_create_transport -t RDMA -u 8192
|
||||||
$rootdir/scripts/gen_nvme.sh --json | $rpc_nvmf load_subsystem_config
|
$rootdir/scripts/gen_nvme.sh --json | $rpc_nvmf load_subsystem_config
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ trap 'killprocess $svcpid; exit 1' SIGINT SIGTERM EXIT
|
|||||||
waitforlisten $svcpid
|
waitforlisten $svcpid
|
||||||
|
|
||||||
$rpc_py enable_vmd
|
$rpc_py enable_vmd
|
||||||
$rpc_py start_subsystem_init
|
$rpc_py framework_start_init
|
||||||
|
|
||||||
for bdf in $pci_devs; do
|
for bdf in $pci_devs; do
|
||||||
$rpc_py bdev_nvme_attach_controller -b NVMe_$bdf -t PCIe -a $bdf
|
$rpc_py bdev_nvme_attach_controller -b NVMe_$bdf -t PCIe -a $bdf
|
||||||
|
Loading…
Reference in New Issue
Block a user