From 802ee69a76a78bd87bb4b9861537b8141b56a260 Mon Sep 17 00:00:00 2001 From: Stanislaw Gruszka Date: Tue, 1 Apr 2008 07:14:26 +0000 Subject: [PATCH] Stop setting command expected values for SCST, as we can not assure values are right. git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@320 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- qla_isp/linux/isp_scst.c | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/qla_isp/linux/isp_scst.c b/qla_isp/linux/isp_scst.c index a2dc930da..d81b3e757 100644 --- a/qla_isp/linux/isp_scst.c +++ b/qla_isp/linux/isp_scst.c @@ -363,8 +363,6 @@ tasklet_rx_cmds(unsigned long data) tmd_cmd_t *tmd; tmd_xact_t *xact; struct scst_cmd *scst_cmd; - scst_data_direction dir; - int len; rx_loop: spin_lock_irq(&bp->tmds_lock); @@ -426,18 +424,29 @@ rx_loop: break; } - /* bidirectional or no transfer */ - dir = SCST_DATA_UNKNOWN; - if ((tmd->cd_flags & CDF_DATA_OUT) && !(tmd->cd_flags & CDF_DATA_IN)) { - dir = SCST_DATA_WRITE; - } else if (tmd->cd_flags & CDF_DATA_IN) { - dir = SCST_DATA_READ; + /* + * XXX: For some commands like INQUIRY, SYNCHRONIZE_CACHE, VERIFY, ... + * XXX: we can not get good direction and transfer length values + * XXX: from low level driver. As long as we could not assure + * XXX: proper things, we stop setting exected values for SCST + */ + if (0) { + scst_data_direction dir; + int len; + + /* bidirectional or no transfer */ + dir = SCST_DATA_UNKNOWN; + if ((tmd->cd_flags & CDF_DATA_OUT) && !(tmd->cd_flags & CDF_DATA_IN)) { + dir = SCST_DATA_WRITE; + } else if (tmd->cd_flags & CDF_DATA_IN) { + dir = SCST_DATA_READ; + } + len = tmd->cd_totlen; + if (tmd->cd_cdb[0] == INQUIRY) { + len = min(len, tmd->cd_cdb[4]); + } + scst_cmd_set_expected(scst_cmd, dir, len); } - len = tmd->cd_totlen; - if (tmd->cd_cdb[0] == INQUIRY) { - len = min(len, tmd->cd_cdb[4]); - } - scst_cmd_set_expected(scst_cmd, dir, len); scst_cmd_init_done(scst_cmd, SCST_CONTEXT_TASKLET); spin_unlock_irq(&bp->tmds_lock);