Lines Matching refs:rp
298 rnode_t *rp; in nfs3_open() local
304 rp = VTOR(vp); in nfs3_open()
305 mutex_enter(&rp->r_statelock); in nfs3_open()
306 if (rp->r_cred == NULL) { in nfs3_open()
308 rp->r_cred = cr; in nfs3_open()
310 mutex_exit(&rp->r_statelock); in nfs3_open()
326 ((vn_has_cached_data(vp) || HAVE_RDDIR_CACHE(rp)) && in nfs3_open()
330 else if (rp->r_mapcnt == 0 && vp->v_count == 1) { in nfs3_open()
348 rnode_t *rp; in nfs3_close() local
399 rp = VTOR(vp); in nfs3_close()
400 if (rp->r_unldvp != NULL) in nfs3_close()
427 mutex_enter(&rp->r_statelock); in nfs3_close()
428 error = rp->r_error; in nfs3_close()
429 rp->r_error = 0; in nfs3_close()
430 mutex_exit(&rp->r_statelock); in nfs3_close()
433 mutex_enter(&rp->r_statelock); in nfs3_close()
434 error = rp->r_error; in nfs3_close()
435 rp->r_error = 0; in nfs3_close()
436 mutex_exit(&rp->r_statelock); in nfs3_close()
445 if (rp->r_flags & RWRITEATTR) in nfs3_close()
544 rnode_t *rp; in nfs3_read() local
554 rp = VTOR(vp); in nfs3_read()
557 ASSERT(nfs_rw_lock_held(&rp->r_rwlock, RW_READER)); in nfs3_read()
577 (((rp->r_flags & RDIRECTIO) || (mi->mi_flags & MI_DIRECTIO)) && in nfs3_read()
578 rp->r_mapcnt == 0 && rp->r_inmap == 0 && in nfs3_read()
592 mutex_enter(&rp->r_statelock); in nfs3_read()
593 while (rp->r_flags & RINCACHEPURGE) { in nfs3_read()
594 if (!cv_wait_sig(&rp->r_cv, &rp->r_statelock)) { in nfs3_read()
595 mutex_exit(&rp->r_statelock); in nfs3_read()
599 diff = rp->r_size - uiop->uio_loffset; in nfs3_read()
600 mutex_exit(&rp->r_statelock); in nfs3_read()
624 mutex_enter(&rp->r_statelock); in nfs3_read()
626 uiop->uio_loffset == rp->r_size) in nfs3_read()
630 mutex_exit(&rp->r_statelock); in nfs3_read()
654 rnode_t *rp; in nfs3_write() local
667 rp = VTOR(vp); in nfs3_write()
684 if (nfs_rw_lock_held(&rp->r_rwlock, RW_READER)) { in nfs3_write()
685 nfs_rw_exit(&rp->r_rwlock); in nfs3_write()
686 if (nfs_rw_enter_sig(&rp->r_rwlock, RW_WRITER, in nfs3_write()
729 if (nfs_rw_enter_sig(&rp->r_lkserlock, RW_READER, INTR(vp))) in nfs3_write()
738 (((rp->r_flags & RDIRECTIO) || (mi->mi_flags & MI_DIRECTIO)) && in nfs3_write()
739 rp->r_mapcnt == 0 && rp->r_inmap == 0 && in nfs3_write()
747 if (rp->r_flags & RSTALE) { in nfs3_write()
750 error = rp->r_error; in nfs3_write()
791 if (rp->r_flags & RSTALE) { in nfs3_write()
792 error = rp->r_error; in nfs3_write()
812 mutex_enter(&rp->r_statelock); in nfs3_write()
814 rp->r_awcount > 2 * mi->mi_max_threads) || in nfs3_write()
815 rp->r_gcount > 0) { in nfs3_write()
821 if (!cv_wait_sig(&rp->r_cv, &rp->r_statelock)) { in nfs3_write()
822 mutex_exit(&rp->r_statelock); in nfs3_write()
831 cv_wait(&rp->r_cv, &rp->r_statelock); in nfs3_write()
833 mutex_exit(&rp->r_statelock); in nfs3_write()
848 error = writerp(rp, NULL, n, uiop, 0); in nfs3_write()
856 mutex_enter(&rp->r_statelock); in nfs3_write()
858 uiop->uio_loffset + pn >= rp->r_size); in nfs3_write()
859 mutex_exit(&rp->r_statelock); in nfs3_write()
864 error = writerp(rp, base + pon, n, uiop, in nfs3_write()
870 error = writerp(rp, base + on, n, uiop, 0); in nfs3_write()
890 (rp->r_flags & ROUTOFSPACE)) { in nfs3_write()
922 nfs_rw_exit(&rp->r_lkserlock); in nfs3_write()
1011 rnode_t *rp; in nfs3write() local
1014 rp = VTOR(vp); in nfs3write()
1028 (rp->r_flags & RDIRECTIO) || in nfs3write()
1064 rp->r_server->sv_hostname, in nfs3write()
1074 rp->r_server->sv_hostname); in nfs3write()
1090 mutex_enter(&rp->r_statelock); in nfs3write()
1091 if (rp->r_flags & RHAVEVERF) { in nfs3write()
1092 if (rp->r_verf != res.resok.verf) { in nfs3write()
1094 rp->r_verf = res.resok.verf; in nfs3write()
1102 mutex_exit(&rp->r_statelock); in nfs3write()
1107 rp->r_verf = res.resok.verf; in nfs3write()
1108 rp->r_flags |= RHAVEVERF; in nfs3write()
1116 PURGE_ATTRCACHE_LOCKED(rp); in nfs3write()
1117 rp->r_flags |= RWRITEATTR; in nfs3write()
1118 mutex_exit(&rp->r_statelock); in nfs3write()
1139 rnode_t *rp; in nfs3read() local
1143 rp = VTOR(vp); in nfs3read()
1169 (rp->r_flags & RDIRECTIO) || in nfs3read()
1204 rp->r_server->sv_hostname); in nfs3read()
1222 mutex_enter(&rp->r_statelock); in nfs3read()
1223 if (!CACHE_VALID(rp, va.va_mtime, va.va_size)) { in nfs3read()
1224 mutex_exit(&rp->r_statelock); in nfs3read()
1227 if (rp->r_mtime <= t) in nfs3read()
1229 mutex_exit(&rp->r_statelock); in nfs3read()
1258 rnode_t *rp; in nfs3_getattr() local
1271 rp = VTOR(vp); in nfs3_getattr()
1275 mutex_enter(&rp->r_statelock); in nfs3_getattr()
1277 vap->va_size = rp->r_size; in nfs3_getattr()
1279 vap->va_fsid = rp->r_attr.va_fsid; in nfs3_getattr()
1281 vap->va_rdev = rp->r_attr.va_rdev; in nfs3_getattr()
1282 mutex_exit(&rp->r_statelock); in nfs3_getattr()
1294 ((rp->r_flags & RDIRTY) || rp->r_awcount > 0)) { in nfs3_getattr()
1295 mutex_enter(&rp->r_statelock); in nfs3_getattr()
1296 rp->r_gcount++; in nfs3_getattr()
1297 mutex_exit(&rp->r_statelock); in nfs3_getattr()
1299 mutex_enter(&rp->r_statelock); in nfs3_getattr()
1301 if (!rp->r_error) in nfs3_getattr()
1302 rp->r_error = error; in nfs3_getattr()
1304 if (--rp->r_gcount == 0) in nfs3_getattr()
1305 cv_broadcast(&rp->r_cv); in nfs3_getattr()
1306 mutex_exit(&rp->r_statelock); in nfs3_getattr()
1352 rnode_t *rp; in nfs3setattr() local
1361 rp = VTOR(vp); in nfs3setattr()
1375 ((rp->r_flags & RDIRTY) || in nfs3setattr()
1376 rp->r_count > 0 || in nfs3setattr()
1377 rp->r_mapcnt > 0)) { in nfs3setattr()
1381 mutex_enter(&rp->r_statelock); in nfs3setattr()
1382 if (!rp->r_error) in nfs3setattr()
1383 rp->r_error = error; in nfs3setattr()
1384 mutex_exit(&rp->r_statelock); in nfs3setattr()
1388 args.object = *RTOFH3(rp); in nfs3setattr()
1447 (void) nfs_access_purge_rp(rp); in nfs3setattr()
1448 if (rp->r_secattr != NULL) { in nfs3setattr()
1449 mutex_enter(&rp->r_statelock); in nfs3setattr()
1450 vsp = rp->r_secattr; in nfs3setattr()
1451 rp->r_secattr = NULL; in nfs3setattr()
1452 mutex_exit(&rp->r_statelock); in nfs3setattr()
1544 rnode_t *rp; in nfs3_access() local
1569 rp = VTOR(vp); in nfs3_access()
1595 if (rp->r_acache != NULL) { in nfs3_access()
1596 cacc = nfs_access_check(rp, acc, cred); in nfs3_access()
1636 nfs_access_cache(rp, args.access, res.resok.access, cred); in nfs3_access()
1678 rnode_t *rp; in nfs3_readlink() local
1692 rp = VTOR(vp); in nfs3_readlink()
1693 if (nfs3_do_symlink_cache && rp->r_symlink.contents != NULL) { in nfs3_readlink()
1697 mutex_enter(&rp->r_statelock); in nfs3_readlink()
1698 if (rp->r_symlink.contents != NULL) { in nfs3_readlink()
1699 error = uiomove(rp->r_symlink.contents, in nfs3_readlink()
1700 rp->r_symlink.len, UIO_READ, uiop); in nfs3_readlink()
1701 mutex_exit(&rp->r_statelock); in nfs3_readlink()
1704 mutex_exit(&rp->r_statelock); in nfs3_readlink()
1741 if (nfs3_do_symlink_cache && rp->r_symlink.contents == NULL) { in nfs3_readlink()
1742 mutex_enter(&rp->r_statelock); in nfs3_readlink()
1743 if (rp->r_symlink.contents == NULL) { in nfs3_readlink()
1744 rp->r_symlink.contents = res.resok.data; in nfs3_readlink()
1745 rp->r_symlink.len = len; in nfs3_readlink()
1746 rp->r_symlink.size = MAXPATHLEN; in nfs3_readlink()
1747 mutex_exit(&rp->r_statelock); in nfs3_readlink()
1749 mutex_exit(&rp->r_statelock); in nfs3_readlink()
1806 rnode_t *rp; in nfs3_inactive() local
1822 rp = VTOR(vp); in nfs3_inactive()
1824 if (rp->r_unldvp != NULL) { in nfs3_inactive()
1836 mutex_enter(&rp->r_statelock); in nfs3_inactive()
1837 if (rp->r_unldvp != NULL) { in nfs3_inactive()
1847 unldvp = rp->r_unldvp; in nfs3_inactive()
1848 rp->r_unldvp = NULL; in nfs3_inactive()
1849 unlname = rp->r_unlname; in nfs3_inactive()
1850 rp->r_unlname = NULL; in nfs3_inactive()
1851 unlcred = rp->r_unlcred; in nfs3_inactive()
1852 rp->r_unlcred = NULL; in nfs3_inactive()
1853 mutex_exit(&rp->r_statelock); in nfs3_inactive()
1862 ((rp->r_flags & RDIRTY) || rp->r_count > 0)) { in nfs3_inactive()
1867 mutex_enter(&rp->r_statelock); in nfs3_inactive()
1868 if (!rp->r_error) in nfs3_inactive()
1869 rp->r_error = error; in nfs3_inactive()
1870 mutex_exit(&rp->r_statelock); in nfs3_inactive()
1912 mutex_exit(&rp->r_statelock); in nfs3_inactive()
1915 rp_addfree(rp, cr); in nfs3_inactive()
2231 rnode_t *rp; in nfs3_create() local
2296 rp = VTOR(vp); in nfs3_create()
2303 mutex_enter(&rp->r_statelock); in nfs3_create()
2304 if (rp->r_size > MAXOFF32_T) in nfs3_create()
2306 mutex_exit(&rp->r_statelock); in nfs3_create()
2409 rnode_t *rp; in nfs3create() local
2557 rp = VTOR(vp); in nfs3create()
2565 mutex_enter(&rp->r_statelock); in nfs3create()
2566 if (rp->r_size > MAXOFF32_T) { in nfs3create()
2567 mutex_exit(&rp->r_statelock); in nfs3create()
2571 mutex_exit(&rp->r_statelock); in nfs3create()
2616 if (va->va_gid != rp->r_attr.va_gid) { in nfs3create()
2658 rnode_t *rp; in nfs3excl_create_settimes() local
2665 rp = VTOR(vp); in nfs3excl_create_settimes()
2667 args.object = *RTOFH3(rp); in nfs3excl_create_settimes()
2843 rnode_t *rp; in nfs3_remove() local
2883 rp = VTOR(vp); in nfs3_remove()
2884 mutex_enter(&rp->r_statelock); in nfs3_remove()
2886 (rp->r_unldvp == NULL || strcmp(nm, rp->r_unlname) == 0)) { in nfs3_remove()
2887 mutex_exit(&rp->r_statelock); in nfs3_remove()
2893 mutex_enter(&rp->r_statelock); in nfs3_remove()
2894 if (rp->r_unldvp == NULL) { in nfs3_remove()
2896 rp->r_unldvp = dvp; in nfs3_remove()
2897 if (rp->r_unlcred != NULL) in nfs3_remove()
2898 crfree(rp->r_unlcred); in nfs3_remove()
2900 rp->r_unlcred = cr; in nfs3_remove()
2901 rp->r_unlname = tmpname; in nfs3_remove()
2903 kmem_free(rp->r_unlname, MAXNAMELEN); in nfs3_remove()
2904 rp->r_unlname = tmpname; in nfs3_remove()
2906 mutex_exit(&rp->r_statelock); in nfs3_remove()
2909 mutex_exit(&rp->r_statelock); in nfs3_remove()
2917 ((rp->r_flags & RDIRTY) || rp->r_count > 0)) { in nfs3_remove()
2920 mutex_enter(&rp->r_statelock); in nfs3_remove()
2921 if (!rp->r_error) in nfs3_remove()
2922 rp->r_error = error; in nfs3_remove()
2923 mutex_exit(&rp->r_statelock); in nfs3_remove()
3082 rnode_t *rp; in nfs3rename() local
3221 rp = VTOR(nvp); in nfs3rename()
3222 mutex_enter(&rp->r_statelock); in nfs3rename()
3223 if (rp->r_unldvp == NULL) { in nfs3rename()
3225 rp->r_unldvp = ndvp; in nfs3rename()
3226 if (rp->r_unlcred != NULL) in nfs3rename()
3227 crfree(rp->r_unlcred); in nfs3rename()
3229 rp->r_unlcred = cr; in nfs3rename()
3230 rp->r_unlname = tmpname; in nfs3rename()
3232 kmem_free(rp->r_unlname, MAXNAMELEN); in nfs3rename()
3233 rp->r_unlname = tmpname; in nfs3rename()
3235 mutex_exit(&rp->r_statelock); in nfs3rename()
3310 rp = VTOR(ovp); in nfs3rename()
3314 if (HAVE_RDDIR_CACHE(rp)) in nfs3rename()
3323 mutex_enter(&rp->r_statelock); in nfs3rename()
3324 if (rp->r_unldvp != NULL) { in nfs3rename()
3325 if (strcmp(rp->r_unlname, onm) == 0) { in nfs3rename()
3326 (void) strncpy(rp->r_unlname, nnm, MAXNAMELEN); in nfs3rename()
3327 rp->r_unlname[MAXNAMELEN - 1] = '\0'; in nfs3rename()
3329 if (ndvp != rp->r_unldvp) { in nfs3rename()
3330 VN_RELE(rp->r_unldvp); in nfs3rename()
3331 rp->r_unldvp = ndvp; in nfs3rename()
3336 mutex_exit(&rp->r_statelock); in nfs3rename()
3595 rnode_t *rp; in nfs3_symlink() local
3654 rp = VTOR(vp); in nfs3_symlink()
3656 rp->r_symlink.contents == NULL) { in nfs3_symlink()
3662 mutex_enter(&rp->r_statelock); in nfs3_symlink()
3663 if (rp->r_symlink.contents == NULL) { in nfs3_symlink()
3664 rp->r_symlink.len = strlen(tnm); in nfs3_symlink()
3666 rp->r_symlink.len); in nfs3_symlink()
3667 rp->r_symlink.contents = in nfs3_symlink()
3669 rp->r_symlink.size = MAXPATHLEN; in nfs3_symlink()
3670 mutex_exit(&rp->r_statelock); in nfs3_symlink()
3672 mutex_exit(&rp->r_statelock); in nfs3_symlink()
3722 rnode_t *rp; in nfs3_readdir() local
3735 rp = VTOR(vp); in nfs3_readdir()
3737 ASSERT(nfs_rw_lock_held(&rp->r_rwlock, RW_READER)); in nfs3_readdir()
3742 if (HAVE_RDDIR_CACHE(rp)) { in nfs3_readdir()
3781 mutex_enter(&rp->r_statelock); in nfs3_readdir()
3782 if (rp->r_direof != NULL && in nfs3_readdir()
3783 uiop->uio_loffset == rp->r_direof->nfs3_ncookie) { in nfs3_readdir()
3784 mutex_exit(&rp->r_statelock); in nfs3_readdir()
3800 rdc = avl_find(&rp->r_dir, &srdc, &where); in nfs3_readdir()
3813 nfs_rw_exit(&rp->r_rwlock); in nfs3_readdir()
3818 if (!cv_wait_sig(&rdc->cv, &rp->r_statelock)) { in nfs3_readdir()
3825 mutex_exit(&rp->r_statelock); in nfs3_readdir()
3826 (void) nfs_rw_enter_sig(&rp->r_rwlock, in nfs3_readdir()
3833 mutex_exit(&rp->r_statelock); in nfs3_readdir()
3834 (void) nfs_rw_enter_sig(&rp->r_rwlock, in nfs3_readdir()
3851 mutex_exit(&rp->r_statelock); in nfs3_readdir()
3864 mutex_exit(&rp->r_statelock); in nfs3_readdir()
3903 rp->r_direof = rdc; in nfs3_readdir()
3905 } else if (!(rp->r_flags & RLOOKUP)) in nfs3_readdir()
3911 mutex_exit(&rp->r_statelock); in nfs3_readdir()
3929 rrdc = avl_find(&rp->r_dir, &srdc, &where); in nfs3_readdir()
3942 avl_insert(&rp->r_dir, rrdc, where); in nfs3_readdir()
3944 mutex_exit(&rp->r_statelock); in nfs3_readdir()
3954 mutex_exit(&rp->r_statelock); in nfs3_readdir()
3969 mutex_exit(&rp->r_statelock); in nfs3_readdir()
3979 avl_insert(&rp->r_dir, nrdc, where); in nfs3_readdir()
3981 mutex_exit(&rp->r_statelock); in nfs3_readdir()
4018 rnode_t *rp; in do_nfs3readdir() local
4021 rp = VTOR(vp); in do_nfs3readdir()
4036 (rp->r_flags & (RLOOKUP | RREADDIRPLUS))) { in do_nfs3readdir()
4037 if (rp->r_flags & RREADDIRPLUS) { in do_nfs3readdir()
4038 mutex_enter(&rp->r_statelock); in do_nfs3readdir()
4039 rp->r_flags &= ~RREADDIRPLUS; in do_nfs3readdir()
4040 mutex_exit(&rp->r_statelock); in do_nfs3readdir()
4048 mutex_enter(&rp->r_statelock); in do_nfs3readdir()
4057 mutex_exit(&rp->r_statelock); in do_nfs3readdir()
4071 rnode_t *rp; in nfs3readdir() local
4077 rp = VTOR(vp); in nfs3readdir()
4081 args.dir = *RTOFH3(rp); in nfs3readdir()
4083 args.cookieverf = rp->r_cookieverf; in nfs3readdir()
4151 rp->r_cookieverf = res.cookieverf; in nfs3readdir()
4181 rnode_t *rp; in nfs3readdirplus() local
4186 rp = VTOR(vp); in nfs3readdirplus()
4190 args.dir = *RTOFH3(rp); in nfs3readdirplus()
4192 args.cookieverf = rp->r_cookieverf; in nfs3readdirplus()
4268 rp->r_cookieverf = res.cookieverf; in nfs3readdirplus()
4289 rnode_t *rp = VTOR(bp->b_vp); in nfs3_bio() local
4301 mutex_enter(&rp->r_statelock); in nfs3_bio()
4302 if (rp->r_cred != NULL) { in nfs3_bio()
4303 cred = rp->r_cred; in nfs3_bio()
4306 rp->r_cred = cr; in nfs3_bio()
4311 mutex_exit(&rp->r_statelock); in nfs3_bio()
4326 mutex_enter(&rp->r_statelock); in nfs3_bio()
4328 offset >= rp->r_size) { in nfs3_bio()
4336 mutex_exit(&rp->r_statelock); in nfs3_bio()
4338 mutex_enter(&rp->r_statelock); in nfs3_bio()
4340 if (rp->r_cred != NULL) in nfs3_bio()
4341 crfree(rp->r_cred); in nfs3_bio()
4342 rp->r_cred = cr; in nfs3_bio()
4346 mutex_exit(&rp->r_statelock); in nfs3_bio()
4349 mutex_exit(&rp->r_statelock); in nfs3_bio()
4352 if (!(rp->r_flags & RSTALE)) { in nfs3_bio()
4353 mutex_enter(&rp->r_statelock); in nfs3_bio()
4354 if (rp->r_cred != NULL) { in nfs3_bio()
4355 cred = rp->r_cred; in nfs3_bio()
4358 rp->r_cred = cr; in nfs3_bio()
4363 mutex_exit(&rp->r_statelock); in nfs3_bio()
4365 mutex_enter(&rp->r_statelock); in nfs3_bio()
4366 count = MIN(bp->b_bcount, rp->r_size - offset); in nfs3_bio()
4367 mutex_exit(&rp->r_statelock); in nfs3_bio()
4375 nfs_printfhandle(&rp->r_fh); in nfs3_bio()
4383 mutex_enter(&rp->r_statelock); in nfs3_bio()
4385 if (rp->r_cred != NULL) in nfs3_bio()
4386 crfree(rp->r_cred); in nfs3_bio()
4387 rp->r_cred = cr; in nfs3_bio()
4392 mutex_exit(&rp->r_statelock); in nfs3_bio()
4395 mutex_exit(&rp->r_statelock); in nfs3_bio()
4419 mutex_enter(&rp->r_statelock); in nfs3_bio()
4421 rp->r_flags |= RSTALE; in nfs3_bio()
4422 if (!rp->r_error) in nfs3_bio()
4423 rp->r_error = error; in nfs3_bio()
4424 } else if (!rp->r_error && in nfs3_bio()
4428 rp->r_error = error; in nfs3_bio()
4430 mutex_exit(&rp->r_statelock); in nfs3_bio()
4434 error = rp->r_error; in nfs3_bio()
4456 rnode_t *rp; in nfs3_fid() local
4460 rp = VTOR(vp); in nfs3_fid()
4462 if (fidp->fid_len < (ushort_t)rp->r_fh.fh_len) { in nfs3_fid()
4463 fidp->fid_len = rp->r_fh.fh_len; in nfs3_fid()
4466 fidp->fid_len = rp->r_fh.fh_len; in nfs3_fid()
4467 bcopy(rp->r_fh.fh_buf, fidp->fid_data, fidp->fid_len); in nfs3_fid()
4475 rnode_t *rp = VTOR(vp); in nfs3_rwlock() local
4478 (void) nfs_rw_enter_sig(&rp->r_rwlock, RW_READER, FALSE); in nfs3_rwlock()
4482 if ((rp->r_flags & RDIRECTIO) || (VTOMI(vp)->mi_flags & MI_DIRECTIO)) { in nfs3_rwlock()
4483 (void) nfs_rw_enter_sig(&rp->r_rwlock, RW_READER, FALSE); in nfs3_rwlock()
4484 if (rp->r_mapcnt == 0 && !vn_has_cached_data(vp)) in nfs3_rwlock()
4486 nfs_rw_exit(&rp->r_rwlock); in nfs3_rwlock()
4489 (void) nfs_rw_enter_sig(&rp->r_rwlock, RW_WRITER, FALSE); in nfs3_rwlock()
4497 rnode_t *rp = VTOR(vp); in nfs3_rwunlock() local
4499 nfs_rw_exit(&rp->r_rwlock); in nfs3_rwunlock()
4537 rnode_t *rp; in nfs3_getpage() local
4556 rp = VTOR(vp); in nfs3_getpage()
4559 mutex_enter(&rp->r_statelock); in nfs3_getpage()
4573 rp->r_awcount > 2 * mi->mi_max_threads) || in nfs3_getpage()
4574 rp->r_gcount > 0) in nfs3_getpage()
4575 cv_wait(&rp->r_cv, &rp->r_statelock); in nfs3_getpage()
4583 if (off + len > rp->r_size + PAGEOFFSET && seg != segkmap) { in nfs3_getpage()
4584 mutex_exit(&rp->r_statelock); in nfs3_getpage()
4588 mutex_exit(&rp->r_statelock); in nfs3_getpage()
4613 rnode_t *rp; in nfs3_getapage() local
4632 rp = VTOR(vp); in nfs3_getapage()
4656 mutex_enter(&rp->r_statelock); in nfs3_getapage()
4671 else if (blkoff == rp->r_nextr) in nfs3_getapage()
4673 else if (rp->r_nextr > blkoff && in nfs3_getapage()
4674 ((ra_window = (rp->r_nextr - blkoff) / bsize) in nfs3_getapage()
4680 rablkoff = rp->r_nextr; in nfs3_getapage()
4681 while (readahead > 0 && rablkoff + bsize < rp->r_size) { in nfs3_getapage()
4682 mutex_exit(&rp->r_statelock); in nfs3_getapage()
4686 mutex_enter(&rp->r_statelock); in nfs3_getapage()
4697 mutex_enter(&rp->r_statelock); in nfs3_getapage()
4703 rp->r_nextr = rablkoff; in nfs3_getapage()
4705 mutex_exit(&rp->r_statelock); in nfs3_getapage()
4724 mutex_enter(&rp->r_statelock); in nfs3_getapage()
4725 rp->r_nextr = off + PAGESIZE; in nfs3_getapage()
4726 mutex_exit(&rp->r_statelock); in nfs3_getapage()
4733 mutex_enter(&rp->r_statelock); in nfs3_getapage()
4734 if (blkoff < rp->r_size && in nfs3_getapage()
4735 blkoff + bsize >= rp->r_size) { in nfs3_getapage()
4740 if (rp->r_size <= off) { in nfs3_getapage()
4747 blksize = rp->r_size - blkoff; in nfs3_getapage()
4749 (off != rp->r_nextr && !readahead_issued)) { in nfs3_getapage()
4754 mutex_exit(&rp->r_statelock); in nfs3_getapage()
4800 mutex_enter(&rp->r_statelock); in nfs3_getapage()
4801 if (io_off >= rp->r_size && seg == segkmap) { in nfs3_getapage()
4802 mutex_exit(&rp->r_statelock); in nfs3_getapage()
4805 mutex_exit(&rp->r_statelock); in nfs3_getapage()
4836 mutex_enter(&rp->r_statelock); in nfs3_getapage()
4837 rp->r_nextr = io_off + io_len; in nfs3_getapage()
4838 mutex_exit(&rp->r_statelock); in nfs3_getapage()
4887 rnode_t *rp = VTOR(vp); in nfs3_readahead() local
4893 mutex_enter(&rp->r_statelock); in nfs3_readahead()
4894 if (blkoff < rp->r_size && blkoff + bsize > rp->r_size) { in nfs3_readahead()
4899 blksize = rp->r_size - blkoff; in nfs3_readahead()
4902 mutex_exit(&rp->r_statelock); in nfs3_readahead()
4947 mutex_enter(&rp->r_statelock); in nfs3_readahead()
4948 if (io_off >= rp->r_size && seg == segkmap) { in nfs3_readahead()
4949 mutex_exit(&rp->r_statelock); in nfs3_readahead()
4953 mutex_exit(&rp->r_statelock); in nfs3_readahead()
4977 if (error && rp->r_nextr > io_off) { in nfs3_readahead()
4978 mutex_enter(&rp->r_statelock); in nfs3_readahead()
4979 if (rp->r_nextr > io_off) in nfs3_readahead()
4980 rp->r_nextr = io_off; in nfs3_readahead()
4981 mutex_exit(&rp->r_statelock); in nfs3_readahead()
4999 rnode_t *rp; in nfs3_putpage() local
5013 rp = VTOR(vp); in nfs3_putpage()
5014 mutex_enter(&rp->r_statelock); in nfs3_putpage()
5015 rp->r_count++; in nfs3_putpage()
5016 mutex_exit(&rp->r_statelock); in nfs3_putpage()
5018 mutex_enter(&rp->r_statelock); in nfs3_putpage()
5019 rp->r_count--; in nfs3_putpage()
5020 cv_broadcast(&rp->r_cv); in nfs3_putpage()
5021 mutex_exit(&rp->r_statelock); in nfs3_putpage()
5039 rnode_t *rp; in nfs3_putapage() local
5046 rp = VTOR(vp); in nfs3_putapage()
5047 ASSERT(rp->r_count > 0); in nfs3_putapage()
5102 if (rp->r_flags & RMODINPROGRESS) { in nfs3_putapage()
5103 mutex_enter(&rp->r_statelock); in nfs3_putapage()
5104 if ((rp->r_flags & RMODINPROGRESS) && in nfs3_putapage()
5105 rp->r_modaddr + MAXBSIZE > io_off && in nfs3_putapage()
5106 rp->r_modaddr < io_off + io_len) { in nfs3_putapage()
5126 rp->r_flags |= RDIRTY; in nfs3_putapage()
5127 mutex_exit(&rp->r_statelock); in nfs3_putapage()
5134 mutex_exit(&rp->r_statelock); in nfs3_putapage()
5155 rnode_t *rp; in nfs3_sync_putapage() local
5163 rp = VTOR(vp); in nfs3_sync_putapage()
5168 if (!(rp->r_flags & ROUTOFSPACE)) { in nfs3_sync_putapage()
5169 mutex_enter(&rp->r_statelock); in nfs3_sync_putapage()
5170 rp->r_flags |= ROUTOFSPACE; in nfs3_sync_putapage()
5171 mutex_exit(&rp->r_statelock); in nfs3_sync_putapage()
5199 else if (rp->r_flags & ROUTOFSPACE) { in nfs3_sync_putapage()
5200 mutex_enter(&rp->r_statelock); in nfs3_sync_putapage()
5201 rp->r_flags &= ~ROUTOFSPACE; in nfs3_sync_putapage()
5202 mutex_exit(&rp->r_statelock); in nfs3_sync_putapage()
5220 rnode_t *rp; in nfs3_map() local
5259 rp = VTOR(vp); in nfs3_map()
5274 if (nfs_rw_enter_sig(&rp->r_rwlock, RW_WRITER, INTR(vp))) in nfs3_map()
5276 atomic_inc_uint(&rp->r_inmap); in nfs3_map()
5277 nfs_rw_exit(&rp->r_rwlock); in nfs3_map()
5279 if (nfs_rw_enter_sig(&rp->r_lkserlock, RW_READER, INTR(vp))) { in nfs3_map()
5280 atomic_dec_uint(&rp->r_inmap); in nfs3_map()
5321 nfs_rw_exit(&rp->r_lkserlock); in nfs3_map()
5322 atomic_dec_uint(&rp->r_inmap); in nfs3_map()
5332 rnode_t *rp; in nfs3_addmap() local
5339 rp = VTOR(vp); in nfs3_addmap()
5340 atomic_add_long((ulong_t *)&rp->r_mapcnt, btopr(len)); in nfs3_addmap()
5354 rnode_t *rp; in nfs3_frlock() local
5420 rp = VTOR(vp); in nfs3_frlock()
5426 if (nfs_rw_enter_sig(&rp->r_lkserlock, RW_WRITER, intr)) in nfs3_frlock()
5445 mutex_enter(&rp->r_statelock); in nfs3_frlock()
5446 while (rp->r_count > 0) { in nfs3_frlock()
5452 if (cv_wait_sig(&rp->r_cv, in nfs3_frlock()
5453 &rp->r_statelock) == 0) { in nfs3_frlock()
5462 cv_wait(&rp->r_cv, &rp->r_statelock); in nfs3_frlock()
5464 mutex_exit(&rp->r_statelock); in nfs3_frlock()
5470 mutex_enter(&rp->r_statelock); in nfs3_frlock()
5471 if (!rp->r_error) in nfs3_frlock()
5472 rp->r_error = error; in nfs3_frlock()
5473 mutex_exit(&rp->r_statelock); in nfs3_frlock()
5495 nfs_rw_exit(&rp->r_lkserlock); in nfs3_frlock()
5575 rnode_t *rp; in nfs3_delmap() local
5587 rp = VTOR(vp); in nfs3_delmap()
5619 caller_found = nfs_find_and_delete_delmapcall(rp, &error); in nfs3_delmap()
5637 mutex_enter(&rp->r_statelock); in nfs3_delmap()
5638 list_insert_tail(&rp->r_indelmap, delmap_call); in nfs3_delmap()
5639 mutex_exit(&rp->r_statelock); in nfs3_delmap()
5672 rnode_t *rp; in nfs3_delmap_callback() local
5676 rp = VTOR(dmapp->vp); in nfs3_delmap_callback()
5679 atomic_add_long((ulong_t *)&rp->r_mapcnt, -btopr(dmapp->len)); in nfs3_delmap_callback()
5680 ASSERT(rp->r_mapcnt >= 0); in nfs3_delmap_callback()
5689 mutex_enter(&rp->r_statelock); in nfs3_delmap_callback()
5690 rp->r_flags |= RDIRTY; in nfs3_delmap_callback()
5691 mutex_exit(&rp->r_statelock); in nfs3_delmap_callback()
5706 mutex_enter(&rp->r_statelock); in nfs3_delmap_callback()
5707 error = rp->r_error; in nfs3_delmap_callback()
5708 rp->r_error = 0; in nfs3_delmap_callback()
5709 mutex_exit(&rp->r_statelock); in nfs3_delmap_callback()
5714 if ((rp->r_flags & RDIRECTIO) || (mi->mi_flags & MI_DIRECTIO)) in nfs3_delmap_callback()
5740 rnode_t *rp; in nfs3_pathconf() local
5793 rnode_t *rp; in nfs3_pathconf() local
5800 rp = VTOR(vp); in nfs3_pathconf()
5801 if (nfs_rw_enter_sig(&rp->r_rwlock, RW_READER, in nfs3_pathconf()
5809 nfs_rw_exit(&rp->r_rwlock); in nfs3_pathconf()
5822 rp = VTOR(vp); in nfs3_pathconf()
5823 if (rp->r_pathconf != NULL) { in nfs3_pathconf()
5824 mutex_enter(&rp->r_statelock); in nfs3_pathconf()
5825 if (rp->r_pathconf != NULL && nfs3_pathconf_disable_cache) { in nfs3_pathconf()
5826 kmem_free(rp->r_pathconf, sizeof (*rp->r_pathconf)); in nfs3_pathconf()
5827 rp->r_pathconf = NULL; in nfs3_pathconf()
5829 if (rp->r_pathconf != NULL) { in nfs3_pathconf()
5833 *valp = rp->r_pathconf->link_max; in nfs3_pathconf()
5836 *valp = rp->r_pathconf->name_max; in nfs3_pathconf()
5843 *valp = rp->r_pathconf->chown_restricted; in nfs3_pathconf()
5846 *valp = rp->r_pathconf->no_trunc; in nfs3_pathconf()
5852 mutex_exit(&rp->r_statelock); in nfs3_pathconf()
5858 mutex_exit(&rp->r_statelock); in nfs3_pathconf()
5888 mutex_enter(&rp->r_statelock); in nfs3_pathconf()
5889 if (rp->r_pathconf == NULL) { in nfs3_pathconf()
5890 rp->r_pathconf = kmem_alloc( in nfs3_pathconf()
5891 sizeof (*rp->r_pathconf), KM_NOSLEEP); in nfs3_pathconf()
5892 if (rp->r_pathconf != NULL) in nfs3_pathconf()
5893 *rp->r_pathconf = res.resok.info; in nfs3_pathconf()
5895 mutex_exit(&rp->r_statelock); in nfs3_pathconf()
5950 rnode_t *rp; in nfs3_pageio() local
5957 rp = VTOR(vp); in nfs3_pageio()
5958 mutex_enter(&rp->r_statelock); in nfs3_pageio()
5959 rp->r_count++; in nfs3_pageio()
5960 mutex_exit(&rp->r_statelock); in nfs3_pageio()
5967 mutex_enter(&rp->r_statelock); in nfs3_pageio()
5968 rp->r_count--; in nfs3_pageio()
5969 cv_broadcast(&rp->r_cv); in nfs3_pageio()
5970 mutex_exit(&rp->r_statelock); in nfs3_pageio()
5980 rnode_t *rp; in nfs3_dispose() local
5997 rp = VTOR(vp); in nfs3_dispose()
6005 if (pp->p_fsdata == C_NOCOMMIT || (rp->r_flags & RSTALE)) { in nfs3_dispose()
6020 mutex_enter(&rp->r_statelock); in nfs3_dispose()
6021 if ((rp->r_flags & RTRUNCATE) && pp->p_offset >= rp->r_truncaddr) { in nfs3_dispose()
6022 mutex_exit(&rp->r_statelock); in nfs3_dispose()
6044 if (rp->r_flags & RCOMMITWAIT) { in nfs3_dispose()
6046 mutex_exit(&rp->r_statelock); in nfs3_dispose()
6052 mutex_exit(&rp->r_statelock); in nfs3_dispose()
6068 mutex_exit(&rp->r_statelock); in nfs3_dispose()
6082 while (rp->r_flags & RCOMMIT) { in nfs3_dispose()
6083 rp->r_flags |= RCOMMITWAIT; in nfs3_dispose()
6084 cv_wait(&rp->r_commit.c_cv, &rp->r_statelock); in nfs3_dispose()
6085 rp->r_flags &= ~RCOMMITWAIT; in nfs3_dispose()
6087 rp->r_flags |= RCOMMIT; in nfs3_dispose()
6088 mutex_exit(&rp->r_statelock); in nfs3_dispose()
6089 ASSERT(rp->r_commit.c_pages == NULL); in nfs3_dispose()
6090 rp->r_commit.c_pages = pp; in nfs3_dispose()
6091 rp->r_commit.c_commbase = (offset3)pp->p_offset; in nfs3_dispose()
6092 rp->r_commit.c_commlen = PAGESIZE; in nfs3_dispose()
6106 plist = rp->r_commit.c_pages; in nfs3_dispose()
6107 rp->r_commit.c_pages = NULL; in nfs3_dispose()
6108 offset = rp->r_commit.c_commbase; in nfs3_dispose()
6109 len = rp->r_commit.c_commlen; in nfs3_dispose()
6110 mutex_enter(&rp->r_statelock); in nfs3_dispose()
6111 rp->r_flags &= ~RCOMMIT; in nfs3_dispose()
6112 cv_broadcast(&rp->r_commit.c_cv); in nfs3_dispose()
6113 mutex_exit(&rp->r_statelock); in nfs3_dispose()
6183 rnode_t *rp; in nfs3_commit() local
6189 rp = VTOR(vp); in nfs3_commit()
6192 mutex_enter(&rp->r_statelock); in nfs3_commit()
6193 if (rp->r_cred != NULL) { in nfs3_commit()
6194 cred = rp->r_cred; in nfs3_commit()
6197 rp->r_cred = cr; in nfs3_commit()
6202 mutex_exit(&rp->r_statelock); in nfs3_commit()
6222 ASSERT(rp->r_flags & RHAVEVERF); in nfs3_commit()
6223 mutex_enter(&rp->r_statelock); in nfs3_commit()
6224 if (rp->r_verf == res.resok.verf) { in nfs3_commit()
6225 mutex_exit(&rp->r_statelock); in nfs3_commit()
6229 rp->r_verf = res.resok.verf; in nfs3_commit()
6230 mutex_exit(&rp->r_statelock); in nfs3_commit()
6234 mutex_enter(&rp->r_statelock); in nfs3_commit()
6236 if (rp->r_cred != NULL) in nfs3_commit()
6237 crfree(rp->r_cred); in nfs3_commit()
6238 rp->r_cred = cr; in nfs3_commit()
6242 mutex_exit(&rp->r_statelock); in nfs3_commit()
6245 mutex_exit(&rp->r_statelock); in nfs3_commit()
6255 mutex_enter(&rp->r_statelock); in nfs3_commit()
6256 rp->r_flags |= RSTALE; in nfs3_commit()
6257 if (!rp->r_error) in nfs3_commit()
6258 rp->r_error = error; in nfs3_commit()
6259 mutex_exit(&rp->r_statelock); in nfs3_commit()
6262 mutex_enter(&rp->r_statelock); in nfs3_commit()
6263 if (!rp->r_error) in nfs3_commit()
6264 rp->r_error = error; in nfs3_commit()
6265 mutex_exit(&rp->r_statelock); in nfs3_commit()
6293 rnode_t *rp; in nfs3_get_commit() local
6297 rp = VTOR(vp); in nfs3_get_commit()
6299 ASSERT(rp->r_flags & RCOMMIT); in nfs3_get_commit()
6357 if (rp->r_commit.c_pages == NULL) { in nfs3_get_commit()
6358 rp->r_commit.c_commbase = (offset3)pp->p_offset; in nfs3_get_commit()
6359 rp->r_commit.c_commlen = PAGESIZE; in nfs3_get_commit()
6360 } else if (pp->p_offset < rp->r_commit.c_commbase) { in nfs3_get_commit()
6361 rp->r_commit.c_commlen = rp->r_commit.c_commbase - in nfs3_get_commit()
6362 (offset3)pp->p_offset + rp->r_commit.c_commlen; in nfs3_get_commit()
6363 rp->r_commit.c_commbase = (offset3)pp->p_offset; in nfs3_get_commit()
6364 } else if ((rp->r_commit.c_commbase + rp->r_commit.c_commlen) in nfs3_get_commit()
6366 rp->r_commit.c_commlen = (offset3)pp->p_offset - in nfs3_get_commit()
6367 rp->r_commit.c_commbase + PAGESIZE; in nfs3_get_commit()
6369 page_add(&rp->r_commit.c_pages, pp); in nfs3_get_commit()
6389 rnode_t *rp; in nfs3_get_commit_range() local
6396 rp = VTOR(vp); in nfs3_get_commit_range()
6398 ASSERT(rp->r_flags & RCOMMIT); in nfs3_get_commit_range()
6436 if (rp->r_commit.c_pages == NULL) { in nfs3_get_commit_range()
6437 rp->r_commit.c_commbase = (offset3)pp->p_offset; in nfs3_get_commit_range()
6438 rp->r_commit.c_commlen = PAGESIZE; in nfs3_get_commit_range()
6440 rp->r_commit.c_commlen = (offset3)pp->p_offset - in nfs3_get_commit_range()
6441 rp->r_commit.c_commbase + PAGESIZE; in nfs3_get_commit_range()
6443 page_add(&rp->r_commit.c_pages, pp); in nfs3_get_commit_range()
6452 rnode_t *rp = VTOR(vp); in nfs3_putpage_commit() local
6476 mutex_enter(&rp->r_statelock); in nfs3_putpage_commit()
6477 write_verf = rp->r_verf; in nfs3_putpage_commit()
6478 mutex_exit(&rp->r_statelock); in nfs3_putpage_commit()
6496 mutex_enter(&rp->r_statelock); in nfs3_putpage_commit()
6497 if (rp->r_verf != write_verf) { in nfs3_putpage_commit()
6498 mutex_exit(&rp->r_statelock); in nfs3_putpage_commit()
6501 mutex_exit(&rp->r_statelock); in nfs3_putpage_commit()
6520 rnode_t *rp; in nfs3_commit_vp() local
6526 rp = VTOR(vp); in nfs3_commit_vp()
6534 mutex_enter(&rp->r_statelock); in nfs3_commit_vp()
6535 while (rp->r_flags & RCOMMIT) { in nfs3_commit_vp()
6536 rp->r_flags |= RCOMMITWAIT; in nfs3_commit_vp()
6537 cv_wait(&rp->r_commit.c_cv, &rp->r_statelock); in nfs3_commit_vp()
6538 rp->r_flags &= ~RCOMMITWAIT; in nfs3_commit_vp()
6540 rp->r_flags |= RCOMMIT; in nfs3_commit_vp()
6541 mutex_exit(&rp->r_statelock); in nfs3_commit_vp()
6556 plist = rp->r_commit.c_pages; in nfs3_commit_vp()
6557 rp->r_commit.c_pages = NULL; in nfs3_commit_vp()
6558 offset = rp->r_commit.c_commbase; in nfs3_commit_vp()
6559 len = rp->r_commit.c_commlen; in nfs3_commit_vp()
6560 mutex_enter(&rp->r_statelock); in nfs3_commit_vp()
6561 rp->r_flags &= ~RCOMMIT; in nfs3_commit_vp()
6562 cv_broadcast(&rp->r_commit.c_cv); in nfs3_commit_vp()
6563 mutex_exit(&rp->r_statelock); in nfs3_commit_vp()