Lines Matching defs:lfp
106 static void nfsrv_freenfslockfile(struct nfslockfile *lfp);
117 struct nfslock *insert_lop, struct nfsstate *stp, struct nfslockfile *lfp);
119 struct nfslock **other_lopp, struct nfslockfile *lfp);
138 static int nfsrv_cleandeleg(vnode_t vp, struct nfslockfile *lfp,
147 static int nfsrv_locallock(vnode_t vp, struct nfslockfile *lfp, int flags,
149 static void nfsrv_localunlock(vnode_t vp, struct nfslockfile *lfp,
151 static int nfsrv_dolocal(vnode_t vp, struct nfslockfile *lfp, int flags,
154 static void nfsrv_locallock_rollback(vnode_t vp, struct nfslockfile *lfp,
156 static void nfsrv_locallock_commit(struct nfslockfile *lfp, int flags,
158 static void nfsrv_locklf(struct nfslockfile *lfp);
159 static void nfsrv_unlocklf(struct nfslockfile *lfp);
925 struct nfslockfile *lfp;
942 ret = nfsrv_getlockfile(0, NULL, &lfp, &nfh, 0);
955 stp = LIST_FIRST(&lfp->lf_open);
986 lop = LIST_FIRST(&lfp->lf_lock);
1018 stp = LIST_FIRST(&lfp->lf_deleg);
1256 struct nfslockfile *lfp;
1261 lfp = stp->ls_lfp;
1262 if (LIST_EMPTY(&lfp->lf_open) &&
1263 LIST_EMPTY(&lfp->lf_lock) && LIST_EMPTY(&lfp->lf_deleg) &&
1264 LIST_EMPTY(&lfp->lf_locallock) && LIST_EMPTY(&lfp->lf_rollback) &&
1265 lfp->lf_usecount == 0 &&
1266 nfsv4_testlock(&lfp->lf_locallock_lck) == 0)
1267 nfsrv_freenfslockfile(lfp);
1309 struct nfslockfile *lfp;
1316 lfp = stp->ls_lfp;
1333 if (lfp != NULL && LIST_EMPTY(&lfp->lf_open) &&
1334 LIST_EMPTY(&lfp->lf_deleg) && LIST_EMPTY(&lfp->lf_lock) &&
1335 LIST_EMPTY(&lfp->lf_locallock) && LIST_EMPTY(&lfp->lf_rollback) &&
1336 lfp->lf_usecount == 0 &&
1337 (cansleep != 0 || nfsv4_testlock(&lfp->lf_locallock_lck) == 0)) {
1338 nfsrv_freenfslockfile(lfp);
1377 struct nfslockfile *lfp = NULL;
1388 * Since all locks should be for the same file, lfp should
1391 if (lfp == NULL)
1392 lfp = lop->lo_lfp;
1393 else if (lfp != lop->lo_lfp)
1404 tvp = nfsvno_getvp(&lfp->lf_fh);
1417 nfsrv_localunlock(tvp, lfp, first, end, p);
1418 LIST_FOREACH_SAFE(rlp, &lfp->lf_rollback, rlck_list,
1421 LIST_INIT(&lfp->lf_rollback);
1450 nfsrv_freenfslockfile(struct nfslockfile *lfp)
1453 LIST_REMOVE(lfp, lf_hash);
1454 FREE((caddr_t)lfp, M_NFSDLOCKFILE);
1532 struct nfslockfile *lfp;
1589 lfp = NULL;
1607 &lfp, &nfh, 1);
1612 &lfp, &nfh, 0);
1618 LIST_INIT(&lfp->lf_rollback);
1633 reterr = nfsrv_locallock(vp, lfp,
1674 (getlckret == 0 && stp->ls_lfp != lfp))){
1686 getlckret == 0 && stp->ls_lfp != lfp)
1699 getlckret == 0 && stp->ls_lfp != lfp) {
1807 nfsrv_locallock_rollback(vp, lfp, p);
1809 nfsrv_unlocklf(lfp);
1890 nfsrv_locallock_rollback(vp, lfp, p);
1892 nfsrv_unlocklf(lfp);
1904 LIST_FOREACH(tstp, &lfp->lf_open, ls_file) {
1944 ret = nfsrv_cleandeleg(vp, lfp, clp, &haslock, p);
1958 (LIST_EMPTY(&lfp->lf_open) && LIST_EMPTY(&lfp->lf_lock) &&
1959 LIST_EMPTY(&lfp->lf_deleg))) {
1982 tstp = LIST_FIRST(&lfp->lf_deleg);
2002 nfsrv_locallock_rollback(vp, lfp, p);
2004 nfsrv_unlocklf(lfp);
2043 nfsrv_updatelock(stp, new_lopp, &other_lop, lfp);
2058 nfsrv_localunlock(vp, lfp, first, end, p);
2060 nfsrv_unlocklf(lfp);
2073 LIST_FOREACH(lop, &lfp->lf_lock, lo_lckfile) {
2100 nfsrv_locallock_rollback(vp, lfp, p);
2102 nfsrv_unlocklf(lfp);
2148 nfsrv_locallock_rollback(vp, lfp, p);
2150 nfsrv_unlocklf(lfp);
2177 nfsrv_updatelock(lckstp, new_lopp, &other_lop, lfp);
2201 new_stp->ls_lfp = lfp;
2203 lfp);
2214 nfsrv_locallock_commit(lfp, lock_flags, first, end);
2216 nfsrv_unlocklf(lfp);
2250 struct nfslockfile *lfp, *new_lfp;
2350 error = nfsrv_getlockfile(new_stp->ls_flags, &new_lfp, &lfp,
2376 LIST_FOREACH(stp, &lfp->lf_deleg, ls_file) {
2403 LIST_FOREACH(stp, &lfp->lf_open, ls_file) {
2456 stp = LIST_FIRST(&lfp->lf_deleg);
2502 struct nfslockfile *lfp, *new_lfp;
2605 error = nfsrv_getlockfile(new_stp->ls_flags, &new_lfp, &lfp,
2635 LIST_FOREACH(stp, &lfp->lf_deleg, ls_file) {
2675 LIST_FOREACH(stp, &lfp->lf_open, ls_file) {
2746 stp = LIST_FIRST(&lfp->lf_deleg);
2797 if (stp->ls_lfp == lfp) {
2837 new_open->ls_lfp = lfp;
2840 LIST_INSERT_HEAD(&lfp->lf_open, new_open, ls_file);
2877 LIST_FOREACH(stp, &lfp->lf_deleg, ls_file) {
2907 new_deleg->ls_lfp = lfp;
2911 LIST_INSERT_HEAD(&lfp->lf_deleg, new_deleg, ls_file);
2941 new_open->ls_lfp = lfp;
2944 LIST_INSERT_HEAD(&lfp->lf_open, new_open, ls_file);
2986 if (lfp != stp->ls_lfp) {
2988 LIST_INSERT_HEAD(&lfp->lf_open, stp, ls_file);
2989 stp->ls_lfp = lfp;
3027 new_deleg->ls_lfp = lfp;
3031 LIST_INSERT_HEAD(&lfp->lf_deleg, new_deleg, ls_file);
3049 new_open->ls_lfp = lfp;
3052 LIST_INSERT_HEAD(&lfp->lf_open, new_open, ls_file);
3094 new_deleg->ls_lfp = lfp;
3098 LIST_INSERT_HEAD(&lfp->lf_deleg, new_deleg, ls_file);
3123 new_open->ls_lfp = lfp;
3125 LIST_INSERT_HEAD(&lfp->lf_open, new_open, ls_file);
3171 new_deleg->ls_lfp = lfp;
3175 LIST_INSERT_HEAD(&lfp->lf_deleg, new_deleg,
3236 struct nfslockfile *lfp;
3333 lfp = stp->ls_lfp;
3336 nfsrv_locklf(lfp);
3342 nfsrv_unlocklf(lfp);
3562 struct nfslockfile *lfp;
3581 LIST_FOREACH(lfp, hp, lf_hash) {
3582 tfhp = &lfp->lf_fh;
3585 nfsrv_locklf(lfp);
3586 *lfpp = lfp;
3617 struct nfsstate *stp, struct nfslockfile *lfp)
3622 new_lop->lo_lfp = lfp;
3626 lop = LIST_FIRST(&lfp->lf_lock);
3629 LIST_INSERT_HEAD(&lfp->lf_lock, new_lop, lo_lckfile);
3644 * Insert after insert_lop, which is overloaded as stp or lfp for
3647 if (stp == NULL && (struct nfslockfile *)insert_lop == lfp)
3648 LIST_INSERT_HEAD(&lfp->lf_locallock, new_lop, lo_lckowner);
3668 struct nfslock **other_lopp, struct nfslockfile *lfp)
3685 ilop = (struct nfslock *)lfp;
3686 lop = LIST_FIRST(&lfp->lf_locallock);
3693 if (lop->lo_lfp == lfp) {
3774 other_lop->lo_lfp = lfp;
3776 nfsrv_insertlock(other_lop, lop, stp, lfp);
3784 if (myfile && (lop == NULL || lop->lo_lfp != lfp))
3792 nfsrv_insertlock(new_lop, ilop, stp, lfp);
4995 struct nfslockfile *lfp;
5007 error = nfsrv_getlockfile(NFSLCK_CHECK, NULL, &lfp, &nfh, 0);
5023 error = nfsrv_cleandeleg(vp, lfp, NULL, &haslock, p);
5047 if(lfp->lf_usecount>1)
5048 LIST_FOREACH(stp, &lfp->lf_open, ls_file) {
5069 * Clear out all delegations for the file referred to by lfp.
5078 nfsrv_cleandeleg(vnode_t vp, struct nfslockfile *lfp,
5084 stp = LIST_FIRST(&lfp->lf_deleg);
5259 struct nfslockfile *lfp;
5278 error = nfsrv_getlockfile(NFSLCK_CHECK, NULL, &lfp, &nfh, 0);
5289 LIST_FOREACH(stp, &lfp->lf_deleg, ls_file) {
5476 nfsrv_locallock(vnode_t vp, struct nfslockfile *lfp, int flags,
5483 lop = LIST_FIRST(&lfp->lf_locallock);
5493 error = nfsrv_dolocal(vp, lfp, flags,
5500 error = nfsrv_dolocal(vp, lfp, flags,
5511 error = nfsrv_dolocal(vp, lfp, flags,
5518 error = nfsrv_dolocal(vp, lfp, flags,
5529 error = nfsrv_dolocal(vp, lfp, flags, NFSLCK_UNLOCK, first,
5539 * do not overlap with the byte ranges of any lock in the lfp->lf_lock
5546 nfsrv_localunlock(vnode_t vp, struct nfslockfile *lfp, uint64_t init_first,
5557 LIST_FOREACH(lop, &lfp->lf_lock, lo_lckfile) {
5592 (void) nfsrv_dolocal(vp, lfp, NFSLCK_UNLOCK,
5594 nfsrv_locallock_commit(lfp, NFSLCK_UNLOCK,
5611 lfp, int flags, int oldflags,
5643 nfsrv_locallock_rollback(vp, lfp, p);
5650 LIST_INSERT_HEAD(&lfp->lf_rollback, rlp, rlck_list);
5662 nfsrv_locallock_rollback(vnode_t vp, struct nfslockfile *lfp, NFSPROC_T *p)
5666 LIST_FOREACH_SAFE(rlp, &lfp->lf_rollback, rlck_list, nrlp) {
5671 LIST_INIT(&lfp->lf_rollback);
5679 nfsrv_locallock_commit(struct nfslockfile *lfp, int flags, uint64_t first,
5694 nfsrv_updatelock(NULL, &new_lop, &other_lop, lfp);
5701 LIST_FOREACH_SAFE(rlp, &lfp->lf_rollback, rlck_list, nrlp)
5703 LIST_INIT(&lfp->lf_rollback);
5710 nfsrv_locklf(struct nfslockfile *lfp)
5714 /* lf_usecount ensures *lfp won't be free'd */
5715 lfp->lf_usecount++;
5717 gotlock = nfsv4_lock(&lfp->lf_locallock_lck, 1, NULL,
5720 lfp->lf_usecount--;
5727 nfsrv_unlocklf(struct nfslockfile *lfp)
5730 nfsv4_unlock(&lfp->lf_locallock_lck, 0);
5741 struct nfslockfile *lfp, *nlfp;
5761 LIST_FOREACH_SAFE(lfp, &nfslockhash[i], lf_hash, nlfp) {
5763 nfsrv_freenfslockfile(lfp);