Use offset from r2t header for rdma instead of using internal offset counter.
Signed-off-by: Eli Dorfman <[EMAIL PROTECTED]> --- usr/iscsi/iscsi_rdma.c | 16 +++++----------- 1 files changed, 5 insertions(+), 11 deletions(-) diff --git a/usr/iscsi/iscsi_rdma.c b/usr/iscsi/iscsi_rdma.c index d46ddff..84f5949 100644 --- a/usr/iscsi/iscsi_rdma.c +++ b/usr/iscsi/iscsi_rdma.c @@ -1447,28 +1447,22 @@ static int iscsi_rdma_rdma_read(struct iscsi_connection *conn) struct iscsi_r2t_rsp *r2t = (struct iscsi_r2t_rsp *) &conn->rsp.bhs; uint8_t *buf; uint32_t len; + uint32_t offset; int ret; buf = (uint8_t *) task->data + task->offset; len = be32_to_cpu(r2t->data_length); + offset = be32_to_cpu(r2t->data_offset); - dprintf("len %u stag %x va %llx\n", + dprintf("len %u stag %x va %llx offset %x\n", len, itask->rem_write_stag, - (unsigned long long) itask->rem_write_va); + (unsigned long long) itask->rem_write_va, offset); ret = iser_post_rdma_wr(ci, task, buf, len, IBV_WR_RDMA_READ, - itask->rem_write_va, itask->rem_write_stag); + itask->rem_write_va + offset, itask->rem_write_stag); if (ret < 0) return ret; - /* - * Initiator registers the entire buffer, but gives us a VA that - * is advanced by immediate + unsolicited data amounts. Advance - * rem_va as we read, knowing that the target always grabs segments - * in order. - */ - itask->rem_write_va += len; - return 0; } -- 1.5.5 --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "open-iscsi" group. To post to this group, send email to open-iscsi@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/open-iscsi -~----------~----~----~----~------~----~------~--~---