|
@@ -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)
|
|
|
{
|