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;