scsi: fnic: Warn when calling done for IO not issued to fw
authorSatish Kharat <satishkh@cisco.com>
Tue, 15 Jan 2019 01:09:26 +0000 (17:09 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 23 Jan 2019 02:18:34 +0000 (21:18 -0500)
The change is to print warning when scsi done is called for an IO that has
not yet been issued to the fw. Also adding sc and tag to debug print when
IO is cleaned up.

Signed-off-by: Satish Kharat <satishkh@cisco.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/fnic/fnic_scsi.c

index 4140f07415dd43058148ed2c3c154cb43d268964..80608b53897bb410beb152bfe2c6bba74498065f 100644 (file)
@@ -1415,8 +1415,9 @@ static void fnic_cleanup_io(struct fnic *fnic, int exclude_id)
 cleanup_scsi_cmd:
                sc->result = DID_TRANSPORT_DISRUPTED << 16;
                FNIC_SCSI_DBG(KERN_DEBUG, fnic->lport->host,
-                             "%s: sc duration = %lu DID_TRANSPORT_DISRUPTED\n",
-                             __func__, (jiffies - start_time));
+                             "%s: tag:0x%x : sc:0x%p duration = %lu DID_TRANSPORT_DISRUPTED\n",
+                             __func__, sc->request->tag, sc,
+                             (jiffies - start_time));
 
                if (atomic64_read(&fnic->io_cmpl_skip))
                        atomic64_dec(&fnic->io_cmpl_skip);
@@ -1425,6 +1426,11 @@ cleanup_scsi_cmd:
 
                /* Complete the command to SCSI */
                if (sc->scsi_done) {
+                       if (!(CMD_FLAGS(sc) & FNIC_IO_ISSUED))
+                               shost_printk(KERN_ERR, fnic->lport->host,
+                               "Calling done for IO not issued to fw: tag:0x%x sc:0x%p\n",
+                                sc->request->tag, sc);
+
                        FNIC_TRACE(fnic_cleanup_io,
                                  sc->device->host->host_no, i, sc,
                                  jiffies_to_msecs(jiffies - start_time),