Lines Matching refs:rp

154 	rnode4_t	*rp;
176 rnode4_t *rp;
247 rp = list_head(&sp->s_deleg_list);
248 for (; rp != NULL; rp = list_next(&sp->s_deleg_list, rp)) {
251 sfh4_copyval(rp->r_fh, &fhandle);
276 vp = RTOV4(rp);
321 mutex_enter(&rp->r_statelock);
322 mapcnt = rp->r_mapcnt;
323 rflag = rp->r_flags;
324 mutex_exit(&rp->r_statelock);
326 mutex_enter(&rp->r_statev4_lock);
335 rp->r_deleg_change++;
337 rp->r_deleg_change = rp->r_deleg_change_grant;
338 change = rp->r_deleg_change;
339 mutex_exit(&rp->r_statev4_lock);
357 size = atomic_add_64_nv((uint64_t *)&rp->r_size, 0);
389 rnode4_t *rp;
427 rp = list_head(&sp->s_deleg_list);
428 for (; rp != NULL; rp = list_next(&sp->s_deleg_list, rp)) {
429 mutex_enter(&rp->r_statev4_lock);
433 if ((bcmp(&rp->r_deleg_stateid, &args->stateid,
437 sfh4_copyval(rp->r_fh, &fhandle);
458 mutex_exit(&rp->r_statev4_lock);
467 mutex_exit(&rp->r_statev4_lock);
468 vp = RTOV4(rp);
483 nfs4delegreturn_async(rp, NFS4_DR_RECALL|NFS4_DR_REOPEN,
910 rnode4_t *rp;
927 rp = VTOR4(vp);
935 error = suword32(STRUCT_FGETP(uap, netid), rp->r_deleg_type);
1116 rnode4_t *rp;
1125 while ((rp = list_head(&sp->s_deleg_list)) != NULL) {
1126 mutex_enter(&rp->r_statev4_lock);
1127 if (rp->r_deleg_type == OPEN_DELEGATE_NONE) {
1133 list_remove(&sp->s_deleg_list, rp);
1134 mutex_exit(&rp->r_statev4_lock);
1136 VTOMI4(RTOV4(rp)));
1140 mutex_exit(&rp->r_statev4_lock);
1141 VN_HOLD(RTOV4(rp));
1146 nfs4delegreturn_cleanup_impl(rp, sp, ncg);
1147 VN_RELE(RTOV4(rp));
1286 * 'rp' belongs to and the caller's zone may not be the same). This can happen
1292 nfs4delegreturn_cleanup_impl(rnode4_t *rp, nfs4_server_t *np,
1295 mntinfo4_t *mi = VTOMI4(RTOV4(rp));
1314 mutex_enter(&rp->r_statev4_lock);
1316 if (rp->r_deleg_type == OPEN_DELEGATE_NONE) {
1317 mutex_exit(&rp->r_statev4_lock);
1330 crfree(rp->r_deleg_cred);
1331 rp->r_deleg_cred = NULL;
1332 rp->r_deleg_type = OPEN_DELEGATE_NONE;
1333 rp->r_deleg_needs_recovery = OPEN_DELEGATE_NONE;
1334 rp->r_deleg_needs_recall = FALSE;
1335 rp->r_deleg_return_pending = FALSE;
1341 list_remove(&np->s_deleg_list, rp);
1342 mutex_exit(&rp->r_statev4_lock);
1354 nfs4delegreturn_cleanup(rnode4_t *rp, nfs4_server_t *np)
1360 } else if (nfs_zone() == VTOMI4(RTOV4(rp))->mi_zone) {
1371 nfs4delegreturn_cleanup_impl(rp, np, ncg);
1403 nfs4delegreturn_otw(rnode4_t *rp, cred_t *cr, nfs4_error_t *ep)
1421 argops[0].nfs_argop4_u.opcputfh.sfh = rp->r_fh;
1425 argops[1].nfs_argop4_u.opgetattr.mi = VTOMI4(RTOV4(rp));
1429 rp->r_deleg_stateid;
1432 rfs4call(VTOMI4(RTOV4(rp)), &args, &res, cr, &doqueue, 0, ep);
1439 nfs4_attr_cache(RTOV4(rp), garp, t, cr, TRUE, NULL);
1446 nfs4_do_delegreturn(rnode4_t *rp, int flags, cred_t *cr,
1449 vnode_t *vp = RTOV4(rp);
1466 nfs4delegreturn_cleanup_impl(rp, NULL, ncg);
1478 if (rp->r_deleg_type == OPEN_DELEGATE_NONE) {
1494 NULL, &rp->r_deleg_stateid,
1502 nfs4delegreturn_otw(rp, cr, &e);
1519 NULL, &rp->r_deleg_stateid,
1524 nfs4delegreturn_cleanup_impl(rp, NULL, ncg);
1541 rnode4_t *rp = VTOR4(lorp->lr_vp);
1544 mutex_enter(&rp->r_statelock);
1545 if (rp->r_flags & R4RECOVERR) {
1548 mutex_exit(&rp->r_statelock);
1551 nfs4delegreturn_otw(rp, lorp->lr_cr, ep);
1562 if (rp->r_deleg_type != OPEN_DELEGATE_NONE)
1563 nfs4delegreturn_cleanup(rp, np);
1579 nfs4delegreturn_impl(rnode4_t *rp, int flags, struct nfs4_callback_globals *ncg)
1588 vp = RTOV4(rp);
1597 nfs4delegreturn_cleanup_impl(rp, NULL, ncg);
1612 nfs4delegreturn_async(rp, (flags & ~NFS4_DR_DID_OP), FALSE);
1619 mutex_enter(&rp->r_statev4_lock);
1620 if (rp->r_deleg_type == OPEN_DELEGATE_NONE) {
1621 mutex_exit(&rp->r_statev4_lock);
1624 cr = rp->r_deleg_cred;
1627 mutex_exit(&rp->r_statev4_lock);
1641 (void) nfs_rw_enter_sig(&rp->r_deleg_recall_lock, RW_WRITER, FALSE);
1645 if (rp->r_deleg_type == OPEN_DELEGATE_NONE)
1655 mutex_enter(&rp->r_statelock);
1656 do_reopen = !(rp->r_flags & R4RECOVERRP);
1657 mutex_exit(&rp->r_statelock);
1673 mntinfo4_t *mi = VTOMI4(RTOV4(rp));
1675 mutex_enter(&rp->r_statelock);
1682 if (!rp->r_deleg_return_pending) {
1683 mutex_exit(&rp->r_statelock);
1686 mutex_exit(&rp->r_statelock);
1688 nfs4delegreturn_cleanup_impl(rp, NULL, ncg);
1691 error = nfs4_do_delegreturn(rp, flags, cr, ncg);
1698 nfs_rw_exit(&rp->r_deleg_recall_lock);
1703 nfs4delegreturn(rnode4_t *rp, int flags)
1710 return (nfs4delegreturn_impl(rp, flags, ncg));
1714 nfs4delegreturn_async(rnode4_t *rp, int flags, bool_t trunc)
1719 pp->rp = rp;
1739 rnode4_t *rp;
1770 while ((rp = list_head(&np->s_deleg_list)) != NULL) {
1771 vp = RTOV4(rp);
1774 (void) nfs4delegreturn_impl(rp, NFS4_DR_PUSH|NFS4_DR_REOPEN,
1824 rnode4_t *rp, *next;
1831 for (rp = list_head(&sp->s_deleg_list); rp != NULL; rp = next) {
1832 r_mi = VTOMI4(RTOV4(rp));
1833 next = list_next(&sp->s_deleg_list, rp);
1843 ASSERT(rp->r_deleg_type == OPEN_DELEGATE_READ);
1849 "-- discarding delegation\n", (void *)rp);
1852 mutex_enter(&rp->r_statev4_lock);
1858 if (rp->r_deleg_cred)
1859 crfree(rp->r_deleg_cred);
1860 rp->r_deleg_cred = NULL;
1861 rp->r_deleg_type = OPEN_DELEGATE_NONE;
1862 rp->r_deleg_needs_recovery = OPEN_DELEGATE_NONE;
1863 rp->r_deleg_needs_recall = FALSE;
1866 list_remove(&sp->s_deleg_list, rp);
1867 mutex_exit(&rp->r_statev4_lock);
1888 rnode4_t *rp;
1893 rp = VTOR4(vp);
1914 while ((osp = get_next_deleg_stream(rp, claimnull)) != NULL) {
1929 open_stream_rele(osp, rp);
1940 open_stream_rele(osp, rp);
1963 open_stream_rele(osp, rp);
1968 open_stream_rele(osp, rp);
2001 get_next_deleg_stream(rnode4_t *rp, int claimnull)
2005 ASSERT(nfs_rw_lock_held(&rp->r_deleg_recall_lock, RW_WRITER));
2011 mutex_enter(&rp->r_os_lock);
2012 for (osp = list_head(&rp->r_open_streams); osp != NULL;
2013 osp = list_next(&rp->r_open_streams, osp)) {
2020 if (!claimnull || rp->r_deleg_return_pending ||
2021 !stateid4_cmp(&osp->open_stateid, &rp->r_deleg_stateid)) {
2024 mutex_exit(&rp->r_os_lock);
2029 mutex_exit(&rp->r_os_lock);
2037 rnode4_t *rp;
2054 rp = args->rp;
2055 vp = RTOV4(rp);
2057 mutex_enter(&rp->r_statev4_lock);
2058 if (rp->r_deleg_type == OPEN_DELEGATE_NONE) {
2059 mutex_exit(&rp->r_statev4_lock);
2062 mutex_exit(&rp->r_statev4_lock);
2069 (void) nfs_rw_enter_sig(&rp->r_rwlock, RW_READER, FALSE);
2073 mutex_enter(&rp->r_statev4_lock);
2074 if (rp->r_deleg_type == OPEN_DELEGATE_NONE) {
2075 mutex_exit(&rp->r_statev4_lock);
2076 nfs_rw_exit(&rp->r_rwlock);
2079 dtype = rp->r_deleg_type;
2080 cr = rp->r_deleg_cred;
2083 mutex_exit(&rp->r_statev4_lock);
2098 mutex_enter(&rp->r_statelock);
2099 rdirty = rp->r_flags & R4DIRTY;
2100 mutex_exit(&rp->r_statelock);
2113 mutex_enter(&rp->r_statelock);
2114 rip = rp->r_flags & R4RECOVERRP;
2115 mutex_exit(&rp->r_statelock);
2134 (void) nfs4delegreturn_impl(rp, flags, ncg);
2136 nfs_rw_exit(&rp->r_rwlock);
2153 nfs4_delegation_accept(rnode4_t *rp, open_claim_type4 claim, OPEN4res *res,
2175 mi = VTOMI4(RTOV4(rp));
2191 mutex_enter(&rp->r_statelock);
2192 mutex_enter(&rp->r_statev4_lock);
2194 if (rp->r_deleg_type == OPEN_DELEGATE_READ ||
2195 rp->r_deleg_type == OPEN_DELEGATE_WRITE)
2202 rp->r_deleg_type = res->delegation.delegation_type;
2204 rp->r_deleg_stateid = orp->stateid;
2205 rp->r_deleg_perms = orp->permissions;
2217 rp->r_deleg_type = res->delegation.delegation_type;
2219 rp->r_deleg_stateid = owp->stateid;
2220 rp->r_deleg_perms = owp->permissions;
2221 rp->r_deleg_limit = owp->space_limit;
2230 rp->r_deleg_change = 0;
2231 rp->r_deleg_change_grant = 0;
2233 rp->r_deleg_change = garp->n4g_change;
2234 rp->r_deleg_change_grant = garp->n4g_change;
2236 mapcnt = rp->r_mapcnt;
2237 rflag = rp->r_flags;
2246 rp->r_deleg_change++;
2250 (int)(rp->r_deleg_change >> 32)));
2253 (int)(rp->r_deleg_change_grant >> 32)));
2270 rp->r_deleg_cred = cr;
2273 list_insert_head(&np->s_deleg_list, rp);
2278 rp->r_deleg_needs_recovery = OPEN_DELEGATE_NONE;
2287 mutex_exit(&rp->r_statev4_lock);
2288 mutex_exit(&rp->r_statelock);
2301 mutex_enter(&rp->r_statev4_lock);
2306 if (dr_needed && rp->r_deleg_return_pending == FALSE) {
2324 nfs4_dlistadd(rp, ncg, dr_flags);
2335 mutex_exit(&rp->r_statev4_lock);
2337 (void) nfs4delegreturn_impl(rp, dr_flags, ncg);
2348 nfs4delegabandon(rnode4_t *rp)
2354 mutex_enter(&rp->r_statev4_lock);
2355 dt = rp->r_deleg_type;
2356 mutex_exit(&rp->r_statev4_lock);
2361 vp = RTOV4(rp);
2365 pp->rp = rp;
2390 rnode4_t *rp;
2398 rp = VTOR4(vp);
2404 error = nfs_rw_enter_sig(&rp->r_deleg_recall_lock,
2461 nfs4_dlistadd(rnode4_t *rp, struct nfs4_callback_globals *ncg, int flags)
2465 ASSERT(mutex_owned(&rp->r_statev4_lock));
2471 rp->r_deleg_return_pending = TRUE;
2473 VN_HOLD(RTOV4(rp));
2474 dp->rnodep = rp;
2493 rnode4_t *rp;
2506 rp = dp->rnodep;
2509 (void) nfs4delegreturn_impl(rp, flags, ncg);
2510 VN_RELE(RTOV4(rp));