Lines Matching refs:nlop

1948 nfs_owner_seqid_increment(struct nfs_open_owner *noop, struct nfs_lock_owner *nlop, int error)
1964 if (nlop)
1965 nlop->nlo_seqid++;
2422 struct nfs_lock_owner *nlop = NULL;
2429 nlop = nfs_lock_owner_find(np, p, 0);
2430 if (nlop && !TAILQ_EMPTY(&nlop->nlo_locks)) {
2432 s = &nlop->nlo_stateid;
2456 if (nlop)
2457 nfs_lock_owner_rele(nlop);
2947 struct nfs_lock_owner *nlop, *newnlop = NULL;
2951 TAILQ_FOREACH(nlop, &np->n_lock_owners, nlo_link) {
2952 if (nlop->nlo_pid != pid)
2954 if (timevalcmp(&nlop->nlo_pid_start, &p->p_start, ==))
2957 if (nlop->nlo_refcnt) {
2958 TAILQ_REMOVE(&np->n_lock_owners, nlop, nlo_link);
2959 nlop->nlo_flags &= ~NFS_LOCK_OWNER_LINK;
2963 nlop->nlo_pid_start = p->p_start;
2964 nlop->nlo_seqid = 0;
2965 nlop->nlo_stategenid = 0;
2969 if (!nlop && !newnlop && alloc) {
2982 if (!nlop && newnlop) {
2985 nlop = newnlop;
2989 if (newnlop && (nlop != newnlop))
2992 if (nlop)
2993 nfs_lock_owner_ref(nlop);
2995 return (nlop);
3002 nfs_lock_owner_destroy(struct nfs_lock_owner *nlop)
3004 if (nlop->nlo_open_owner) {
3005 nfs_open_owner_rele(nlop->nlo_open_owner);
3006 nlop->nlo_open_owner = NULL;
3008 lck_mtx_destroy(&nlop->nlo_lock, nfs_open_grp);
3009 FREE(nlop, M_TEMP);
3016 nfs_lock_owner_ref(struct nfs_lock_owner *nlop)
3018 lck_mtx_lock(&nlop->nlo_lock);
3019 nlop->nlo_refcnt++;
3020 lck_mtx_unlock(&nlop->nlo_lock);
3028 nfs_lock_owner_rele(struct nfs_lock_owner *nlop)
3030 lck_mtx_lock(&nlop->nlo_lock);
3031 if (nlop->nlo_refcnt < 1)
3033 nlop->nlo_refcnt--;
3034 if (!nlop->nlo_refcnt && (nlop->nlo_flags & NFS_LOCK_OWNER_BUSY))
3037 if (nlop->nlo_refcnt || (nlop->nlo_flags & NFS_LOCK_OWNER_LINK)) {
3038 lck_mtx_unlock(&nlop->nlo_lock);
3042 lck_mtx_unlock(&nlop->nlo_lock);
3043 nfs_lock_owner_destroy(nlop);
3051 nfs_lock_owner_set_busy(struct nfs_lock_owner *nlop, thread_t thd)
3057 nmp = nlop->nlo_open_owner->noo_mount;
3062 lck_mtx_lock(&nlop->nlo_lock);
3063 while (nlop->nlo_flags & NFS_LOCK_OWNER_BUSY) {
3066 nlop->nlo_flags |= NFS_LOCK_OWNER_WANT;
3067 msleep(nlop, &nlop->nlo_lock, slpflag, "nfs_lock_owner_set_busy", &ts);
3071 nlop->nlo_flags |= NFS_LOCK_OWNER_BUSY;
3072 lck_mtx_unlock(&nlop->nlo_lock);
3082 nfs_lock_owner_clear_busy(struct nfs_lock_owner *nlop)
3086 lck_mtx_lock(&nlop->nlo_lock);
3087 if (!(nlop->nlo_flags & NFS_LOCK_OWNER_BUSY))
3089 wanted = (nlop->nlo_flags & NFS_LOCK_OWNER_WANT);
3090 nlop->nlo_flags &= ~(NFS_LOCK_OWNER_BUSY|NFS_LOCK_OWNER_WANT);
3091 lck_mtx_unlock(&nlop->nlo_lock);
3093 wakeup(nlop);
3101 nfs_lock_owner_insert_held_lock(struct nfs_lock_owner *nlop, struct nfs_file_lock *newnflp)
3106 lck_mtx_lock(&nlop->nlo_lock);
3108 TAILQ_INSERT_HEAD(&nlop->nlo_locks, newnflp, nfl_lolink);
3110 TAILQ_FOREACH(nflp, &nlop->nlo_locks, nfl_lolink) {
3117 TAILQ_INSERT_TAIL(&nlop->nlo_locks, newnflp, nfl_lolink);
3119 lck_mtx_unlock(&nlop->nlo_lock);
3126 nfs_file_lock_alloc(struct nfs_lock_owner *nlop)
3130 lck_mtx_lock(&nlop->nlo_lock);
3131 if (!nlop->nlo_alock.nfl_owner) {
3132 nflp = &nlop->nlo_alock;
3133 nflp->nfl_owner = nlop;
3135 lck_mtx_unlock(&nlop->nlo_lock);
3142 nflp->nfl_owner = nlop;
3144 nfs_lock_owner_ref(nlop);
3154 struct nfs_lock_owner *nlop = nflp->nfl_owner;
3160 lck_mtx_lock(&nlop->nlo_lock);
3162 lck_mtx_unlock(&nlop->nlo_lock);
3164 nfs_lock_owner_rele(nlop);
3209 struct nfs_lock_owner *nlop = nflp->nfl_owner;
3223 newlocker = (nlop->nlo_stategenid != nmp->nm_stategenid);
3240 if (!nlop->nlo_open_owner) {
3242 nlop->nlo_open_owner = nofp->nof_owner;
3245 error = nfs_lock_owner_set_busy(nlop, thd);
3278 nfsm_chain_add_32(error, &nmreq, nlop->nlo_seqid);
3279 nfsm_chain_add_lock_owner4(error, &nmreq, nmp, nlop);
3281 nfsm_chain_add_stateid(error, &nmreq, &nlop->nlo_stateid);
3282 nfsm_chain_add_32(error, &nmreq, nlop->nlo_seqid);
3300 nfs_owner_seqid_increment(newlocker ? nofp->nof_owner : NULL, nlop, error);
3301 nfsm_chain_get_stateid(error, &nmrep, &nlop->nlo_stateid);
3306 nlop->nlo_stategenid = nmp->nm_stategenid;
3310 nfs_lock_owner_clear_busy(nlop);
3326 struct nfs_lock_owner *nlop,
3346 error = nfs_lock_owner_set_busy(nlop, NULL);
3367 nfsm_chain_add_32(error, &nmreq, nlop->nlo_seqid);
3368 nfsm_chain_add_stateid(error, &nmreq, &nlop->nlo_stateid);
3387 nfs_owner_seqid_increment(NULL, nlop, error);
3388 nfsm_chain_get_stateid(error, &nmrep, &nlop->nlo_stateid);
3392 nfs_lock_owner_clear_busy(nlop);
3404 struct nfs_lock_owner *nlop,
3443 nfsm_chain_add_lock_owner4(error, &nmreq, nmp, nlop);
3491 struct nfs_lock_owner *nlop,
3541 error = nmp->nm_funcs->nf_getlock_rpc(np, nlop, fl, start, end, ctx);
3563 struct nfs_lock_owner *nlop,
3586 newnflp = nfs_file_lock_alloc(nlop);
3604 nflp = TAILQ_FIRST(&nlop->nlo_locks);
3662 error = nfs_advlock_unlock(np, nofp, nlop, 0, UINT64_MAX, NFS_FILE_LOCK_STYLE_FLOCK, ctx);
3714 nflp2 = nfs_file_lock_alloc(nlop);
3734 if (!nlop->nlo_open_owner) {
3736 nlop->nlo_open_owner = nofp->nof_owner;
3775 error2 = nfs_advlock_unlock(np, nofp, nlop, 0, UINT64_MAX, NFS_FILE_LOCK_STYLE_FLOCK, ctx);
3864 if (nflp->nfl_owner != nlop)
3874 lck_mtx_lock(&nlop->nlo_lock);
3875 TAILQ_REMOVE(&nlop->nlo_locks, nflp, nfl_lolink);
3876 lck_mtx_unlock(&nlop->nlo_lock);
3888 nfs_lock_owner_insert_held_lock(nlop, nflp2);
3908 nfs_lock_owner_insert_held_lock(nlop, newnflp);
3927 if (nflp->nfl_owner != nlop)
3937 lck_mtx_lock(&nlop->nlo_lock);
3938 TAILQ_REMOVE(&nlop->nlo_locks, nflp, nfl_lolink);
3939 lck_mtx_unlock(&nlop->nlo_lock);
3946 lck_mtx_lock(&nlop->nlo_lock);
3947 TAILQ_REMOVE(&nlop->nlo_locks, nflp, nfl_lolink);
3948 lck_mtx_unlock(&nlop->nlo_lock);
3979 struct nfs_lock_owner *nlop,
4018 if (nflp->nfl_owner != nlop)
4033 newnflp = nfs_file_lock_alloc(nlop);
4057 ((nflp = TAILQ_FIRST(&nlop->nlo_locks))) &&
4061 ((nflp = TAILQ_FIRST(&nlop->nlo_locks))) &&
4066 int type = TAILQ_FIRST(&nlop->nlo_locks)->nfl_type;
4067 int delegated = (TAILQ_FIRST(&nlop->nlo_locks)->nfl_flags & NFS_FILE_LOCK_DELEGATED);
4072 error = nmp->nm_funcs->nf_unlock_rpc(np, nlop, type, s, nflp->nfl_start-1, 0,
4088 error = nmp->nm_funcs->nf_unlock_rpc(np, nlop, type, s, end, 0,
4105 if (nflp->nfl_owner != nlop)
4116 error = nmp->nm_funcs->nf_unlock_rpc(np, nlop, nflp->nfl_type, nflp->nfl_start, nflp->nfl_end, 0,
4129 lck_mtx_lock(&nlop->nlo_lock);
4130 TAILQ_REMOVE(&nlop->nlo_locks, nflp, nfl_lolink);
4131 lck_mtx_unlock(&nlop->nlo_lock);
4138 error = nmp->nm_funcs->nf_unlock_rpc(np, nlop, nflp->nfl_type, start, end, 0,
4156 nfs_lock_owner_insert_held_lock(nlop, newnflp);
4163 error = nmp->nm_funcs->nf_unlock_rpc(np, nlop, nflp->nfl_type, start, nflp->nfl_end, 0,
4180 error = nmp->nm_funcs->nf_unlock_rpc(np, nlop, nflp->nfl_type, nflp->nfl_start, end, 0,
4237 struct nfs_lock_owner *nlop = NULL;
4318 nlop = nfs_lock_owner_find(np, vfs_context_proc(ctx), (op != F_UNLCK));
4319 if (!nlop) {
4327 error = nfs_advlock_getlock(np, nlop, fl, start, end, ctx);
4356 error = nfs_advlock_unlock(np, nofp, nlop, start, end, style, ctx);
4360 error = nfs_advlock_setlock(np, nofp, nlop, op, start, end, style, fl->l_type, ctx);
4368 if (nlop)
4369 nfs_lock_owner_rele(nlop);
4381 struct nfs_lock_owner *nlop;
4383 TAILQ_FOREACH(nlop, &nofp->nof_np->n_lock_owners, nlo_link) {
4384 if (nlop->nlo_open_owner != noop)
4386 if (!TAILQ_EMPTY(&nlop->nlo_locks))
4389 return (nlop ? 1 : 0);
5560 struct nfs_lock_owner *nlop;
5689 TAILQ_FOREACH(nlop, &nofp->nof_np->n_lock_owners, nlo_link) {
5690 if (nlop->nlo_open_owner != noop)
5692 TAILQ_FOREACH_SAFE(nflp, &nlop->nlo_locks, nfl_lolink, nextnflp) {