Lines Matching defs:lfp
154 static void nfsrv_freenfslockfile(struct nfslockfile *lfp);
165 struct nfslock *insert_lop, struct nfsstate *stp, struct nfslockfile *lfp);
167 struct nfslock **other_lopp, struct nfslockfile *lfp);
188 static int nfsrv_cleandeleg(vnode_t vp, struct nfslockfile *lfp,
197 static int nfsrv_locallock(vnode_t vp, struct nfslockfile *lfp, int flags,
199 static void nfsrv_localunlock(vnode_t vp, struct nfslockfile *lfp,
201 static int nfsrv_dolocal(vnode_t vp, struct nfslockfile *lfp, int flags,
204 static void nfsrv_locallock_rollback(vnode_t vp, struct nfslockfile *lfp,
206 static void nfsrv_locallock_commit(struct nfslockfile *lfp, int flags,
208 static void nfsrv_locklf(struct nfslockfile *lfp);
209 static void nfsrv_unlocklf(struct nfslockfile *lfp);
251 struct nfsstate *new_stp, struct nfslockfile *lfp, uint32_t *rflagsp,
1172 struct nfslockfile *lfp;
1193 ret = nfsrv_getlockfile(0, NULL, &lfp, &nfh, 0);
1206 stp = LIST_FIRST(&lfp->lf_open);
1207 while (stp != LIST_END(&lfp->lf_open) && cnt < maxcnt) {
1245 lop = LIST_FIRST(&lfp->lf_lock);
1246 while (lop != LIST_END(&lfp->lf_lock) && cnt < maxcnt) {
1285 stp = LIST_FIRST(&lfp->lf_deleg);
1286 while (stp != LIST_END(&lfp->lf_deleg) && cnt < maxcnt) {
1538 struct nfslockfile *lfp;
1545 lfp = stp->ls_lfp;
1546 if (LIST_EMPTY(&lfp->lf_open) &&
1547 LIST_EMPTY(&lfp->lf_lock) && LIST_EMPTY(&lfp->lf_deleg) &&
1548 LIST_EMPTY(&lfp->lf_locallock) && LIST_EMPTY(&lfp->lf_rollback) &&
1549 lfp->lf_usecount == 0 &&
1550 nfsv4_testlock(&lfp->lf_locallock_lck) == 0)
1551 nfsrv_freenfslockfile(lfp);
1593 struct nfslockfile *lfp;
1599 lfp = stp->ls_lfp;
1614 * Lock the lfp so that it will not go away and do the
1618 nfsrv_locklf(lfp);
1624 nfsrv_unlocklf(lfp);
1633 if (lfp != NULL && LIST_EMPTY(&lfp->lf_open) &&
1634 LIST_EMPTY(&lfp->lf_deleg) && LIST_EMPTY(&lfp->lf_lock) &&
1635 LIST_EMPTY(&lfp->lf_locallock) && LIST_EMPTY(&lfp->lf_rollback) &&
1636 lfp->lf_usecount == 0 &&
1637 nfsv4_testlock(&lfp->lf_locallock_lck) == 0)
1638 nfsrv_freenfslockfile(lfp);
1672 struct nfslockfile *lfp = NULL;
1683 * Since all locks should be for the same file, lfp should
1686 if (lfp == NULL)
1687 lfp = lop->lo_lfp;
1688 else if (lfp != lop->lo_lfp)
1699 tvp = nfsvno_getvp(&lfp->lf_fh);
1713 nfsrv_localunlock(tvp, lfp, first, end, p);
1714 LIST_FOREACH_SAFE(rlp, &lfp->lf_rollback, rlck_list,
1717 LIST_INIT(&lfp->lf_rollback);
1746 nfsrv_freenfslockfile(struct nfslockfile *lfp)
1749 LIST_REMOVE(lfp, lf_hash);
1750 free(lfp, M_NFSDLOCKFILE);
1828 struct nfslockfile *lfp;
1885 lfp = NULL;
1903 &lfp, &nfh, 1);
1908 &lfp, &nfh, 0);
1914 LIST_INIT(&lfp->lf_rollback);
1929 reterr = nfsrv_locallock(vp, lfp,
1970 (getlckret == 0 && stp->ls_lfp != lfp))){
1982 getlckret == 0 && stp->ls_lfp != lfp)
1995 getlckret == 0 && stp->ls_lfp != lfp) {
2109 nfsrv_locallock_rollback(vp, lfp, p);
2111 nfsrv_unlocklf(lfp);
2193 nfsrv_locallock_rollback(vp, lfp, p);
2195 nfsrv_unlocklf(lfp);
2207 LIST_FOREACH(tstp, &lfp->lf_open, ls_file) {
2247 ret = nfsrv_cleandeleg(vp, lfp, clp, &haslock, p);
2261 (LIST_EMPTY(&lfp->lf_open) && LIST_EMPTY(&lfp->lf_lock) &&
2262 LIST_EMPTY(&lfp->lf_deleg))) {
2285 tstp = LIST_FIRST(&lfp->lf_deleg);
2286 while (tstp != LIST_END(&lfp->lf_deleg)) {
2305 nfsrv_locallock_rollback(vp, lfp, p);
2307 nfsrv_unlocklf(lfp);
2346 nfsrv_updatelock(stp, new_lopp, &other_lop, lfp);
2361 nfsrv_localunlock(vp, lfp, first, end, p);
2363 nfsrv_unlocklf(lfp);
2376 LIST_FOREACH(lop, &lfp->lf_lock, lo_lckfile) {
2403 nfsrv_locallock_rollback(vp, lfp, p);
2405 nfsrv_unlocklf(lfp);
2451 nfsrv_locallock_rollback(vp, lfp, p);
2453 nfsrv_unlocklf(lfp);
2480 nfsrv_updatelock(lckstp, new_lopp, &other_lop, lfp);
2504 new_stp->ls_lfp = lfp;
2506 lfp);
2517 nfsrv_locallock_commit(lfp, lock_flags, first, end);
2519 nfsrv_unlocklf(lfp);
2553 struct nfslockfile *lfp, *new_lfp;
2653 error = nfsrv_getlockfile(new_stp->ls_flags, &new_lfp, &lfp,
2679 LIST_FOREACH(stp, &lfp->lf_deleg, ls_file) {
2688 if (stp == LIST_END(&lfp->lf_deleg) ||
2706 LIST_FOREACH(stp, &lfp->lf_open, ls_file) {
2761 stp = LIST_FIRST(&lfp->lf_deleg);
2762 while (stp != LIST_END(&lfp->lf_deleg)) {
2808 struct nfslockfile *lfp, *new_lfp;
2914 error = nfsrv_getlockfile(new_stp->ls_flags, &new_lfp, &lfp,
2944 LIST_FOREACH(stp, &lfp->lf_deleg, ls_file) {
2953 if (stp == LIST_END(&lfp->lf_deleg) ||
2984 LIST_FOREACH(stp, &lfp->lf_open, ls_file) {
3057 stp = LIST_FIRST(&lfp->lf_deleg);
3058 while (stp != LIST_END(&lfp->lf_deleg)) {
3111 if (stp->ls_lfp == lfp) {
3151 new_open->ls_lfp = lfp;
3154 LIST_INSERT_HEAD(&lfp->lf_open, new_open, ls_file);
3191 LIST_FOREACH(stp, &lfp->lf_deleg, ls_file) {
3195 if (stp == LIST_END(&lfp->lf_deleg) && openstp == NULL) {
3222 new_deleg->ls_lfp = lfp;
3227 LIST_INSERT_HEAD(&lfp->lf_deleg, new_deleg, ls_file);
3257 new_open->ls_lfp = lfp;
3260 LIST_INSERT_HEAD(&lfp->lf_open, new_open, ls_file);
3302 if (lfp != stp->ls_lfp) {
3304 LIST_INSERT_HEAD(&lfp->lf_open, stp, ls_file);
3305 stp->ls_lfp = lfp;
3320 new_stp, lfp, rflagsp, delegstateidp);
3330 new_open->ls_lfp = lfp;
3333 LIST_INSERT_HEAD(&lfp->lf_open, new_open, ls_file);
3347 new_stp, lfp, rflagsp, delegstateidp);
3364 new_open->ls_lfp = lfp;
3366 LIST_INSERT_HEAD(&lfp->lf_open, new_open, ls_file);
3375 new_stp, lfp, rflagsp, delegstateidp);
3776 struct nfslockfile *lfp;
3795 LIST_FOREACH(lfp, hp, lf_hash) {
3796 tfhp = &lfp->lf_fh;
3799 nfsrv_locklf(lfp);
3800 *lfpp = lfp;
3831 struct nfsstate *stp, struct nfslockfile *lfp)
3836 new_lop->lo_lfp = lfp;
3840 lop = LIST_FIRST(&lfp->lf_lock);
3841 if (lop == LIST_END(&lfp->lf_lock) ||
3843 LIST_INSERT_HEAD(&lfp->lf_lock, new_lop, lo_lckfile);
3846 while (nlop != LIST_END(&lfp->lf_lock) &&
3858 * Insert after insert_lop, which is overloaded as stp or lfp for
3861 if (stp == NULL && (struct nfslockfile *)insert_lop == lfp)
3862 LIST_INSERT_HEAD(&lfp->lf_locallock, new_lop, lo_lckowner);
3882 struct nfslock **other_lopp, struct nfslockfile *lfp)
3899 ilop = (struct nfslock *)lfp;
3900 lop = LIST_FIRST(&lfp->lf_locallock);
3907 if (lop->lo_lfp == lfp) {
3988 other_lop->lo_lfp = lfp;
3990 nfsrv_insertlock(other_lop, lop, stp, lfp);
3998 if (myfile && (lop == NULL || lop->lo_lfp != lfp))
4006 nfsrv_insertlock(new_lop, ilop, stp, lfp);
5460 struct nfslockfile *lfp;
5476 error = nfsrv_getlockfile(NFSLCK_CHECK, NULL, &lfp, &nfh, 0);
5492 error = nfsrv_cleandeleg(vp, lfp, clp, &haslock, p);
5516 if(lfp->lf_usecount>1)
5517 LIST_FOREACH(stp, &lfp->lf_open, ls_file) {
5538 * Clear out all delegations for the file referred to by lfp.
5547 nfsrv_cleandeleg(vnode_t vp, struct nfslockfile *lfp,
5553 stp = LIST_FIRST(&lfp->lf_deleg);
5554 while (stp != LIST_END(&lfp->lf_deleg)) {
5728 struct nfslockfile *lfp;
5749 error = nfsrv_getlockfile(NFSLCK_CHECK, NULL, &lfp, &nfh, 0);
5760 LIST_FOREACH(stp, &lfp->lf_deleg, ls_file) {
5764 if (stp == LIST_END(&lfp->lf_deleg)) {
5965 nfsrv_locallock(vnode_t vp, struct nfslockfile *lfp, int flags,
5972 lop = LIST_FIRST(&lfp->lf_locallock);
5982 error = nfsrv_dolocal(vp, lfp, flags,
5989 error = nfsrv_dolocal(vp, lfp, flags,
6000 error = nfsrv_dolocal(vp, lfp, flags,
6007 error = nfsrv_dolocal(vp, lfp, flags,
6018 error = nfsrv_dolocal(vp, lfp, flags, NFSLCK_UNLOCK, first,
6028 * do not overlap with the byte ranges of any lock in the lfp->lf_lock
6035 nfsrv_localunlock(vnode_t vp, struct nfslockfile *lfp, uint64_t init_first,
6046 LIST_FOREACH(lop, &lfp->lf_lock, lo_lckfile) {
6081 (void) nfsrv_dolocal(vp, lfp, NFSLCK_UNLOCK,
6083 nfsrv_locallock_commit(lfp, NFSLCK_UNLOCK,
6100 nfsrv_dolocal(vnode_t vp, struct nfslockfile *lfp, int flags, int oldflags,
6132 nfsrv_locallock_rollback(vp, lfp, p);
6139 LIST_INSERT_HEAD(&lfp->lf_rollback, rlp, rlck_list);
6151 nfsrv_locallock_rollback(vnode_t vp, struct nfslockfile *lfp, NFSPROC_T *p)
6155 LIST_FOREACH_SAFE(rlp, &lfp->lf_rollback, rlck_list, nrlp) {
6160 LIST_INIT(&lfp->lf_rollback);
6168 nfsrv_locallock_commit(struct nfslockfile *lfp, int flags, uint64_t first,
6183 nfsrv_updatelock(NULL, &new_lop, &other_lop, lfp);
6190 LIST_FOREACH_SAFE(rlp, &lfp->lf_rollback, rlck_list, nrlp)
6192 LIST_INIT(&lfp->lf_rollback);
6199 nfsrv_locklf(struct nfslockfile *lfp)
6203 /* lf_usecount ensures *lfp won't be free'd */
6204 lfp->lf_usecount++;
6206 gotlock = nfsv4_lock(&lfp->lf_locallock_lck, 1, NULL,
6209 lfp->lf_usecount--;
6216 nfsrv_unlocklf(struct nfslockfile *lfp)
6219 nfsv4_unlock(&lfp->lf_locallock_lck, 0);
6230 struct nfslockfile *lfp, *nlfp;
6251 LIST_FOREACH_SAFE(lfp, &NFSD_VNET(nfslockhash)[i], lf_hash,
6254 nfsrv_freenfslockfile(lfp);
8180 struct nfslockfile *lfp;
8211 LIST_FOREACH(lfp, hp, lf_hash) {
8212 tfhp = &lfp->lf_fh;
8216 if (lfp == NULL) {
8223 LIST_FOREACH(stp, &lfp->lf_deleg, ls_file) {
8235 LIST_FOREACH(stp, &lfp->lf_open, ls_file) {
8937 struct nfsstate *new_stp, struct nfslockfile *lfp, uint32_t *rflagsp,
8943 up_deleg = LIST_FIRST(&lfp->lf_deleg);
8997 new_deleg->ls_lfp = lfp;
9002 LIST_INSERT_HEAD(&lfp->lf_deleg, new_deleg, ls_file);