rpc/bdev_raid_create: added superblock parameter

Introduction of superblock parameter for bdev_raid_create rpc. This
parameter determines whether raid bdev should be created with support
for on-disk metadata (support for raid on-disk metadata is going to be
implemented in the future).

Signed-off-by: Krzysztof Smolinski <krzysztof.smolinski@intel.com>
Change-Id: Ie8c64f837dd7eb3ba788b7c5d7bc98e8f1368ba7
This commit is contained in:
Krzysztof Smolinski 2022-11-04 12:03:59 +01:00 committed by David Ko
parent ba752093db
commit 19c79b0d01
4 changed files with 13 additions and 3 deletions

View File

@ -130,6 +130,9 @@ struct rpc_bdev_raid_create {
/* UUID for this raid bdev */ /* UUID for this raid bdev */
char *uuid; char *uuid;
/* superblock support */
bool superblock;
}; };
/* /*
@ -196,6 +199,7 @@ static const struct spdk_json_object_decoder rpc_bdev_raid_create_decoders[] = {
{"raid_level", offsetof(struct rpc_bdev_raid_create, level), decode_raid_level}, {"raid_level", offsetof(struct rpc_bdev_raid_create, level), decode_raid_level},
{"base_bdevs", offsetof(struct rpc_bdev_raid_create, base_bdevs), decode_base_bdevs}, {"base_bdevs", offsetof(struct rpc_bdev_raid_create, base_bdevs), decode_base_bdevs},
{"uuid", offsetof(struct rpc_bdev_raid_create, uuid), spdk_json_decode_string, true}, {"uuid", offsetof(struct rpc_bdev_raid_create, uuid), spdk_json_decode_string, true},
{"superblock", offsetof(struct rpc_bdev_raid_create, superblock), spdk_json_decode_bool, true},
}; };
/* /*

View File

@ -401,7 +401,7 @@ def bdev_raid_get_bdevs(client, category):
return client.call('bdev_raid_get_bdevs', params) return client.call('bdev_raid_get_bdevs', params)
def bdev_raid_create(client, name, raid_level, base_bdevs, strip_size=None, strip_size_kb=None, uuid=None): def bdev_raid_create(client, name, raid_level, base_bdevs, strip_size=None, strip_size_kb=None, uuid=None, superblock=False):
"""Create raid bdev. Either strip size arg will work but one is required. """Create raid bdev. Either strip size arg will work but one is required.
Args: Args:
@ -411,11 +411,13 @@ def bdev_raid_create(client, name, raid_level, base_bdevs, strip_size=None, stri
raid_level: raid level of raid bdev, supported values 0 raid_level: raid level of raid bdev, supported values 0
base_bdevs: Space separated names of Nvme bdevs in double quotes, like "Nvme0n1 Nvme1n1 Nvme2n1" base_bdevs: Space separated names of Nvme bdevs in double quotes, like "Nvme0n1 Nvme1n1 Nvme2n1"
uuid: UUID for this raid bdev (optional) uuid: UUID for this raid bdev (optional)
superblock: information about raid bdev will be stored in superblock on each base bdev,
disabled by default due to backward compatibility
Returns: Returns:
None None
""" """
params = {'name': name, 'raid_level': raid_level, 'base_bdevs': base_bdevs} params = {'name': name, 'raid_level': raid_level, 'base_bdevs': base_bdevs, 'superblock': superblock}
if strip_size: if strip_size:
params['strip_size'] = strip_size params['strip_size'] = strip_size

View File

@ -2092,13 +2092,16 @@ Format: 'user:u1 secret:s1 muser:mu1 msecret:ms1,user:u2 secret:s2 muser:mu2 mse
strip_size_kb=args.strip_size_kb, strip_size_kb=args.strip_size_kb,
raid_level=args.raid_level, raid_level=args.raid_level,
base_bdevs=base_bdevs, base_bdevs=base_bdevs,
uuid=args.uuid) uuid=args.uuid,
superblock=args.superblock)
p = subparsers.add_parser('bdev_raid_create', help='Create new raid bdev') p = subparsers.add_parser('bdev_raid_create', help='Create new raid bdev')
p.add_argument('-n', '--name', help='raid bdev name', required=True) p.add_argument('-n', '--name', help='raid bdev name', required=True)
p.add_argument('-z', '--strip-size-kb', help='strip size in KB', type=int) p.add_argument('-z', '--strip-size-kb', help='strip size in KB', type=int)
p.add_argument('-r', '--raid-level', help='raid level, raid0, raid1 and a special level concat are supported', required=True) p.add_argument('-r', '--raid-level', help='raid level, raid0, raid1 and a special level concat are supported', required=True)
p.add_argument('-b', '--base-bdevs', help='base bdevs name, whitespace separated list in quotes', required=True) p.add_argument('-b', '--base-bdevs', help='base bdevs name, whitespace separated list in quotes', required=True)
p.add_argument('--uuid', help='UUID for this raid bdev', required=False) p.add_argument('--uuid', help='UUID for this raid bdev', required=False)
p.add_argument('-s', '--superblock', help='information about raid bdev will be stored in superblock on each base bdev, '
'disabled by default due to backward compatibility', action='store_true')
p.set_defaults(func=bdev_raid_create) p.set_defaults(func=bdev_raid_create)
def bdev_raid_delete(args): def bdev_raid_delete(args):

View File

@ -97,6 +97,7 @@ DEFINE_STUB(spdk_json_decode_uint32, int, (const struct spdk_json_val *val, void
DEFINE_STUB(spdk_json_decode_array, int, (const struct spdk_json_val *values, DEFINE_STUB(spdk_json_decode_array, int, (const struct spdk_json_val *values,
spdk_json_decode_fn decode_func, spdk_json_decode_fn decode_func,
void *out, size_t max_size, size_t *out_size, size_t stride), 0); void *out, size_t max_size, size_t *out_size, size_t stride), 0);
DEFINE_STUB(spdk_json_decode_bool, int, (const struct spdk_json_val *val, void *out), 0);
DEFINE_STUB(spdk_json_write_name, int, (struct spdk_json_write_ctx *w, const char *name), 0); DEFINE_STUB(spdk_json_write_name, int, (struct spdk_json_write_ctx *w, const char *name), 0);
DEFINE_STUB(spdk_json_write_object_begin, int, (struct spdk_json_write_ctx *w), 0); DEFINE_STUB(spdk_json_write_object_begin, int, (struct spdk_json_write_ctx *w), 0);
DEFINE_STUB(spdk_json_write_named_object_begin, int, (struct spdk_json_write_ctx *w, DEFINE_STUB(spdk_json_write_named_object_begin, int, (struct spdk_json_write_ctx *w,