Commit c61e14be authored by Maciej Wawryk's avatar Maciej Wawryk Committed by Ben Walker
Browse files

RPC: rename set_bdev_qos_limit to bdev_set_qos_limit



Signed-off-by: default avatarMaciej Wawryk <maciejx.wawryk@intel.com>
Change-Id: Ia22b0043307e92222541b6e7278e3d1485b61987
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/468084


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarPaul Luse <paul.e.luse@intel.com>
parent a96afb8b
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -70,9 +70,9 @@ Example response
}
~~~

## set_bdev_qos_limit {#set_bdev_qos_limit}
## bdev_set_qos_limit {#bdev_set_qos_limit}

Users can use the `set_bdev_qos_limit` RPC command to enable, adjust, and disable
Users can use the `bdev_set_qos_limit` RPC command to enable, adjust, and disable
rate limits on an existing bdev.  Two types of rate limits are supported:
IOPS and bandwidth.  The rate limits can be enabled, adjusted, and disabled at any
time for the specified bdev.  The bdev name is a required parameter for this
+3 −3
Original line number Diff line number Diff line
@@ -272,7 +272,7 @@ Example response:
    "iscsi_get_initiator_groups",
    "set_iscsi_options",
    "set_bdev_options",
    "set_bdev_qos_limit",
    "bdev_set_qos_limit",
    "bdev_get_bdevs",
    "bdev_get_iostat",
    "get_subsystem_config",
@@ -773,7 +773,7 @@ Note that histogram field is trimmed, actual encoded histogram length is ~80kb.
}
~~~

## set_bdev_qos_limit {#rpc_set_bdev_qos_limit}
## bdev_set_qos_limit {#rpc_bdev_set_qos_limit}

Set the quality of service rate limit on a bdev.

