Print this page
5045 use atomic_{inc,dec}_* instead of atomic_add_*
*** 597,607 ****
/*
* synchronize w/ufs ioctls
*/
mutex_enter(&ulp->ul_lock);
! atomic_add_long(&ufs_quiesce_pend, 1);
/*
* reset options
*/
ufsvfsp->vfs_nointr = flags & UFSMNT_NOINTR;
--- 597,607 ----
/*
* synchronize w/ufs ioctls
*/
mutex_enter(&ulp->ul_lock);
! atomic_inc_ulong(&ufs_quiesce_pend);
/*
* reset options
*/
ufsvfsp->vfs_nointr = flags & UFSMNT_NOINTR;
*** 743,753 ****
TRANS_MATA_MOUNT(ufsvfsp);
fsp->fs_fmod = 0;
fsp->fs_ronly = 0;
! atomic_add_long(&ufs_quiesce_pend, -1);
cv_broadcast(&ulp->ul_cv);
mutex_exit(&ulp->ul_lock);
if (TRANS_ISTRANS(ufsvfsp)) {
--- 743,753 ----
TRANS_MATA_MOUNT(ufsvfsp);
fsp->fs_fmod = 0;
fsp->fs_ronly = 0;
! atomic_dec_ulong(&ufs_quiesce_pend);
cv_broadcast(&ulp->ul_cv);
mutex_exit(&ulp->ul_lock);
if (TRANS_ISTRANS(ufsvfsp)) {
*** 772,782 ****
return (0);
remounterr:
if (tpt)
brelse(tpt);
! atomic_add_long(&ufs_quiesce_pend, -1);
cv_broadcast(&ulp->ul_cv);
mutex_exit(&ulp->ul_lock);
return (error);
}
--- 772,782 ----
return (0);
remounterr:
if (tpt)
brelse(tpt);
! atomic_dec_ulong(&ufs_quiesce_pend);
cv_broadcast(&ulp->ul_cv);
mutex_exit(&ulp->ul_lock);
return (error);
}
*** 1419,1429 ****
* If file system is already hard locked,
* unmount the file system, otherwise
* hard lock it before unmounting.
*/
if (!ULOCKFS_IS_HLOCK(ulp)) {
! atomic_add_long(&ufs_quiesce_pend, 1);
lockfs.lf_lock = LOCKFS_HLOCK;
lockfs.lf_flags = 0;
lockfs.lf_key = ulp->ul_lockfs.lf_key + 1;
lockfs.lf_comlen = 0;
lockfs.lf_comment = NULL;
--- 1419,1429 ----
* If file system is already hard locked,
* unmount the file system, otherwise
* hard lock it before unmounting.
*/
if (!ULOCKFS_IS_HLOCK(ulp)) {
! atomic_inc_ulong(&ufs_quiesce_pend);
lockfs.lf_lock = LOCKFS_HLOCK;
lockfs.lf_flags = 0;
lockfs.lf_key = ulp->ul_lockfs.lf_key + 1;
lockfs.lf_comlen = 0;
lockfs.lf_comment = NULL;
*** 1431,1441 ****
ULOCKFS_SET_BUSY(ulp);
LOCKFS_SET_BUSY(&ulp->ul_lockfs);
(void) ufs_quiesce(ulp);
(void) ufs_flush(vfsp);
(void) ufs_thaw(vfsp, ufsvfsp, ulp);
! atomic_add_long(&ufs_quiesce_pend, -1);
ULOCKFS_CLR_BUSY(ulp);
LOCKFS_CLR_BUSY(&ulp->ul_lockfs);
poll_events |= POLLERR;
pollwakeup(&ufs_pollhd, poll_events);
}
--- 1431,1441 ----
ULOCKFS_SET_BUSY(ulp);
LOCKFS_SET_BUSY(&ulp->ul_lockfs);
(void) ufs_quiesce(ulp);
(void) ufs_flush(vfsp);
(void) ufs_thaw(vfsp, ufsvfsp, ulp);
! atomic_dec_ulong(&ufs_quiesce_pend);
ULOCKFS_CLR_BUSY(ulp);
LOCKFS_CLR_BUSY(&ulp->ul_lockfs);
poll_events |= POLLERR;
pollwakeup(&ufs_pollhd, poll_events);
}
*** 2151,2161 ****
ufsvfsp = (struct ufsvfs *)vfsp->vfs_data;
ulp = &ufsvfsp->vfs_ulockfs;
mutex_enter(&ulp->ul_lock);
! atomic_add_long(&ufs_quiesce_pend, 1);
(void) ufs_quiesce(ulp);
(void) ufs_flush(vfsp);
/*
--- 2151,2161 ----
ufsvfsp = (struct ufsvfs *)vfsp->vfs_data;
ulp = &ufsvfsp->vfs_ulockfs;
mutex_enter(&ulp->ul_lock);
! atomic_inc_ulong(&ufs_quiesce_pend);
(void) ufs_quiesce(ulp);
(void) ufs_flush(vfsp);
/*
*** 2276,2286 ****
}
rootdev = new_rootdev;
rootvp = new_rootvp;
! atomic_add_long(&ufs_quiesce_pend, -1);
cv_broadcast(&ulp->ul_cv);
mutex_exit(&ulp->ul_lock);
vfs_unlock(vfsp);
--- 2276,2286 ----
}
rootdev = new_rootdev;
rootvp = new_rootvp;
! atomic_dec_ulong(&ufs_quiesce_pend);
cv_broadcast(&ulp->ul_cv);
mutex_exit(&ulp->ul_lock);
vfs_unlock(vfsp);