sock: enable placement_id configuration in sock layer
This patch is used to enable placement_id getting in sock layer and also add the rpc support. Signed-off-by: Ziye Yang <ziye.yang@intel.com> Change-Id: I70de57b0ed392a0aefce9d3ff1f61ef924015a87 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/4146 Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com> Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
ebb903d46e
commit
a6db2f3590
11
CHANGELOG.md
11
CHANGELOG.md
@ -19,6 +19,17 @@ Updated ISA-L submodule to v2.29.0.
|
|||||||
|
|
||||||
Updated OCF submodule to v20.03.1
|
Updated OCF submodule to v20.03.1
|
||||||
|
|
||||||
|
### sock
|
||||||
|
|
||||||
|
The `enable_placement_id` field was added in the struct spdk_sock_impl_opts to
|
||||||
|
make the placement_id feature configurable by users. The default setting is
|
||||||
|
not enabled.
|
||||||
|
|
||||||
|
### rpc
|
||||||
|
|
||||||
|
A new optional parameter `enable_placement_id` was added to the `sock_impl_set_options`
|
||||||
|
RPC.
|
||||||
|
|
||||||
## v20.07: SPDK CSI driver, new accel_fw commands, I/O abort support
|
## v20.07: SPDK CSI driver, new accel_fw commands, I/O abort support
|
||||||
|
|
||||||
### accel
|
### accel
|
||||||
|
@ -6929,6 +6929,7 @@ send_buf_size | Optional | number | Size of socket send buffer in
|
|||||||
enable_recv_pipe | Optional | boolean | Enable or disable receive pipe
|
enable_recv_pipe | Optional | boolean | Enable or disable receive pipe
|
||||||
enable_zerocopy_send | Optional | boolean | Enable or disable zero copy on send
|
enable_zerocopy_send | Optional | boolean | Enable or disable zero copy on send
|
||||||
enable_quick_ack | Optional | boolean | Enable or disable quick ACK
|
enable_quick_ack | Optional | boolean | Enable or disable quick ACK
|
||||||
|
enable_placement_id | Optional | boolean | Enable or disable placement_id
|
||||||
|
|
||||||
### Response
|
### Response
|
||||||
|
|
||||||
@ -6949,7 +6950,8 @@ Example request:
|
|||||||
"send_buf_size": 2097152,
|
"send_buf_size": 2097152,
|
||||||
"enable_recv_pipe": false,
|
"enable_recv_pipe": false,
|
||||||
"enable_zerocopy_send": true,
|
"enable_zerocopy_send": true,
|
||||||
"enable_quick_ack": false
|
"enable_quick_ack": false,
|
||||||
|
"enable_placement_id": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
~~~
|
~~~
|
||||||
|
@ -112,6 +112,12 @@ struct spdk_sock_impl_opts {
|
|||||||
* Enable or disable quick ACK. Used by posix and uring socket modules.
|
* Enable or disable quick ACK. Used by posix and uring socket modules.
|
||||||
*/
|
*/
|
||||||
bool enable_quickack;
|
bool enable_quickack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable or disable placement_id. Used by posix and uring socket modules.
|
||||||
|
*/
|
||||||
|
bool enable_placement_id;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
SPDK_ROOT_DIR := $(abspath $(CURDIR)/../..)
|
SPDK_ROOT_DIR := $(abspath $(CURDIR)/../..)
|
||||||
include $(SPDK_ROOT_DIR)/mk/spdk.common.mk
|
include $(SPDK_ROOT_DIR)/mk/spdk.common.mk
|
||||||
|
|
||||||
SO_VER := 4
|
SO_VER := 5
|
||||||
SO_MINOR := 0
|
SO_MINOR := 0
|
||||||
|
|
||||||
C_SRCS = sock.c net_framework.c sock_rpc.c
|
C_SRCS = sock.c net_framework.c sock_rpc.c
|
||||||
|
@ -76,6 +76,7 @@ rpc_sock_impl_get_options(struct spdk_jsonrpc_request *request,
|
|||||||
spdk_json_write_named_bool(w, "enable_recv_pipe", sock_opts.enable_recv_pipe);
|
spdk_json_write_named_bool(w, "enable_recv_pipe", sock_opts.enable_recv_pipe);
|
||||||
spdk_json_write_named_bool(w, "enable_zerocopy_send", sock_opts.enable_zerocopy_send);
|
spdk_json_write_named_bool(w, "enable_zerocopy_send", sock_opts.enable_zerocopy_send);
|
||||||
spdk_json_write_named_bool(w, "enable_quickack", sock_opts.enable_quickack);
|
spdk_json_write_named_bool(w, "enable_quickack", sock_opts.enable_quickack);
|
||||||
|
spdk_json_write_named_bool(w, "enable_placement_id", sock_opts.enable_placement_id);
|
||||||
spdk_json_write_object_end(w);
|
spdk_json_write_object_end(w);
|
||||||
spdk_jsonrpc_end_result(request, w);
|
spdk_jsonrpc_end_result(request, w);
|
||||||
free(impl_name);
|
free(impl_name);
|
||||||
@ -113,6 +114,11 @@ static const struct spdk_json_object_decoder rpc_sock_impl_set_opts_decoders[] =
|
|||||||
"enable_quickack", offsetof(struct spdk_rpc_sock_impl_set_opts, sock_opts.enable_quickack),
|
"enable_quickack", offsetof(struct spdk_rpc_sock_impl_set_opts, sock_opts.enable_quickack),
|
||||||
spdk_json_decode_bool, true
|
spdk_json_decode_bool, true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"enable_placement_id", offsetof(struct spdk_rpc_sock_impl_set_opts, sock_opts.enable_placement_id),
|
||||||
|
spdk_json_decode_bool, true
|
||||||
|
},
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -83,6 +83,7 @@ static struct spdk_sock_impl_opts g_spdk_posix_sock_impl_opts = {
|
|||||||
.enable_recv_pipe = true,
|
.enable_recv_pipe = true,
|
||||||
.enable_zerocopy_send = true,
|
.enable_zerocopy_send = true,
|
||||||
.enable_quickack = false,
|
.enable_quickack = false,
|
||||||
|
.enable_placement_id = false,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -1103,6 +1104,10 @@ posix_sock_get_placement_id(struct spdk_sock *_sock, int *placement_id)
|
|||||||
{
|
{
|
||||||
int rc = -1;
|
int rc = -1;
|
||||||
|
|
||||||
|
if (!g_spdk_posix_sock_impl_opts.enable_placement_id) {
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(SO_INCOMING_NAPI_ID)
|
#if defined(SO_INCOMING_NAPI_ID)
|
||||||
struct spdk_posix_sock *sock = __posix_sock(_sock);
|
struct spdk_posix_sock *sock = __posix_sock(_sock);
|
||||||
socklen_t salen = sizeof(int);
|
socklen_t salen = sizeof(int);
|
||||||
@ -1356,6 +1361,7 @@ posix_sock_impl_get_opts(struct spdk_sock_impl_opts *opts, size_t *len)
|
|||||||
GET_FIELD(enable_recv_pipe);
|
GET_FIELD(enable_recv_pipe);
|
||||||
GET_FIELD(enable_zerocopy_send);
|
GET_FIELD(enable_zerocopy_send);
|
||||||
GET_FIELD(enable_quickack);
|
GET_FIELD(enable_quickack);
|
||||||
|
GET_FIELD(enable_placement_id);
|
||||||
|
|
||||||
#undef GET_FIELD
|
#undef GET_FIELD
|
||||||
#undef FIELD_OK
|
#undef FIELD_OK
|
||||||
@ -1385,6 +1391,7 @@ posix_sock_impl_set_opts(const struct spdk_sock_impl_opts *opts, size_t len)
|
|||||||
SET_FIELD(enable_recv_pipe);
|
SET_FIELD(enable_recv_pipe);
|
||||||
SET_FIELD(enable_zerocopy_send);
|
SET_FIELD(enable_zerocopy_send);
|
||||||
SET_FIELD(enable_quickack);
|
SET_FIELD(enable_quickack);
|
||||||
|
SET_FIELD(enable_placement_id);
|
||||||
|
|
||||||
#undef SET_FIELD
|
#undef SET_FIELD
|
||||||
#undef FIELD_OK
|
#undef FIELD_OK
|
||||||
|
@ -104,6 +104,7 @@ static struct spdk_sock_impl_opts g_spdk_uring_sock_impl_opts = {
|
|||||||
.send_buf_size = MIN_SO_SNDBUF_SIZE,
|
.send_buf_size = MIN_SO_SNDBUF_SIZE,
|
||||||
.enable_recv_pipe = true,
|
.enable_recv_pipe = true,
|
||||||
.enable_quickack = false,
|
.enable_quickack = false,
|
||||||
|
.enable_placement_id = false,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define SPDK_URING_SOCK_REQUEST_IOV(req) ((struct iovec *)((uint8_t *)req + sizeof(struct spdk_sock_request)))
|
#define SPDK_URING_SOCK_REQUEST_IOV(req) ((struct iovec *)((uint8_t *)req + sizeof(struct spdk_sock_request)))
|
||||||
@ -1140,6 +1141,10 @@ uring_sock_get_placement_id(struct spdk_sock *_sock, int *placement_id)
|
|||||||
{
|
{
|
||||||
int rc = -1;
|
int rc = -1;
|
||||||
|
|
||||||
|
if (!g_spdk_uring_sock_impl_opts.enable_placement_id) {
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(SO_INCOMING_NAPI_ID)
|
#if defined(SO_INCOMING_NAPI_ID)
|
||||||
struct spdk_uring_sock *sock = __uring_sock(_sock);
|
struct spdk_uring_sock *sock = __uring_sock(_sock);
|
||||||
socklen_t salen = sizeof(int);
|
socklen_t salen = sizeof(int);
|
||||||
@ -1325,6 +1330,7 @@ uring_sock_impl_get_opts(struct spdk_sock_impl_opts *opts, size_t *len)
|
|||||||
GET_FIELD(send_buf_size);
|
GET_FIELD(send_buf_size);
|
||||||
GET_FIELD(enable_recv_pipe);
|
GET_FIELD(enable_recv_pipe);
|
||||||
GET_FIELD(enable_quickack);
|
GET_FIELD(enable_quickack);
|
||||||
|
GET_FIELD(enable_placement_id);
|
||||||
|
|
||||||
#undef GET_FIELD
|
#undef GET_FIELD
|
||||||
#undef FIELD_OK
|
#undef FIELD_OK
|
||||||
@ -1353,6 +1359,7 @@ uring_sock_impl_set_opts(const struct spdk_sock_impl_opts *opts, size_t len)
|
|||||||
SET_FIELD(send_buf_size);
|
SET_FIELD(send_buf_size);
|
||||||
SET_FIELD(enable_recv_pipe);
|
SET_FIELD(enable_recv_pipe);
|
||||||
SET_FIELD(enable_quickack);
|
SET_FIELD(enable_quickack);
|
||||||
|
SET_FIELD(enable_placement_id);
|
||||||
|
|
||||||
#undef SET_FIELD
|
#undef SET_FIELD
|
||||||
#undef FIELD_OK
|
#undef FIELD_OK
|
||||||
|
@ -2521,7 +2521,8 @@ Format: 'user:u1 secret:s1 muser:mu1 msecret:ms1,user:u2 secret:s2 muser:mu2 mse
|
|||||||
send_buf_size=args.send_buf_size,
|
send_buf_size=args.send_buf_size,
|
||||||
enable_recv_pipe=args.enable_recv_pipe,
|
enable_recv_pipe=args.enable_recv_pipe,
|
||||||
enable_zerocopy_send=args.enable_zerocopy_send,
|
enable_zerocopy_send=args.enable_zerocopy_send,
|
||||||
enable_quickack=args.enable_quickack)
|
enable_quickack=args.enable_quickack,
|
||||||
|
enable_placement_id=args.enable_placement_id)
|
||||||
|
|
||||||
p = subparsers.add_parser('sock_impl_set_options', help="""Set options of socket layer implementation""")
|
p = subparsers.add_parser('sock_impl_set_options', help="""Set options of socket layer implementation""")
|
||||||
p.add_argument('-i', '--impl', help='Socket implementation name, e.g. posix', required=True)
|
p.add_argument('-i', '--impl', help='Socket implementation name, e.g. posix', required=True)
|
||||||
@ -2539,8 +2540,12 @@ Format: 'user:u1 secret:s1 muser:mu1 msecret:ms1,user:u2 secret:s2 muser:mu2 mse
|
|||||||
action='store_true', dest='enable_quickack')
|
action='store_true', dest='enable_quickack')
|
||||||
p.add_argument('--disable-quickack', help='Disable quick ACK',
|
p.add_argument('--disable-quickack', help='Disable quick ACK',
|
||||||
action='store_false', dest='enable_quickack')
|
action='store_false', dest='enable_quickack')
|
||||||
|
p.add_argument('--enable-placement_id', help='Enable placement_id',
|
||||||
|
action='store_true', dest='enable_placement_id')
|
||||||
|
p.add_argument('--disable-placement_id', help='Disable placement_id',
|
||||||
|
action='store_false', dest='enable_placement_id')
|
||||||
p.set_defaults(func=sock_impl_set_options, enable_recv_pipe=None, enable_zerocopy_send=None,
|
p.set_defaults(func=sock_impl_set_options, enable_recv_pipe=None, enable_zerocopy_send=None,
|
||||||
enable_quickack=None)
|
enable_quickack=None, enable_placement_id=None)
|
||||||
|
|
||||||
def check_called_name(name):
|
def check_called_name(name):
|
||||||
if name in deprecated_aliases:
|
if name in deprecated_aliases:
|
||||||
|
@ -17,7 +17,8 @@ def sock_impl_set_options(client,
|
|||||||
send_buf_size=None,
|
send_buf_size=None,
|
||||||
enable_recv_pipe=None,
|
enable_recv_pipe=None,
|
||||||
enable_zerocopy_send=None,
|
enable_zerocopy_send=None,
|
||||||
enable_quickack=None):
|
enable_quickack=None,
|
||||||
|
enable_placement_id=None):
|
||||||
"""Set parameters for the socket layer implementation.
|
"""Set parameters for the socket layer implementation.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@ -27,6 +28,7 @@ def sock_impl_set_options(client,
|
|||||||
enable_recv_pipe: enable or disable receive pipe (optional)
|
enable_recv_pipe: enable or disable receive pipe (optional)
|
||||||
enable_zerocopy_send: enable or disable zerocopy on send (optional)
|
enable_zerocopy_send: enable or disable zerocopy on send (optional)
|
||||||
enable_quickack: enable or disable quickack (optional)
|
enable_quickack: enable or disable quickack (optional)
|
||||||
|
enable_placement_id: enable or disable placement_id (optional)
|
||||||
"""
|
"""
|
||||||
params = {}
|
params = {}
|
||||||
|
|
||||||
@ -41,5 +43,7 @@ def sock_impl_set_options(client,
|
|||||||
params['enable_zerocopy_send'] = enable_zerocopy_send
|
params['enable_zerocopy_send'] = enable_zerocopy_send
|
||||||
if enable_quickack is not None:
|
if enable_quickack is not None:
|
||||||
params['enable_quickack'] = enable_quickack
|
params['enable_quickack'] = enable_quickack
|
||||||
|
if enable_placement_id is not None:
|
||||||
|
params['enable_placement_id'] = enable_placement_id
|
||||||
|
|
||||||
return client.call('sock_impl_set_options', params)
|
return client.call('sock_impl_set_options', params)
|
||||||
|
Loading…
Reference in New Issue
Block a user