From 5a952042f214dfc728da70a2c13b6084a366941f Mon Sep 17 00:00:00 2001 From: Artur Paszkiewicz Date: Fri, 14 Apr 2023 11:15:09 +0200 Subject: [PATCH] module/raid: specify memory domain support per raid module Not all raid modules may support memory domains - raid5f currently does not. Add a parameter to struct raid_bdev_module to specify that. Change-Id: I3285c118db846d290837606b3f85ac4b5277de97 Signed-off-by: Artur Paszkiewicz Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/17601 Reviewed-by: Aleksey Marchuk Tested-by: SPDK CI Jenkins Community-CI: Mellanox Build Bot Reviewed-by: Konrad Sztyber --- module/bdev/raid/bdev_raid.c | 4 ++++ module/bdev/raid/bdev_raid.h | 3 +++ module/bdev/raid/concat.c | 1 + module/bdev/raid/raid0.c | 1 + module/bdev/raid/raid1.c | 1 + 5 files changed, 10 insertions(+) diff --git a/module/bdev/raid/bdev_raid.c b/module/bdev/raid/bdev_raid.c index b1125053e..100301d30 100644 --- a/module/bdev/raid/bdev_raid.c +++ b/module/bdev/raid/bdev_raid.c @@ -680,6 +680,10 @@ raid_bdev_get_memory_domains(void *ctx, struct spdk_memory_domain **domains, int uint32_t i; int domains_count = 0, rc; + if (raid_bdev->module->memory_domains_supported == false) { + return 0; + } + /* First loop to get the number of memory domains */ for (i = 0; i < raid_bdev->num_base_bdevs; i++) { base_bdev = raid_bdev->base_bdev_info[i].bdev; diff --git a/module/bdev/raid/bdev_raid.h b/module/bdev/raid/bdev_raid.h index 8e55e1e98..b54bae6f9 100644 --- a/module/bdev/raid/bdev_raid.h +++ b/module/bdev/raid/bdev_raid.h @@ -201,6 +201,9 @@ struct raid_bdev_module { uint8_t value; } base_bdevs_constraint; + /* Set to true if this module supports memory domains. */ + bool memory_domains_supported; + /* * Called when the raid is starting, right before changing the state to * online and registering the bdev. Parameters of the bdev like blockcnt diff --git a/module/bdev/raid/concat.c b/module/bdev/raid/concat.c index 845764b8d..0d750ae56 100644 --- a/module/bdev/raid/concat.c +++ b/module/bdev/raid/concat.c @@ -321,6 +321,7 @@ concat_stop(struct raid_bdev *raid_bdev) static struct raid_bdev_module g_concat_module = { .level = CONCAT, .base_bdevs_min = 1, + .memory_domains_supported = true, .start = concat_start, .stop = concat_stop, .submit_rw_request = concat_submit_rw_request, diff --git a/module/bdev/raid/raid0.c b/module/bdev/raid/raid0.c index 6f745ec23..2895ef1b4 100644 --- a/module/bdev/raid/raid0.c +++ b/module/bdev/raid/raid0.c @@ -401,6 +401,7 @@ raid0_resize(struct raid_bdev *raid_bdev) static struct raid_bdev_module g_raid0_module = { .level = RAID0, .base_bdevs_min = 1, + .memory_domains_supported = true, .start = raid0_start, .submit_rw_request = raid0_submit_rw_request, .submit_null_payload_request = raid0_submit_null_payload_request, diff --git a/module/bdev/raid/raid1.c b/module/bdev/raid/raid1.c index d28a23a13..875410ee7 100644 --- a/module/bdev/raid/raid1.c +++ b/module/bdev/raid/raid1.c @@ -189,6 +189,7 @@ static struct raid_bdev_module g_raid1_module = { .level = RAID1, .base_bdevs_min = 2, .base_bdevs_constraint = {CONSTRAINT_MIN_BASE_BDEVS_OPERATIONAL, 1}, + .memory_domains_supported = true, .start = raid1_start, .stop = raid1_stop, .submit_rw_request = raid1_submit_rw_request,