mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-11 23:23:52 +08:00
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: 3849e44d1c
("IB/srp: Move common code into the caller")
Signed-off-by: Bart 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: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
249f06561f
commit
9edba790fc
@ -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,
|
|||||||
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,
|
|||||||
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)
|
||||||
|
Loading…
Reference in New Issue
Block a user