Commit cf8ec2cf authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Willy Tarreau

scsi: move the nr_phys_segments assert into scsi_init_io

commit 635d98b1 upstream.

scsi_init_io should only be called for requests that transfer data,
so move the assert that a request has segments from the callers into
scsi_init_io.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
parent b3ffb4cb
...@@ -1009,8 +1009,11 @@ static int scsi_init_sgtable(struct request *req, struct scsi_data_buffer *sdb, ...@@ -1009,8 +1009,11 @@ static int scsi_init_sgtable(struct request *req, struct scsi_data_buffer *sdb,
int scsi_init_io(struct scsi_cmnd *cmd, gfp_t gfp_mask) int scsi_init_io(struct scsi_cmnd *cmd, gfp_t gfp_mask)
{ {
struct request *rq = cmd->request; struct request *rq = cmd->request;
int error;
int error = scsi_init_sgtable(rq, &cmd->sdb, gfp_mask); BUG_ON(!rq->nr_phys_segments);
error = scsi_init_sgtable(rq, &cmd->sdb, gfp_mask);
if (error) if (error)
goto err_exit; goto err_exit;
...@@ -1102,11 +1105,7 @@ int scsi_setup_blk_pc_cmnd(struct scsi_device *sdev, struct request *req) ...@@ -1102,11 +1105,7 @@ int scsi_setup_blk_pc_cmnd(struct scsi_device *sdev, struct request *req)
* submit a request without an attached bio. * submit a request without an attached bio.
*/ */
if (req->bio) { if (req->bio) {
int ret; int ret = scsi_init_io(cmd, GFP_ATOMIC);
BUG_ON(!req->nr_phys_segments);
ret = scsi_init_io(cmd, GFP_ATOMIC);
if (unlikely(ret)) if (unlikely(ret))
return ret; return ret;
} else { } else {
...@@ -1150,11 +1149,6 @@ int scsi_setup_fs_cmnd(struct scsi_device *sdev, struct request *req) ...@@ -1150,11 +1149,6 @@ int scsi_setup_fs_cmnd(struct scsi_device *sdev, struct request *req)
return ret; return ret;
} }
/*
* Filesystem requests must transfer data.
*/
BUG_ON(!req->nr_phys_segments);
cmd = scsi_get_cmd_from_req(sdev, req); cmd = scsi_get_cmd_from_req(sdev, req);
if (unlikely(!cmd)) if (unlikely(!cmd))
return BLKPREP_DEFER; return BLKPREP_DEFER;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment