[SCSI] libfc: adds FCP failures stats
authorVasu Dev <vasu.dev@intel.com>
Fri, 25 May 2012 17:26:48 +0000 (10:26 -0700)
committerJames Bottomley <JBottomley@Parallels.com>
Fri, 20 Jul 2012 07:31:48 +0000 (08:31 +0100)
Adds stats to track FCP pkt and frame alloc
failure.

Signed-off-by: Vasu Dev <vasu.dev@intel.com>
Acked-by : Robert Love <robert.w.love@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/libfc/fc_fcp.c
include/scsi/libfc.h

index 5c4c504fc10502e23d7af0db0ea77e9adcd20a2d..3c96e9300d0087e1a5d270e72d83cac6a1e4a84f 100644 (file)
@@ -158,6 +158,9 @@ static struct fc_fcp_pkt *fc_fcp_pkt_alloc(struct fc_lport *lport, gfp_t gfp)
                fsp->timer.data = (unsigned long)fsp;
                INIT_LIST_HEAD(&fsp->list);
                spin_lock_init(&fsp->scsi_pkt_lock);
+       } else {
+               per_cpu_ptr(lport->stats, get_cpu())->FcpPktAllocFails++;
+               put_cpu();
        }
        return fsp;
 }
@@ -264,6 +267,9 @@ static int fc_fcp_send_abort(struct fc_fcp_pkt *fsp)
        if (!fsp->seq_ptr)
                return -EINVAL;
 
+       per_cpu_ptr(fsp->lp->stats, get_cpu())->FcpPktAborts++;
+       put_cpu();
+
        fsp->state |= FC_SRB_ABORT_PENDING;
        return fsp->lp->tt.seq_exch_abort(fsp->seq_ptr, 0);
 }
@@ -420,6 +426,8 @@ static inline struct fc_frame *fc_fcp_frame_alloc(struct fc_lport *lport,
        if (likely(fp))
                return fp;
 
+       per_cpu_ptr(lport->stats, get_cpu())->FcpFrameAllocFails++;
+       put_cpu();
        /* error case */
        fc_fcp_can_queue_ramp_down(lport);
        return NULL;
index ea52ca203c95bc128a2aa9f6b9fc076583f28bb1..f257a74e6de4b2fa909f66740b03b0702bd2f2d5 100644 (file)
@@ -232,6 +232,9 @@ struct fc_rport_priv {
  * @RxWords:               Number of received words
  * @ErrorFrames:           Number of received error frames
  * @DumpedFrames:          Number of dumped frames
+ * @FcpPktAllocFails:      Number of fcp packet allocation failures
+ * @FcpPktAborts:          Number of fcp packet aborts
+ * @FcpFrameAllocFails:    Number of fcp frame allocation failures
  * @LinkFailureCount:      Number of link failures
  * @LossOfSignalCount:     Number for signal losses
  * @InvalidTxWordCount:    Number of invalid transmitted words
@@ -252,6 +255,9 @@ struct fc_stats {
        u64             RxWords;
        u64             ErrorFrames;
        u64             DumpedFrames;
+       u64             FcpPktAllocFails;
+       u64             FcpPktAborts;
+       u64             FcpFrameAllocFails;
        u64             LinkFailureCount;
        u64             LossOfSignalCount;
        u64             InvalidTxWordCount;