Commit a420536a authored by Yoav Cohen's avatar Yoav Cohen Committed by Tomasz Zawadzki
Browse files

bdev/rpc: Add uuid parameter to bdev_uring_create rpc



Add uuid to bdev_uring_create rpc and update all needed files.

Change-Id: I3dc0507b0acb2ce3065c7be2a66b25531a9a9d57
Signed-off-by: default avatarYoav Cohen <yoav@nvidia.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/21309


Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
Community-CI: Mellanox Build Bot
parent 33e0e723
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -10789,6 +10789,7 @@ Name | Optional | Type | Description
filename                | Required | string      | path to device or file (ex: /dev/nvme0n1)
name                    | Required | string      | name of bdev
block_size              | Optional | number      | block size of device (If omitted, get the block size from the file)
uuid                    | Optional | string      | UUID of new bdev

#### Example

+3 −0
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@ struct rpc_create_uring {
	char *name;
	char *filename;
	uint32_t block_size;
	struct spdk_uuid uuid;
};

/* Free the allocated memory resource after the RPC handling. */
@@ -29,6 +30,7 @@ static const struct spdk_json_object_decoder rpc_create_uring_decoders[] = {
	{"name", offsetof(struct rpc_create_uring, name), spdk_json_decode_string},
	{"filename", offsetof(struct rpc_create_uring, filename), spdk_json_decode_string},
	{"block_size", offsetof(struct rpc_create_uring, block_size), spdk_json_decode_uint32, true},
	{"uuid", offsetof(struct rpc_create_uring, uuid), spdk_json_decode_uuid, true},
};

/* Decode the parameters for this RPC method and properly create the uring
@@ -55,6 +57,7 @@ rpc_bdev_uring_create(struct spdk_jsonrpc_request *request,
	opts.block_size = req.block_size;
	opts.filename = req.filename;
	opts.name = req.name;
	opts.uuid = req.uuid;

	bdev = create_uring_bdev(&opts);
	if (!bdev) {
+5 −1
Original line number Diff line number Diff line
@@ -535,13 +535,14 @@ def bdev_aio_delete(client, name):
    return client.call('bdev_aio_delete', params)


def bdev_uring_create(client, filename, name, block_size=None):
def bdev_uring_create(client, filename, name, block_size=None, uuid=None):
    """Create a bdev with Linux io_uring backend.

    Args:
        filename: path to device or file (ex: /dev/nvme0n1)
        name: name of bdev
        block_size: block size of device (optional; autodetected if omitted)
        uuid: UUID of block device (optional)

    Returns:
        Name of created bdev.
@@ -552,6 +553,9 @@ def bdev_uring_create(client, filename, name, block_size=None):
    if block_size:
        params['block_size'] = block_size

    if uuid:
        params['uuid'] = uuid

    return client.call('bdev_uring_create', params)


+4 −2
Original line number Diff line number Diff line
@@ -847,7 +847,7 @@ class UIUringBdev(UIBdev):
    def delete(self, name):
        self.get_root().bdev_uring_delete(name=name)

    def ui_command_create(self, filename, name, block_size):
    def ui_command_create(self, filename, name, block_size, uuid=None):
        """
        Construct a uring bdev.

@@ -855,12 +855,14 @@ class UIUringBdev(UIBdev):
        filename - Path to device or file.
        name - Name to use for bdev.
        block_size - Integer, block size to use when constructing bdev.
        uuid: UUID of block device (optional)
        """

        block_size = self.ui_eval_param(block_size, "number", None)
        ret_name = self.get_root().bdev_uring_create(filename=filename,
                                                     name=name,
                                                     block_size=int(block_size))
                                                     block_size=int(block_size),
                                                     uuid=uuid)
        self.shell.log.info(ret_name)

    def ui_command_delete(self, name):
+3 −1
Original line number Diff line number Diff line
@@ -510,12 +510,14 @@ if __name__ == "__main__":
        print_json(rpc.bdev.bdev_uring_create(args.client,
                                              filename=args.filename,
                                              name=args.name,
                                              block_size=args.block_size))
                                              block_size=args.block_size,
                                              uuid=args.uuid))

    p = subparsers.add_parser('bdev_uring_create', help='Create a bdev with io_uring backend')
    p.add_argument('filename', help='Path to device or file (ex: /dev/nvme0n1)')
    p.add_argument('name', help='bdev name')
    p.add_argument('block_size', help='Block size for this bdev', type=int, nargs='?')
    p.add_argument('-u', '--uuid', help="UUID of the bdev")
    p.set_defaults(func=bdev_uring_create)

    def bdev_uring_delete(args):