Commit 635d98b1d0cfc2ba3426a701725d31a6102c059a

Authored by Christoph Hellwig
1 parent e6c11dbb8d

scsi: move the nr_phys_segments assert into scsi_init_io

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: Christoph Hellwig <hch@lst.de>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>

Showing 1 changed file with 5 additions and 11 deletions Side-by-side Diff

drivers/scsi/scsi_lib.c
... ... @@ -963,8 +963,11 @@
963 963 {
964 964 struct scsi_device *sdev = cmd->device;
965 965 struct request *rq = cmd->request;
  966 + int error;
966 967  
967   - int error = scsi_init_sgtable(rq, &cmd->sdb, gfp_mask);
  968 + BUG_ON(!rq->nr_phys_segments);
  969 +
  970 + error = scsi_init_sgtable(rq, &cmd->sdb, gfp_mask);
968 971 if (error)
969 972 goto err_exit;
970 973  
... ... @@ -1055,11 +1058,7 @@
1055 1058 * submit a request without an attached bio.
1056 1059 */
1057 1060 if (req->bio) {
1058   - int ret;
1059   -
1060   - BUG_ON(!req->nr_phys_segments);
1061   -
1062   - ret = scsi_init_io(cmd, GFP_ATOMIC);
  1061 + int ret = scsi_init_io(cmd, GFP_ATOMIC);
1063 1062 if (unlikely(ret))
1064 1063 return ret;
1065 1064 } else {
... ... @@ -1097,11 +1096,6 @@
1097 1096 if (ret != BLKPREP_OK)
1098 1097 return ret;
1099 1098 }
1100   -
1101   - /*
1102   - * Filesystem requests must transfer data.
1103   - */
1104   - BUG_ON(!req->nr_phys_segments);
1105 1099  
1106 1100 memset(cmd->cmnd, 0, BLK_MAX_CDB);
1107 1101 return scsi_init_io(cmd, GFP_ATOMIC);