lib/iscsi: Add iscsi_start_portal_group RPC to start listening if not yet

Add an new RPC, iscsi_start_portal_group, to start listening on
portals if the specified portal group is not started yet.
The next patch will add an new parameter wait to the existing RPC,
iscsi_create_portal_group.

The RPC allows the specified portal group to be already started,
and returns a success response in this case.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I631d6bccffb38092c95694f922f10648e24d6ff7
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/5090
Community-CI: Broadcom CI
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
This commit is contained in:
Shuhei Matsumoto 2020-11-12 13:19:51 +09:00 committed by Tomasz Zawadzki
parent 7ac4961b33
commit 024d286527
4 changed files with 80 additions and 0 deletions

View File

@ -4472,6 +4472,42 @@ Example response:
}
~~~
## iscsi_start_portal_group method {#rpc_iscsi_start_portal_group}
Start listening on portals if the portal group is not started yet, or do nothing
if the portal group already started. Return a success response for both cases.
### Parameters
Name | Optional | Type | Description
--------------------------- | -------- | --------| -----------
tag | Required | number | Existing portal group tag
### Example
Example request:
~~~
{
"params": {
"tag": 1
},
"jsonrpc": "2.0",
"method": "iscsi_start_portal_group",
"id": 1
}
~~~
Example response:
~~~
{
"jsonrpc": "2.0",
"id": 1,
"result": true
}
~~~
## iscsi_delete_portal_group method {#rpc_iscsi_delete_portal_group}
Delete an existing portal group.

View File

@ -881,6 +881,28 @@ rpc_iscsi_delete_portal_group(struct spdk_jsonrpc_request *request,
SPDK_RPC_REGISTER("iscsi_delete_portal_group", rpc_iscsi_delete_portal_group, SPDK_RPC_RUNTIME)
SPDK_RPC_REGISTER_ALIAS_DEPRECATED(iscsi_delete_portal_group, delete_portal_group)
static int
_rpc_iscsi_start_portal_group(int pg_tag)
{
struct spdk_iscsi_portal_grp *pg;
pg = iscsi_portal_grp_find_by_tag(pg_tag);
if (!pg) {
return -ENODEV;
}
iscsi_portal_grp_resume(pg);
return 0;
}
static void
rpc_iscsi_start_portal_group(struct spdk_jsonrpc_request *request,
const struct spdk_json_val *params)
{
_rpc_iscsi_change_portal_group(request, params, _rpc_iscsi_start_portal_group);
}
SPDK_RPC_REGISTER("iscsi_start_portal_group", rpc_iscsi_start_portal_group, SPDK_RPC_RUNTIME)
struct rpc_portal_group_auth {
int32_t tag;
bool disable_chap;

View File

@ -1197,6 +1197,15 @@ Format: 'user:u1 secret:s1 muser:mu1 msecret:ms1,user:u2 secret:s2 muser:mu2 mse
portal must be from a private portal group.""", action='store_true')
p.set_defaults(func=iscsi_create_portal_group)
def iscsi_start_portal_group(args):
rpc.iscsi.iscsi_start_portal_group(args.client, tag=args.tag)
p = subparsers.add_parser('iscsi_start_portal_group',
help='Start listening on portals if it is not started yet.')
p.add_argument(
'tag', help='Portal group tag (unique, integer > 0)', type=int)
p.set_defaults(func=iscsi_start_portal_group)
def iscsi_create_initiator_group(args):
initiators = []
netmasks = []

View File

@ -442,6 +442,19 @@ def iscsi_create_portal_group(client, portals, tag, private):
return client.call('iscsi_create_portal_group', params)
def iscsi_start_portal_group(client, tag):
"""Start listening on portals if it is not started yet.
Args:
tag: Portal group tag (unique, integer > 0)
Returns:
True or False
"""
params = {'tag': tag}
return client.call('iscsi_start_portal_group', params)
@deprecated_alias('add_initiator_group')
def iscsi_create_initiator_group(client, tag, initiators, netmasks):
"""Add an initiator group.