summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/blkdev.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index d003a9d2d1f6..1a965fb5ae6f 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -1819,11 +1819,12 @@ static inline int bio_split_rw_at(struct bio *bio,
*/
static inline unsigned int max_integrity_io_size(struct queue_limits *lim)
{
- u64 max_intervals;
+ unsigned int buf_size = min_t(unsigned int, lim->max_segment_size,
+ BLK_INTEGRITY_MAX_SIZE);
- max_intervals = BLK_INTEGRITY_MAX_SIZE / lim->integrity.metadata_size;
- return min_t(u64, lim->max_segment_size,
- max_intervals << lim->integrity.interval_exp);
+ return min_t(u64, UINT_MAX,
+ (u64)(buf_size / lim->integrity.metadata_size) <<
+ lim->integrity.interval_exp);
}
#define DEFINE_IO_COMP_BATCH(name) struct io_comp_batch name = { }