diff --git a/sys/dev/iscsi/icl.c b/sys/dev/iscsi/icl.c index 839fac5ba18d..44a049f7fbd3 100644 --- a/sys/dev/iscsi/icl.c +++ b/sys/dev/iscsi/icl.c @@ -138,11 +138,15 @@ icl_pdu_new(struct icl_conn *ic, int flags) { struct icl_pdu *ip; +#ifdef DIAGNOSTIC refcount_acquire(&ic->ic_outstanding_pdus); +#endif ip = uma_zalloc(icl_pdu_zone, flags | M_ZERO); if (ip == NULL) { ICL_WARN("failed to allocate %zd bytes", sizeof(*ip)); +#ifdef DIAGNOSTIC refcount_release(&ic->ic_outstanding_pdus); +#endif return (NULL); } @@ -162,7 +166,9 @@ icl_pdu_free(struct icl_pdu *ip) m_freem(ip->ip_ahs_mbuf); m_freem(ip->ip_data_mbuf); uma_zfree(icl_pdu_zone, ip); +#ifdef DIAGNOSTIC refcount_release(&ic->ic_outstanding_pdus); +#endif } /* @@ -980,7 +986,9 @@ icl_conn_new(void) mtx_init(&ic->ic_lock, "icl_lock", NULL, MTX_DEF); cv_init(&ic->ic_send_cv, "icl_tx"); cv_init(&ic->ic_receive_cv, "icl_rx"); +#ifdef DIAGNOSTIC refcount_init(&ic->ic_outstanding_pdus, 0); +#endif ic->ic_max_data_segment_length = ICL_MAX_DATA_SEGMENT_LENGTH; return (ic); diff --git a/sys/dev/iscsi/icl.h b/sys/dev/iscsi/icl.h index 87a565269562..ab61cd8faa63 100644 --- a/sys/dev/iscsi/icl.h +++ b/sys/dev/iscsi/icl.h @@ -76,7 +76,9 @@ void icl_pdu_free(struct icl_pdu *ip); struct icl_conn { struct mtx ic_lock; struct socket *ic_socket; +#ifdef DIAGNOSTIC volatile u_int ic_outstanding_pdus; +#endif TAILQ_HEAD(, icl_pdu) ic_to_send; size_t ic_receive_len; int ic_receive_state;