* [PATCH 0/2] iscsi: convert to use the data buffer accessors
@ 2007-06-01 9:56 FUJITA Tomonori
2007-06-01 9:56 ` [PATCH 1/2] iscsi_tcp: " FUJITA Tomonori
2007-06-01 9:56 ` [PATCH 2/2] iscsi_iser: " FUJITA Tomonori
0 siblings, 2 replies; 8+ messages in thread
From: FUJITA Tomonori @ 2007-06-01 9:56 UTC (permalink / raw)
To: linux-scsi; +Cc: James.Bottomley, michaelc, open-iscsi
This patchset converts libiscsi, iscsi_tcp, and iscsi_iser to use the
data buffer accessors.
This is dependent on the patchset that Mike posted the day before
yesterday (which is on the top of the latest scsi-misc-2.6):
http://marc.info/?l=linux-scsi&m=118054788406095&w=2
This can be also cleanly applied to Mike's iscsi git tree.
iscsi_tcp and iscsi_iser needs some modifications to use
scsi_for_each_sg macro so I've not done that. It would be easier to
use the chaining sg macros like next_sg directly when they are ready.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] iscsi_tcp: convert to use the data buffer accessors
2007-06-01 9:56 [PATCH 0/2] iscsi: convert to use the data buffer accessors FUJITA Tomonori
@ 2007-06-01 9:56 ` FUJITA Tomonori
2007-06-01 18:25 ` Mike Christie
2007-06-01 9:56 ` [PATCH 2/2] iscsi_iser: " FUJITA Tomonori
1 sibling, 1 reply; 8+ messages in thread
From: FUJITA Tomonori @ 2007-06-01 9:56 UTC (permalink / raw)
To: linux-scsi; +Cc: James.Bottomley, michaelc, open-iscsi
iscsi_tcp: convert to use the data buffer accessors
- remove the unnecessary map_single path.
- convert to use the new accessors for the sg lists and the
parameters.
TODO: use scsi_for_each_sg().
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
---
drivers/scsi/iscsi_tcp.c | 117 +++++++++++++++-------------------------------
drivers/scsi/libiscsi.c | 20 ++++----
2 files changed, 48 insertions(+), 89 deletions(-)
diff --git a/drivers/scsi/iscsi_tcp.c b/drivers/scsi/iscsi_tcp.c
index d5a6527..aee2b60 100644
--- a/drivers/scsi/iscsi_tcp.c
+++ b/drivers/scsi/iscsi_tcp.c
@@ -237,10 +237,10 @@ iscsi_data_rsp(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask)
tcp_ctask->exp_datasn++;
tcp_ctask->data_offset = be32_to_cpu(rhdr->offset);
- if (tcp_ctask->data_offset + tcp_conn->in.datalen > sc->request_bufflen) {
+ if (tcp_ctask->data_offset + tcp_conn->in.datalen > scsi_bufflen(sc)) {
debug_tcp("%s: data_offset(%d) + data_len(%d) > total_length_in(%d)\n",
__FUNCTION__, tcp_ctask->data_offset,
- tcp_conn->in.datalen, sc->request_bufflen);
+ tcp_conn->in.datalen, scsi_buffle(sc));
return ISCSI_ERR_DATA_OFFSET;
}
@@ -250,14 +250,14 @@ iscsi_data_rsp(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask)
int res_count = be32_to_cpu(rhdr->residual_count);
if (res_count > 0 &&
- res_count <= sc->request_bufflen) {
- sc->resid = res_count;
+ res_count <= scsi_bufflen(sc)) {
+ scsi_set_resid(sc, res_count);
sc->result = (DID_OK << 16) | rhdr->cmd_status;
} else
sc->result = (DID_BAD_TARGET << 16) |
rhdr->cmd_status;
} else if (rhdr->flags & ISCSI_FLAG_DATA_OVERFLOW) {
- sc->resid = be32_to_cpu(rhdr->residual_count);
+ scsi_set_resid(sc, be32_to_cpu(rhdr->residual_count));
sc->result = (DID_OK << 16) | rhdr->cmd_status;
} else
sc->result = (DID_OK << 16) | rhdr->cmd_status;
@@ -285,6 +285,8 @@ iscsi_solicit_data_init(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask,
{
struct iscsi_data *hdr;
struct scsi_cmnd *sc = ctask->sc;
+ int i, sg_count = 0;
+ struct scatterlist *sg;
hdr = &r2t->dtask.hdr;
memset(hdr, 0, sizeof(struct iscsi_data));
@@ -312,39 +314,30 @@ iscsi_solicit_data_init(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask,
iscsi_buf_init_iov(&r2t->headbuf, (char*)hdr,
sizeof(struct iscsi_hdr));
- if (sc->use_sg) {
- int i, sg_count = 0;
- struct scatterlist *sg = sc->request_buffer;
-
- r2t->sg = NULL;
- for (i = 0; i < sc->use_sg; i++, sg += 1) {
- /* FIXME: prefetch ? */
- if (sg_count + sg->length > r2t->data_offset) {
- int page_offset;
+ sg = scsi_sglist(sc);
+ r2t->sg = NULL;
+ for (i = 0; i < scsi_sg_count(sc); i++, sg += 1) {
+ /* FIXME: prefetch ? */
+ if (sg_count + sg->length > r2t->data_offset) {
+ int page_offset;
- /* sg page found! */
+ /* sg page found! */
- /* offset within this page */
- page_offset = r2t->data_offset - sg_count;
+ /* offset within this page */
+ page_offset = r2t->data_offset - sg_count;
- /* fill in this buffer */
- iscsi_buf_init_sg(&r2t->sendbuf, sg);
- r2t->sendbuf.sg.offset += page_offset;
- r2t->sendbuf.sg.length -= page_offset;
+ /* fill in this buffer */
+ iscsi_buf_init_sg(&r2t->sendbuf, sg);
+ r2t->sendbuf.sg.offset += page_offset;
+ r2t->sendbuf.sg.length -= page_offset;
- /* xmit logic will continue with next one */
- r2t->sg = sg + 1;
- break;
- }
- sg_count += sg->length;
+ /* xmit logic will continue with next one */
+ r2t->sg = sg + 1;
+ break;
}
- BUG_ON(r2t->sg == NULL);
- } else {
- iscsi_buf_init_iov(&r2t->sendbuf,
- (char*)sc->request_buffer + r2t->data_offset,
- r2t->data_count);
- r2t->sg = NULL;
+ sg_count += sg->length;
}
+ BUG_ON(r2t->sg == NULL);
}
/**
@@ -404,11 +397,11 @@ iscsi_r2t_rsp(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask)
r2t->data_length, session->max_burst);
r2t->data_offset = be32_to_cpu(rhdr->data_offset);
- if (r2t->data_offset + r2t->data_length > ctask->sc->request_bufflen) {
+ if (r2t->data_offset + r2t->data_length > scsi_bufflen(ctask->sc)) {
spin_unlock(&session->lock);
printk(KERN_ERR "iscsi_tcp: invalid R2T with data len %u at "
"offset %u and total length %d\n", r2t->data_length,
- r2t->data_offset, ctask->sc->request_bufflen);
+ r2t->data_offset, scsi_bufflen(ctask->sc));
return ISCSI_ERR_DATALEN;
}
@@ -612,7 +605,7 @@ iscsi_ctask_copy(struct iscsi_tcp_conn *tcp_conn, struct iscsi_cmd_task *ctask,
size, tcp_conn->in.offset, tcp_conn->in.copied);
BUG_ON(size <= 0);
- BUG_ON(tcp_ctask->sent + size > ctask->sc->request_bufflen);
+ BUG_ON(tcp_ctask->sent + size > scsi_bufflen(ctask->sc));
rc = skb_copy_bits(tcp_conn->in.skb, tcp_conn->in.offset,
(char*)buf + (offset + tcp_conn->data_copied), size);
@@ -710,25 +703,8 @@ static int iscsi_scsi_data_in(struct iscsi_conn *conn)
BUG_ON((void*)ctask != sc->SCp.ptr);
- /*
- * copying Data-In into the Scsi_Cmnd
- */
- if (!sc->use_sg) {
- i = ctask->data_count;
- rc = iscsi_ctask_copy(tcp_conn, ctask, sc->request_buffer,
- sc->request_bufflen,
- tcp_ctask->data_offset);
- if (rc == -EAGAIN)
- return rc;
- if (conn->datadgst_en)
- iscsi_recv_digest_update(tcp_conn, sc->request_buffer,
- i);
- rc = 0;
- goto done;
- }
-
offset = tcp_ctask->data_offset;
- sg = sc->request_buffer;
+ sg = scsi_sglist(sc);
if (tcp_ctask->data_offset)
for (i = 0; i < tcp_ctask->sg_count; i++)
@@ -737,7 +713,7 @@ static int iscsi_scsi_data_in(struct iscsi_conn *conn)
if (offset < 0)
offset = 0;
- for (i = tcp_ctask->sg_count; i < sc->use_sg; i++) {
+ for (i = tcp_ctask->sg_count; i < scsi_sg_count(sc); i++) {
char *dest;
dest = kmap_atomic(sg[i].page, KM_SOFTIRQ0);
@@ -782,7 +758,6 @@ static int iscsi_scsi_data_in(struct iscsi_conn *conn)
}
BUG_ON(ctask->data_count);
-done:
/* check for non-exceptional status */
if (tcp_conn->in.hdr->flags & ISCSI_FLAG_DATA_STATUS) {
debug_scsi("done [sc %lx res %d itt 0x%x flags 0x%x]\n",
@@ -1241,7 +1216,6 @@ iscsi_solicit_data_cont(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask,
struct iscsi_r2t_info *r2t, int left)
{
struct iscsi_data *hdr;
- struct scsi_cmnd *sc = ctask->sc;
int new_offset;
hdr = &r2t->dtask.hdr;
@@ -1271,15 +1245,8 @@ iscsi_solicit_data_cont(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask,
if (iscsi_buf_left(&r2t->sendbuf))
return;
- if (sc->use_sg) {
- iscsi_buf_init_sg(&r2t->sendbuf, r2t->sg);
- r2t->sg += 1;
- } else {
- iscsi_buf_init_iov(&r2t->sendbuf,
- (char*)sc->request_buffer + new_offset,
- r2t->data_count);
- r2t->sg = NULL;
- }
+ iscsi_buf_init_sg(&r2t->sendbuf, r2t->sg);
+ r2t->sg += 1;
}
static void iscsi_set_padding(struct iscsi_tcp_cmd_task *tcp_ctask,
@@ -1408,23 +1375,15 @@ iscsi_send_cmd_hdr(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask)
tcp_ctask->exp_datasn = 0;
if (sc->sc_data_direction == DMA_TO_DEVICE) {
- if (sc->use_sg) {
- struct scatterlist *sg = sc->request_buffer;
-
- iscsi_buf_init_sg(&tcp_ctask->sendbuf, sg);
- tcp_ctask->sg = sg + 1;
- tcp_ctask->bad_sg = sg + sc->use_sg;
- } else {
- iscsi_buf_init_iov(&tcp_ctask->sendbuf,
- sc->request_buffer,
- sc->request_bufflen);
- tcp_ctask->sg = NULL;
- tcp_ctask->bad_sg = NULL;
- }
+ struct scatterlist *sg = scsi_sglist(sc);
+
+ iscsi_buf_init_sg(&tcp_ctask->sendbuf, sg);
+ tcp_ctask->sg = sg + 1;
+ tcp_ctask->bad_sg = sg + scsi_sg_count(sc);
debug_scsi("cmd [itt 0x%x total %d imm_data %d "
"unsol count %d, unsol offset %d]\n",
- ctask->itt, sc->request_bufflen,
+ ctask->itt, scsi_bufflen(sc),
ctask->imm_count, ctask->unsol_count,
ctask->unsol_offset);
}
diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c
index 865dd57..4d85ce1 100644
--- a/drivers/scsi/libiscsi.c
+++ b/drivers/scsi/libiscsi.c
@@ -140,7 +140,7 @@ static void iscsi_prep_scsi_cmd_pdu(struct iscsi_cmd_task *ctask)
hdr->flags = ISCSI_ATTR_SIMPLE;
int_to_scsilun(sc->device->lun, (struct scsi_lun *)hdr->lun);
hdr->itt = build_itt(ctask->itt, conn->id, session->age);
- hdr->data_length = cpu_to_be32(sc->request_bufflen);
+ hdr->data_length = cpu_to_be32(scsi_bufflen(sc));
hdr->cmdsn = cpu_to_be32(session->cmdsn);
session->cmdsn++;
hdr->exp_statsn = cpu_to_be32(conn->exp_statsn);
@@ -172,11 +172,11 @@ static void iscsi_prep_scsi_cmd_pdu(struct iscsi_cmd_task *ctask)
ctask->unsol_datasn = 0;
if (session->imm_data_en) {
- if (sc->request_bufflen >= session->first_burst)
+ if (scsi_bufflen(sc) >= session->first_burst)
ctask->imm_count = min(session->first_burst,
conn->max_xmit_dlength);
else
- ctask->imm_count = min(sc->request_bufflen,
+ ctask->imm_count = min(scsi_bufflen(sc),
conn->max_xmit_dlength);
hton24(ctask->hdr->dlength, ctask->imm_count);
} else
@@ -184,7 +184,7 @@ static void iscsi_prep_scsi_cmd_pdu(struct iscsi_cmd_task *ctask)
if (!session->initial_r2t_en) {
ctask->unsol_count = min((session->first_burst),
- (sc->request_bufflen)) - ctask->imm_count;
+ (scsi_bufflen(sc))) - ctask->imm_count;
ctask->unsol_offset = ctask->imm_count;
}
@@ -204,7 +204,7 @@ static void iscsi_prep_scsi_cmd_pdu(struct iscsi_cmd_task *ctask)
debug_scsi("iscsi prep [%s cid %d sc %p cdb 0x%x itt 0x%x len %d "
"cmdsn %d win %d]\n",
sc->sc_data_direction == DMA_TO_DEVICE ? "write" : "read",
- conn->id, sc, sc->cmnd[0], ctask->itt, sc->request_bufflen,
+ conn->id, sc, sc->cmnd[0], ctask->itt, scsi_bufflen(sc),
session->cmdsn, session->max_cmdsn - session->exp_cmdsn + 1);
}
@@ -297,14 +297,14 @@ invalid_datalen:
if (rhdr->flags & ISCSI_FLAG_CMD_UNDERFLOW) {
int res_count = be32_to_cpu(rhdr->residual_count);
- if (res_count > 0 && res_count <= sc->request_bufflen)
- sc->resid = res_count;
+ if (res_count > 0 && res_count <= scsi_bufflen(sc))
+ scsi_set_resid(sc, res_count);
else
sc->result = (DID_BAD_TARGET << 16) | rhdr->cmd_status;
} else if (rhdr->flags & ISCSI_FLAG_CMD_BIDI_UNDERFLOW)
sc->result = (DID_BAD_TARGET << 16) | rhdr->cmd_status;
else if (rhdr->flags & ISCSI_FLAG_CMD_OVERFLOW)
- sc->resid = be32_to_cpu(rhdr->residual_count);
+ scsi_set_resid(sc, be32_to_cpu(rhdr->residual_count));
out:
debug_scsi("done [sc %lx res %d itt 0x%x]\n",
@@ -876,7 +876,7 @@ fault:
printk(KERN_ERR "iscsi: cmd 0x%x is not queued (%d)\n",
sc->cmnd[0], reason);
sc->result = (DID_NO_CONNECT << 16);
- sc->resid = sc->request_bufflen;
+ scsi_set_resid(sc, scsi_bufflen(sc));
sc->scsi_done(sc);
return 0;
}
@@ -1145,7 +1145,7 @@ static void fail_command(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask,
iscsi_ctask_mtask_cleanup(ctask);
sc->result = err;
- sc->resid = sc->request_bufflen;
+ scsi_set_resid(sc, scsi_bufflen(sc));
if (conn->ctask == ctask)
conn->ctask = NULL;
/* release ref from queuecommand */
--
1.4.4.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] iscsi_iser: convert to use the data buffer accessors
2007-06-01 9:56 [PATCH 0/2] iscsi: convert to use the data buffer accessors FUJITA Tomonori
2007-06-01 9:56 ` [PATCH 1/2] iscsi_tcp: " FUJITA Tomonori
@ 2007-06-01 9:56 ` FUJITA Tomonori
2007-06-03 13:56 ` Erez Zilber
1 sibling, 1 reply; 8+ messages in thread
From: FUJITA Tomonori @ 2007-06-01 9:56 UTC (permalink / raw)
To: linux-scsi; +Cc: James.Bottomley, michaelc, rdreier, open-iscsi
iscsi_iser: convert to use the data buffer accessors
- remove the unnecessary map_single path.
- convert to use the new accessors for the sg lists and the
parameters.
TODO: use scsi_for_each_sg().
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
---
drivers/infiniband/ulp/iser/iscsi_iser.c | 4 ++--
drivers/infiniband/ulp/iser/iser_initiator.c | 14 ++++----------
2 files changed, 6 insertions(+), 12 deletions(-)
diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c b/drivers/infiniband/ulp/iser/iscsi_iser.c
index 1bf173d..effdee2 100644
--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
+++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
@@ -210,10 +210,10 @@ iscsi_iser_ctask_xmit(struct iscsi_conn *conn,
int error = 0;
if (ctask->sc->sc_data_direction == DMA_TO_DEVICE) {
- BUG_ON(ctask->sc->request_bufflen == 0);
+ BUG_ON(scsi_bufflen(ctask->sc) == 0);
debug_scsi("cmd [itt %x total %d imm %d unsol_data %d\n",
- ctask->itt, ctask->sc->request_bufflen,
+ ctask->itt, scsi_bufflen(ctask->sc),
ctask->imm_count, ctask->unsol_count);
}
diff --git a/drivers/infiniband/ulp/iser/iser_initiator.c b/drivers/infiniband/ulp/iser/iser_initiator.c
index 3651072..9ea5b9a 100644
--- a/drivers/infiniband/ulp/iser/iser_initiator.c
+++ b/drivers/infiniband/ulp/iser/iser_initiator.c
@@ -351,18 +351,12 @@ int iser_send_command(struct iscsi_conn *conn,
else
data_buf = &iser_ctask->data[ISER_DIR_OUT];
- if (sc->use_sg) { /* using a scatter list */
- data_buf->buf = sc->request_buffer;
- data_buf->size = sc->use_sg;
- } else if (sc->request_bufflen) {
- /* using a single buffer - convert it into one entry SG */
- sg_init_one(&data_buf->sg_single,
- sc->request_buffer, sc->request_bufflen);
- data_buf->buf = &data_buf->sg_single;
- data_buf->size = 1;
+ if (scsi_sg_count(sc)) { /* using a scatter list */
+ data_buf->buf = scsi_sglist(sc);
+ data_buf->size = scsi_sg_count(sc);
}
- data_buf->data_len = sc->request_bufflen;
+ data_buf->data_len = scsi_bufflen(sc);
if (hdr->flags & ISCSI_FLAG_CMD_READ) {
err = iser_prepare_read_cmd(ctask, edtl);
--
1.4.4.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] iscsi_tcp: convert to use the data buffer accessors
2007-06-01 9:56 ` [PATCH 1/2] iscsi_tcp: " FUJITA Tomonori
@ 2007-06-01 18:25 ` Mike Christie
0 siblings, 0 replies; 8+ messages in thread
From: Mike Christie @ 2007-06-01 18:25 UTC (permalink / raw)
To: FUJITA Tomonori; +Cc: linux-scsi, James.Bottomley, open-iscsi
FUJITA Tomonori wrote:
> iscsi_tcp: convert to use the data buffer accessors
>
> - remove the unnecessary map_single path.
>
> - convert to use the new accessors for the sg lists and the
> parameters.
>
I put this in the iscsi git tree with Olaf's recv path rewrite and I
converted his patch to use the new accessors. We can test all this
together. Have fun Boaz :) At least you did not have to rediff the
patches for once :)
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] iscsi_iser: convert to use the data buffer accessors
2007-06-01 9:56 ` [PATCH 2/2] iscsi_iser: " FUJITA Tomonori
@ 2007-06-03 13:56 ` Erez Zilber
2007-06-18 10:56 ` FUJITA Tomonori
0 siblings, 1 reply; 8+ messages in thread
From: Erez Zilber @ 2007-06-03 13:56 UTC (permalink / raw)
To: open-iscsi; +Cc: linux-scsi, James.Bottomley, michaelc, rdreier
FUJITA Tomonori wrote:
>
> iscsi_iser: convert to use the data buffer accessors
>
> - remove the unnecessary map_single path.
>
> - convert to use the new accessors for the sg lists and the
> parameters.
>
> TODO: use scsi_for_each_sg().
>
> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
> ---
> drivers/infiniband/ulp/iser/iscsi_iser.c | 4 ++--
> drivers/infiniband/ulp/iser/iser_initiator.c | 14 ++++----------
> 2 files changed, 6 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c
> b/drivers/infiniband/ulp/iser/iscsi_iser.c
> index 1bf173d..effdee2 100644
> --- a/drivers/infiniband/ulp/iser/iscsi_iser.c
> +++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
> @@ -210,10 +210,10 @@ iscsi_iser_ctask_xmit(struct iscsi_conn *conn,
> int error = 0;
>
> if (ctask->sc->sc_data_direction == DMA_TO_DEVICE) {
> - BUG_ON(ctask->sc->request_bufflen == 0);
> + BUG_ON(scsi_bufflen(ctask->sc) == 0);
>
> debug_scsi("cmd [itt %x total %d imm %d unsol_data %d\n",
> - ctask->itt, ctask->sc->request_bufflen,
> + ctask->itt, scsi_bufflen(ctask->sc),
> ctask->imm_count, ctask->unsol_count);
> }
>
> diff --git a/drivers/infiniband/ulp/iser/iser_initiator.c
> b/drivers/infiniband/ulp/iser/iser_initiator.c
> index 3651072..9ea5b9a 100644
> --- a/drivers/infiniband/ulp/iser/iser_initiator.c
> +++ b/drivers/infiniband/ulp/iser/iser_initiator.c
> @@ -351,18 +351,12 @@ int iser_send_command(struct iscsi_conn *conn,
> else
> data_buf = &iser_ctask->data[ISER_DIR_OUT];
>
> - if (sc->use_sg) { /* using a scatter list */
> - data_buf->buf = sc->request_buffer;
> - data_buf->size = sc->use_sg;
> - } else if (sc->request_bufflen) {
> - /* using a single buffer - convert it into one entry SG */
> - sg_init_one(&data_buf->sg_single,
> - sc->request_buffer, sc->request_bufflen);
> - data_buf->buf = &data_buf->sg_single;
> - data_buf->size = 1;
> + if (scsi_sg_count(sc)) { /* using a scatter list */
> + data_buf->buf = scsi_sglist(sc);
> + data_buf->size = scsi_sg_count(sc);
> }
>
> - data_buf->data_len = sc->request_bufflen;
> + data_buf->data_len = scsi_bufflen(sc);
>
> if (hdr->flags & ISCSI_FLAG_CMD_READ) {
> err = iser_prepare_read_cmd(ctask, edtl);
> --
> 1.4.4.4
>
>
> --~--~---------~--~----~------------~-------~--~----~
> 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
> open-iscsi-unsubscribe@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/open-iscsi
> -~----------~----~----~----~------~----~------~--~---
>
Looks ok to me. I also ran some sanity tests and it works fine.
Erez
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] iscsi_iser: convert to use the data buffer accessors
2007-06-03 13:56 ` Erez Zilber
@ 2007-06-18 10:56 ` FUJITA Tomonori
2007-06-18 18:07 ` Mike Christie
0 siblings, 1 reply; 8+ messages in thread
From: FUJITA Tomonori @ 2007-06-18 10:56 UTC (permalink / raw)
To: erezz; +Cc: open-iscsi, linux-scsi, James.Bottomley, michaelc, rdreier
From: Erez Zilber <erezz@voltaire.com>
Subject: Re: [PATCH 2/2] iscsi_iser: convert to use the data buffer accessors
Date: Sun, 03 Jun 2007 16:56:47 +0300
> FUJITA Tomonori wrote:
>
> >
> > iscsi_iser: convert to use the data buffer accessors
> >
> > - remove the unnecessary map_single path.
> >
> > - convert to use the new accessors for the sg lists and the
> > parameters.
> >
> > TODO: use scsi_for_each_sg().
> >
> > Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
> > ---
> > drivers/infiniband/ulp/iser/iscsi_iser.c | 4 ++--
> > drivers/infiniband/ulp/iser/iser_initiator.c | 14 ++++----------
> > 2 files changed, 6 insertions(+), 12 deletions(-)
> >
> > diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c
> > b/drivers/infiniband/ulp/iser/iscsi_iser.c
> > index 1bf173d..effdee2 100644
> > --- a/drivers/infiniband/ulp/iser/iscsi_iser.c
> > +++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
> > @@ -210,10 +210,10 @@ iscsi_iser_ctask_xmit(struct iscsi_conn *conn,
> > int error = 0;
> >
> > if (ctask->sc->sc_data_direction == DMA_TO_DEVICE) {
> > - BUG_ON(ctask->sc->request_bufflen == 0);
> > + BUG_ON(scsi_bufflen(ctask->sc) == 0);
> >
> > debug_scsi("cmd [itt %x total %d imm %d unsol_data %d\n",
> > - ctask->itt, ctask->sc->request_bufflen,
> > + ctask->itt, scsi_bufflen(ctask->sc),
> > ctask->imm_count, ctask->unsol_count);
> > }
> >
> > diff --git a/drivers/infiniband/ulp/iser/iser_initiator.c
> > b/drivers/infiniband/ulp/iser/iser_initiator.c
> > index 3651072..9ea5b9a 100644
> > --- a/drivers/infiniband/ulp/iser/iser_initiator.c
> > +++ b/drivers/infiniband/ulp/iser/iser_initiator.c
> > @@ -351,18 +351,12 @@ int iser_send_command(struct iscsi_conn *conn,
> > else
> > data_buf = &iser_ctask->data[ISER_DIR_OUT];
> >
> > - if (sc->use_sg) { /* using a scatter list */
> > - data_buf->buf = sc->request_buffer;
> > - data_buf->size = sc->use_sg;
> > - } else if (sc->request_bufflen) {
> > - /* using a single buffer - convert it into one entry SG */
> > - sg_init_one(&data_buf->sg_single,
> > - sc->request_buffer, sc->request_bufflen);
> > - data_buf->buf = &data_buf->sg_single;
> > - data_buf->size = 1;
> > + if (scsi_sg_count(sc)) { /* using a scatter list */
> > + data_buf->buf = scsi_sglist(sc);
> > + data_buf->size = scsi_sg_count(sc);
> > }
> >
> > - data_buf->data_len = sc->request_bufflen;
> > + data_buf->data_len = scsi_bufflen(sc);
> >
> > if (hdr->flags & ISCSI_FLAG_CMD_READ) {
> > err = iser_prepare_read_cmd(ctask, edtl);
> > --
> > 1.4.4.4
> >
> >
> > --~--~---------~--~----~------------~-------~--~----~
> > 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
> > open-iscsi-unsubscribe@googlegroups.com
> > For more options, visit this group at
> > http://groups.google.com/group/open-iscsi
> > -~----------~----~----~----~------~----~------~--~---
> >
>
> Looks ok to me. I also ran some sanity tests and it works fine.
>
> Erez
Who acks this patch, Mike or Roland?
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] iscsi_iser: convert to use the data buffer accessors
2007-06-18 10:56 ` FUJITA Tomonori
@ 2007-06-18 18:07 ` Mike Christie
2007-06-19 0:23 ` FUJITA Tomonori
0 siblings, 1 reply; 8+ messages in thread
From: Mike Christie @ 2007-06-18 18:07 UTC (permalink / raw)
To: open-iscsi; +Cc: erezz, linux-scsi, James.Bottomley, rdreier
FUJITA Tomonori wrote:
> From: Erez Zilber <erezz@voltaire.com>
> Subject: Re: [PATCH 2/2] iscsi_iser: convert to use the data buffer accessors
> Date: Sun, 03 Jun 2007 16:56:47 +0300
>
>> FUJITA Tomonori wrote:
>>
>>> iscsi_iser: convert to use the data buffer accessors
>>>
>>> - remove the unnecessary map_single path.
>>>
>>> - convert to use the new accessors for the sg lists and the
>>> parameters.
>>>
>>> TODO: use scsi_for_each_sg().
>>>
>>> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
>>> ---
>>> drivers/infiniband/ulp/iser/iscsi_iser.c | 4 ++--
>>> drivers/infiniband/ulp/iser/iser_initiator.c | 14 ++++----------
>>> 2 files changed, 6 insertions(+), 12 deletions(-)
>>>
>>> diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c
>>> b/drivers/infiniband/ulp/iser/iscsi_iser.c
>>> index 1bf173d..effdee2 100644
>>> --- a/drivers/infiniband/ulp/iser/iscsi_iser.c
>>> +++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
>>> @@ -210,10 +210,10 @@ iscsi_iser_ctask_xmit(struct iscsi_conn *conn,
>>> int error = 0;
>>>
>>> if (ctask->sc->sc_data_direction == DMA_TO_DEVICE) {
>>> - BUG_ON(ctask->sc->request_bufflen == 0);
>>> + BUG_ON(scsi_bufflen(ctask->sc) == 0);
>>>
>>> debug_scsi("cmd [itt %x total %d imm %d unsol_data %d\n",
>>> - ctask->itt, ctask->sc->request_bufflen,
>>> + ctask->itt, scsi_bufflen(ctask->sc),
>>> ctask->imm_count, ctask->unsol_count);
>>> }
>>>
>>> diff --git a/drivers/infiniband/ulp/iser/iser_initiator.c
>>> b/drivers/infiniband/ulp/iser/iser_initiator.c
>>> index 3651072..9ea5b9a 100644
>>> --- a/drivers/infiniband/ulp/iser/iser_initiator.c
>>> +++ b/drivers/infiniband/ulp/iser/iser_initiator.c
>>> @@ -351,18 +351,12 @@ int iser_send_command(struct iscsi_conn *conn,
>>> else
>>> data_buf = &iser_ctask->data[ISER_DIR_OUT];
>>>
>>> - if (sc->use_sg) { /* using a scatter list */
>>> - data_buf->buf = sc->request_buffer;
>>> - data_buf->size = sc->use_sg;
>>> - } else if (sc->request_bufflen) {
>>> - /* using a single buffer - convert it into one entry SG */
>>> - sg_init_one(&data_buf->sg_single,
>>> - sc->request_buffer, sc->request_bufflen);
>>> - data_buf->buf = &data_buf->sg_single;
>>> - data_buf->size = 1;
>>> + if (scsi_sg_count(sc)) { /* using a scatter list */
>>> + data_buf->buf = scsi_sglist(sc);
>>> + data_buf->size = scsi_sg_count(sc);
>>> }
>>>
>>> - data_buf->data_len = sc->request_bufflen;
>>> + data_buf->data_len = scsi_bufflen(sc);
>>>
>>> if (hdr->flags & ISCSI_FLAG_CMD_READ) {
>>> err = iser_prepare_read_cmd(ctask, edtl);
>>> --
>>> 1.4.4.4
>>>
>>>
>> Looks ok to me. I also ran some sanity tests and it works fine.
>>
>> Erez
>
> Who acks this patch, Mike or Roland?
>
I believe Erez is the iser maintainer. He normally sends patches to
Roland like how scsi driver maintainers send patches to James.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] iscsi_iser: convert to use the data buffer accessors
2007-06-18 18:07 ` Mike Christie
@ 2007-06-19 0:23 ` FUJITA Tomonori
0 siblings, 0 replies; 8+ messages in thread
From: FUJITA Tomonori @ 2007-06-19 0:23 UTC (permalink / raw)
To: michaelc, James.Bottomley; +Cc: open-iscsi, erezz, linux-scsi, rdreier
From: Mike Christie <michaelc@cs.wisc.edu>
Subject: Re: [PATCH 2/2] iscsi_iser: convert to use the data buffer accessors
Date: Mon, 18 Jun 2007 13:07:19 -0500
> FUJITA Tomonori wrote:
> > From: Erez Zilber <erezz@voltaire.com>
> > Subject: Re: [PATCH 2/2] iscsi_iser: convert to use the data buffer accessors
> > Date: Sun, 03 Jun 2007 16:56:47 +0300
> >
> >> FUJITA Tomonori wrote:
> >>
> >>> iscsi_iser: convert to use the data buffer accessors
> >>>
> >>> - remove the unnecessary map_single path.
> >>>
> >>> - convert to use the new accessors for the sg lists and the
> >>> parameters.
> >>>
> >>> TODO: use scsi_for_each_sg().
> >>>
> >>> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
> >>> ---
> >>> drivers/infiniband/ulp/iser/iscsi_iser.c | 4 ++--
> >>> drivers/infiniband/ulp/iser/iser_initiator.c | 14 ++++----------
> >>> 2 files changed, 6 insertions(+), 12 deletions(-)
> >>>
> >>> diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c
> >>> b/drivers/infiniband/ulp/iser/iscsi_iser.c
> >>> index 1bf173d..effdee2 100644
> >>> --- a/drivers/infiniband/ulp/iser/iscsi_iser.c
> >>> +++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
> >>> @@ -210,10 +210,10 @@ iscsi_iser_ctask_xmit(struct iscsi_conn *conn,
> >>> int error = 0;
> >>>
> >>> if (ctask->sc->sc_data_direction == DMA_TO_DEVICE) {
> >>> - BUG_ON(ctask->sc->request_bufflen == 0);
> >>> + BUG_ON(scsi_bufflen(ctask->sc) == 0);
> >>>
> >>> debug_scsi("cmd [itt %x total %d imm %d unsol_data %d\n",
> >>> - ctask->itt, ctask->sc->request_bufflen,
> >>> + ctask->itt, scsi_bufflen(ctask->sc),
> >>> ctask->imm_count, ctask->unsol_count);
> >>> }
> >>>
> >>> diff --git a/drivers/infiniband/ulp/iser/iser_initiator.c
> >>> b/drivers/infiniband/ulp/iser/iser_initiator.c
> >>> index 3651072..9ea5b9a 100644
> >>> --- a/drivers/infiniband/ulp/iser/iser_initiator.c
> >>> +++ b/drivers/infiniband/ulp/iser/iser_initiator.c
> >>> @@ -351,18 +351,12 @@ int iser_send_command(struct iscsi_conn *conn,
> >>> else
> >>> data_buf = &iser_ctask->data[ISER_DIR_OUT];
> >>>
> >>> - if (sc->use_sg) { /* using a scatter list */
> >>> - data_buf->buf = sc->request_buffer;
> >>> - data_buf->size = sc->use_sg;
> >>> - } else if (sc->request_bufflen) {
> >>> - /* using a single buffer - convert it into one entry SG */
> >>> - sg_init_one(&data_buf->sg_single,
> >>> - sc->request_buffer, sc->request_bufflen);
> >>> - data_buf->buf = &data_buf->sg_single;
> >>> - data_buf->size = 1;
> >>> + if (scsi_sg_count(sc)) { /* using a scatter list */
> >>> + data_buf->buf = scsi_sglist(sc);
> >>> + data_buf->size = scsi_sg_count(sc);
> >>> }
> >>>
> >>> - data_buf->data_len = sc->request_bufflen;
> >>> + data_buf->data_len = scsi_bufflen(sc);
> >>>
> >>> if (hdr->flags & ISCSI_FLAG_CMD_READ) {
> >>> err = iser_prepare_read_cmd(ctask, edtl);
> >>> --
> >>> 1.4.4.4
> >>>
> >>>
> >> Looks ok to me. I also ran some sanity tests and it works fine.
> >>
> >> Erez
> >
> > Who acks this patch, Mike or Roland?
> >
>
> I believe Erez is the iser maintainer. He normally sends patches to
> Roland like how scsi driver maintainers send patches to James.
Oh, I see. Thanks.
I guess that it already got Erez's ACK. Can you put this to scsi-misc,
James?
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2007-06-19 0:23 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-06-01 9:56 [PATCH 0/2] iscsi: convert to use the data buffer accessors FUJITA Tomonori
2007-06-01 9:56 ` [PATCH 1/2] iscsi_tcp: " FUJITA Tomonori
2007-06-01 18:25 ` Mike Christie
2007-06-01 9:56 ` [PATCH 2/2] iscsi_iser: " FUJITA Tomonori
2007-06-03 13:56 ` Erez Zilber
2007-06-18 10:56 ` FUJITA Tomonori
2007-06-18 18:07 ` Mike Christie
2007-06-19 0:23 ` FUJITA Tomonori
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).