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:
Maciej Wawryk 2019-09-11 15:30:14 +02:00 committed by Jim Harris
parent 68ee93aac7
commit e85d47123c
33 changed files with 64 additions and 60 deletions

View File

@ -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.

View File

@ -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",

View File

@ -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;

View File

@ -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);

View File

@ -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)

View File

@ -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:

View File

@ -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:

View File

@ -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
~~~ ~~~

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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..."

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.""")

View File

@ -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\"))"

View File

@ -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

View File

@ -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

View File

@ -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,

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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