Message ID | 20180626151458.6675-1-keith.busch@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Keith, > A device may have boundary restrictions where the number of sectors > between boundaries exceeds its max transfer size. In this case, we need > to cap the max size to the smaller of the two limits. Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
On 6/26/18 9:14 AM, Keith Busch wrote: > A device may have boundary restrictions where the number of sectors > between boundaries exceeds its max transfer size. In this case, we need > to cap the max size to the smaller of the two limits. Applied, with the subject typo fixed.
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 9154570edf29..79226ca8f80f 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -1119,8 +1119,8 @@ static inline unsigned int blk_max_size_offset(struct request_queue *q, if (!q->limits.chunk_sectors) return q->limits.max_sectors; - return q->limits.chunk_sectors - - (offset & (q->limits.chunk_sectors - 1)); + return min(q->limits.max_sectors, (unsigned int)(q->limits.chunk_sectors - + (offset & (q->limits.chunk_sectors - 1)))); } static inline unsigned int blk_rq_get_max_sectors(struct request *rq,