Lines Matching refs:rp

142 	rnode4_t *rp;
145 rp = VTOR4(vp);
146 if ((rp->r_serial != NULL && rp->r_serial != curthread) ||
147 ((rp->r_flags & R4PGFLUSH) && rp->r_pgflush != curthread)) {
148 mutex_enter(&rp->r_statelock);
150 while ((rp->r_serial != NULL && rp->r_serial != curthread) ||
151 ((rp->r_flags & R4PGFLUSH) &&
152 rp->r_pgflush != curthread)) {
153 if (!cv_wait_sig(&rp->r_cv, &rp->r_statelock)) {
155 mutex_exit(&rp->r_statelock);
160 mutex_exit(&rp->r_statelock);
198 rnode4_t *rp;
200 rp = VTOR4(vp);
201 mutex_enter(&rp->r_statelock);
202 mutex_enter(&rp->r_statev4_lock);
204 mutex_exit(&rp->r_statev4_lock);
208 *vap = rp->r_attr;
209 mutex_exit(&rp->r_statelock);
212 mutex_exit(&rp->r_statev4_lock);
213 mutex_exit(&rp->r_statelock);
226 struct rnode4 *rp = VTOR4(vp);
234 mutex_enter(&rp->r_statelock);
235 rp->r_flags |= R4STALE;
236 if (!rp->r_error)
237 rp->r_error = errno;
238 mutex_exit(&rp->r_statelock);
251 rnode4_t *rp;
267 rp = VTOR4(vp);
268 mutex_enter(&rp->r_statelock);
269 rp->r_flags &= ~R4LOOKUP;
270 contents = rp->r_symlink.contents;
271 size = rp->r_symlink.size;
272 rp->r_symlink.contents = NULL;
274 xattr = rp->r_xattr_dir;
275 rp->r_xattr_dir = NULL;
280 rp->r_pathconf.pc4_xattr_valid = 0;
281 rp->r_pathconf.pc4_cache_valid = 0;
283 pgflush = (curthread == rp->r_pgflush);
284 mutex_exit(&rp->r_statelock);
312 mutex_enter(&rp->r_statelock);
313 if (rp->r_flags & R4PGFLUSH) {
314 mutex_exit(&rp->r_statelock);
316 rp->r_flags |= R4PGFLUSH;
317 mutex_exit(&rp->r_statelock);
347 rnode4_t *rp = VTOR4(vp);
351 mutex_enter(&rp->r_statelock);
352 if (!rp->r_error)
353 rp->r_error = error;
354 mutex_exit(&rp->r_statelock);
365 rnode4_t *rp = VTOR4(args->vp);
368 mutex_enter(&rp->r_statelock);
369 ASSERT(rp->r_pgflush == NULL);
370 rp->r_pgflush = curthread;
371 mutex_exit(&rp->r_statelock);
375 mutex_enter(&rp->r_statelock);
376 rp->r_pgflush = NULL;
377 rp->r_flags &= ~R4PGFLUSH;
378 cv_broadcast(&rp->r_cv);
379 mutex_exit(&rp->r_statelock);
394 rnode4_t *rp;
396 rp = VTOR4(vp);
398 mutex_enter(&rp->r_statelock);
399 rp->r_direof = NULL;
400 rp->r_flags &= ~R4LOOKUP;
401 rp->r_flags |= R4READDIRWATTR;
402 rddir4_cache_purge(rp);
403 mutex_exit(&rp->r_statelock);
417 rnode4_t *rp = VTOR4(vp);
419 mutex_enter(&rp->r_statelock);
420 if (rp->r_time_attr_saved <= t)
422 mutex_exit(&rp->r_statelock);
445 rnode4_t *rp;
463 rp = VTOR4(vp);
464 mutex_enter(&rp->r_statelock);
465 was_serial = (rp->r_serial == curthread);
466 if (rp->r_serial && !was_serial) {
476 PURGE_ATTRCACHE4_LOCKED(rp);
477 mutex_exit(&rp->r_statelock);
483 while (rp->r_serial != NULL) {
484 if (!cv_wait_sig(&rp->r_cv, &rp->r_statelock)) {
485 mutex_exit(&rp->r_statelock);
503 if ((rp->r_flags & R4PGFLUSH) && rp->r_pgflush != curthread) {
504 PURGE_ATTRCACHE4_LOCKED(rp);
505 mutex_exit(&rp->r_statelock);
509 if (rp->r_time_attr_saved > t) {
515 if (!CACHE4_VALID(rp, vap->va_mtime, vap->va_size))
516 PURGE_ATTRCACHE4_LOCKED(rp);
517 mutex_exit(&rp->r_statelock);
535 if ((! rp->r_time_cache_inval || t < rp->r_time_cache_inval) &&
536 cinfo->before == rp->r_change &&
565 rp->r_time_cache_inval = 0;
575 if (!(rp->r_flags & R4WRITEMODIFIED)) {
576 if (!CACHE4_VALID(rp, vap->va_mtime, vap->va_size))
579 if (rp->r_attr.va_ctime.tv_sec !=
581 rp->r_attr.va_ctime.tv_nsec !=
590 rp->r_change != garp->n4g_change) {
599 preattr_rsize = rp->r_size;
610 if ((!cinfo) && (rp->r_size != preattr_rsize)) {
620 if (mtime_changed && !(rp->r_flags & R4INCACHEPURGE)) {
621 rp->r_flags |= R4INCACHEPURGE;
627 mutex_exit(&rp->r_statelock);
631 rp->r_serial = curthread;
633 mutex_exit(&rp->r_statelock);
642 if ((rp->r_flags & R4INCACHEPURGE) && cachepurge_set) {
643 mutex_enter(&rp->r_statelock);
644 rp->r_flags &= ~R4INCACHEPURGE;
645 cv_broadcast(&rp->r_cv);
646 mutex_exit(&rp->r_statelock);
651 (void) nfs4_access_purge_rp(rp);
652 if (rp->r_secattr != NULL) {
653 mutex_enter(&rp->r_statelock);
654 vsp = rp->r_secattr;
655 rp->r_secattr = NULL;
656 mutex_exit(&rp->r_statelock);
663 mutex_enter(&rp->r_statelock);
664 rp->r_serial = NULL;
665 cv_broadcast(&rp->r_cv);
666 mutex_exit(&rp->r_statelock);
681 rnode4_t *rp;
687 rp = VTOR4(vp);
689 ASSERT(MUTEX_HELD(&rp->r_statelock));
693 if (IS_SHADOW(vp, rp))
694 vp = RTOV4(rp);
705 if (set_cache_timeout && ! rp->r_time_cache_inval)
706 rp->r_time_cache_inval = now + mi->mi_acdirmax;
723 if (vap->va_mtime.tv_sec != rp->r_attr.va_mtime.tv_sec ||
724 vap->va_mtime.tv_nsec != rp->r_attr.va_mtime.tv_nsec ||
725 vap->va_size != rp->r_attr.va_size) {
726 rp->r_time_attr_saved = now;
732 delta = now - rp->r_time_attr_saved;
745 rp->r_time_attr_inval = now + delta;
747 rp->r_attr = *vap;
749 rp->r_change = garp->n4g_change;
758 rp->r_time_attr_inval = now;
759 rp->r_time_attr_saved = now;
760 rp->r_change = 0;
780 rp->r_mntd_fid = garp->n4g_mon_fid;
782 if (RP_ISSTUB(rp))
783 rp->r_attr.va_nodeid = rp->r_mntd_fid;
792 rp->r_pathconf = garp->n4g_ext_res->n4g_pc4;
795 rp->r_pathconf.pc4_xattr_valid = TRUE;
796 rp->r_pathconf.pc4_xattr_exists =
806 if (rp->r_size != vap->va_size &&
808 (!(rp->r_flags & R4DIRTY) && rp->r_count == 0))) {
809 rp->r_size = vap->va_size;
812 rp->r_flags &= ~R4WRITEMODIFIED;
887 rnode4_t *rp = VTOR4(vp);
897 argop[0].nfs_argop4_u.opcputfh.sfh = rp->r_fh;
943 rnode4_t *rp;
958 rp = VTOR4(vp);
960 mutex_enter(&rp->r_statelock);
962 mutex_exit(&rp->r_statelock);
964 mutex_enter(&rp->r_statelock);
968 *vap = rp->r_attr;
971 vap->va_size = rp->r_size;
973 mutex_exit(&rp->r_statelock);
1019 "nfs4_attr_otw: %s call, rp %s", needrecov ? "recov" : "first",
1084 rnode4_t *rp;
1087 rp = VTOR4(args->a_vp);
1088 mutex_enter(&rp->r_statelock);
1089 rp->r_count--;
1092 rp->r_awcount--;
1093 cv_broadcast(&rp->r_cv);
1094 mutex_exit(&rp->r_statelock);
1266 rnode4_t *rp;
1270 rp = VTOR4(vp);
1271 ASSERT(rp->r_freef == NULL);
1292 if (!nfs_rw_tryenter(&rp->r_lkserlock, RW_READER)) {
1296 mutex_enter(&rp->r_statelock);
1297 rp->r_count++;
1298 mutex_exit(&rp->r_statelock);
1299 nfs_rw_exit(&rp->r_lkserlock);
1351 mutex_enter(&rp->r_statelock);
1352 rp->r_count--;
1353 cv_broadcast(&rp->r_cv);
1354 mutex_exit(&rp->r_statelock);
1712 rnode4_t *rp;
1719 rp = VTOR4(vp);
1720 ASSERT(rp->r_count > 0);
1776 mutex_enter(&rp->r_statelock);
1777 rp->r_count++;
1778 rp->r_awcount++;
1779 mutex_exit(&rp->r_statelock);
1836 rnode4_t *rp;
1843 rp = VTOR4(vp);
1844 ASSERT(rp->r_count > 0);
1900 mutex_enter(&rp->r_statelock);
1901 rp->r_count++;
1902 rp->r_awcount++;
1903 mutex_exit(&rp->r_statelock);
1966 rnode4_t *rp;
1970 rp = VTOR4(vp);
1971 ASSERT(rp->r_freef == NULL);
2020 mutex_enter(&rp->r_statelock);
2021 rp->r_count++;
2022 mutex_exit(&rp->r_statelock);
2037 mutex_enter(&rp->r_statelock);
2045 rddir4_cache_rele(rp, rdc);
2046 mutex_exit(&rp->r_statelock);
2054 rnode4_t *rp;
2059 rp = VTOR4(vp);
2113 mutex_enter(&rp->r_statelock);
2114 rp->r_count++;
2115 mutex_exit(&rp->r_statelock);
2182 rnode4_t *rp;
2195 rp = VTOR4(vp);
2196 mutex_enter(&rp->r_statelock);
2197 if (rp->r_unldvp != NULL) {
2198 unldvp = rp->r_unldvp;
2199 rp->r_unldvp = NULL;
2200 unlname = rp->r_unlname;
2201 rp->r_unlname = NULL;
2202 unlcred = rp->r_unlcred;
2203 rp->r_unlcred = NULL;
2205 mutex_exit(&rp->r_statelock);
2216 if (rp->r_deleg_type != OPEN_DELEGATE_NONE) {
2219 (void) nfs4delegreturn(rp, NFS4_DR_DISCARD);
2222 nfs4_clear_open_streams(rp);
2224 rp4_addfree(rp, cr);
2264 writerp4(rnode4_t *rp, caddr_t base, int tcount, struct uio *uio, int pgcreated)
2273 vnode_t *vp = RTOV(rp);
2276 ASSERT(nfs_rw_lock_held(&rp->r_rwlock, RW_WRITER));
2308 mutex_enter(&rp->r_statelock);
2317 (n == PAGESIZE || ((offset + n) >= rp->r_size)));
2319 mutex_exit(&rp->r_statelock);
2351 ASSERT(!(rp->r_flags & R4MODINPROGRESS));
2352 mutex_enter(&rp->r_statelock);
2353 rp->r_flags |= R4MODINPROGRESS;
2354 rp->r_modaddr = (offset & MAXBMASK);
2355 mutex_exit(&rp->r_statelock);
2375 mutex_enter(&rp->r_statelock);
2376 if (rp->r_size < uio->uio_loffset)
2377 rp->r_size = uio->uio_loffset;
2378 rp->r_flags &= ~R4MODINPROGRESS;
2379 rp->r_flags |= R4DIRTY;
2380 mutex_exit(&rp->r_statelock);
2428 rnode4_t *rp;
2437 rp = VTOR4(vp);
2438 ASSERT(rp->r_count > 0);
2456 if ((rp->r_flags & R4OUTOFSPACE) ||
2473 (rp->r_flags & R4DIRTY)) {
2474 mutex_enter(&rp->r_statelock);
2475 rdirty = (rp->r_flags & R4DIRTY);
2476 rp->r_flags &= ~R4DIRTY;
2477 mutex_exit(&rp->r_statelock);
2479 mutex_enter(&rp->r_statelock);
2480 if (rp->r_flags & R4DIRTY && rp->r_awcount == 0) {
2481 rdirty = (rp->r_flags & R4DIRTY);
2482 rp->r_flags &= ~R4DIRTY;
2484 mutex_exit(&rp->r_statelock);
2492 error = pvn_vplist_dirty(vp, off, rp->r_putapage,
2502 mutex_enter(&rp->r_statelock);
2503 rp->r_flags |= R4DIRTY;
2504 mutex_exit(&rp->r_statelock);
2514 mutex_enter(&rp->r_statelock);
2515 for (io_off = off; io_off < eoff && io_off < rp->r_size;
2517 mutex_exit(&rp->r_statelock);
2536 err = (*rp->r_putapage)(vp, pp, &io_off,
2548 mutex_enter(&rp->r_statelock);
2550 mutex_exit(&rp->r_statelock);
2559 rnode4_t *rp;
2561 rp = VTOR4(vp);
2562 if (IS_SHADOW(vp, rp))
2563 vp = RTOV4(rp);
2564 mutex_enter(&rp->r_statelock);
2565 while (rp->r_flags & R4TRUNCATE)
2566 cv_wait(&rp->r_cv, &rp->r_statelock);
2567 rp->r_flags |= R4TRUNCATE;
2569 rp->r_flags &= ~R4DIRTY;
2570 if (!(rp->r_flags & R4STALE))
2571 rp->r_error = 0;
2573 rp->r_truncaddr = off;
2574 mutex_exit(&rp->r_statelock);
2575 (void) pvn_vplist_dirty(vp, off, rp->r_putapage,
2577 mutex_enter(&rp->r_statelock);
2578 rp->r_flags &= ~R4TRUNCATE;
2579 cv_broadcast(&rp->r_cv);
2580 mutex_exit(&rp->r_statelock);
2747 rnode4_t *rp = VTOR4(vp);
2749 ASSERT(nfs_rw_lock_held(&rp->r_lkserlock, RW_WRITER));
2831 rnode4_t *rp = VTOR4(vp);
2833 ASSERT(nfs_rw_lock_held(&rp->r_lkserlock, RW_WRITER));
2834 ASSERT(!IS_SHADOW(vp, rp));
4387 rnode4_t *rp = VTOR4(vp);
4390 rp->r_attr.va_type != VNON && vp->v_type != rp->r_attr.va_type) {
4393 rp->r_attr.va_type);