OSDN Git Service

scsi: qedf: Don't queue anything if upload is in progress
authorShyam Sundar <ssundar@marvell.com>
Tue, 26 Mar 2019 07:38:51 +0000 (00:38 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 28 Mar 2019 01:54:53 +0000 (21:54 -0400)
 - I/Os, aborts and tmf should not be queued if flush is in progress.

Signed-off-by: Shyam Sundar <ssundar@marvell.com>
Signed-off-by: Saurav Kashyap <skashyap@marvell.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/qedf/qedf_io.c

index 56d2116..eeb96c7 100644 (file)
@@ -982,7 +982,8 @@ qedf_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *sc_cmd)
        /* 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;