Commit 9edba790 authored by Bart Van Assche's avatar Bart Van Assche Committed by Doug Ledford

IB/srp: Fix srp_map_sg_dma()

Because patch "IB/srp: Move common code into the caller" was applied
partially srp_map_sg_dma() doesn't work properly. Fix this by
applying the remainder of that patch. See also
http://thread.gmane.org/gmane.linux.drivers.rdma/35803/focus=35811.

Fixes: 3849e44d ("IB/srp: Move common code into the caller")
Signed-off-by: default avatarBart Van Assche <bart.vanassche@sandisk.com>
Cc: Mike Marciniszyn <mike.marciniszyn@intel.com>
Cc: Sagi Grimberg <sai@grimberg.me>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Laurence Oberman <loberman@redhat.com>
Reviewed-by: default avatarSagi Grimberg <sagi@grimberg.me>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent 249f0656
...@@ -1457,7 +1457,6 @@ static int srp_map_sg_fr(struct srp_map_state *state, struct srp_rdma_ch *ch, ...@@ -1457,7 +1457,6 @@ static int srp_map_sg_fr(struct srp_map_state *state, struct srp_rdma_ch *ch,
{ {
unsigned int sg_offset = 0; unsigned int sg_offset = 0;
state->desc = req->indirect_desc;
state->fr.next = req->fr_list; state->fr.next = req->fr_list;
state->fr.end = req->fr_list + ch->target->mr_per_cmd; state->fr.end = req->fr_list + ch->target->mr_per_cmd;
state->sg = scat; state->sg = scat;
...@@ -1489,7 +1488,6 @@ static int srp_map_sg_dma(struct srp_map_state *state, struct srp_rdma_ch *ch, ...@@ -1489,7 +1488,6 @@ static int srp_map_sg_dma(struct srp_map_state *state, struct srp_rdma_ch *ch,
struct scatterlist *sg; struct scatterlist *sg;
int i; int i;
state->desc = req->indirect_desc;
for_each_sg(scat, sg, count, i) { for_each_sg(scat, sg, count, i) {
srp_map_desc(state, ib_sg_dma_address(dev->dev, sg), srp_map_desc(state, ib_sg_dma_address(dev->dev, sg),
ib_sg_dma_len(dev->dev, sg), ib_sg_dma_len(dev->dev, sg),
...@@ -1655,6 +1653,7 @@ static int srp_map_data(struct scsi_cmnd *scmnd, struct srp_rdma_ch *ch, ...@@ -1655,6 +1653,7 @@ static int srp_map_data(struct scsi_cmnd *scmnd, struct srp_rdma_ch *ch,
target->indirect_size, DMA_TO_DEVICE); target->indirect_size, DMA_TO_DEVICE);
memset(&state, 0, sizeof(state)); memset(&state, 0, sizeof(state));
state.desc = req->indirect_desc;
if (dev->use_fast_reg) if (dev->use_fast_reg)
ret = srp_map_sg_fr(&state, ch, req, scat, count); ret = srp_map_sg_fr(&state, ch, req, scat, count);
else if (dev->use_fmr) else if (dev->use_fmr)
......
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