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
|
||||
|
||||
### 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
|
||||
|
||||
### 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_zerocopy_send | Optional | boolean | Enable or disable zero copy on send
|
||||
enable_quick_ack | Optional | boolean | Enable or disable quick ACK
|
||||
enable_placement_id | Optional | boolean | Enable or disable placement_id
|
||||
|
||||
### Response
|
||||
|
||||
@ -6949,7 +6950,8 @@ Example request:
|
||||
"send_buf_size": 2097152,
|
||||
"enable_recv_pipe": false,
|
||||
"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.
|
||||
*/
|
||||
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)/../..)
|
||||
include $(SPDK_ROOT_DIR)/mk/spdk.common.mk
|
||||
|
||||
SO_VER := 4
|
||||
SO_VER := 5
|
||||
SO_MINOR := 0
|
||||
|
||||
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_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_placement_id", sock_opts.enable_placement_id);
|
||||
spdk_json_write_object_end(w);
|
||||
spdk_jsonrpc_end_result(request, w);
|
||||
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),
|
||||
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
|
||||
|
@ -83,6 +83,7 @@ static struct spdk_sock_impl_opts g_spdk_posix_sock_impl_opts = {
|
||||
.enable_recv_pipe = true,
|
||||
.enable_zerocopy_send = true,
|
||||
.enable_quickack = false,
|
||||
.enable_placement_id = false,
|
||||
};
|
||||
|
||||
static int
|
||||
@ -1103,6 +1104,10 @@ posix_sock_get_placement_id(struct spdk_sock *_sock, int *placement_id)
|
||||
{
|
||||
int rc = -1;
|
||||
|
||||
if (!g_spdk_posix_sock_impl_opts.enable_placement_id) {
|
||||
return rc;
|
||||
}
|
||||
|
||||
#if defined(SO_INCOMING_NAPI_ID)
|
||||
struct spdk_posix_sock *sock = __posix_sock(_sock);
|
||||
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_zerocopy_send);
|
||||
GET_FIELD(enable_quickack);
|
||||
GET_FIELD(enable_placement_id);
|
||||
|
||||
#undef GET_FIELD
|
||||
#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_zerocopy_send);
|
||||
SET_FIELD(enable_quickack);
|
||||
SET_FIELD(enable_placement_id);
|
||||
|
||||
#undef SET_FIELD
|
||||
#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,
|
||||
.enable_recv_pipe = true,
|
||||
.enable_quickack = false,
|
||||
.enable_placement_id = false,
|
||||
};
|
||||
|
||||
#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;
|
||||
|
||||
if (!g_spdk_uring_sock_impl_opts.enable_placement_id) {
|
||||
return rc;
|
||||
}
|
||||
|
||||
#if defined(SO_INCOMING_NAPI_ID)
|
||||
struct spdk_uring_sock *sock = __uring_sock(_sock);
|
||||
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(enable_recv_pipe);
|
||||
GET_FIELD(enable_quickack);
|
||||
GET_FIELD(enable_placement_id);
|
||||
|
||||
#undef GET_FIELD
|
||||
#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(enable_recv_pipe);
|
||||
SET_FIELD(enable_quickack);
|
||||
SET_FIELD(enable_placement_id);
|
||||
|
||||
#undef SET_FIELD
|
||||
#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,
|
||||
enable_recv_pipe=args.enable_recv_pipe,
|
||||
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.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')
|
||||
p.add_argument('--disable-quickack', help='Disable quick ACK',
|
||||
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,
|
||||
enable_quickack=None)
|
||||
enable_quickack=None, enable_placement_id=None)
|
||||
|
||||
def check_called_name(name):
|
||||
if name in deprecated_aliases:
|
||||
|
@ -17,7 +17,8 @@ def sock_impl_set_options(client,
|
||||
send_buf_size=None,
|
||||
enable_recv_pipe=None,
|
||||
enable_zerocopy_send=None,
|
||||
enable_quickack=None):
|
||||
enable_quickack=None,
|
||||
enable_placement_id=None):
|
||||
"""Set parameters for the socket layer implementation.
|
||||
|
||||
Args:
|
||||
@ -27,6 +28,7 @@ def sock_impl_set_options(client,
|
||||
enable_recv_pipe: enable or disable receive pipe (optional)
|
||||
enable_zerocopy_send: enable or disable zerocopy on send (optional)
|
||||
enable_quickack: enable or disable quickack (optional)
|
||||
enable_placement_id: enable or disable placement_id (optional)
|
||||
"""
|
||||
params = {}
|
||||
|
||||
@ -41,5 +43,7 @@ def sock_impl_set_options(client,
|
||||
params['enable_zerocopy_send'] = enable_zerocopy_send
|
||||
if enable_quickack is not None:
|
||||
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)
|
||||
|
Loading…
Reference in New Issue
Block a user