From: Shyam Sundar <ssun...@marvell.com>

- I/Os, aborts and tmf should not be queued if flush is in progress.

Signed-off-by: Shyam Sundar <ssun...@marvell.com>
Signed-off-by: Saurav Kashyap <skash...@marvell.com>
---
 drivers/scsi/qedf/qedf_io.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/scsi/qedf/qedf_io.c b/drivers/scsi/qedf/qedf_io.c
index 504ae02..30932a8 100644
--- a/drivers/scsi/qedf/qedf_io.c
+++ b/drivers/scsi/qedf/qedf_io.c
@@ -982,7 +982,8 @@ int qedf_post_io_req(struct qedf_rport *fcport, struct 
qedf_ioreq *io_req)
        /* rport and tgt are allocated together, so tgt should be non-NULL */
        fcport = (struct qedf_rport *)&rp[1];
 
-       if (!test_bit(QEDF_RPORT_SESSION_READY, &fcport->flags)) {
+       if (!test_bit(QEDF_RPORT_SESSION_READY, &fcport->flags) ||
+           test_bit(QEDF_RPORT_UPLOADING_CONNECTION, &fcport->flags)) {
                /*
                 * Session is not offloaded yet. Let SCSI-ml retry
                 * the command.
@@ -2401,6 +2402,12 @@ int qedf_initiate_tmf(struct scsi_cmnd *sc_cmd, u8 
tm_flags)
 
        lport = qedf->lport;
 
+       if (test_bit(QEDF_RPORT_UPLOADING_CONNECTION, &fcport->flags)) {
+               QEDF_ERR(&qedf->dbg_ctx, "Connection is getting uploaded.\n");
+               rc = SUCCESS;
+               goto tmf_err;
+       }
+
        if (test_bit(QEDF_UNLOADING, &qedf->flags) ||
            test_bit(QEDF_DBG_STOP_IO, &qedf->flags)) {
                rc = SUCCESS;
-- 
1.8.3.1

Reply via email to