浏览代码

block: fix blk_rq_get_max_sectors for driver private requests

Driver private request types should not get the artifical cap for the
FS requests.  This is important to use the full device capabilities
for internal command or NVMe pass through commands.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reported-by: Jeff Lien <Jeff.Lien@hgst.com>
Tested-by: Jeff Lien <Jeff.Lien@hgst.com>
Reviewed-by: Keith Busch <keith.busch@intel.com>

Updated by me to use an explicit check for the one command type that
does support extended checking, instead of relying on the ordering
of the enum command values - as suggested by Keith.

Signed-off-by: Jens Axboe <axboe@fb.com>
Christoph Hellwig 9 年之前
父节点
当前提交
f21018427c
共有 1 个文件被更改,包括 1 次插入1 次删除
  1. 1 1
      include/linux/blkdev.h

+ 1 - 1
include/linux/blkdev.h

@@ -895,7 +895,7 @@ static inline unsigned int blk_rq_get_max_sectors(struct request *rq)
 {
 {
 	struct request_queue *q = rq->q;
 	struct request_queue *q = rq->q;
 
 
-	if (unlikely(rq->cmd_type == REQ_TYPE_BLOCK_PC))
+	if (unlikely(rq->cmd_type != REQ_TYPE_FS))
 		return q->limits.max_hw_sectors;
 		return q->limits.max_hw_sectors;
 
 
 	if (!q->limits.chunk_sectors || (rq->cmd_flags & REQ_DISCARD))
 	if (!q->limits.chunk_sectors || (rq->cmd_flags & REQ_DISCARD))