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);
}
/*