@@ -795,7 +795,7 @@ Example request:
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "set_bdev_qos_limit",
  "method": "bdev_set_qos_limit",
  "params": {
    "name": "Malloc0"
    "rw_ios_per_sec": 20000
+1 −1
Original line number Diff line number Diff line
@@ -759,7 +759,7 @@ spdk_bdev_qos_config_json(struct spdk_bdev *bdev, struct spdk_json_write_ctx *w)
	spdk_bdev_get_qos_rate_limits(bdev, limits);

	spdk_json_write_object_begin(w);
	spdk_json_write_named_string(w, "method", "set_bdev_qos_limit");
	spdk_json_write_named_string(w, "method", "bdev_set_qos_limit");

	spdk_json_write_named_object_begin(w, "params");
	spdk_json_write_named_string(w, "name", bdev->name);
+17 −16
Original line number Diff line number Diff line
@@ -410,43 +410,43 @@ SPDK_RPC_REGISTER("bdev_set_qd_sampling_period",
SPDK_RPC_REGISTER_ALIAS_DEPRECATED(bdev_set_qd_sampling_period,
				   set_bdev_qd_sampling_period)

struct rpc_set_bdev_qos_limit {
struct rpc_bdev_set_qos_limit {
	char		*name;
	uint64_t	limits[SPDK_BDEV_QOS_NUM_RATE_LIMIT_TYPES];
};

static void
free_rpc_set_bdev_qos_limit(struct rpc_set_bdev_qos_limit *r)
free_rpc_bdev_set_qos_limit(struct rpc_bdev_set_qos_limit *r)
{
	free(r->name);
}

static const struct spdk_json_object_decoder rpc_set_bdev_qos_limit_decoders[] = {
	{"name", offsetof(struct rpc_set_bdev_qos_limit, name), spdk_json_decode_string},
static const struct spdk_json_object_decoder rpc_bdev_set_qos_limit_decoders[] = {
	{"name", offsetof(struct rpc_bdev_set_qos_limit, name), spdk_json_decode_string},
	{
		"rw_ios_per_sec", offsetof(struct rpc_set_bdev_qos_limit,
		"rw_ios_per_sec", offsetof(struct rpc_bdev_set_qos_limit,
					   limits[SPDK_BDEV_QOS_RW_IOPS_RATE_LIMIT]),
		spdk_json_decode_uint64, true
	},
	{
		"rw_mbytes_per_sec", offsetof(struct rpc_set_bdev_qos_limit,
		"rw_mbytes_per_sec", offsetof(struct rpc_bdev_set_qos_limit,
					      limits[SPDK_BDEV_QOS_RW_BPS_RATE_LIMIT]),
		spdk_json_decode_uint64, true
	},
	{
		"r_mbytes_per_sec", offsetof(struct rpc_set_bdev_qos_limit,
		"r_mbytes_per_sec", offsetof(struct rpc_bdev_set_qos_limit,
					     limits[SPDK_BDEV_QOS_R_BPS_RATE_LIMIT]),
		spdk_json_decode_uint64, true
	},
	{
		"w_mbytes_per_sec", offsetof(struct rpc_set_bdev_qos_limit,
		"w_mbytes_per_sec", offsetof(struct rpc_bdev_set_qos_limit,
					     limits[SPDK_BDEV_QOS_W_BPS_RATE_LIMIT]),
		spdk_json_decode_uint64, true
	},
};

static void
spdk_rpc_set_bdev_qos_limit_complete(void *cb_arg, int status)
spdk_rpc_bdev_set_qos_limit_complete(void *cb_arg, int status)
{
	struct spdk_jsonrpc_request *request = cb_arg;
	struct spdk_json_write_ctx *w;
@@ -464,15 +464,15 @@ spdk_rpc_set_bdev_qos_limit_complete(void *cb_arg, int status)
}

static void
spdk_rpc_set_bdev_qos_limit(struct spdk_jsonrpc_request *request,
spdk_rpc_bdev_set_qos_limit(struct spdk_jsonrpc_request *request,
			    const struct spdk_json_val *params)
{
	struct rpc_set_bdev_qos_limit req = {NULL, {UINT64_MAX, UINT64_MAX, UINT64_MAX, UINT64_MAX}};
	struct rpc_bdev_set_qos_limit req = {NULL, {UINT64_MAX, UINT64_MAX, UINT64_MAX, UINT64_MAX}};
	struct spdk_bdev *bdev;
	int i;

	if (spdk_json_decode_object(params, rpc_set_bdev_qos_limit_decoders,
				    SPDK_COUNTOF(rpc_set_bdev_qos_limit_decoders),
	if (spdk_json_decode_object(params, rpc_bdev_set_qos_limit_decoders,
				    SPDK_COUNTOF(rpc_bdev_set_qos_limit_decoders),
				    &req)) {
		SPDK_ERRLOG("spdk_json_decode_object failed\n");
		spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR,
@@ -498,13 +498,14 @@ spdk_rpc_set_bdev_qos_limit(struct spdk_jsonrpc_request *request,
		goto cleanup;
	}

	spdk_bdev_set_qos_rate_limits(bdev, req.limits, spdk_rpc_set_bdev_qos_limit_complete, request);
	spdk_bdev_set_qos_rate_limits(bdev, req.limits, spdk_rpc_bdev_set_qos_limit_complete, request);

cleanup:
	free_rpc_set_bdev_qos_limit(&req);
	free_rpc_bdev_set_qos_limit(&req);
}

SPDK_RPC_REGISTER("set_bdev_qos_limit", spdk_rpc_set_bdev_qos_limit, SPDK_RPC_RUNTIME)
SPDK_RPC_REGISTER("bdev_set_qos_limit", spdk_rpc_bdev_set_qos_limit, SPDK_RPC_RUNTIME)
SPDK_RPC_REGISTER_ALIAS_DEPRECATED(bdev_set_qos_limit, set_bdev_qos_limit)

/* SPDK_RPC_ENABLE_BDEV_HISTOGRAM */

+5 −4
Original line number Diff line number Diff line
@@ -617,15 +617,16 @@ if __name__ == "__main__":
                   type=int)
    p.set_defaults(func=bdev_set_qd_sampling_period)

    def set_bdev_qos_limit(args):
        rpc.bdev.set_bdev_qos_limit(args.client,
    def bdev_set_qos_limit(args):
        rpc.bdev.bdev_set_qos_limit(args.client,
                                    name=args.name,
                                    rw_ios_per_sec=args.rw_ios_per_sec,
                                    rw_mbytes_per_sec=args.rw_mbytes_per_sec,
                                    r_mbytes_per_sec=args.r_mbytes_per_sec,
                                    w_mbytes_per_sec=args.w_mbytes_per_sec)

    p = subparsers.add_parser('set_bdev_qos_limit', help='Set QoS rate limit on a blockdev')
    p = subparsers.add_parser('bdev_set_qos_limit', aliases=['set_bdev_qos_limit'],
                              help='Set QoS rate limit on a blockdev')
    p.add_argument('name', help='Blockdev name to set QoS. Example: Malloc0')
    p.add_argument('--rw_ios_per_sec',
                   help='R/W IOs per second limit (>=10000, example: 20000). 0 means unlimited.',
@@ -639,7 +640,7 @@ if __name__ == "__main__":
    p.add_argument('--w_mbytes_per_sec',
                   help="Write megabytes per second limit (>=10, example: 100). 0 means unlimited.",
                   type=int, required=False)
    p.set_defaults(func=set_bdev_qos_limit)
    p.set_defaults(func=bdev_set_qos_limit)

    def bdev_error_inject_error(args):
        rpc.bdev.bdev_error_inject_error(args.client,
Loading