Lines Matching refs:rp

98 nfs4_rnode_remove_lock_owner(rnode4_t *rp, nfs4_lock_owner_t *lop)
103 mutex_enter(&rp->r_statev4_lock);
107 mutex_exit(&rp->r_statev4_lock);
118 mutex_exit(&rp->r_statev4_lock);
135 nfs4_flush_lock_owners(rnode4_t *rp)
139 mutex_enter(&rp->r_statev4_lock);
140 while (rp->r_lo_head.lo_next_rnode != &rp->r_lo_head) {
141 lop = rp->r_lo_head.lo_next_rnode;
147 mutex_exit(&rp->r_statev4_lock);
151 nfs4_clear_open_streams(rnode4_t *rp)
155 mutex_enter(&rp->r_os_lock);
156 while ((osp = list_head(&rp->r_open_streams)) != NULL) {
158 list_remove(&rp->r_open_streams, osp);
163 mutex_exit(&rp->r_os_lock);
214 open_stream_rele(nfs4_open_stream_t *osp, rnode4_t *rp)
219 ASSERT(!mutex_owned(&rp->r_os_lock));
236 mutex_enter(&rp->r_os_lock);
237 list_remove(&rp->r_open_streams, osp);
238 mutex_exit(&rp->r_os_lock);
370 find_open_stream(nfs4_open_owner_t *oop, rnode4_t *rp)
377 mutex_enter(&rp->r_os_lock);
378 /* Now, no one can add or delete to rp's open streams list */
379 for (osp = list_head(&rp->r_open_streams); osp != NULL;
380 osp = list_next(&rp->r_open_streams, osp)) {
389 mutex_exit(&rp->r_os_lock);
395 mutex_exit(&rp->r_os_lock);
408 find_lock_owner(rnode4_t *rp, pid_t pid, lown_which_t which)
418 mutex_enter(&rp->r_statev4_lock);
420 lop = rp->r_lo_head.lo_next_rnode;
421 while (lop != &rp->r_lo_head) {
434 mutex_exit(&rp->r_statev4_lock);
443 mutex_exit(&rp->r_statev4_lock);
453 nfs4_get_deleg_stateid(rnode4_t *rp, nfs_opnum4 op, stateid4 *sid)
455 ASSERT(!mutex_owned(&rp->r_statev4_lock));
457 mutex_enter(&rp->r_statev4_lock);
458 if (((rp->r_deleg_type == OPEN_DELEGATE_WRITE && op == OP_WRITE) ||
459 (rp->r_deleg_type != OPEN_DELEGATE_NONE && op != OP_WRITE)) &&
460 !rp->r_deleg_return_pending) {
462 *sid = rp->r_deleg_stateid;
463 mutex_exit(&rp->r_statev4_lock);
466 mutex_exit(&rp->r_statev4_lock);
475 nfs4_get_lock_stateid(rnode4_t *rp, pid_t pid, stateid4 *sid)
479 lop = find_lock_owner(rp, pid, LOWN_VALID_STATEID);
507 nfs4_get_open_stateid(rnode4_t *rp, cred_t *cr, mntinfo4_t *mi, stateid4 *sid)
521 osp = find_open_stream(oop, rp);
534 open_stream_rele(osp, rp);
539 open_stream_rele(osp, rp);
554 nfs4_get_w_stateid(cred_t *cr, rnode4_t *rp, pid_t pid, mntinfo4_t *mi,
559 if (nfs4_get_deleg_stateid(rp, op, &sid)) {
565 if (nfs4_get_lock_stateid(rp, pid, &sid)) {
571 if (nfs4_get_open_stateid(rp, cr, mi, &sid)) {
598 nfs4_get_stateid(cred_t *cr, rnode4_t *rp, pid_t pid, mntinfo4_t *mi,
625 if (nfs4_get_deleg_stateid(rp, op, &sid)) {
632 if (nfs4_get_lock_stateid(rp, pid, &sid)) {
639 if (nfs4_get_open_stateid(rp, cr, mi, &sid)) {
726 create_open_stream(nfs4_open_owner_t *oop, rnode4_t *rp)
762 /* now add the open stream to rp */
763 mutex_enter(&rp->r_os_lock);
765 list_insert_head(&rp->r_open_streams, osp);
766 mutex_exit(&rp->r_os_lock);
777 * and creating two open streams for the same <oop, rp> pair.
782 find_or_create_open_stream(nfs4_open_owner_t *oop, rnode4_t *rp,
793 osp = find_open_stream(oop, rp);
795 osp = create_open_stream(oop, rp);
815 create_lock_owner(rnode4_t *rp, pid_t pid)
822 ASSERT(mutex_owned(&rp->r_statev4_lock));
847 /* now add the lock owner to rp */
848 lop->lo_prev_rnode = &rp->r_lo_head;
849 lop->lo_next_rnode = rp->r_lo_head.lo_next_rnode;
850 rp->r_lo_head.lo_next_rnode->lo_prev_rnode = lop;
851 rp->r_lo_head.lo_next_rnode = lop;
894 nfs4_setlockowner_args(lock_owner4 *owner, rnode4_t *rp, pid_t pid)
902 lop = find_lock_owner(rp, pid, LOWN_VALID_STATEID);
1009 rnode4_t *rp;
1013 rp = VTOR4(vp);
1021 ASSERT(nfs_rw_lock_held(&rp->r_deleg_recall_lock, RW_READER));
1022 dt = get_dtype(rp);
1025 osp = find_open_stream(oop, rp);
1033 "set on osp %p, cr %p, rp %s", (void *)osp,
1035 rnode4info(rp)));
1076 open_stream_rele(osp, rp);
1086 open_stream_rele(osp, rp);
1121 osp = create_open_stream(oop, rp);
1125 osp->open_stateid = rp->r_deleg_stateid;
1136 open_stream_rele(osp, rp);
1161 get_dtype(rnode4_t *rp)
1165 mutex_enter(&rp->r_statev4_lock);
1166 ASSERT(!rp->r_deleg_return_inprog);
1167 if (rp->r_deleg_return_pending)
1170 dt = rp->r_deleg_type;
1171 mutex_exit(&rp->r_statev4_lock);
1313 nfs4_find_or_create_lock_owner(pid_t pid, rnode4_t *rp, cred_t *cr,
1322 mi = VTOMI4(RTOV4(rp));
1324 mutex_enter(&rp->r_statev4_lock);
1326 lop = rp->r_lo_head.lo_next_rnode;
1327 while (lop != &rp->r_lo_head) {
1342 if (lop == &rp->r_lo_head) {
1344 lop = create_lock_owner(rp, pid);
1346 mutex_exit(&rp->r_statev4_lock);
1366 *ospp = find_open_stream(*oopp, rp);
1376 "osp %p, cr %p, rp %s", (void *)(*ospp),
1377 (void *)cr, rnode4info(rp)));
1391 open_stream_rele(*ospp, rp);
1424 nfs4_rnode_remove_lock_owner(rp, lop);
1434 open_stream_rele(*ospp, rp);
1610 nfs4_get_otw_cred_by_osp(rnode4_t *rp, cred_t *cr,
1625 oop = find_open_owner(cr, NFS4_PERM_CREATED, VTOMI4(RTOV4(rp)));
1627 next_osp = find_open_stream(oop, rp);
1638 mutex_enter(&rp->r_os_lock);
1639 /* Now, no one can add or delete to rp's open streams list */
1642 next_osp = list_next(&rp->r_open_streams, *osp);
1650 next_osp = list_head(&rp->r_open_streams);
1659 list_next(&rp->r_open_streams, next_osp);
1670 mutex_exit(&rp->r_os_lock);
1672 open_stream_rele(*osp, rp);
1687 open_stream_rele(next_osp, rp);
1810 rnode4_t *rp;
1837 rp = VTOR4(vp);
1851 mutex_enter(&rp->r_statelock);
1852 if (rp->r_flags & R4RECOVERR) {
1853 mutex_exit(&rp->r_statelock);
1857 mutex_exit(&rp->r_statelock);
1937 argop[0].nfs_argop4_u.opcputfh.sfh = rp->r_fh;
2027 rnode4_t *rp = NULL, *drp = NULL;
2051 rp = VTOR4(vp);
2054 if (rp) {
2056 mutex_enter(&rp->r_statelock);
2057 if (rp->r_flags & R4RECOVERR) {
2058 mutex_exit(&rp->r_statelock);
2062 mutex_exit(&rp->r_statelock);
2214 "nfs4_resend_open_otw: rp %p is bad",
2221 rp = VTOR4(vp);
2232 (nfs4cmpfh(&rp->r_fh->sfh_fh, &gf_res->object) != 0);
2269 rp->r_attr.va_mask & AT_NODEID &&
2270 rp->r_attr.va_nodeid !=
2304 sfh4_update(rp->r_fh, &gf_res->object);
2333 osp = find_open_stream(oop, rp);
2347 osp = find_or_create_open_stream(oop, rp, &created_osp);
2378 open_stream_rele(osp, rp);
2383 nfs4_delegation_accept(rp, claim, op_res, garp, cr);