summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--block/blk-settings.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/block/blk-settings.c b/block/blk-settings.c
index c4406aacc0ef..2120b6f9fef8 100644
--- a/block/blk-settings.c
+++ b/block/blk-settings.c
@@ -183,16 +183,6 @@ static int blk_validate_limits(struct queue_limits *lim)
return -EINVAL;
/*
- * The maximum segment size has an odd historic 64k default that
- * drivers probably should override. Just like the I/O size we
- * require drivers to at least handle a full page per segment.
- */
- if (!lim->max_segment_size)
- lim->max_segment_size = BLK_MAX_SEGMENT_SIZE;
- if (WARN_ON_ONCE(lim->max_segment_size < PAGE_SIZE))
- return -EINVAL;
-
- /*
* Devices that require a virtual boundary do not support scatter/gather
* I/O natively, but instead require a descriptor list entry for each
* page (which might not be identical to the Linux PAGE_SIZE). Because
@@ -203,6 +193,16 @@ static int blk_validate_limits(struct queue_limits *lim)
lim->max_segment_size != UINT_MAX))
return -EINVAL;
lim->max_segment_size = UINT_MAX;
+ } else {
+ /*
+ * The maximum segment size has an odd historic 64k default that
+ * drivers probably should override. Just like the I/O size we
+ * require drivers to at least handle a full page per segment.
+ */
+ if (!lim->max_segment_size)
+ lim->max_segment_size = BLK_MAX_SEGMENT_SIZE;
+ if (WARN_ON_ONCE(lim->max_segment_size < PAGE_SIZE))
+ return -EINVAL;
}
/*