Lines Matching refs:rp

297 	rnode_t *rp;
303 rp = VTOR(vp);
304 mutex_enter(&rp->r_statelock);
305 if (rp->r_cred == NULL) {
307 rp->r_cred = cr;
309 mutex_exit(&rp->r_statelock);
325 ((vn_has_cached_data(vp) || HAVE_RDDIR_CACHE(rp)) &&
329 else if (rp->r_mapcnt == 0 && vp->v_count == 1) {
347 rnode_t *rp;
398 rp = VTOR(vp);
399 if (rp->r_unldvp != NULL)
426 mutex_enter(&rp->r_statelock);
427 error = rp->r_error;
428 rp->r_error = 0;
429 mutex_exit(&rp->r_statelock);
432 mutex_enter(&rp->r_statelock);
433 error = rp->r_error;
434 rp->r_error = 0;
435 mutex_exit(&rp->r_statelock);
444 if (rp->r_flags & RWRITEATTR)
543 rnode_t *rp;
553 rp = VTOR(vp);
556 ASSERT(nfs_rw_lock_held(&rp->r_rwlock, RW_READER));
576 (((rp->r_flags & RDIRECTIO) || (mi->mi_flags & MI_DIRECTIO)) &&
577 rp->r_mapcnt == 0 && rp->r_inmap == 0 &&
591 mutex_enter(&rp->r_statelock);
592 while (rp->r_flags & RINCACHEPURGE) {
593 if (!cv_wait_sig(&rp->r_cv, &rp->r_statelock)) {
594 mutex_exit(&rp->r_statelock);
598 diff = rp->r_size - uiop->uio_loffset;
599 mutex_exit(&rp->r_statelock);
623 mutex_enter(&rp->r_statelock);
625 uiop->uio_loffset == rp->r_size)
629 mutex_exit(&rp->r_statelock);
653 rnode_t *rp;
666 rp = VTOR(vp);
683 if (nfs_rw_lock_held(&rp->r_rwlock, RW_READER)) {
684 nfs_rw_exit(&rp->r_rwlock);
685 if (nfs_rw_enter_sig(&rp->r_rwlock, RW_WRITER,
728 if (nfs_rw_enter_sig(&rp->r_lkserlock, RW_READER, INTR(vp)))
737 (((rp->r_flags & RDIRECTIO) || (mi->mi_flags & MI_DIRECTIO)) &&
738 rp->r_mapcnt == 0 && rp->r_inmap == 0 &&
746 if (rp->r_flags & RSTALE) {
749 error = rp->r_error;
790 if (rp->r_flags & RSTALE) {
791 error = rp->r_error;
811 mutex_enter(&rp->r_statelock);
813 rp->r_awcount > 2 * mi->mi_max_threads) ||
814 rp->r_gcount > 0) {
820 if (!cv_wait_sig(&rp->r_cv, &rp->r_statelock)) {
821 mutex_exit(&rp->r_statelock);
830 cv_wait(&rp->r_cv, &rp->r_statelock);
832 mutex_exit(&rp->r_statelock);
847 error = writerp(rp, NULL, n, uiop, 0);
855 mutex_enter(&rp->r_statelock);
857 uiop->uio_loffset + pn >= rp->r_size);
858 mutex_exit(&rp->r_statelock);
863 error = writerp(rp, base + pon, n, uiop,
869 error = writerp(rp, base + on, n, uiop, 0);
889 (rp->r_flags & ROUTOFSPACE)) {
921 nfs_rw_exit(&rp->r_lkserlock);
1010 rnode_t *rp;
1013 rp = VTOR(vp);
1027 (rp->r_flags & RDIRECTIO) ||
1063 rp->r_server->sv_hostname,
1073 rp->r_server->sv_hostname);
1089 mutex_enter(&rp->r_statelock);
1090 if (rp->r_flags & RHAVEVERF) {
1091 if (rp->r_verf != res.resok.verf) {
1093 rp->r_verf = res.resok.verf;
1101 mutex_exit(&rp->r_statelock);
1106 rp->r_verf = res.resok.verf;
1107 rp->r_flags |= RHAVEVERF;
1115 PURGE_ATTRCACHE_LOCKED(rp);
1116 rp->r_flags |= RWRITEATTR;
1117 mutex_exit(&rp->r_statelock);
1138 rnode_t *rp;
1142 rp = VTOR(vp);
1168 (rp->r_flags & RDIRECTIO) ||
1203 rp->r_server->sv_hostname);
1221 mutex_enter(&rp->r_statelock);
1222 if (!CACHE_VALID(rp, va.va_mtime, va.va_size)) {
1223 mutex_exit(&rp->r_statelock);
1226 if (rp->r_mtime <= t)
1228 mutex_exit(&rp->r_statelock);
1257 rnode_t *rp;
1270 rp = VTOR(vp);
1274 mutex_enter(&rp->r_statelock);
1276 vap->va_size = rp->r_size;
1278 vap->va_fsid = rp->r_attr.va_fsid;
1280 vap->va_rdev = rp->r_attr.va_rdev;
1281 mutex_exit(&rp->r_statelock);
1293 ((rp->r_flags & RDIRTY) || rp->r_awcount > 0)) {
1294 mutex_enter(&rp->r_statelock);
1295 rp->r_gcount++;
1296 mutex_exit(&rp->r_statelock);
1298 mutex_enter(&rp->r_statelock);
1300 if (!rp->r_error)
1301 rp->r_error = error;
1303 if (--rp->r_gcount == 0)
1304 cv_broadcast(&rp->r_cv);
1305 mutex_exit(&rp->r_statelock);
1351 rnode_t *rp;
1360 rp = VTOR(vp);
1374 ((rp->r_flags & RDIRTY) ||
1375 rp->r_count > 0 ||
1376 rp->r_mapcnt > 0)) {
1380 mutex_enter(&rp->r_statelock);
1381 if (!rp->r_error)
1382 rp->r_error = error;
1383 mutex_exit(&rp->r_statelock);
1387 args.object = *RTOFH3(rp);
1446 (void) nfs_access_purge_rp(rp);
1447 if (rp->r_secattr != NULL) {
1448 mutex_enter(&rp->r_statelock);
1449 vsp = rp->r_secattr;
1450 rp->r_secattr = NULL;
1451 mutex_exit(&rp->r_statelock);
1543 rnode_t *rp;
1568 rp = VTOR(vp);
1594 if (rp->r_acache != NULL) {
1595 cacc = nfs_access_check(rp, acc, cred);
1635 nfs_access_cache(rp, args.access, res.resok.access, cred);
1677 rnode_t *rp;
1691 rp = VTOR(vp);
1692 if (nfs3_do_symlink_cache && rp->r_symlink.contents != NULL) {
1696 mutex_enter(&rp->r_statelock);
1697 if (rp->r_symlink.contents != NULL) {
1698 error = uiomove(rp->r_symlink.contents,
1699 rp->r_symlink.len, UIO_READ, uiop);
1700 mutex_exit(&rp->r_statelock);
1703 mutex_exit(&rp->r_statelock);
1740 if (nfs3_do_symlink_cache && rp->r_symlink.contents == NULL) {
1741 mutex_enter(&rp->r_statelock);
1742 if (rp->r_symlink.contents == NULL) {
1743 rp->r_symlink.contents = res.resok.data;
1744 rp->r_symlink.len = len;
1745 rp->r_symlink.size = MAXPATHLEN;
1746 mutex_exit(&rp->r_statelock);
1748 mutex_exit(&rp->r_statelock);
1805 rnode_t *rp;
1821 rp = VTOR(vp);
1823 if (rp->r_unldvp != NULL) {
1835 mutex_enter(&rp->r_statelock);
1836 if (rp->r_unldvp != NULL) {
1846 unldvp = rp->r_unldvp;
1847 rp->r_unldvp = NULL;
1848 unlname = rp->r_unlname;
1849 rp->r_unlname = NULL;
1850 unlcred = rp->r_unlcred;
1851 rp->r_unlcred = NULL;
1852 mutex_exit(&rp->r_statelock);
1861 ((rp->r_flags & RDIRTY) || rp->r_count > 0)) {
1866 mutex_enter(&rp->r_statelock);
1867 if (!rp->r_error)
1868 rp->r_error = error;
1869 mutex_exit(&rp->r_statelock);
1911 mutex_exit(&rp->r_statelock);
1914 rp_addfree(rp, cr);
2230 rnode_t *rp;
2295 rp = VTOR(vp);
2302 mutex_enter(&rp->r_statelock);
2303 if (rp->r_size > MAXOFF32_T)
2305 mutex_exit(&rp->r_statelock);
2408 rnode_t *rp;
2556 rp = VTOR(vp);
2564 mutex_enter(&rp->r_statelock);
2565 if (rp->r_size > MAXOFF32_T) {
2566 mutex_exit(&rp->r_statelock);
2570 mutex_exit(&rp->r_statelock);
2615 if (va->va_gid != rp->r_attr.va_gid) {
2657 rnode_t *rp;
2664 rp = VTOR(vp);
2666 args.object = *RTOFH3(rp);
2842 rnode_t *rp;
2882 rp = VTOR(vp);
2883 mutex_enter(&rp->r_statelock);
2885 (rp->r_unldvp == NULL || strcmp(nm, rp->r_unlname) == 0)) {
2886 mutex_exit(&rp->r_statelock);
2892 mutex_enter(&rp->r_statelock);
2893 if (rp->r_unldvp == NULL) {
2895 rp->r_unldvp = dvp;
2896 if (rp->r_unlcred != NULL)
2897 crfree(rp->r_unlcred);
2899 rp->r_unlcred = cr;
2900 rp->r_unlname = tmpname;
2902 kmem_free(rp->r_unlname, MAXNAMELEN);
2903 rp->r_unlname = tmpname;
2905 mutex_exit(&rp->r_statelock);
2908 mutex_exit(&rp->r_statelock);
2916 ((rp->r_flags & RDIRTY) || rp->r_count > 0)) {
2919 mutex_enter(&rp->r_statelock);
2920 if (!rp->r_error)
2921 rp->r_error = error;
2922 mutex_exit(&rp->r_statelock);
3081 rnode_t *rp;
3220 rp = VTOR(nvp);
3221 mutex_enter(&rp->r_statelock);
3222 if (rp->r_unldvp == NULL) {
3224 rp->r_unldvp = ndvp;
3225 if (rp->r_unlcred != NULL)
3226 crfree(rp->r_unlcred);
3228 rp->r_unlcred = cr;
3229 rp->r_unlname = tmpname;
3231 kmem_free(rp->r_unlname, MAXNAMELEN);
3232 rp->r_unlname = tmpname;
3234 mutex_exit(&rp->r_statelock);
3309 rp = VTOR(ovp);
3313 if (HAVE_RDDIR_CACHE(rp))
3322 mutex_enter(&rp->r_statelock);
3323 if (rp->r_unldvp != NULL) {
3324 if (strcmp(rp->r_unlname, onm) == 0) {
3325 (void) strncpy(rp->r_unlname, nnm, MAXNAMELEN);
3326 rp->r_unlname[MAXNAMELEN - 1] = '\0';
3328 if (ndvp != rp->r_unldvp) {
3329 VN_RELE(rp->r_unldvp);
3330 rp->r_unldvp = ndvp;
3335 mutex_exit(&rp->r_statelock);
3594 rnode_t *rp;
3653 rp = VTOR(vp);
3655 rp->r_symlink.contents == NULL) {
3661 mutex_enter(&rp->r_statelock);
3662 if (rp->r_symlink.contents == NULL) {
3663 rp->r_symlink.len = strlen(tnm);
3665 rp->r_symlink.len);
3666 rp->r_symlink.contents =
3668 rp->r_symlink.size = MAXPATHLEN;
3669 mutex_exit(&rp->r_statelock);
3671 mutex_exit(&rp->r_statelock);
3721 rnode_t *rp;
3734 rp = VTOR(vp);
3736 ASSERT(nfs_rw_lock_held(&rp->r_rwlock, RW_READER));
3741 if (HAVE_RDDIR_CACHE(rp)) {
3780 mutex_enter(&rp->r_statelock);
3781 if (rp->r_direof != NULL &&
3782 uiop->uio_loffset == rp->r_direof->nfs3_ncookie) {
3783 mutex_exit(&rp->r_statelock);
3799 rdc = avl_find(&rp->r_dir, &srdc, &where);
3812 nfs_rw_exit(&rp->r_rwlock);
3817 if (!cv_wait_sig(&rdc->cv, &rp->r_statelock)) {
3824 mutex_exit(&rp->r_statelock);
3825 (void) nfs_rw_enter_sig(&rp->r_rwlock,
3832 mutex_exit(&rp->r_statelock);
3833 (void) nfs_rw_enter_sig(&rp->r_rwlock,
3850 mutex_exit(&rp->r_statelock);
3863 mutex_exit(&rp->r_statelock);
3902 rp->r_direof = rdc;
3904 } else if (!(rp->r_flags & RLOOKUP))
3910 mutex_exit(&rp->r_statelock);
3928 rrdc = avl_find(&rp->r_dir, &srdc, &where);
3941 avl_insert(&rp->r_dir, rrdc, where);
3943 mutex_exit(&rp->r_statelock);
3953 mutex_exit(&rp->r_statelock);
3968 mutex_exit(&rp->r_statelock);
3978 avl_insert(&rp->r_dir, nrdc, where);
3980 mutex_exit(&rp->r_statelock);
4017 rnode_t *rp;
4020 rp = VTOR(vp);
4035 (rp->r_flags & (RLOOKUP | RREADDIRPLUS))) {
4036 if (rp->r_flags & RREADDIRPLUS) {
4037 mutex_enter(&rp->r_statelock);
4038 rp->r_flags &= ~RREADDIRPLUS;
4039 mutex_exit(&rp->r_statelock);
4047 mutex_enter(&rp->r_statelock);
4056 mutex_exit(&rp->r_statelock);
4070 rnode_t *rp;
4076 rp = VTOR(vp);
4080 args.dir = *RTOFH3(rp);
4082 args.cookieverf = rp->r_cookieverf;
4150 rp->r_cookieverf = res.cookieverf;
4180 rnode_t *rp;
4185 rp = VTOR(vp);
4189 args.dir = *RTOFH3(rp);
4191 args.cookieverf = rp->r_cookieverf;
4267 rp->r_cookieverf = res.cookieverf;
4288 rnode_t *rp = VTOR(bp->b_vp);
4300 mutex_enter(&rp->r_statelock);
4301 if (rp->r_cred != NULL) {
4302 cred = rp->r_cred;
4305 rp->r_cred = cr;
4310 mutex_exit(&rp->r_statelock);
4325 mutex_enter(&rp->r_statelock);
4327 offset >= rp->r_size) {
4335 mutex_exit(&rp->r_statelock);
4337 mutex_enter(&rp->r_statelock);
4339 if (rp->r_cred != NULL)
4340 crfree(rp->r_cred);
4341 rp->r_cred = cr;
4345 mutex_exit(&rp->r_statelock);
4348 mutex_exit(&rp->r_statelock);
4351 if (!(rp->r_flags & RSTALE)) {
4352 mutex_enter(&rp->r_statelock);
4353 if (rp->r_cred != NULL) {
4354 cred = rp->r_cred;
4357 rp->r_cred = cr;
4362 mutex_exit(&rp->r_statelock);
4364 mutex_enter(&rp->r_statelock);
4365 count = MIN(bp->b_bcount, rp->r_size - offset);
4366 mutex_exit(&rp->r_statelock);
4374 nfs_printfhandle(&rp->r_fh);
4382 mutex_enter(&rp->r_statelock);
4384 if (rp->r_cred != NULL)
4385 crfree(rp->r_cred);
4386 rp->r_cred = cr;
4391 mutex_exit(&rp->r_statelock);
4394 mutex_exit(&rp->r_statelock);
4418 mutex_enter(&rp->r_statelock);
4420 rp->r_flags |= RSTALE;
4421 if (!rp->r_error)
4422 rp->r_error = error;
4423 } else if (!rp->r_error &&
4427 rp->r_error = error;
4429 mutex_exit(&rp->r_statelock);
4433 error = rp->r_error;
4455 rnode_t *rp;
4459 rp = VTOR(vp);
4461 if (fidp->fid_len < (ushort_t)rp->r_fh.fh_len) {
4462 fidp->fid_len = rp->r_fh.fh_len;
4465 fidp->fid_len = rp->r_fh.fh_len;
4466 bcopy(rp->r_fh.fh_buf, fidp->fid_data, fidp->fid_len);
4474 rnode_t *rp = VTOR(vp);
4477 (void) nfs_rw_enter_sig(&rp->r_rwlock, RW_READER, FALSE);
4481 if ((rp->r_flags & RDIRECTIO) || (VTOMI(vp)->mi_flags & MI_DIRECTIO)) {
4482 (void) nfs_rw_enter_sig(&rp->r_rwlock, RW_READER, FALSE);
4483 if (rp->r_mapcnt == 0 && !vn_has_cached_data(vp))
4485 nfs_rw_exit(&rp->r_rwlock);
4488 (void) nfs_rw_enter_sig(&rp->r_rwlock, RW_WRITER, FALSE);
4496 rnode_t *rp = VTOR(vp);
4498 nfs_rw_exit(&rp->r_rwlock);
4536 rnode_t *rp;
4555 rp = VTOR(vp);
4558 mutex_enter(&rp->r_statelock);
4572 rp->r_awcount > 2 * mi->mi_max_threads) ||
4573 rp->r_gcount > 0)
4574 cv_wait(&rp->r_cv, &rp->r_statelock);
4582 if (off + len > rp->r_size + PAGEOFFSET && seg != segkmap) {
4583 mutex_exit(&rp->r_statelock);
4587 mutex_exit(&rp->r_statelock);
4612 rnode_t *rp;
4631 rp = VTOR(vp);
4655 mutex_enter(&rp->r_statelock);
4664 * d) No readaheads if rp->r_nextr is not within the scope
4670 else if (blkoff == rp->r_nextr)
4672 else if (rp->r_nextr > blkoff &&
4673 ((ra_window = (rp->r_nextr - blkoff) / bsize)
4679 rablkoff = rp->r_nextr;
4680 while (readahead > 0 && rablkoff + bsize < rp->r_size) {
4681 mutex_exit(&rp->r_statelock);
4685 mutex_enter(&rp->r_statelock);
4696 mutex_enter(&rp->r_statelock);
4702 rp->r_nextr = rablkoff;
4704 mutex_exit(&rp->r_statelock);
4723 mutex_enter(&rp->r_statelock);
4724 rp->r_nextr = off + PAGESIZE;
4725 mutex_exit(&rp->r_statelock);
4732 mutex_enter(&rp->r_statelock);
4733 if (blkoff < rp->r_size &&
4734 blkoff + bsize >= rp->r_size) {
4739 if (rp->r_size <= off) {
4746 blksize = rp->r_size - blkoff;
4748 (off != rp->r_nextr && !readahead_issued)) {
4753 mutex_exit(&rp->r_statelock);
4799 mutex_enter(&rp->r_statelock);
4800 if (io_off >= rp->r_size && seg == segkmap) {
4801 mutex_exit(&rp->r_statelock);
4804 mutex_exit(&rp->r_statelock);
4835 mutex_enter(&rp->r_statelock);
4836 rp->r_nextr = io_off + io_len;
4837 mutex_exit(&rp->r_statelock);
4886 rnode_t *rp = VTOR(vp);
4892 mutex_enter(&rp->r_statelock);
4893 if (blkoff < rp->r_size && blkoff + bsize > rp->r_size) {
4898 blksize = rp->r_size - blkoff;
4901 mutex_exit(&rp->r_statelock);
4946 mutex_enter(&rp->r_statelock);
4947 if (io_off >= rp->r_size && seg == segkmap) {
4948 mutex_exit(&rp->r_statelock);
4952 mutex_exit(&rp->r_statelock);
4976 if (error && rp->r_nextr > io_off) {
4977 mutex_enter(&rp->r_statelock);
4978 if (rp->r_nextr > io_off)
4979 rp->r_nextr = io_off;
4980 mutex_exit(&rp->r_statelock);
4998 rnode_t *rp;
5012 rp = VTOR(vp);
5013 mutex_enter(&rp->r_statelock);
5014 rp->r_count++;
5015 mutex_exit(&rp->r_statelock);
5017 mutex_enter(&rp->r_statelock);
5018 rp->r_count--;
5019 cv_broadcast(&rp->r_cv);
5020 mutex_exit(&rp->r_statelock);
5038 rnode_t *rp;
5045 rp = VTOR(vp);
5046 ASSERT(rp->r_count > 0);
5101 if (rp->r_flags & RMODINPROGRESS) {
5102 mutex_enter(&rp->r_statelock);
5103 if ((rp->r_flags & RMODINPROGRESS) &&
5104 rp->r_modaddr + MAXBSIZE > io_off &&
5105 rp->r_modaddr < io_off + io_len) {
5125 rp->r_flags |= RDIRTY;
5126 mutex_exit(&rp->r_statelock);
5133 mutex_exit(&rp->r_statelock);
5154 rnode_t *rp;
5162 rp = VTOR(vp);
5167 if (!(rp->r_flags & ROUTOFSPACE)) {
5168 mutex_enter(&rp->r_statelock);
5169 rp->r_flags |= ROUTOFSPACE;
5170 mutex_exit(&rp->r_statelock);
5198 else if (rp->r_flags & ROUTOFSPACE) {
5199 mutex_enter(&rp->r_statelock);
5200 rp->r_flags &= ~ROUTOFSPACE;
5201 mutex_exit(&rp->r_statelock);
5219 rnode_t *rp;
5256 * rp->r_lkserlock to avoid a race with concurrent lock requests.
5258 rp = VTOR(vp);
5273 if (nfs_rw_enter_sig(&rp->r_rwlock, RW_WRITER, INTR(vp)))
5275 atomic_inc_uint(&rp->r_inmap);
5276 nfs_rw_exit(&rp->r_rwlock);
5278 if (nfs_rw_enter_sig(&rp->r_lkserlock, RW_READER, INTR(vp))) {
5279 atomic_dec_uint(&rp->r_inmap);
5320 nfs_rw_exit(&rp->r_lkserlock);
5321 atomic_dec_uint(&rp->r_inmap);
5331 rnode_t *rp;
5338 rp = VTOR(vp);
5339 atomic_add_long((ulong_t *)&rp->r_mapcnt, btopr(len));
5353 rnode_t *rp;
5406 rp = VTOR(vp);
5412 if (nfs_rw_enter_sig(&rp->r_lkserlock, RW_WRITER, intr))
5431 mutex_enter(&rp->r_statelock);
5432 while (rp->r_count > 0) {
5438 if (cv_wait_sig(&rp->r_cv,
5439 &rp->r_statelock) == 0) {
5448 cv_wait(&rp->r_cv, &rp->r_statelock);
5450 mutex_exit(&rp->r_statelock);
5456 mutex_enter(&rp->r_statelock);
5457 if (!rp->r_error)
5458 rp->r_error = error;
5459 mutex_exit(&rp->r_statelock);
5481 nfs_rw_exit(&rp->r_lkserlock);
5561 rnode_t *rp;
5573 rp = VTOR(vp);
5605 caller_found = nfs_find_and_delete_delmapcall(rp, &error);
5623 mutex_enter(&rp->r_statelock);
5624 list_insert_tail(&rp->r_indelmap, delmap_call);
5625 mutex_exit(&rp->r_statelock);
5658 rnode_t *rp;
5662 rp = VTOR(dmapp->vp);
5665 atomic_add_long((ulong_t *)&rp->r_mapcnt, -btopr(dmapp->len));
5666 ASSERT(rp->r_mapcnt >= 0);
5675 mutex_enter(&rp->r_statelock);
5676 rp->r_flags |= RDIRTY;
5677 mutex_exit(&rp->r_statelock);
5692 mutex_enter(&rp->r_statelock);
5693 error = rp->r_error;
5694 rp->r_error = 0;
5695 mutex_exit(&rp->r_statelock);
5700 if ((rp->r_flags & RDIRECTIO) || (mi->mi_flags & MI_DIRECTIO))
5726 rnode_t *rp;
5779 rnode_t *rp;
5786 rp = VTOR(vp);
5787 if (nfs_rw_enter_sig(&rp->r_rwlock, RW_READER,
5795 nfs_rw_exit(&rp->r_rwlock);
5808 rp = VTOR(vp);
5809 if (rp->r_pathconf != NULL) {
5810 mutex_enter(&rp->r_statelock);
5811 if (rp->r_pathconf != NULL && nfs3_pathconf_disable_cache) {
5812 kmem_free(rp->r_pathconf, sizeof (*rp->r_pathconf));
5813 rp->r_pathconf = NULL;
5815 if (rp->r_pathconf != NULL) {
5819 *valp = rp->r_pathconf->link_max;
5822 *valp = rp->r_pathconf->name_max;
5829 *valp = rp->r_pathconf->chown_restricted;
5832 *valp = rp->r_pathconf->no_trunc;
5838 mutex_exit(&rp->r_statelock);
5844 mutex_exit(&rp->r_statelock);
5874 mutex_enter(&rp->r_statelock);
5875 if (rp->r_pathconf == NULL) {
5876 rp->r_pathconf = kmem_alloc(
5877 sizeof (*rp->r_pathconf), KM_NOSLEEP);
5878 if (rp->r_pathconf != NULL)
5879 *rp->r_pathconf = res.resok.info;
5881 mutex_exit(&rp->r_statelock);
5936 rnode_t *rp;
5943 rp = VTOR(vp);
5944 mutex_enter(&rp->r_statelock);
5945 rp->r_count++;
5946 mutex_exit(&rp->r_statelock);
5953 mutex_enter(&rp->r_statelock);
5954 rp->r_count--;
5955 cv_broadcast(&rp->r_cv);
5956 mutex_exit(&rp->r_statelock);
5966 rnode_t *rp;
5983 rp = VTOR(vp);
5991 if (pp->p_fsdata == C_NOCOMMIT || (rp->r_flags & RSTALE)) {
6006 mutex_enter(&rp->r_statelock);
6007 if ((rp->r_flags & RTRUNCATE) && pp->p_offset >= rp->r_truncaddr) {
6008 mutex_exit(&rp->r_statelock);
6030 if (rp->r_flags & RCOMMITWAIT) {
6032 mutex_exit(&rp->r_statelock);
6038 mutex_exit(&rp->r_statelock);
6054 mutex_exit(&rp->r_statelock);
6068 while (rp->r_flags & RCOMMIT) {
6069 rp->r_flags |= RCOMMITWAIT;
6070 cv_wait(&rp->r_commit.c_cv, &rp->r_statelock);
6071 rp->r_flags &= ~RCOMMITWAIT;
6073 rp->r_flags |= RCOMMIT;
6074 mutex_exit(&rp->r_statelock);
6075 ASSERT(rp->r_commit.c_pages == NULL);
6076 rp->r_commit.c_pages = pp;
6077 rp->r_commit.c_commbase = (offset3)pp->p_offset;
6078 rp->r_commit.c_commlen = PAGESIZE;
6092 plist = rp->r_commit.c_pages;
6093 rp->r_commit.c_pages = NULL;
6094 offset = rp->r_commit.c_commbase;
6095 len = rp->r_commit.c_commlen;
6096 mutex_enter(&rp->r_statelock);
6097 rp->r_flags &= ~RCOMMIT;
6098 cv_broadcast(&rp->r_commit.c_cv);
6099 mutex_exit(&rp->r_statelock);
6169 rnode_t *rp;
6175 rp = VTOR(vp);
6178 mutex_enter(&rp->r_statelock);
6179 if (rp->r_cred != NULL) {
6180 cred = rp->r_cred;
6183 rp->r_cred = cr;
6188 mutex_exit(&rp->r_statelock);
6208 ASSERT(rp->r_flags & RHAVEVERF);
6209 mutex_enter(&rp->r_statelock);
6210 if (rp->r_verf == res.resok.verf) {
6211 mutex_exit(&rp->r_statelock);
6215 rp->r_verf = res.resok.verf;
6216 mutex_exit(&rp->r_statelock);
6220 mutex_enter(&rp->r_statelock);
6222 if (rp->r_cred != NULL)
6223 crfree(rp->r_cred);
6224 rp->r_cred = cr;
6228 mutex_exit(&rp->r_statelock);
6231 mutex_exit(&rp->r_statelock);
6241 mutex_enter(&rp->r_statelock);
6242 rp->r_flags |= RSTALE;
6243 if (!rp->r_error)
6244 rp->r_error = error;
6245 mutex_exit(&rp->r_statelock);
6248 mutex_enter(&rp->r_statelock);
6249 if (!rp->r_error)
6250 rp->r_error = error;
6251 mutex_exit(&rp->r_statelock);
6279 rnode_t *rp;
6283 rp = VTOR(vp);
6285 ASSERT(rp->r_flags & RCOMMIT);
6343 if (rp->r_commit.c_pages == NULL) {
6344 rp->r_commit.c_commbase = (offset3)pp->p_offset;
6345 rp->r_commit.c_commlen = PAGESIZE;
6346 } else if (pp->p_offset < rp->r_commit.c_commbase) {
6347 rp->r_commit.c_commlen = rp->r_commit.c_commbase -
6348 (offset3)pp->p_offset + rp->r_commit.c_commlen;
6349 rp->r_commit.c_commbase = (offset3)pp->p_offset;
6350 } else if ((rp->r_commit.c_commbase + rp->r_commit.c_commlen)
6352 rp->r_commit.c_commlen = (offset3)pp->p_offset -
6353 rp->r_commit.c_commbase + PAGESIZE;
6355 page_add(&rp->r_commit.c_pages, pp);
6375 rnode_t *rp;
6382 rp = VTOR(vp);
6384 ASSERT(rp->r_flags & RCOMMIT);
6422 if (rp->r_commit.c_pages == NULL) {
6423 rp->r_commit.c_commbase = (offset3)pp->p_offset;
6424 rp->r_commit.c_commlen = PAGESIZE;
6426 rp->r_commit.c_commlen = (offset3)pp->p_offset -
6427 rp->r_commit.c_commbase + PAGESIZE;
6429 page_add(&rp->r_commit.c_pages, pp);
6438 rnode_t *rp = VTOR(vp);
6462 mutex_enter(&rp->r_statelock);
6463 write_verf = rp->r_verf;
6464 mutex_exit(&rp->r_statelock);
6482 mutex_enter(&rp->r_statelock);
6483 if (rp->r_verf != write_verf) {
6484 mutex_exit(&rp->r_statelock);
6487 mutex_exit(&rp->r_statelock);
6506 rnode_t *rp;
6512 rp = VTOR(vp);
6520 mutex_enter(&rp->r_statelock);
6521 while (rp->r_flags & RCOMMIT) {
6522 rp->r_flags |= RCOMMITWAIT;
6523 cv_wait(&rp->r_commit.c_cv, &rp->r_statelock);
6524 rp->r_flags &= ~RCOMMITWAIT;
6526 rp->r_flags |= RCOMMIT;
6527 mutex_exit(&rp->r_statelock);
6542 plist = rp->r_commit.c_pages;
6543 rp->r_commit.c_pages = NULL;
6544 offset = rp->r_commit.c_commbase;
6545 len = rp->r_commit.c_commlen;
6546 mutex_enter(&rp->r_statelock);
6547 rp->r_flags &= ~RCOMMIT;
6548 cv_broadcast(&rp->r_commit.c_cv);
6549 mutex_exit(&rp->r_statelock);