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

*** 5974,5988 **** if (pp == NULL) { mutex_exit(&ulp->ul_lock); } return (vmpss ? EIO : EINVAL); } ! atomic_add_long(&ulp->ul_vnops_cnt, 1); if (pp == NULL) mutex_exit(&ulp->ul_lock); if (ufs_quiesce_pend) { ! if (!atomic_add_long_nv(&ulp->ul_vnops_cnt, -1)) cv_broadcast(&ulp->ul_cv); return (vmpss ? EIO : EINVAL); } } --- 5974,5988 ---- if (pp == NULL) { mutex_exit(&ulp->ul_lock); } return (vmpss ? EIO : EINVAL); } ! atomic_inc_ulong(&ulp->ul_vnops_cnt); if (pp == NULL) mutex_exit(&ulp->ul_lock); if (ufs_quiesce_pend) { ! if (!atomic_dec_ulong_nv(&ulp->ul_vnops_cnt)) cv_broadcast(&ulp->ul_cv); return (vmpss ? EIO : EINVAL); } }
*** 5997,6007 **** * Segvn will retry via VOP_GETPAGE() if VOP_PAGEIO() fails. */ if (!vmpss) { rw_enter(&ip->i_contents, RW_READER); } else if (!rw_tryenter(&ip->i_contents, RW_READER)) { ! if (!atomic_add_long_nv(&ulp->ul_vnops_cnt, -1)) cv_broadcast(&ulp->ul_cv); return (EDEADLK); } } --- 5997,6007 ---- * Segvn will retry via VOP_GETPAGE() if VOP_PAGEIO() fails. */ if (!vmpss) { rw_enter(&ip->i_contents, RW_READER); } else if (!rw_tryenter(&ip->i_contents, RW_READER)) { ! if (!atomic_dec_ulong_nv(&ulp->ul_vnops_cnt)) cv_broadcast(&ulp->ul_cv); return (EDEADLK); } }
*** 6010,6020 **** * PAGESIZE rounded EOF. */ if (vmpss && btopr(io_off + io_len) > btopr(ip->i_size)) { if (dolock) rw_exit(&ip->i_contents); ! if (!atomic_add_long_nv(&ulp->ul_vnops_cnt, -1)) cv_broadcast(&ulp->ul_cv); return (EFAULT); } if (pp == NULL) { --- 6010,6020 ---- * PAGESIZE rounded EOF. */ if (vmpss && btopr(io_off + io_len) > btopr(ip->i_size)) { if (dolock) rw_exit(&ip->i_contents); ! if (!atomic_dec_ulong_nv(&ulp->ul_vnops_cnt)) cv_broadcast(&ulp->ul_cv); return (EFAULT); } if (pp == NULL) {
*** 6023,6033 **** } else { err = EINVAL; } if (dolock) rw_exit(&ip->i_contents); ! if (!atomic_add_long_nv(&ulp->ul_vnops_cnt, -1)) cv_broadcast(&ulp->ul_cv); return (err); } /* --- 6023,6033 ---- } else { err = EINVAL; } if (dolock) rw_exit(&ip->i_contents); ! if (!atomic_dec_ulong_nv(&ulp->ul_vnops_cnt)) cv_broadcast(&ulp->ul_cv); return (err); } /*
*** 6130,6140 **** mutex_exit(&ip->i_tlock); } if (dolock) rw_exit(&ip->i_contents); ! if (vmpss && !atomic_add_long_nv(&ulp->ul_vnops_cnt, -1)) cv_broadcast(&ulp->ul_cv); return (err); } /* --- 6130,6140 ---- mutex_exit(&ip->i_tlock); } if (dolock) rw_exit(&ip->i_contents); ! if (vmpss && !atomic_dec_ulong_nv(&ulp->ul_vnops_cnt)) cv_broadcast(&ulp->ul_cv); return (err); } /*