Message ID | 53A9A702.8050503@dev.mellanox.co.il (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
On Tue, Jun 24, 2014 at 07:27:46PM +0300, Sagi Grimberg wrote: > This condition only matters in the bidi case, which is not relevant for the > PI case. > I suggested to condition that in libiscsi (posted in the second thread, > copy-paste below). > Although I do agree that scsi_transfer_length() helper is not really just > for PI and not more. > I think Mike's way is cleaner. But for bidi there are two transfers. So either scsi_transfer_length() needs to take the scsi_data_buffer, or we need to avoid using it. For 3.16 I'd prefer something like you're patch below. This patch which has been rushed in last minute and not through the scsi tree has already causes enough harm. If you can come up with a clean version to transparently handle the bidi case I'd be happy to pick that up for 3.17. In the meantime please provide a version of the patch below with a proper description and signoff. -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 06/24/2014 11:30 AM, Christoph Hellwig wrote: > On Tue, Jun 24, 2014 at 07:27:46PM +0300, Sagi Grimberg wrote: >> This condition only matters in the bidi case, which is not relevant for the >> PI case. >> I suggested to condition that in libiscsi (posted in the second thread, >> copy-paste below). >> Although I do agree that scsi_transfer_length() helper is not really just >> for PI and not more. >> I think Mike's way is cleaner. > > But for bidi there are two transfers. So either scsi_transfer_length() > needs to take the scsi_data_buffer, or we need to avoid using it. > > For 3.16 I'd prefer something like you're patch below. This patch which > has been rushed in last minute and not through the scsi tree has already > causes enough harm. If you can come up with a clean version to > transparently handle the bidi case I'd be happy to pick that up for > 3.17. > > In the meantime please provide a version of the patch below with a > proper description and signoff. > It would be nice to just have one function to call and it just do the right thing for the drivers. I am fine with Sagi's libiscsi patch for now though: Acked-by: Mike Christie <michaelc@cs.wisc.edu> -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
>>>>> "Mike" == Mike Christie <michaelc@cs.wisc.edu> writes:
Mike> It would be nice to just have one function to call and it just do
Mike> the right thing for the drivers.
But what is the right thing when there are buffers for both directions?
On 06/24/2014 12:00 PM, Mike Christie wrote: > On 06/24/2014 11:30 AM, Christoph Hellwig wrote: >> On Tue, Jun 24, 2014 at 07:27:46PM +0300, Sagi Grimberg wrote: >>> This condition only matters in the bidi case, which is not relevant for the >>> PI case. >>> I suggested to condition that in libiscsi (posted in the second thread, >>> copy-paste below). >>> Although I do agree that scsi_transfer_length() helper is not really just >>> for PI and not more. >>> I think Mike's way is cleaner. >> >> But for bidi there are two transfers. So either scsi_transfer_length() >> needs to take the scsi_data_buffer, or we need to avoid using it. >> >> For 3.16 I'd prefer something like you're patch below. This patch which >> has been rushed in last minute and not through the scsi tree has already >> causes enough harm. If you can come up with a clean version to >> transparently handle the bidi case I'd be happy to pick that up for >> 3.17. >> >> In the meantime please provide a version of the patch below with a >> proper description and signoff. >> > > It would be nice to just have one function to call and it just do the > right thing for the drivers. I am fine with Sagi's libiscsi patch for > now though: > > Acked-by: Mike Christie <michaelc@cs.wisc.edu> Actually, let me take this back for a second. I am not sure if that is right. -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c index 3f46234..abf0c3e 100644 --- a/drivers/scsi/libiscsi.c +++ b/drivers/scsi/libiscsi.c @@ -386,12 +386,14 @@ static int iscsi_prep_scsi_cmd_pdu(struct iscsi_task *task) rc = iscsi_prep_bidi_ahs(task); if (rc) return rc; + transfer_length = scsi_in(sc)->length; + } else { + transfer_length = scsi_transfer_length(sc); } if (scsi_get_prot_op(sc) != SCSI_PROT_NORMAL) task->protected = true; - transfer_length = scsi_transfer_length(sc); hdr->data_length = cpu_to_be32(transfer_length); if (sc->sc_data_direction == DMA_TO_DEVICE) {