Lines Matching defs:dp

219 	struct nfscldeleg *dp;
254 dp = NULL;
257 LIST_FOREACH(dp, NFSCLDELEGHASH(clp, nfhp, fhlen), nfsdl_hash) {
258 if (dp->nfsdl_fhlen == fhlen &&
259 !NFSBCMP(nfhp, dp->nfsdl_fh, fhlen)) {
261 (dp->nfsdl_flags & NFSCLDL_WRITE))
263 dp = NULL;
269 if (dp != NULL) {
271 ohp = &dp->nfsdl_owner;
289 nfscl_newopen(clp, dp, &owp, &nowp, &op, &nop, own, nfhp, fhlen,
297 if (nfhp != NULL && dp != NULL && nop == NULL)
305 if (retp != NULL && dp == NULL)
346 nfscl_newopen(struct nfsclclient *clp, struct nfscldeleg *dp,
369 if (dp != NULL) {
371 LIST_INSERT_HEAD(&dp->nfsdl_owner, nowp, nfsow_list);
404 if (dp != NULL) {
405 TAILQ_REMOVE(&clp->nfsc_deleg, dp, nfsdl_list);
406 TAILQ_INSERT_HEAD(&clp->nfsc_deleg, dp,
408 dp->nfsdl_timestamp = NFSD_MONOSEC + 120;
431 struct nfscldeleg *dp = *dpp, *tdp;
438 if (mp != NULL && dp != NULL && !NFSMNT_RDONLY(mp) &&
439 (dp->nfsdl_flags & NFSCLDL_READ)) {
440 (void) nfscl_trydelegreturn(dp, cred, VFSTONFS(mp), p);
441 FREE((caddr_t)dp, M_NFSCLDELEG);
450 if (dp == NULL) {
455 TAILQ_INSERT_HEAD(&clp->nfsc_deleg, dp, nfsdl_list);
456 LIST_INSERT_HEAD(NFSCLDELEGHASH(clp, nfhp, fhlen), dp,
458 dp->nfsdl_timestamp = NFSD_MONOSEC + 120;
465 if (dp != NULL) {
467 FREE((caddr_t)dp, M_NFSCLDELEG);
483 struct nfscldeleg *dp;
485 LIST_FOREACH(dp, NFSCLDELEGHASH(clp, fhp, fhlen), nfsdl_hash) {
486 if (dp->nfsdl_fhlen == fhlen &&
487 !NFSBCMP(dp->nfsdl_fh, fhp, fhlen))
490 return (dp);
507 struct nfscldeleg *dp;
545 LIST_FOREACH(dp, NFSCLDELEGHASH(clp, nfhp, fhlen), nfsdl_hash) {
546 if (dp->nfsdl_fhlen == fhlen &&
547 !NFSBCMP(nfhp, dp->nfsdl_fh, fhlen)) {
549 (dp->nfsdl_flags & NFSCLDL_WRITE)) {
550 stateidp->seqid = dp->nfsdl_stateid.seqid;
551 stateidp->other[0] = dp->nfsdl_stateid.other[0];
552 stateidp->other[1] = dp->nfsdl_stateid.other[1];
553 stateidp->other[2] = dp->nfsdl_stateid.other[2];
555 TAILQ_REMOVE(&clp->nfsc_deleg, dp,
557 TAILQ_INSERT_HEAD(&clp->nfsc_deleg, dp,
559 dp->nfsdl_timestamp = NFSD_MONOSEC +
561 dp->nfsdl_rwlock.nfslock_usecnt++;
562 *lckpp = (void *)&dp->nfsdl_rwlock;
993 struct nfscldeleg *dp = NULL, *ldp = NULL;
1062 ldp = dp = nfscl_finddeleg(clp, np->n_fhp->nfh_fh,
1065 if (dp != NULL && ((dp->nfsdl_flags &
1068 (dp->nfsdl_flags & NFSCLDL_WRITE) == 0)))
1069 dp = NULL;
1071 if (dp != NULL) {
1073 ret = nfscl_getopen(&dp->nfsdl_owner, np->n_fhp->nfh_fh,
1080 lhp = &dp->nfsdl_lock;
1081 TAILQ_REMOVE(&clp->nfsc_deleg, dp, nfsdl_list);
1082 TAILQ_INSERT_HEAD(&clp->nfsc_deleg, dp, nfsdl_list);
1083 dp->nfsdl_timestamp = NFSD_MONOSEC + 120;
1086 dp = NULL;
1192 struct nfscldeleg *dp;
1224 dp = NULL;
1227 dp = nfscl_finddeleg(clp, np->n_fhp->nfh_fh,
1233 if (dp != NULL) {
1235 LIST_FOREACH(lp, &dp->nfsdl_lock, nfsl_list) {
1341 struct nfscldeleg *dp;
1380 dp = nfscl_finddeleg(clp, np->n_fhp->nfh_fh, np->n_fhp->nfh_len);
1381 if (dp != NULL) {
1382 LIST_FOREACH(lp, &dp->nfsdl_lock, nfsl_list) {
1497 struct nfscldeleg *dp;
1515 dp = NULL;
1517 op->nfso_fhlen, op->nfso_mode, op, &dp, cred, p);
1520 if (dp != NULL) {
1521 FREE((caddr_t)dp, M_NFSCLDELEG);
1522 dp = NULL;
1525 if (dp != NULL)
1527 op->nfso_fhlen, cred, p, &dp);
1591 nfscl_cleandeleg(struct nfscldeleg *dp)
1596 LIST_FOREACH_SAFE(owp, &dp->nfsdl_owner, nfsow_list, nowp) {
1605 nfscl_freealllocks(&dp->nfsdl_lock, 1);
1612 nfscl_freedeleg(struct nfscldeleghead *hdp, struct nfscldeleg *dp)
1615 TAILQ_REMOVE(hdp, dp, nfsdl_list);
1616 LIST_REMOVE(dp, nfsdl_hash);
1617 FREE((caddr_t)dp, M_NFSCLDELEG);
1657 struct nfscldeleg *dp, *ndp;
1663 dp = TAILQ_FIRST(&clp->nfsc_deleg);
1664 while (dp != NULL) {
1665 ndp = TAILQ_NEXT(dp, nfsdl_list);
1666 owp = LIST_FIRST(&dp->nfsdl_owner);
1710 if (!printed && !LIST_EMPTY(&dp->nfsdl_lock)) {
1714 nfscl_cleandeleg(dp);
1715 nfscl_freedeleg(&clp->nfsc_deleg, dp);
1716 dp = ndp;
1747 struct nfscldeleg *dp;
1750 TAILQ_FOREACH(dp, &clp->nfsc_deleg, nfsdl_list) {
1751 LIST_FOREACH_SAFE(lp, &dp->nfsdl_lock, nfsl_list, nlp) {
1788 struct nfscldeleg *dp;
1810 TAILQ_FOREACH(dp, &clp->nfsc_deleg, nfsdl_list) {
1811 LIST_FOREACH_SAFE(lp, &dp->nfsdl_lock, nfsl_list, nlp) {
1968 struct nfscldeleg *dp, *ndp, *tdp;
2042 TAILQ_FOREACH(dp, &clp->nfsc_deleg, nfsdl_list)
2043 dp->nfsdl_flags |= NFSCLDL_NEEDRECLAIM;
2060 TAILQ_FOREACH(dp, &clp->nfsc_deleg, nfsdl_list) {
2061 if (!(dp->nfsdl_flags & NFSCLDL_NEEDRECLAIM))
2063 if ((dp->nfsdl_flags & NFSCLDL_WRITE)) {
2071 op->nfso_fhlen == dp->nfsdl_fhlen &&
2072 !NFSBCMP(op->nfso_fh, dp->nfsdl_fh, op->nfso_fhlen))
2075 ndp = dp;
2076 if (dp == NULL)
2091 TAILQ_FOREACH(dp, &clp->nfsc_deleg, nfsdl_list) {
2092 if (!(dp->nfsdl_flags & NFSCLDL_NEEDRECLAIM))
2095 op->nfso_fhlen == dp->nfsdl_fhlen &&
2096 !NFSBCMP(op->nfso_fh, dp->nfsdl_fh,
2098 dp->nfsdl_stateid = ndp->nfsdl_stateid;
2099 dp->nfsdl_sizelimit = ndp->nfsdl_sizelimit;
2100 dp->nfsdl_ace = ndp->nfsdl_ace;
2101 dp->nfsdl_change = ndp->nfsdl_change;
2102 dp->nfsdl_flags &= ~NFSCLDL_NEEDRECLAIM;
2104 dp->nfsdl_flags |= NFSCLDL_RECALL;
2156 dp = TAILQ_FIRST(&clp->nfsc_deleg);
2157 while (dp != NULL) {
2158 ndp = TAILQ_NEXT(dp, nfsdl_list);
2159 if ((dp->nfsdl_flags & NFSCLDL_NEEDRECLAIM)) {
2178 dp->nfsdl_fhlen - 1, M_NFSCLOPEN, M_WAITOK);
2180 if ((dp->nfsdl_flags & NFSCLDL_WRITE)) {
2189 nop->nfso_fhlen = dp->nfsdl_fhlen;
2190 NFSBCOPY(dp->nfsdl_fh, nop->nfso_fh, dp->nfsdl_fhlen);
2196 newnfs_copycred(&dp->nfsdl_cred, tcred);
2212 dp->nfsdl_stateid = tdp->nfsdl_stateid;
2213 dp->nfsdl_sizelimit = tdp->nfsdl_sizelimit;
2214 dp->nfsdl_ace = tdp->nfsdl_ace;
2215 dp->nfsdl_change = tdp->nfsdl_change;
2216 dp->nfsdl_flags &= ~NFSCLDL_NEEDRECLAIM;
2218 dp->nfsdl_flags |= NFSCLDL_RECALL;
2232 nfscl_cleandeleg(dp);
2233 nfscl_freedeleg(&clp->nfsc_deleg, dp);
2238 dp = ndp;
2257 TAILQ_FOREACH_SAFE(dp, &extra_deleg, nfsdl_list, ndp) {
2259 newnfs_copycred(&dp->nfsdl_cred, tcred);
2260 error = nfscl_trydelegreturn(dp, tcred, nmp, p);
2264 TAILQ_REMOVE(&extra_deleg, dp, nfsdl_list);
2265 FREE((caddr_t)dp, M_NFSCLDELEG);
2521 struct nfscldeleg *dp, *ndp;
2621 dp = TAILQ_FIRST(&clp->nfsc_deleg);
2622 while (dp != NULL) {
2623 ndp = TAILQ_NEXT(dp, nfsdl_list);
2624 if ((dp->nfsdl_flags & NFSCLDL_RECALL)) {
2628 if (dp->nfsdl_rwlock.nfslock_usecnt > 0) {
2633 dp->nfsdl_rwlock.nfslock_lock |=
2635 (void) nfsmsleep(&dp->nfsdl_rwlock,
2647 newnfs_copycred(&dp->nfsdl_cred, cred);
2648 ret = nfscl_recalldeleg(clp, clp->nfsc_nmp, dp,
2651 nfscl_cleandeleg(dp);
2652 TAILQ_REMOVE(&clp->nfsc_deleg, dp,
2654 LIST_REMOVE(dp, nfsdl_hash);
2655 TAILQ_INSERT_HEAD(&dh, dp, nfsdl_list);
2661 dp = ndp;
2669 dp = TAILQ_LAST(&clp->nfsc_deleg, nfscldeleghead);
2670 while (nfscl_delegcnt > nfscl_deleghighwater && dp != NULL) {
2671 ndp = TAILQ_PREV(dp, nfscldeleghead, nfsdl_list);
2672 if (dp->nfsdl_rwlock.nfslock_usecnt == 0 &&
2673 dp->nfsdl_rwlock.nfslock_lock == 0 &&
2674 dp->nfsdl_timestamp < NFSD_MONOSEC &&
2675 (dp->nfsdl_flags & (NFSCLDL_RECALL | NFSCLDL_ZAPPED |
2678 LIST_FOREACH(owp, &dp->nfsdl_owner, nfsow_list) {
2686 LIST_FOREACH(lp, &dp->nfsdl_lock, nfsl_list) {
2694 TAILQ_REMOVE(&clp->nfsc_deleg, dp, nfsdl_list);
2695 LIST_REMOVE(dp, nfsdl_hash);
2696 TAILQ_INSERT_HEAD(&dh, dp, nfsdl_list);
2701 dp = ndp;
2792 TAILQ_FOREACH_SAFE(dp, &dh, nfsdl_list, ndp) {
2793 newnfs_copycred(&dp->nfsdl_cred, cred);
2794 (void) nfscl_trydelegreturn(dp, cred, clp->nfsc_nmp, p);
2795 TAILQ_REMOVE(&dh, dp, nfsdl_list);
2796 FREE((caddr_t)dp, M_NFSCLDELEG);
2871 struct nfscldeleg *dp;
2879 TAILQ_FOREACH(dp, &clp->nfsc_deleg, nfsdl_list) {
2880 LIST_FOREACH(owp, &dp->nfsdl_owner, nfsow_list) {
3073 struct nfscldeleg *dp;
3093 dp = nfscl_finddeleg(clp, nfhp->nfh_fh, nfhp->nfh_len);
3094 if (dp != NULL) {
3095 LIST_FOREACH(owp, &dp->nfsdl_owner, nfsow_list) {
3147 struct nfscldeleg *dp;
3164 dp = nfscl_finddeleg(clp, nfhp->nfh_fh, nfhp->nfh_len);
3165 if (dp != NULL) {
3166 LIST_FOREACH_SAFE(owp, &dp->nfsdl_owner, nfsow_list, nowp) {
3216 struct nfscldeleg *dp, *ndp;
3220 TAILQ_FOREACH_SAFE(dp, &clp->nfsc_deleg, nfsdl_list, ndp) {
3221 nfscl_cleandeleg(dp);
3222 (void) nfscl_trydelegreturn(dp, cred, clp->nfsc_nmp, p);
3223 nfscl_freedeleg(&clp->nfsc_deleg, dp);
3237 struct nfscldeleg *dp = NULL;
3338 dp = nfscl_finddeleg(clp, nfhp->nfh_fh,
3340 if (dp != NULL) {
3347 dp->nfsdl_size;
3354 dp->nfsdl_change;
3396 dp = nfscl_finddeleg(clp, nfhp->nfh_fh,
3398 if (dp != NULL && (dp->nfsdl_flags &
3400 dp->nfsdl_flags |=
3772 struct nfscllock *nlop, u_int8_t *own, struct nfscldeleg *dp,
3779 if (dp != NULL) {
3780 ret = nfscl_checkconflict(&dp->nfsdl_lock, nlop, own, lopp);
3833 struct nfscldeleg *dp;
3850 dp = nfscl_finddeleg(clp, np->n_fhp->nfh_fh, np->n_fhp->nfh_len);
3852 &nlck, own, dp, &lop);
3863 } else if (dp != NULL && ((dp->nfsdl_flags & NFSCLDL_WRITE) ||
3883 struct nfscldeleg *dp, vnode_t vp, struct ucred *cred, NFSPROC_T *p,
3897 ret = nfscl_ngetreopen(nmp->nm_mountp, dp->nfsdl_fh,
3898 dp->nfsdl_fhlen, p, &np);
3911 dp->nfsdl_flags &= ~NFSCLDL_MODTIMESET;
3919 if ((dp->nfsdl_flags & NFSCLDL_WRITE) && (np->n_flag & NMODIFIED)) {
3943 LIST_FOREACH(lowp, &dp->nfsdl_owner, nfsow_list) {
3954 newnfs_copycred(&dp->nfsdl_cred, cred);
3956 owp, dp, cred, p);
3982 NULL, lowp->nfsow_owner, dp->nfsdl_fh,
3983 dp->nfsdl_fhlen, NULL, NULL);
3984 newnfs_copycred(&dp->nfsdl_cred, cred);
3986 owp, dp, cred, p);
4009 LIST_FOREACH(lp, &dp->nfsdl_lock, nfsl_list) {
4011 newnfs_copycred(&dp->nfsdl_cred, cred);
4037 struct nfsclopen *lop, struct nfsclowner *owp, struct nfscldeleg *dp,
4066 ndp = dp;
4098 struct nfscldeleg *dp;
4100 TAILQ_FOREACH(dp, &clp->nfsc_deleg, nfsdl_list) {
4101 if ((dp->nfsdl_flags & NFSCLDL_DELEGRET) == 0)
4102 dp->nfsdl_flags |= NFSCLDL_RECALL;
4247 nfscl_trydelegreturn(struct nfscldeleg *dp, struct ucred *cred,
4253 error = nfsrpc_delegreturn(dp, cred, nmp, p, 0);
4261 error = nfsrpc_delegreturn(dp, cred, nmp, p, 1);
4307 struct nfscldeleg *dp;
4321 dp = nfscl_finddeleg(clp, np->n_fhp->nfh_fh, np->n_fhp->nfh_len);
4322 if (dp != NULL && (dp->nfsdl_flags &
4325 (dp->nfsdl_sizelimit >= np->n_size ||
4341 struct nfscldeleg *dp;
4355 dp = nfscl_finddeleg(clp, np->n_fhp->nfh_fh, np->n_fhp->nfh_len);
4356 if (dp != NULL &&
4357 (dp->nfsdl_flags & (NFSCLDL_RECALL | NFSCLDL_DELEGRET)) == 0 &&
4358 (writedeleg == 0 || (dp->nfsdl_flags & NFSCLDL_WRITE) ==
4374 struct nfscldeleg *dp;
4398 dp = nfscl_finddeleg(clp, np->n_fhp->nfh_fh,
4400 if (dp != NULL) {
4404 if (dp->nfsdl_rwlock.nfslock_usecnt > 0) {
4409 dp->nfsdl_rwlock.nfslock_lock |= NFSV4LOCK_WANTED;
4410 (void) nfsmsleep(&dp->nfsdl_rwlock,
4415 LIST_FOREACH(owp, &dp->nfsdl_owner, nfsow_list) {
4422 LIST_FOREACH(lp, &dp->nfsdl_lock, nfsl_list) {
4430 dp->nfsdl_flags |= NFSCLDL_DELEGRET;
4442 newnfs_copycred(&dp->nfsdl_cred, cred);
4443 (void) nfscl_recalldeleg(clp, nmp, dp, vp, cred, p, 0);
4451 *stp = dp->nfsdl_stateid;
4453 nfscl_cleandeleg(dp);
4454 nfscl_freedeleg(&clp->nfsc_deleg, dp);
4471 struct nfscldeleg *dp;
4497 dp = nfscl_finddeleg(clp, np->n_fhp->nfh_fh,
4499 if (dp != NULL && *gotfdp == 0) {
4503 if (dp->nfsdl_rwlock.nfslock_usecnt > 0) {
4508 dp->nfsdl_rwlock.nfslock_lock |= NFSV4LOCK_WANTED;
4509 (void) nfsmsleep(&dp->nfsdl_rwlock,
4514 LIST_FOREACH(owp, &dp->nfsdl_owner, nfsow_list) {
4521 LIST_FOREACH(lp, &dp->nfsdl_lock, nfsl_list) {
4529 dp->nfsdl_flags |= NFSCLDL_DELEGRET;
4541 newnfs_copycred(&dp->nfsdl_cred, cred);
4542 (void) nfscl_recalldeleg(clp, nmp, dp, fvp, cred, p, 0);
4550 *fstp = dp->nfsdl_stateid;
4553 nfscl_cleandeleg(dp);
4554 nfscl_freedeleg(&clp->nfsc_deleg, dp);
4562 dp = nfscl_finddeleg(clp, np->n_fhp->nfh_fh,
4564 if (dp != NULL && *gottdp == 0) {
4568 if (dp->nfsdl_rwlock.nfslock_usecnt > 0) {
4569 dp->nfsdl_rwlock.nfslock_lock |= NFSV4LOCK_WANTED;
4570 (void) nfsmsleep(&dp->nfsdl_rwlock,
4574 LIST_FOREACH(owp, &dp->nfsdl_owner, nfsow_list) {
4580 LIST_FOREACH(lp, &dp->nfsdl_lock, nfsl_list) {
4586 *tstp = dp->nfsdl_stateid;
4589 nfscl_cleandeleg(dp);
4590 nfscl_freedeleg(&clp->nfsc_deleg, dp);
4644 struct nfscldeleg *dp;
4657 dp = nfscl_finddeleg(clp, np->n_fhp->nfh_fh, np->n_fhp->nfh_len);
4658 if (dp != NULL && (dp->nfsdl_flags & NFSCLDL_WRITE))
4659 dp->nfsdl_size = np->n_size;
4671 struct nfscldeleg *dp;
4684 dp = nfscl_finddeleg(clp, np->n_fhp->nfh_fh, np->n_fhp->nfh_len);
4685 if (dp != NULL && (dp->nfsdl_flags & NFSCLDL_WRITE))
4686 np->n_size = dp->nfsdl_size;
4698 struct nfscldeleg *dp;
4711 dp = nfscl_finddeleg(clp, np->n_fhp->nfh_fh, np->n_fhp->nfh_len);
4712 if (dp != NULL && (dp->nfsdl_flags & NFSCLDL_WRITE)) {
4713 nanotime(&dp->nfsdl_modtime);
4714 dp->nfsdl_flags |= NFSCLDL_MODTIMESET;
4727 struct nfscldeleg *dp;
4740 dp = nfscl_finddeleg(clp, np->n_fhp->nfh_fh, np->n_fhp->nfh_len);
4741 if (dp != NULL &&
4742 (dp->nfsdl_flags & (NFSCLDL_WRITE | NFSCLDL_MODTIMESET)) ==
4744 *mtime = dp->nfsdl_modtime;