提交 f10ab66f 编写于 作者: F FUJITA Tomonori 提交者: James Bottomley

[SCSI] tgt: convert to use the data buffer accessors

- convert to use the new accessors for the sg lists and the
parameters.
Signed-off-by: NFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Signed-off-by: NJames Bottomley <James.Bottomley@HansenPartnership.com>
上级 1237c98d
...@@ -292,7 +292,7 @@ static int ibmvstgt_cmd_done(struct scsi_cmnd *sc, ...@@ -292,7 +292,7 @@ static int ibmvstgt_cmd_done(struct scsi_cmnd *sc,
dprintk("%p %p %x %u\n", iue, target, vio_iu(iue)->srp.cmd.cdb[0], dprintk("%p %p %x %u\n", iue, target, vio_iu(iue)->srp.cmd.cdb[0],
cmd->usg_sg); cmd->usg_sg);
if (sc->use_sg) if (scsi_sg_count(sc))
err = srp_transfer_data(sc, &vio_iu(iue)->srp.cmd, ibmvstgt_rdma, 1, 1); err = srp_transfer_data(sc, &vio_iu(iue)->srp.cmd, ibmvstgt_rdma, 1, 1);
spin_lock_irqsave(&target->lock, flags); spin_lock_irqsave(&target->lock, flags);
......
...@@ -192,18 +192,18 @@ static int srp_direct_data(struct scsi_cmnd *sc, struct srp_direct_buf *md, ...@@ -192,18 +192,18 @@ static int srp_direct_data(struct scsi_cmnd *sc, struct srp_direct_buf *md,
if (dma_map) { if (dma_map) {
iue = (struct iu_entry *) sc->SCp.ptr; iue = (struct iu_entry *) sc->SCp.ptr;
sg = sc->request_buffer; sg = scsi_sglist(sc);
dprintk("%p %u %u %d\n", iue, sc->request_bufflen, dprintk("%p %u %u %d\n", iue, scsi_bufflen(sc),
md->len, sc->use_sg); md->len, scsi_sg_count(sc));
nsg = dma_map_sg(iue->target->dev, sg, sc->use_sg, nsg = dma_map_sg(iue->target->dev, sg, scsi_sg_count(sc),
DMA_BIDIRECTIONAL); DMA_BIDIRECTIONAL);
if (!nsg) { if (!nsg) {
printk("fail to map %p %d\n", iue, sc->use_sg); printk("fail to map %p %d\n", iue, scsi_sg_count(sc));
return 0; return 0;
} }
len = min(sc->request_bufflen, md->len); len = min(scsi_bufflen(sc), md->len);
} else } else
len = md->len; len = md->len;
...@@ -229,10 +229,10 @@ static int srp_indirect_data(struct scsi_cmnd *sc, struct srp_cmd *cmd, ...@@ -229,10 +229,10 @@ static int srp_indirect_data(struct scsi_cmnd *sc, struct srp_cmd *cmd,
if (dma_map || ext_desc) { if (dma_map || ext_desc) {
iue = (struct iu_entry *) sc->SCp.ptr; iue = (struct iu_entry *) sc->SCp.ptr;
sg = sc->request_buffer; sg = scsi_sglist(sc);
dprintk("%p %u %u %d %d\n", dprintk("%p %u %u %d %d\n",
iue, sc->request_bufflen, id->len, iue, scsi_bufflen(sc), id->len,
cmd->data_in_desc_cnt, cmd->data_out_desc_cnt); cmd->data_in_desc_cnt, cmd->data_out_desc_cnt);
} }
...@@ -268,13 +268,14 @@ static int srp_indirect_data(struct scsi_cmnd *sc, struct srp_cmd *cmd, ...@@ -268,13 +268,14 @@ static int srp_indirect_data(struct scsi_cmnd *sc, struct srp_cmd *cmd,
rdma: rdma:
if (dma_map) { if (dma_map) {
nsg = dma_map_sg(iue->target->dev, sg, sc->use_sg, DMA_BIDIRECTIONAL); nsg = dma_map_sg(iue->target->dev, sg, scsi_sg_count(sc),
DMA_BIDIRECTIONAL);
if (!nsg) { if (!nsg) {
eprintk("fail to map %p %d\n", iue, sc->use_sg); eprintk("fail to map %p %d\n", iue, scsi_sg_count(sc));
err = -EIO; err = -EIO;
goto free_mem; goto free_mem;
} }
len = min(sc->request_bufflen, id->len); len = min(scsi_bufflen(sc), id->len);
} else } else
len = id->len; len = id->len;
......
...@@ -112,7 +112,7 @@ int scsi_tgt_uspace_send_cmd(struct scsi_cmnd *cmd, u64 itn_id, ...@@ -112,7 +112,7 @@ int scsi_tgt_uspace_send_cmd(struct scsi_cmnd *cmd, u64 itn_id,
memset(&ev, 0, sizeof(ev)); memset(&ev, 0, sizeof(ev));
ev.p.cmd_req.host_no = shost->host_no; ev.p.cmd_req.host_no = shost->host_no;
ev.p.cmd_req.itn_id = itn_id; ev.p.cmd_req.itn_id = itn_id;
ev.p.cmd_req.data_len = cmd->request_bufflen; ev.p.cmd_req.data_len = scsi_bufflen(cmd);
memcpy(ev.p.cmd_req.scb, cmd->cmnd, sizeof(ev.p.cmd_req.scb)); memcpy(ev.p.cmd_req.scb, cmd->cmnd, sizeof(ev.p.cmd_req.scb));
memcpy(ev.p.cmd_req.lun, lun, sizeof(ev.p.cmd_req.lun)); memcpy(ev.p.cmd_req.lun, lun, sizeof(ev.p.cmd_req.lun));
ev.p.cmd_req.attribute = cmd->tag; ev.p.cmd_req.attribute = cmd->tag;
......
...@@ -331,7 +331,7 @@ static void scsi_tgt_cmd_done(struct scsi_cmnd *cmd) ...@@ -331,7 +331,7 @@ static void scsi_tgt_cmd_done(struct scsi_cmnd *cmd)
scsi_tgt_uspace_send_status(cmd, tcmd->itn_id, tcmd->tag); scsi_tgt_uspace_send_status(cmd, tcmd->itn_id, tcmd->tag);
if (cmd->request_buffer) if (scsi_sglist(cmd))
scsi_free_sgtable(cmd); scsi_free_sgtable(cmd);
queue_work(scsi_tgtd, &tcmd->work); queue_work(scsi_tgtd, &tcmd->work);
...@@ -365,14 +365,15 @@ static int scsi_tgt_init_cmd(struct scsi_cmnd *cmd, gfp_t gfp_mask) ...@@ -365,14 +365,15 @@ static int scsi_tgt_init_cmd(struct scsi_cmnd *cmd, gfp_t gfp_mask)
cmd->request_bufflen = rq->data_len; cmd->request_bufflen = rq->data_len;
dprintk("cmd %p cnt %d %lu\n", cmd, cmd->use_sg, rq_data_dir(rq)); dprintk("cmd %p cnt %d %lu\n", cmd, scsi_sg_count(cmd),
count = blk_rq_map_sg(rq->q, rq, cmd->request_buffer); rq_data_dir(rq));
if (likely(count <= cmd->use_sg)) { count = blk_rq_map_sg(rq->q, rq, scsi_sglist(cmd));
if (likely(count <= scsi_sg_count(cmd))) {
cmd->use_sg = count; cmd->use_sg = count;
return 0; return 0;
} }
eprintk("cmd %p cnt %d\n", cmd, cmd->use_sg); eprintk("cmd %p cnt %d\n", cmd, scsi_sg_count(cmd));
scsi_free_sgtable(cmd); scsi_free_sgtable(cmd);
return -EINVAL; return -EINVAL;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册