From 1d3ca5c4c063f1f3e9038c7cc2bbe4e8485874f2 Mon Sep 17 00:00:00 2001 From: Artur Paszkiewicz Date: Tue, 28 Jan 2020 12:15:10 +0100 Subject: [PATCH] module/raid: don't support flush or unmap if there is no raid module handler Change-Id: If248d8b0d00c0f02bbc7b25324d83139267945f3 Signed-off-by: Artur Paszkiewicz Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/852 Tested-by: SPDK CI Jenkins Reviewed-by: Paul Luse Reviewed-by: Tomasz Zawadzki Reviewed-by: Darek Stojaczyk --- module/bdev/raid/bdev_raid.c | 7 +++++++ module/bdev/raid/bdev_raid.h | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/module/bdev/raid/bdev_raid.c b/module/bdev/raid/bdev_raid.c index 9015aa0a2..8c037a7df 100644 --- a/module/bdev/raid/bdev_raid.c +++ b/module/bdev/raid/bdev_raid.c @@ -488,6 +488,13 @@ _raid_bdev_io_type_supported(struct raid_bdev *raid_bdev, enum spdk_bdev_io_type { struct raid_base_bdev_info *base_info; + if (io_type == SPDK_BDEV_IO_TYPE_FLUSH || + io_type == SPDK_BDEV_IO_TYPE_UNMAP) { + if (raid_bdev->module->submit_null_payload_request == NULL) { + return false; + } + } + RAID_FOR_EACH_BASE_BDEV(raid_bdev, base_info) { if (base_info->bdev == NULL) { assert(false); diff --git a/module/bdev/raid/bdev_raid.h b/module/bdev/raid/bdev_raid.h index 125229947..0b5ee4bda 100644 --- a/module/bdev/raid/bdev_raid.h +++ b/module/bdev/raid/bdev_raid.h @@ -277,7 +277,7 @@ struct raid_bdev_module { /* Handler for R/W requests */ void (*submit_rw_request)(struct raid_bdev_io *raid_io); - /* Handler for requests without payload (flush, unmap) */ + /* Handler for requests without payload (flush, unmap). Optional. */ void (*submit_null_payload_request)(struct raid_bdev_io *raid_io); TAILQ_ENTRY(raid_bdev_module) link;