diff options
Diffstat (limited to 'include/linux/blkdev.h')
| -rw-r--r-- | include/linux/blkdev.h | 19 | 
1 files changed, 16 insertions, 3 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 83695641bd5e..1ca8e8fd1078 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -739,7 +739,7 @@ static inline bool blk_queue_is_zoned(struct request_queue *q)  	}  } -static inline unsigned int blk_queue_zone_size(struct request_queue *q) +static inline unsigned int blk_queue_zone_sectors(struct request_queue *q)  {  	return blk_queue_is_zoned(q) ? q->limits.chunk_sectors : 0;  } @@ -1000,6 +1000,19 @@ static inline unsigned int blk_rq_cur_sectors(const struct request *rq)  	return blk_rq_cur_bytes(rq) >> 9;  } +/* + * Some commands like WRITE SAME have a payload or data transfer size which + * is different from the size of the request.  Any driver that supports such + * commands using the RQF_SPECIAL_PAYLOAD flag needs to use this helper to + * calculate the data transfer size. + */ +static inline unsigned int blk_rq_payload_bytes(struct request *rq) +{ +	if (rq->rq_flags & RQF_SPECIAL_PAYLOAD) +		return rq->special_vec.bv_len; +	return blk_rq_bytes(rq); +} +  static inline unsigned int blk_queue_get_max_sectors(struct request_queue *q,  						     int op)  { @@ -1536,12 +1549,12 @@ static inline bool bdev_is_zoned(struct block_device *bdev)  	return false;  } -static inline unsigned int bdev_zone_size(struct block_device *bdev) +static inline unsigned int bdev_zone_sectors(struct block_device *bdev)  {  	struct request_queue *q = bdev_get_queue(bdev);  	if (q) -		return blk_queue_zone_size(q); +		return blk_queue_zone_sectors(q);  	return 0;  }  | 
