Lines Matching refs:rp

259 	rnode_t *rp;
263 rp = VTOR(vp);
266 mutex_enter(&rp->r_statelock);
267 if (rp->r_cred == NULL) {
269 rp->r_cred = cr;
271 mutex_exit(&rp->r_statelock);
287 ((vn_has_cached_data(vp) || HAVE_RDDIR_CACHE(rp)) &&
291 else if (rp->r_mapcnt == 0 && vp->v_count == 1) {
309 rnode_t *rp;
360 rp = VTOR(vp);
361 if (rp->r_unldvp != NULL)
388 mutex_enter(&rp->r_statelock);
389 error = rp->r_error;
390 rp->r_error = 0;
391 mutex_exit(&rp->r_statelock);
394 mutex_enter(&rp->r_statelock);
395 error = rp->r_error;
396 rp->r_error = 0;
397 mutex_exit(&rp->r_statelock);
406 if (rp->r_flags & RWRITEATTR)
417 rnode_t *rp;
427 rp = VTOR(vp);
433 ASSERT(nfs_rw_lock_held(&rp->r_rwlock, RW_READER));
454 (((rp->r_flags & RDIRECTIO) || (mi->mi_flags & MI_DIRECTIO)) &&
455 rp->r_mapcnt == 0 && rp->r_inmap == 0 &&
491 mutex_enter(&rp->r_statelock);
492 while (rp->r_flags & RINCACHEPURGE) {
493 if (!cv_wait_sig(&rp->r_cv, &rp->r_statelock)) {
494 mutex_exit(&rp->r_statelock);
498 diff = rp->r_size - uiop->uio_loffset;
499 mutex_exit(&rp->r_statelock);
522 mutex_enter(&rp->r_statelock);
524 uiop->uio_loffset == rp->r_size)
528 mutex_exit(&rp->r_statelock);
551 rnode_t *rp;
564 rp = VTOR(vp);
581 if (nfs_rw_lock_held(&rp->r_rwlock, RW_READER)) {
582 nfs_rw_exit(&rp->r_rwlock);
583 if (nfs_rw_enter_sig(&rp->r_rwlock, RW_WRITER,
632 if (nfs_rw_enter_sig(&rp->r_lkserlock, RW_READER, INTR(vp)))
641 (((rp->r_flags & RDIRECTIO) || (mi->mi_flags & MI_DIRECTIO)) &&
642 rp->r_mapcnt == 0 && rp->r_inmap == 0 &&
649 if (rp->r_flags & RSTALE) {
652 error = rp->r_error;
686 if (rp->r_flags & RSTALE) {
687 error = rp->r_error;
707 mutex_enter(&rp->r_statelock);
709 rp->r_awcount > 2 * mi->mi_max_threads) ||
710 rp->r_gcount > 0) {
716 if (!cv_wait_sig(&rp->r_cv, &rp->r_statelock)) {
717 mutex_exit(&rp->r_statelock);
726 cv_wait(&rp->r_cv, &rp->r_statelock);
728 mutex_exit(&rp->r_statelock);
743 error = writerp(rp, NULL, n, uiop, 0);
751 mutex_enter(&rp->r_statelock);
753 uiop->uio_loffset + pn >= rp->r_size);
754 mutex_exit(&rp->r_statelock);
759 error = writerp(rp, base + pon, n, uiop,
765 error = writerp(rp, base + on, n, uiop, 0);
784 (rp->r_flags & ROUTOFSPACE)) {
816 nfs_rw_exit(&rp->r_lkserlock);
866 rnode_t *rp;
876 rp = VTOR(vp);
932 mutex_enter(&rp->r_statelock);
933 PURGE_ATTRCACHE_LOCKED(rp);
934 rp->r_flags |= RWRITEATTR;
935 mutex_exit(&rp->r_statelock);
957 rnode_t *rp;
961 rp = VTOR(vp);
1048 mutex_enter(&rp->r_statelock);
1049 if (error || !CACHE_VALID(rp, va.va_mtime, va.va_size) ||
1051 mutex_exit(&rp->r_statelock);
1054 if (rp->r_mtime <= t) {
1057 mutex_exit(&rp->r_statelock);
1086 rnode_t *rp;
1099 rp = VTOR(vp);
1103 mutex_enter(&rp->r_statelock);
1105 vap->va_size = rp->r_size;
1107 vap->va_fsid = rp->r_attr.va_fsid;
1109 vap->va_rdev = rp->r_attr.va_rdev;
1110 mutex_exit(&rp->r_statelock);
1122 ((rp->r_flags & RDIRTY) || rp->r_awcount > 0)) {
1123 mutex_enter(&rp->r_statelock);
1124 rp->r_gcount++;
1125 mutex_exit(&rp->r_statelock);
1127 mutex_enter(&rp->r_statelock);
1129 if (!rp->r_error)
1130 rp->r_error = error;
1132 if (--rp->r_gcount == 0)
1133 cv_broadcast(&rp->r_cv);
1134 mutex_exit(&rp->r_statelock);
1191 rnode_t *rp;
1202 rp = VTOR(vp);
1216 ((rp->r_flags & RDIRTY) ||
1217 rp->r_count > 0 ||
1218 rp->r_mapcnt > 0)) {
1222 mutex_enter(&rp->r_statelock);
1223 if (!rp->r_error)
1224 rp->r_error = error;
1225 mutex_exit(&rp->r_statelock);
1305 (void) nfs_access_purge_rp(rp);
1306 if (rp->r_secattr != NULL) {
1307 mutex_enter(&rp->r_statelock);
1308 vsp = rp->r_secattr;
1309 rp->r_secattr = NULL;
1310 mutex_exit(&rp->r_statelock);
1470 rnode_t *rp;
1485 rp = VTOR(vp);
1486 if (nfs_do_symlink_cache && rp->r_symlink.contents != NULL) {
1490 mutex_enter(&rp->r_statelock);
1491 if (rp->r_symlink.contents != NULL) {
1492 error = uiomove(rp->r_symlink.contents,
1493 rp->r_symlink.len, UIO_READ, uiop);
1494 mutex_exit(&rp->r_statelock);
1497 mutex_exit(&rp->r_statelock);
1525 if (nfs_do_symlink_cache && rp->r_symlink.contents == NULL) {
1526 mutex_enter(&rp->r_statelock);
1527 if (rp->r_symlink.contents == NULL) {
1528 rp->r_symlink.contents = rl.rl_data;
1529 rp->r_symlink.len = (int)rl.rl_count;
1530 rp->r_symlink.size = NFS_MAXPATHLEN;
1531 mutex_exit(&rp->r_statelock);
1533 mutex_exit(&rp->r_statelock);
1589 rnode_t *rp;
1605 rp = VTOR(vp);
1607 if (rp->r_unldvp != NULL) {
1619 mutex_enter(&rp->r_statelock);
1620 if (rp->r_unldvp != NULL) {
1629 unldvp = rp->r_unldvp;
1630 rp->r_unldvp = NULL;
1631 unlname = rp->r_unlname;
1632 rp->r_unlname = NULL;
1633 unlcred = rp->r_unlcred;
1634 rp->r_unlcred = NULL;
1635 mutex_exit(&rp->r_statelock);
1644 ((rp->r_flags & RDIRTY) || rp->r_count > 0)) {
1649 mutex_enter(&rp->r_statelock);
1650 if (!rp->r_error)
1651 rp->r_error = error;
1652 mutex_exit(&rp->r_statelock);
1680 mutex_exit(&rp->r_statelock);
1683 rp_addfree(rp, cr);
1975 rnode_t *rp;
2173 rp = VTOR(vp);
2175 mutex_enter(&rp->r_statelock);
2176 rp->r_size = 0;
2177 mutex_exit(&rp->r_statelock);
2190 if (vattr.va_gid != rp->r_attr.va_gid) {
2228 rnode_t *rp;
2267 rp = VTOR(vp);
2268 mutex_enter(&rp->r_statelock);
2270 (rp->r_unldvp == NULL || strcmp(nm, rp->r_unlname) == 0)) {
2271 mutex_exit(&rp->r_statelock);
2277 mutex_enter(&rp->r_statelock);
2278 if (rp->r_unldvp == NULL) {
2280 rp->r_unldvp = dvp;
2281 if (rp->r_unlcred != NULL)
2282 crfree(rp->r_unlcred);
2284 rp->r_unlcred = cr;
2285 rp->r_unlname = tmpname;
2287 kmem_free(rp->r_unlname, MAXNAMELEN);
2288 rp->r_unlname = tmpname;
2290 mutex_exit(&rp->r_statelock);
2293 mutex_exit(&rp->r_statelock);
2301 ((rp->r_flags & RDIRTY) || rp->r_count > 0)) {
2304 mutex_enter(&rp->r_statelock);
2305 if (!rp->r_error)
2306 rp->r_error = error;
2307 mutex_exit(&rp->r_statelock);
2435 rnode_t *rp;
2572 rp = VTOR(nvp);
2573 mutex_enter(&rp->r_statelock);
2574 if (rp->r_unldvp == NULL) {
2576 rp->r_unldvp = ndvp;
2577 if (rp->r_unlcred != NULL)
2578 crfree(rp->r_unlcred);
2580 rp->r_unlcred = cr;
2581 rp->r_unlname = tmpname;
2583 kmem_free(rp->r_unlname, MAXNAMELEN);
2584 rp->r_unlname = tmpname;
2586 mutex_exit(&rp->r_statelock);
2647 rp = VTOR(ovp);
2651 if (HAVE_RDDIR_CACHE(rp))
2660 mutex_enter(&rp->r_statelock);
2661 if (rp->r_unldvp != NULL) {
2662 if (strcmp(rp->r_unlname, onm) == 0) {
2663 (void) strncpy(rp->r_unlname,
2665 rp->r_unlname[MAXNAMELEN - 1] = '\0';
2667 if (ndvp != rp->r_unldvp) {
2668 VN_RELE(rp->r_unldvp);
2669 rp->r_unldvp = ndvp;
2674 mutex_exit(&rp->r_statelock);
2975 rnode_t *rp;
2985 rp = VTOR(vp);
2987 ASSERT(nfs_rw_lock_held(&rp->r_rwlock, RW_READER));
2993 if (HAVE_RDDIR_CACHE(rp)) {
3036 mutex_enter(&rp->r_statelock);
3037 if (rp->r_direof != NULL &&
3038 uiop->uio_offset == rp->r_direof->nfs_ncookie) {
3039 mutex_exit(&rp->r_statelock);
3055 rdc = avl_find(&rp->r_dir, &srdc, &where);
3068 nfs_rw_exit(&rp->r_rwlock);
3073 if (!cv_wait_sig(&rdc->cv, &rp->r_statelock)) {
3080 mutex_exit(&rp->r_statelock);
3081 (void) nfs_rw_enter_sig(&rp->r_rwlock,
3088 mutex_exit(&rp->r_statelock);
3089 (void) nfs_rw_enter_sig(&rp->r_rwlock,
3106 mutex_exit(&rp->r_statelock);
3119 mutex_exit(&rp->r_statelock);
3150 rp->r_direof = rdc;
3151 mutex_exit(&rp->r_statelock);
3169 rrdc = avl_find(&rp->r_dir, &srdc, &where);
3182 avl_insert(&rp->r_dir, rrdc, where);
3184 mutex_exit(&rp->r_statelock);
3194 mutex_exit(&rp->r_statelock);
3209 mutex_exit(&rp->r_statelock);
3219 avl_insert(&rp->r_dir, nrdc, where);
3221 mutex_exit(&rp->r_statelock);
3259 rnode_t *rp;
3268 rp = VTOR(vp);
3358 mutex_enter(&rp->r_statelock);
3366 mutex_exit(&rp->r_statelock);
3380 rnode_t *rp = VTOR(bp->b_vp);
3392 mutex_enter(&rp->r_statelock);
3393 if (rp->r_cred != NULL) {
3394 cred = rp->r_cred;
3397 rp->r_cred = cr;
3402 mutex_exit(&rp->r_statelock);
3418 mutex_enter(&rp->r_statelock);
3420 offset >= rp->r_size) {
3428 mutex_exit(&rp->r_statelock);
3430 mutex_enter(&rp->r_statelock);
3432 if (rp->r_cred != NULL)
3433 crfree(rp->r_cred);
3434 rp->r_cred = cr;
3438 mutex_exit(&rp->r_statelock);
3441 mutex_exit(&rp->r_statelock);
3444 if (!(rp->r_flags & RSTALE)) {
3445 mutex_enter(&rp->r_statelock);
3446 if (rp->r_cred != NULL) {
3447 cred = rp->r_cred;
3450 rp->r_cred = cr;
3455 mutex_exit(&rp->r_statelock);
3457 mutex_enter(&rp->r_statelock);
3458 count = MIN(bp->b_bcount, rp->r_size - offset);
3459 mutex_exit(&rp->r_statelock);
3467 nfs_printfhandle(&rp->r_fh);
3475 mutex_enter(&rp->r_statelock);
3477 if (rp->r_cred != NULL)
3478 crfree(rp->r_cred);
3479 rp->r_cred = cr;
3484 mutex_exit(&rp->r_statelock);
3487 mutex_exit(&rp->r_statelock);
3511 mutex_enter(&rp->r_statelock);
3513 rp->r_flags |= RSTALE;
3514 if (!rp->r_error)
3515 rp->r_error = error;
3516 } else if (!rp->r_error &&
3520 rp->r_error = error;
3522 mutex_exit(&rp->r_statelock);
3526 error = rp->r_error;
3549 rnode_t *rp;
3551 rp = VTOR(vp);
3560 bcopy(rp->r_fh.fh_buf, fp->nf_data, NFS_FHSIZE);
3568 rnode_t *rp = VTOR(vp);
3571 (void) nfs_rw_enter_sig(&rp->r_rwlock, RW_READER, FALSE);
3575 if ((rp->r_flags & RDIRECTIO) || (VTOMI(vp)->mi_flags & MI_DIRECTIO)) {
3576 (void) nfs_rw_enter_sig(&rp->r_rwlock, RW_READER, FALSE);
3577 if (rp->r_mapcnt == 0 && !vn_has_cached_data(vp))
3579 nfs_rw_exit(&rp->r_rwlock);
3582 (void) nfs_rw_enter_sig(&rp->r_rwlock, RW_WRITER, FALSE);
3590 rnode_t *rp = VTOR(vp);
3592 nfs_rw_exit(&rp->r_rwlock);
3631 rnode_t *rp;
3651 rp = VTOR(vp);
3654 mutex_enter(&rp->r_statelock);
3668 rp->r_awcount > 2 * mi->mi_max_threads) ||
3669 rp->r_gcount > 0)
3670 cv_wait(&rp->r_cv, &rp->r_statelock);
3678 if (off + len > rp->r_size + PAGEOFFSET && seg != segkmap) {
3679 mutex_exit(&rp->r_statelock);
3683 mutex_exit(&rp->r_statelock);
3708 rnode_t *rp;
3726 rp = VTOR(vp);
3750 mutex_enter(&rp->r_statelock);
3759 * d) No readaheads if rp->r_nextr is not within the scope
3765 else if (blkoff == rp->r_nextr)
3767 else if (rp->r_nextr > blkoff &&
3768 ((ra_window = (rp->r_nextr - blkoff) / bsize)
3774 rablkoff = rp->r_nextr;
3775 while (readahead > 0 && rablkoff + bsize < rp->r_size) {
3776 mutex_exit(&rp->r_statelock);
3780 mutex_enter(&rp->r_statelock);
3791 mutex_enter(&rp->r_statelock);
3797 rp->r_nextr = rablkoff;
3799 mutex_exit(&rp->r_statelock);
3818 mutex_enter(&rp->r_statelock);
3819 rp->r_nextr = off + PAGESIZE;
3820 mutex_exit(&rp->r_statelock);
3827 mutex_enter(&rp->r_statelock);
3828 if (blkoff < rp->r_size &&
3829 blkoff + bsize >= rp->r_size) {
3834 if (rp->r_size <= off) {
3841 blksize = rp->r_size - blkoff;
3843 (off != rp->r_nextr && !readahead_issued)) {
3848 mutex_exit(&rp->r_statelock);
3894 mutex_enter(&rp->r_statelock);
3895 if (io_off >= rp->r_size && seg == segkmap) {
3896 mutex_exit(&rp->r_statelock);
3899 mutex_exit(&rp->r_statelock);
3925 mutex_enter(&rp->r_statelock);
3926 rp->r_nextr = io_off + io_len;
3927 mutex_exit(&rp->r_statelock);
3976 rnode_t *rp = VTOR(vp);
3982 mutex_enter(&rp->r_statelock);
3983 if (blkoff < rp->r_size && blkoff + bsize > rp->r_size) {
3988 blksize = rp->r_size - blkoff;
3991 mutex_exit(&rp->r_statelock);
4036 mutex_enter(&rp->r_statelock);
4037 if (io_off >= rp->r_size && seg == segkmap) {
4038 mutex_exit(&rp->r_statelock);
4042 mutex_exit(&rp->r_statelock);
4061 if (error && rp->r_nextr > io_off) {
4062 mutex_enter(&rp->r_statelock);
4063 if (rp->r_nextr > io_off)
4064 rp->r_nextr = io_off;
4065 mutex_exit(&rp->r_statelock);
4083 rnode_t *rp;
4100 rp = VTOR(vp);
4101 mutex_enter(&rp->r_statelock);
4102 rp->r_count++;
4103 mutex_exit(&rp->r_statelock);
4105 mutex_enter(&rp->r_statelock);
4106 rp->r_count--;
4107 cv_broadcast(&rp->r_cv);
4108 mutex_exit(&rp->r_statelock);
4126 rnode_t *rp;
4133 rp = VTOR(vp);
4134 ASSERT(rp->r_count > 0);
4191 if (rp->r_flags & RMODINPROGRESS) {
4192 mutex_enter(&rp->r_statelock);
4193 if ((rp->r_flags & RMODINPROGRESS) &&
4194 rp->r_modaddr + MAXBSIZE > io_off &&
4195 rp->r_modaddr < io_off + io_len) {
4215 rp->r_flags |= RDIRTY;
4216 mutex_exit(&rp->r_statelock);
4223 mutex_exit(&rp->r_statelock);
4244 rnode_t *rp;
4251 rp = VTOR(vp);
4255 if (!(rp->r_flags & ROUTOFSPACE)) {
4256 mutex_enter(&rp->r_statelock);
4257 rp->r_flags |= ROUTOFSPACE;
4258 mutex_exit(&rp->r_statelock);
4286 else if (rp->r_flags & ROUTOFSPACE) {
4287 mutex_enter(&rp->r_statelock);
4288 rp->r_flags &= ~ROUTOFSPACE;
4289 mutex_exit(&rp->r_statelock);
4305 rnode_t *rp;
4345 * rp->r_lkserlock to avoid a race with concurrent lock requests.
4347 rp = VTOR(vp);
4362 if (nfs_rw_enter_sig(&rp->r_rwlock, RW_WRITER, INTR(vp)))
4364 atomic_inc_uint(&rp->r_inmap);
4365 nfs_rw_exit(&rp->r_rwlock);
4367 if (nfs_rw_enter_sig(&rp->r_lkserlock, RW_READER, INTR(vp))) {
4368 atomic_dec_uint(&rp->r_inmap);
4408 nfs_rw_exit(&rp->r_lkserlock);
4409 atomic_dec_uint(&rp->r_inmap);
4419 rnode_t *rp;
4426 rp = VTOR(vp);
4427 atomic_add_long((ulong_t *)&rp->r_mapcnt, btopr(len));
4440 rnode_t *rp;
4495 rp = VTOR(vp);
4501 if (nfs_rw_enter_sig(&rp->r_lkserlock, RW_WRITER, intr))
4520 mutex_enter(&rp->r_statelock);
4521 while (rp->r_count > 0) {
4527 if (cv_wait_sig(&rp->r_cv, &rp->r_statelock)
4537 cv_wait(&rp->r_cv, &rp->r_statelock);
4539 mutex_exit(&rp->r_statelock);
4545 mutex_enter(&rp->r_statelock);
4546 if (!rp->r_error)
4547 rp->r_error = error;
4548 mutex_exit(&rp->r_statelock);
4570 nfs_rw_exit(&rp->r_lkserlock);
4658 rnode_t *rp;
4670 rp = VTOR(vp);
4702 caller_found = nfs_find_and_delete_delmapcall(rp, &error);
4720 mutex_enter(&rp->r_statelock);
4721 list_insert_tail(&rp->r_indelmap, delmap_call);
4722 mutex_exit(&rp->r_statelock);
4755 rnode_t *rp;
4759 rp = VTOR(dmapp->vp);
4762 atomic_add_long((ulong_t *)&rp->r_mapcnt, -btopr(dmapp->len));
4763 ASSERT(rp->r_mapcnt >= 0);
4772 mutex_enter(&rp->r_statelock);
4773 rp->r_flags |= RDIRTY;
4774 mutex_exit(&rp->r_statelock);
4789 mutex_enter(&rp->r_statelock);
4790 error = rp->r_error;
4791 rp->r_error = 0;
4792 mutex_exit(&rp->r_statelock);
4797 if ((rp->r_flags & RDIRECTIO) || (mi->mi_flags & MI_DIRECTIO))
4878 rnode_t *rp;
4884 rp = VTOR(vp);
4885 if (nfs_rw_enter_sig(&rp->r_rwlock, RW_READER,
4893 nfs_rw_exit(&rp->r_rwlock);
4936 rnode_t *rp;
4945 rp = VTOR(vp);
4946 mutex_enter(&rp->r_statelock);
4947 rp->r_count++;
4948 mutex_exit(&rp->r_statelock);
4955 mutex_enter(&rp->r_statelock);
4956 rp->r_count--;
4957 cv_broadcast(&rp->r_cv);
4958 mutex_exit(&rp->r_statelock);