Print this page
Spencer's first if/else try

*** 841,875 **** * on a vnode. */ void vn_rele(vnode_t *vp) { - VERIFY(vp->v_count > 0); mutex_enter(&vp->v_lock); if (vp->v_count == 1) { mutex_exit(&vp->v_lock); VOP_INACTIVE(vp, CRED(), NULL); return; } VN_RELE_LOCKED(vp); mutex_exit(&vp->v_lock); } void vn_phantom_rele(vnode_t *vp) { - VERIFY(vp->v_count > 0); - mutex_enter(&vp->v_lock); ! VERIFY3U(vp->v_count, >=, vp->v_phantom_count); vp->v_phantom_count--; DTRACE_PROBE1(vn__phantom_rele, vnode_t *, vp); if (vp->v_count == 1) { ASSERT0(vp->v_phantom_count); mutex_exit(&vp->v_lock); VOP_INACTIVE(vp, CRED(), NULL); return; } VN_RELE_LOCKED(vp); mutex_exit(&vp->v_lock); } --- 841,878 ---- * on a vnode. */ void vn_rele(vnode_t *vp) { mutex_enter(&vp->v_lock); if (vp->v_count == 1) { mutex_exit(&vp->v_lock); VOP_INACTIVE(vp, CRED(), NULL); return; } + else{ + VERIFY(vp->v_count > 0); + } VN_RELE_LOCKED(vp); mutex_exit(&vp->v_lock); } void vn_phantom_rele(vnode_t *vp) { mutex_enter(&vp->v_lock); ! vp->v_phantom_count--; DTRACE_PROBE1(vn__phantom_rele, vnode_t *, vp); if (vp->v_count == 1) { ASSERT0(vp->v_phantom_count); mutex_exit(&vp->v_lock); VOP_INACTIVE(vp, CRED(), NULL); return; + }else{ + VERIFY(vp->v_count > 0); + VERIFY3U(vp->v_count, >=, vp->v_phantom_count); } VN_RELE_LOCKED(vp); mutex_exit(&vp->v_lock); }
*** 892,910 **** * only by the DNLC. */ void vn_rele_dnlc(vnode_t *vp) { - VERIFY((vp->v_count > 0) && (vp->v_count_dnlc > 0)); mutex_enter(&vp->v_lock); if (--vp->v_count_dnlc == 0) { if (vp->v_count == 1) { mutex_exit(&vp->v_lock); VOP_INACTIVE(vp, CRED(), NULL); return; } VN_RELE_LOCKED(vp); } mutex_exit(&vp->v_lock); } /* --- 895,915 ---- * only by the DNLC. */ void vn_rele_dnlc(vnode_t *vp) { mutex_enter(&vp->v_lock); + if (--vp->v_count_dnlc == 0) { if (vp->v_count == 1) { mutex_exit(&vp->v_lock); VOP_INACTIVE(vp, CRED(), NULL); return; } VN_RELE_LOCKED(vp); + }else{ + VERIFY((vp->v_count > 0) && (vp->v_count_dnlc > 0)); } mutex_exit(&vp->v_lock); } /*
*** 915,932 **** * path from accessing a stream head that is going away. */ void vn_rele_stream(vnode_t *vp) { - VERIFY(vp->v_count > 0); mutex_enter(&vp->v_lock); vp->v_stream = NULL; if (vp->v_count == 1) { mutex_exit(&vp->v_lock); VOP_INACTIVE(vp, CRED(), NULL); return; } VN_RELE_LOCKED(vp); mutex_exit(&vp->v_lock); } static void --- 920,940 ---- * path from accessing a stream head that is going away. */ void vn_rele_stream(vnode_t *vp) { mutex_enter(&vp->v_lock); + vp->v_stream = NULL; if (vp->v_count == 1) { mutex_exit(&vp->v_lock); VOP_INACTIVE(vp, CRED(), NULL); return; } + else{ + VERIFY(vp->v_count > 0); + } VN_RELE_LOCKED(vp); mutex_exit(&vp->v_lock); } static void
*** 946,963 **** * This is because taskqs throttle back allocation if too many are created. */ void vn_rele_async(vnode_t *vp, taskq_t *taskq) { - VERIFY(vp->v_count > 0); mutex_enter(&vp->v_lock); if (vp->v_count == 1) { mutex_exit(&vp->v_lock); VERIFY(taskq_dispatch(taskq, (task_func_t *)vn_rele_inactive, vp, TQ_SLEEP) != TASKQID_INVALID); return; } VN_RELE_LOCKED(vp); mutex_exit(&vp->v_lock); } int --- 954,973 ---- * This is because taskqs throttle back allocation if too many are created. */ void vn_rele_async(vnode_t *vp, taskq_t *taskq) { mutex_enter(&vp->v_lock); if (vp->v_count == 1) { mutex_exit(&vp->v_lock); VERIFY(taskq_dispatch(taskq, (task_func_t *)vn_rele_inactive, vp, TQ_SLEEP) != TASKQID_INVALID); return; } + else{ + VERIFY(vp->v_count > 0); + } VN_RELE_LOCKED(vp); mutex_exit(&vp->v_lock); } int