Print this page
5045 use atomic_{inc,dec}_* instead of atomic_add_*

*** 522,541 **** errorq_dispatch(errorq_t *eqp, const void *data, size_t len, uint_t flag) { errorq_elem_t *eep, *old; if (eqp == NULL || !(eqp->eq_flags & ERRORQ_ACTIVE)) { ! atomic_add_64(&errorq_lost, 1); return; /* drop error if queue is uninitialized or disabled */ } for (;;) { int i, rval; if ((i = errorq_availbit(eqp->eq_bitmap, eqp->eq_qlen, eqp->eq_rotor)) == -1) { ! atomic_add_64(&eqp->eq_kstat.eqk_dropped.value.ui64, 1); return; } BT_ATOMIC_SET_EXCL(eqp->eq_bitmap, i, rval); if (rval == 0) { eqp->eq_rotor = i; --- 522,541 ---- errorq_dispatch(errorq_t *eqp, const void *data, size_t len, uint_t flag) { errorq_elem_t *eep, *old; if (eqp == NULL || !(eqp->eq_flags & ERRORQ_ACTIVE)) { ! atomic_inc_64(&errorq_lost); return; /* drop error if queue is uninitialized or disabled */ } for (;;) { int i, rval; if ((i = errorq_availbit(eqp->eq_bitmap, eqp->eq_qlen, eqp->eq_rotor)) == -1) { ! atomic_inc_64(&eqp->eq_kstat.eqk_dropped.value.ui64); return; } BT_ATOMIC_SET_EXCL(eqp->eq_bitmap, i, rval); if (rval == 0) { eqp->eq_rotor = i;
*** 557,567 **** if (atomic_cas_ptr(&eqp->eq_pend, old, eep) == old) break; } ! atomic_add_64(&eqp->eq_kstat.eqk_dispatched.value.ui64, 1); if (flag == ERRORQ_ASYNC && eqp->eq_id != NULL) ddi_trigger_softintr(eqp->eq_id); } --- 557,567 ---- if (atomic_cas_ptr(&eqp->eq_pend, old, eep) == old) break; } ! atomic_inc_64(&eqp->eq_kstat.eqk_dispatched.value.ui64); if (flag == ERRORQ_ASYNC && eqp->eq_id != NULL) ddi_trigger_softintr(eqp->eq_id); }
*** 865,884 **** errorq_reserve(errorq_t *eqp) { errorq_elem_t *eqep; if (eqp == NULL || !(eqp->eq_flags & ERRORQ_ACTIVE)) { ! atomic_add_64(&errorq_lost, 1); return (NULL); } for (;;) { int i, rval; if ((i = errorq_availbit(eqp->eq_bitmap, eqp->eq_qlen, eqp->eq_rotor)) == -1) { ! atomic_add_64(&eqp->eq_kstat.eqk_dropped.value.ui64, 1); return (NULL); } BT_ATOMIC_SET_EXCL(eqp->eq_bitmap, i, rval); if (rval == 0) { eqp->eq_rotor = i; --- 865,884 ---- errorq_reserve(errorq_t *eqp) { errorq_elem_t *eqep; if (eqp == NULL || !(eqp->eq_flags & ERRORQ_ACTIVE)) { ! atomic_inc_64(&errorq_lost); return (NULL); } for (;;) { int i, rval; if ((i = errorq_availbit(eqp->eq_bitmap, eqp->eq_qlen, eqp->eq_rotor)) == -1) { ! atomic_inc_64(&eqp->eq_kstat.eqk_dropped.value.ui64); return (NULL); } BT_ATOMIC_SET_EXCL(eqp->eq_bitmap, i, rval); if (rval == 0) { eqp->eq_rotor = i;
*** 891,901 **** errorq_nvelem_t *eqnp = eqep->eqe_data; nv_alloc_reset(eqnp->eqn_nva); eqnp->eqn_nvl = fm_nvlist_create(eqnp->eqn_nva); } ! atomic_add_64(&eqp->eq_kstat.eqk_reserved.value.ui64, 1); return (eqep); } /* * Commit an errorq element (eqep) for dispatching. --- 891,901 ---- errorq_nvelem_t *eqnp = eqep->eqe_data; nv_alloc_reset(eqnp->eqn_nva); eqnp->eqn_nvl = fm_nvlist_create(eqnp->eqn_nva); } ! atomic_inc_64(&eqp->eq_kstat.eqk_reserved.value.ui64); return (eqep); } /* * Commit an errorq element (eqep) for dispatching.
*** 906,916 **** errorq_commit(errorq_t *eqp, errorq_elem_t *eqep, uint_t flag) { errorq_elem_t *old; if (eqep == NULL || !(eqp->eq_flags & ERRORQ_ACTIVE)) { ! atomic_add_64(&eqp->eq_kstat.eqk_commit_fail.value.ui64, 1); return; } for (;;) { old = eqp->eq_pend; --- 906,916 ---- errorq_commit(errorq_t *eqp, errorq_elem_t *eqep, uint_t flag) { errorq_elem_t *old; if (eqep == NULL || !(eqp->eq_flags & ERRORQ_ACTIVE)) { ! atomic_inc_64(&eqp->eq_kstat.eqk_commit_fail.value.ui64); return; } for (;;) { old = eqp->eq_pend;
*** 919,929 **** if (atomic_cas_ptr(&eqp->eq_pend, old, eqep) == old) break; } ! atomic_add_64(&eqp->eq_kstat.eqk_committed.value.ui64, 1); if (flag == ERRORQ_ASYNC && eqp->eq_id != NULL) ddi_trigger_softintr(eqp->eq_id); } --- 919,929 ---- if (atomic_cas_ptr(&eqp->eq_pend, old, eqep) == old) break; } ! atomic_inc_64(&eqp->eq_kstat.eqk_committed.value.ui64); if (flag == ERRORQ_ASYNC && eqp->eq_id != NULL) ddi_trigger_softintr(eqp->eq_id); }
*** 937,947 **** if (eqep == NULL || !(eqp->eq_flags & ERRORQ_ACTIVE)) return; BT_ATOMIC_CLEAR(eqp->eq_bitmap, eqep - eqp->eq_elems); ! atomic_add_64(&eqp->eq_kstat.eqk_cancelled.value.ui64, 1); } /* * Write elements on the dump list of each nvlist errorq to the dump device. * Upon reboot, fmd(1M) will extract and replay them for diagnosis. --- 937,947 ---- if (eqep == NULL || !(eqp->eq_flags & ERRORQ_ACTIVE)) return; BT_ATOMIC_CLEAR(eqp->eq_bitmap, eqep - eqp->eq_elems); ! atomic_inc_64(&eqp->eq_kstat.eqk_cancelled.value.ui64); } /* * Write elements on the dump list of each nvlist errorq to the dump device. * Upon reboot, fmd(1M) will extract and replay them for diagnosis.