summaryrefslogtreecommitdiff
path: root/device_mapper/vdo/vdo_target.c
diff options
context:
space:
mode:
Diffstat (limited to 'device_mapper/vdo/vdo_target.c')
-rw-r--r--device_mapper/vdo/vdo_target.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/device_mapper/vdo/vdo_target.c b/device_mapper/vdo/vdo_target.c
index c488023b5..976d71af2 100644
--- a/device_mapper/vdo/vdo_target.c
+++ b/device_mapper/vdo/vdo_target.c
@@ -23,6 +23,13 @@ bool dm_vdo_validate_target_params(const struct dm_vdo_target_params *vtp,
{
bool valid = true;
+ if ((vtp->minimum_io_size != 512) &&
+ (vtp->minimum_io_size != 4096)) {
+ log_error("VDO minimum io size %u is unsupported.",
+ vtp->minimum_io_size);
+ valid = false;
+ }
+
if ((vtp->block_map_cache_size_mb < DM_VDO_BLOCK_MAP_CACHE_SIZE_MINIMUM_MB) ||
(vtp->block_map_cache_size_mb > DM_VDO_BLOCK_MAP_CACHE_SIZE_MAXIMUM_MB)) {
log_error("VDO block map cache size %u out of range.",
@@ -37,12 +44,6 @@ bool dm_vdo_validate_target_params(const struct dm_vdo_target_params *vtp,
valid = false;
}
- if (vtp->read_cache_size_mb > DM_VDO_READ_CACHE_SIZE_MAXIMUM_MB) {
- log_error("VDO read cache size %u out of range.",
- vtp->read_cache_size_mb);
- valid = false;
- }
-
if ((vtp->slab_size_mb < DM_VDO_SLAB_SIZE_MINIMUM_MB) ||
(vtp->slab_size_mb > DM_VDO_SLAB_SIZE_MAXIMUM_MB)) {
log_error("VDO slab size %u out of range.",
@@ -50,6 +51,13 @@ bool dm_vdo_validate_target_params(const struct dm_vdo_target_params *vtp,
valid = false;
}
+ if ((vtp->max_discard < DM_VDO_MAX_DISCARD_MINIMUM) ||
+ (vtp->max_discard > DM_VDO_MAX_DISCARD_MAXIMUM)) {
+ log_error("VDO max discard %u out of range.",
+ vtp->max_discard);
+ valid = false;
+ }
+
if (vtp->ack_threads > DM_VDO_ACK_THREADS_MAXIMUM) {
log_error("VDO ack threads %u out of range.", vtp->ack_threads);
valid = false;