Lines Matching refs:ulp

95 	struct ulockfs *ulp;  member
104 #define IS_REC_VOP(found, head, ulp, free) \ argument
111 (_curr->ulp == NULL)) \
113 if (_curr->ulp == ulp) { \
124 #define SEARCH_ULOCKFSP(head, ulp, info) \ argument
130 if (_curr->ulp == ulp) { \
208 ufs_freeze(struct ulockfs *ulp, struct lockfs *lockfsp) in ufs_freeze() argument
213 ulp->ul_lockfs.lf_lock = lockfsp->lf_lock; in ufs_freeze()
214 ulp->ul_lockfs.lf_key = lockfsp->lf_key; in ufs_freeze()
215 ulp->ul_lockfs.lf_comlen = lockfsp->lf_comlen; in ufs_freeze()
216 ulp->ul_lockfs.lf_comment = lockfsp->lf_comment; in ufs_freeze()
218 ulp->ul_fs_lock = (1 << ulp->ul_lockfs.lf_lock); in ufs_freeze()
235 ufs_quiesce(struct ulockfs *ulp) in ufs_quiesce() argument
243 SEARCH_ULOCKFSP(head, ulp, info); in ufs_quiesce()
258 ULOCKFS_SET_SLOCK(ulp); in ufs_quiesce()
262 while (ulp->ul_vnops_cnt || ulp->ul_falloc_cnt) { in ufs_quiesce()
275 if (!ulp->ul_vnops_cnt && !ULOCKFS_IS_FWLOCK(ulp)) in ufs_quiesce()
278 if (!cv_reltimedwait_sig(&ulp->ul_cv, &ulp->ul_lock, hz, in ufs_quiesce()
289 ULOCKFS_CLR_SLOCK(ulp); in ufs_quiesce()
506 ufs_thaw(struct vfs *vfsp, struct ufsvfs *ufsvfsp, struct ulockfs *ulp) in ufs_thaw() argument
509 int noidel = (int)(ulp->ul_flag & ULOCKFS_NOIDEL); in ufs_thaw()
514 if (ULOCKFS_IS_WLOCK(ulp) || ULOCKFS_IS_HLOCK(ulp) || in ufs_thaw()
515 ULOCKFS_IS_ELOCK(ulp)) { in ufs_thaw()
522 ulp->ul_flag |= (ULOCKFS_NOIACC|ULOCKFS_NOIDEL); in ufs_thaw()
523 if (ulp->ul_sbowner != (kthread_id_t)-1) in ufs_thaw()
524 ulp->ul_sbowner = curthread; in ufs_thaw()
539 ulp->ul_sbowner = (kthread_id_t)-1; in ufs_thaw()
544 if (ULOCKFS_IS_WLOCK(ulp)) { in ufs_thaw()
555 if (ULOCKFS_IS_HLOCK(ulp) || ULOCKFS_IS_ELOCK(ulp)) { in ufs_thaw()
568 ulp->ul_flag &= ~(ULOCKFS_NOIACC|ULOCKFS_NOIDEL); in ufs_thaw()
569 ulp->ul_sbowner = NULL; in ufs_thaw()
581 cv_broadcast(&ulp->ul_cv); in ufs_thaw()
879 struct ulockfs *ulp; in ufs__fiolfs() local
924 ulp = &ufsvfsp->vfs_ulockfs; in ufs__fiolfs()
926 SEARCH_ULOCKFSP(head, ulp, info); in ufs__fiolfs()
935 mutex_enter(&ulp->ul_lock); in ufs__fiolfs()
942 if (ULOCKFS_IS_BUSY(ulp)) { in ufs__fiolfs()
948 if (ULOCKFS_IS_HLOCK(ulp)) { in ufs__fiolfs()
954 if (ULOCKFS_IS_ELOCK(ulp)) { in ufs__fiolfs()
965 if (ULOCKFS_IS_ROELOCK(ulp)) { in ufs__fiolfs()
988 if ((!ULOCKFS_IS_ULOCK(ulp) && !ULOCKFS_IS_ELOCK(ulp) && in ufs__fiolfs()
989 !ULOCKFS_IS_ROELOCK(ulp)) && in ufs__fiolfs()
996 if (error = ufs_getlfd(lockfsp, &ulp->ul_lockfs)) in ufs__fiolfs()
1002 bcopy(&ulp->ul_lockfs, &lfs, sizeof (struct lockfs)); in ufs__fiolfs()
1007 ufs_freeze(ulp, lockfsp); in ufs__fiolfs()
1013 ULOCKFS_SET_BUSY(ulp); in ufs__fiolfs()
1015 LOCKFS_SET_BUSY(&ulp->ul_lockfs); in ufs__fiolfs()
1023 if (!ULOCKFS_IS_WLOCK(ulp)) in ufs__fiolfs()
1024 ULOCKFS_CLR_FWLOCK(ulp); in ufs__fiolfs()
1030 if (error = ufs_quiesce(ulp)) { in ufs__fiolfs()
1041 cv_broadcast(&ulp->ul_cv); in ufs__fiolfs()
1050 if (ULOCKFS_IS_WLOCK(ulp)) in ufs__fiolfs()
1051 ULOCKFS_SET_FWLOCK(ulp); in ufs__fiolfs()
1058 if (LOCKFS_IS_ELOCK(&lfs) && ULOCKFS_IS_ULOCK(ulp)) in ufs__fiolfs()
1061 if (ULOCKFS_IS_ELOCK(ulp) || ULOCKFS_IS_ROELOCK(ulp)) { in ufs__fiolfs()
1088 ulp->ul_sbowner = curthread; in ufs__fiolfs()
1119 if ((error = ufs_flush(vfsp)) != 0 && !ULOCKFS_IS_HLOCK(ulp) && in ufs__fiolfs()
1120 !ULOCKFS_IS_ELOCK(ulp)) in ufs__fiolfs()
1126 if (error = ufs_thaw(vfsp, ufsvfsp, ulp)) in ufs__fiolfs()
1127 if (!ULOCKFS_IS_HLOCK(ulp) && !ULOCKFS_IS_ELOCK(ulp)) in ufs__fiolfs()
1134 ULOCKFS_CLR_MOD(ulp); in ufs__fiolfs()
1139 ULOCKFS_CLR_BUSY(ulp); in ufs__fiolfs()
1141 LOCKFS_CLR_BUSY(&ulp->ul_lockfs); in ufs__fiolfs()
1163 ulp->ul_lockfs.lf_comment && ulp->ul_lockfs.lf_comlen > 0 ? in ufs__fiolfs()
1164 ulp->ul_lockfs.lf_comment: "user-applied error lock"); in ufs__fiolfs()
1167 mutex_exit(&ulp->ul_lock); in ufs__fiolfs()
1188 if (!LOCKFS_IS_HLOCK(&ulp->ul_lockfs)) { in ufs__fiolfs()
1189 bcopy(&lfs, &ulp->ul_lockfs, sizeof (struct lockfs)); in ufs__fiolfs()
1190 ulp->ul_fs_lock = (1 << lfs.lf_lock); in ufs__fiolfs()
1199 (void) ufs_thaw(vfsp, ufsvfsp, ulp); in ufs__fiolfs()
1201 ULOCKFS_CLR_BUSY(ulp); in ufs__fiolfs()
1202 LOCKFS_CLR_BUSY(&ulp->ul_lockfs); in ufs__fiolfs()
1206 mutex_exit(&ulp->ul_lock); in ufs__fiolfs()
1226 struct ulockfs *ulp; in ufs_fiolfss() local
1235 ulp = VTOUL(vp); in ufs_fiolfss()
1237 if (ULOCKFS_IS_HLOCK(ulp)) { in ufs_fiolfss()
1238 *lockfsp = ulp->ul_lockfs; /* structure assignment */ in ufs_fiolfss()
1242 mutex_enter(&ulp->ul_lock); in ufs_fiolfss()
1244 *lockfsp = ulp->ul_lockfs; /* structure assignment */ in ufs_fiolfss()
1246 if (ULOCKFS_IS_MOD(ulp)) in ufs_fiolfss()
1249 mutex_exit(&ulp->ul_lock); in ufs_fiolfss()
1259 ufs_check_lockfs(struct ufsvfs *ufsvfsp, struct ulockfs *ulp, ulong_t mask) in ufs_check_lockfs() argument
1264 ASSERT(MUTEX_HELD(&ulp->ul_lock)); in ufs_check_lockfs()
1266 while (ulp->ul_fs_lock & mask) { in ufs_check_lockfs()
1267 slock = (int)ULOCKFS_IS_SLOCK(ulp); in ufs_check_lockfs()
1282 if (ULOCKFS_IS_HLOCK(ulp) || in ufs_check_lockfs()
1283 (ULOCKFS_IS_ELOCK(ulp) && ufsvfsp->vfs_dontblock)) in ufs_check_lockfs()
1290 cv_wait(&ulp->ul_cv, &ulp->ul_lock); in ufs_check_lockfs()
1293 sig = cv_wait_sig(&ulp->ul_cv, &ulp->ul_lock); in ufs_check_lockfs()
1295 if ((!sig && (ulp->ul_fs_lock & mask)) || in ufs_check_lockfs()
1302 atomic_inc_ulong(&ulp->ul_falloc_cnt); in ufs_check_lockfs()
1303 ULOCKFS_SET_FALLOC(ulp); in ufs_check_lockfs()
1305 atomic_inc_ulong(&ulp->ul_vnops_cnt); in ufs_check_lockfs()
1318 ufs_lockfs_is_under_rawlockfs(struct ulockfs *ulp) in ufs_lockfs_is_under_rawlockfs() argument
1320 return ((mutex_owner(&ulp->ul_lock) != curthread) ? 0 : 1); in ufs_lockfs_is_under_rawlockfs()
1333 struct ulockfs *ulp; in ufs_lockfs_begin() local
1344 *ulpp = ulp = &ufsvfsp->vfs_ulockfs; in ufs_lockfs_begin()
1350 IS_REC_VOP(rec_vop, ulockfs_info, ulp, ulockfs_info_free); in ufs_lockfs_begin()
1356 if (rec_vop || ufs_lockfs_is_under_rawlockfs(ulp)) { in ufs_lockfs_begin()
1381 &ulp->ul_falloc_cnt : &ulp->ul_vnops_cnt; in ufs_lockfs_begin()
1382 if (!ULOCKFS_IS_SLOCK(ulp)) { in ufs_lockfs_begin()
1400 if (!ULOCKFS_IS_JUSTULOCK(ulp) || ufs_quiesce_pend) { in ufs_lockfs_begin()
1403 cv_broadcast(&ulp->ul_cv); in ufs_lockfs_begin()
1404 mutex_enter(&ulp->ul_lock); in ufs_lockfs_begin()
1405 error = ufs_check_lockfs(ufsvfsp, ulp, mask); in ufs_lockfs_begin()
1406 mutex_exit(&ulp->ul_lock); in ufs_lockfs_begin()
1426 mutex_enter(&ulp->ul_lock); in ufs_lockfs_begin()
1427 error = ufs_check_lockfs(ufsvfsp, ulp, mask); in ufs_lockfs_begin()
1429 mutex_exit(&ulp->ul_lock); in ufs_lockfs_begin()
1436 ULOCKFS_SET_FALLOC(ulp); in ufs_lockfs_begin()
1437 mutex_exit(&ulp->ul_lock); in ufs_lockfs_begin()
1439 mutex_enter(&ulp->ul_lock); in ufs_lockfs_begin()
1440 ULOCKFS_SET_FALLOC(ulp); in ufs_lockfs_begin()
1441 mutex_exit(&ulp->ul_lock); in ufs_lockfs_begin()
1446 ulockfs_info_free->ulp = ulp; in ufs_lockfs_begin()
1450 ulockfs_info_temp->ulp = ulp; in ufs_lockfs_begin()
1472 if (info->ulp != NULL) { in ufs_lockfs_top_vop_return()
1485 ufs_lockfs_end(struct ulockfs *ulp) in ufs_lockfs_end() argument
1493 if (ulp == NULL) in ufs_lockfs_end()
1497 SEARCH_ULOCKFSP(head, ulp, info); in ufs_lockfs_end()
1508 info->ulp = NULL; in ufs_lockfs_end()
1514 if (ULOCKFS_IS_FALLOC(ulp) && info->flags & ULOCK_INFO_FALLOCATE) { in ufs_lockfs_end()
1517 if (!atomic_dec_ulong_nv(&ulp->ul_falloc_cnt)) { in ufs_lockfs_end()
1518 mutex_enter(&ulp->ul_lock); in ufs_lockfs_end()
1519 ULOCKFS_CLR_FALLOC(ulp); in ufs_lockfs_end()
1520 cv_broadcast(&ulp->ul_cv); in ufs_lockfs_end()
1521 mutex_exit(&ulp->ul_lock); in ufs_lockfs_end()
1524 if (!atomic_dec_ulong_nv(&ulp->ul_vnops_cnt)) in ufs_lockfs_end()
1525 cv_broadcast(&ulp->ul_cv); in ufs_lockfs_end()
1540 struct ulockfs *ulp; in ufs_lockfs_trybegin() local
1551 *ulpp = ulp = &ufsvfsp->vfs_ulockfs; in ufs_lockfs_trybegin()
1557 IS_REC_VOP(rec_vop, ulockfs_info, ulp, ulockfs_info_free); in ufs_lockfs_trybegin()
1563 if (rec_vop || ufs_lockfs_is_under_rawlockfs(ulp)) { in ufs_lockfs_trybegin()
1588 &ulp->ul_falloc_cnt : &ulp->ul_vnops_cnt; in ufs_lockfs_trybegin()
1589 if (!ULOCKFS_IS_SLOCK(ulp)) { in ufs_lockfs_trybegin()
1594 if (!ULOCKFS_IS_JUSTULOCK(ulp) || ufs_quiesce_pend) { in ufs_lockfs_trybegin()
1605 cv_broadcast(&ulp->ul_cv); in ufs_lockfs_trybegin()
1606 mutex_enter(&ulp->ul_lock); in ufs_lockfs_trybegin()
1607 if (ULOCKFS_IS_HLOCK(ulp) || in ufs_lockfs_trybegin()
1608 (ULOCKFS_IS_ELOCK(ulp) && ufsvfsp->vfs_dontblock)) in ufs_lockfs_trybegin()
1610 else if (ulp->ul_fs_lock & mask) in ufs_lockfs_trybegin()
1614 mutex_exit(&ulp->ul_lock); in ufs_lockfs_trybegin()
1622 ULOCKFS_SET_FALLOC(ulp); in ufs_lockfs_trybegin()
1623 mutex_exit(&ulp->ul_lock); in ufs_lockfs_trybegin()
1637 mutex_enter(&ulp->ul_lock); in ufs_lockfs_trybegin()
1638 if (ULOCKFS_IS_HLOCK(ulp) || in ufs_lockfs_trybegin()
1639 (ULOCKFS_IS_ELOCK(ulp) && ufsvfsp->vfs_dontblock)) in ufs_lockfs_trybegin()
1641 else if (ulp->ul_fs_lock & mask) in ufs_lockfs_trybegin()
1645 mutex_exit(&ulp->ul_lock); in ufs_lockfs_trybegin()
1653 ULOCKFS_SET_FALLOC(ulp); in ufs_lockfs_trybegin()
1654 mutex_exit(&ulp->ul_lock); in ufs_lockfs_trybegin()
1656 mutex_enter(&ulp->ul_lock); in ufs_lockfs_trybegin()
1657 ULOCKFS_SET_FALLOC(ulp); in ufs_lockfs_trybegin()
1658 mutex_exit(&ulp->ul_lock); in ufs_lockfs_trybegin()
1663 ulockfs_info_free->ulp = ulp; in ufs_lockfs_trybegin()
1667 ulockfs_info_temp->ulp = ulp; in ufs_lockfs_trybegin()
1693 struct ulockfs *ulp; in ufs_lockfs_begin_getpage() local
1704 *ulpp = ulp = &ufsvfsp->vfs_ulockfs; in ufs_lockfs_begin_getpage()
1710 IS_REC_VOP(rec_vop, ulockfs_info, ulp, ulockfs_info_free); in ufs_lockfs_begin_getpage()
1716 if (rec_vop || ufs_lockfs_is_under_rawlockfs(ulp)) { in ufs_lockfs_begin_getpage()
1733 atomic_inc_ulong(&ulp->ul_vnops_cnt); in ufs_lockfs_begin_getpage()
1734 if (!ULOCKFS_IS_JUSTULOCK(ulp) || ufs_quiesce_pend) { in ufs_lockfs_begin_getpage()
1735 if (!atomic_dec_ulong_nv(&ulp->ul_vnops_cnt)) in ufs_lockfs_begin_getpage()
1736 cv_broadcast(&ulp->ul_cv); in ufs_lockfs_begin_getpage()
1737 mutex_enter(&ulp->ul_lock); in ufs_lockfs_begin_getpage()
1756 error = ufs_check_lockfs(ufsvfsp, ulp, mask); in ufs_lockfs_begin_getpage()
1757 mutex_exit(&ulp->ul_lock); in ufs_lockfs_begin_getpage()
1767 ulockfs_info_free->ulp = ulp; in ufs_lockfs_begin_getpage()
1769 ulockfs_info_temp->ulp = ulp; in ufs_lockfs_begin_getpage()
1794 ASSERT(temp->ulp == NULL); in ufs_lockfs_tsd_destructor()