Lines Matching refs:dp
695 struct nfs4_delegation *dp; in alloc_init_deleg() local
704 dp = delegstateid(nfs4_alloc_stid(clp, deleg_slab)); in alloc_init_deleg()
705 if (dp == NULL) in alloc_init_deleg()
708 dp->dl_stid.sc_free = nfs4_free_deleg; in alloc_init_deleg()
714 dp->dl_stid.sc_stateid.si_generation = 1; in alloc_init_deleg()
715 INIT_LIST_HEAD(&dp->dl_perfile); in alloc_init_deleg()
716 INIT_LIST_HEAD(&dp->dl_perclnt); in alloc_init_deleg()
717 INIT_LIST_HEAD(&dp->dl_recall_lru); in alloc_init_deleg()
718 dp->dl_clnt_odstate = odstate; in alloc_init_deleg()
720 dp->dl_type = NFS4_OPEN_DELEGATE_READ; in alloc_init_deleg()
721 dp->dl_retries = 1; in alloc_init_deleg()
722 nfsd4_init_cb(&dp->dl_recall, dp->dl_stid.sc_client, in alloc_init_deleg()
724 return dp; in alloc_init_deleg()
826 hash_delegation_locked(struct nfs4_delegation *dp, struct nfs4_file *fp) in hash_delegation_locked() argument
829 struct nfs4_client *clp = dp->dl_stid.sc_client; in hash_delegation_locked()
838 atomic_inc(&dp->dl_stid.sc_count); in hash_delegation_locked()
839 dp->dl_stid.sc_type = NFS4_DELEG_STID; in hash_delegation_locked()
840 list_add(&dp->dl_perfile, &fp->fi_delegations); in hash_delegation_locked()
841 list_add(&dp->dl_perclnt, &clp->cl_delegations); in hash_delegation_locked()
846 unhash_delegation_locked(struct nfs4_delegation *dp) in unhash_delegation_locked() argument
848 struct nfs4_file *fp = dp->dl_stid.sc_file; in unhash_delegation_locked()
852 if (list_empty(&dp->dl_perfile)) in unhash_delegation_locked()
855 dp->dl_stid.sc_type = NFS4_CLOSED_DELEG_STID; in unhash_delegation_locked()
857 ++dp->dl_time; in unhash_delegation_locked()
859 list_del_init(&dp->dl_perclnt); in unhash_delegation_locked()
860 list_del_init(&dp->dl_recall_lru); in unhash_delegation_locked()
861 list_del_init(&dp->dl_perfile); in unhash_delegation_locked()
866 static void destroy_delegation(struct nfs4_delegation *dp) in destroy_delegation() argument
871 unhashed = unhash_delegation_locked(dp); in destroy_delegation()
874 put_clnt_odstate(dp->dl_clnt_odstate); in destroy_delegation()
875 nfs4_put_deleg_lease(dp->dl_stid.sc_file); in destroy_delegation()
876 nfs4_put_stid(&dp->dl_stid); in destroy_delegation()
880 static void revoke_delegation(struct nfs4_delegation *dp) in revoke_delegation() argument
882 struct nfs4_client *clp = dp->dl_stid.sc_client; in revoke_delegation()
884 WARN_ON(!list_empty(&dp->dl_recall_lru)); in revoke_delegation()
886 put_clnt_odstate(dp->dl_clnt_odstate); in revoke_delegation()
887 nfs4_put_deleg_lease(dp->dl_stid.sc_file); in revoke_delegation()
890 nfs4_put_stid(&dp->dl_stid); in revoke_delegation()
892 dp->dl_stid.sc_type = NFS4_REVOKED_DELEG_STID; in revoke_delegation()
894 list_add(&dp->dl_recall_lru, &clp->cl_revoked); in revoke_delegation()
1799 struct nfs4_delegation *dp; in __destroy_client() local
1805 dp = list_entry(clp->cl_delegations.next, struct nfs4_delegation, dl_perclnt); in __destroy_client()
1806 WARN_ON(!unhash_delegation_locked(dp)); in __destroy_client()
1807 list_add(&dp->dl_recall_lru, &reaplist); in __destroy_client()
1811 dp = list_entry(reaplist.next, struct nfs4_delegation, dl_recall_lru); in __destroy_client()
1812 list_del_init(&dp->dl_recall_lru); in __destroy_client()
1813 put_clnt_odstate(dp->dl_clnt_odstate); in __destroy_client()
1814 nfs4_put_deleg_lease(dp->dl_stid.sc_file); in __destroy_client()
1815 nfs4_put_stid(&dp->dl_stid); in __destroy_client()
1818 dp = list_entry(clp->cl_revoked.next, struct nfs4_delegation, dl_recall_lru); in __destroy_client()
1819 list_del_init(&dp->dl_recall_lru); in __destroy_client()
1820 nfs4_put_stid(&dp->dl_stid); in __destroy_client()
3596 struct nfs4_delegation *dp = cb_to_delegation(cb); in nfsd4_cb_recall_prepare() local
3597 struct nfsd_net *nn = net_generic(dp->dl_stid.sc_client->net, in nfsd4_cb_recall_prepare()
3600 block_delegations(&dp->dl_stid.sc_file->fi_fhandle); in nfsd4_cb_recall_prepare()
3610 if (dp->dl_time == 0) { in nfsd4_cb_recall_prepare()
3611 dp->dl_time = get_seconds(); in nfsd4_cb_recall_prepare()
3612 list_add_tail(&dp->dl_recall_lru, &nn->del_recall_lru); in nfsd4_cb_recall_prepare()
3620 struct nfs4_delegation *dp = cb_to_delegation(cb); in nfsd4_cb_recall_done() local
3622 if (dp->dl_stid.sc_type == NFS4_CLOSED_DELEG_STID) in nfsd4_cb_recall_done()
3634 if (dp->dl_retries--) { in nfsd4_cb_recall_done()
3646 struct nfs4_delegation *dp = cb_to_delegation(cb); in nfsd4_cb_recall_release() local
3648 nfs4_put_stid(&dp->dl_stid); in nfsd4_cb_recall_release()
3657 static void nfsd_break_one_deleg(struct nfs4_delegation *dp) in nfsd_break_one_deleg() argument
3666 atomic_inc(&dp->dl_stid.sc_count); in nfsd_break_one_deleg()
3667 nfsd4_run_cb(&dp->dl_recall); in nfsd_break_one_deleg()
3676 struct nfs4_delegation *dp; in nfsd_break_deleg_cb() local
3702 list_for_each_entry(dp, &fp->fi_delegations, dl_perfile) in nfsd_break_deleg_cb()
3703 nfsd_break_one_deleg(dp); in nfsd_break_deleg_cb()
3832 nfs4_check_delegmode(struct nfs4_delegation *dp, int flags) in nfs4_check_delegmode() argument
3834 if ((flags & WR_STATE) && (dp->dl_type == NFS4_OPEN_DELEGATE_READ)) in nfs4_check_delegmode()
3863 struct nfs4_delegation **dp) in nfs4_check_deleg() argument
3878 *dp = deleg; in nfs4_check_deleg()
4048 static int nfs4_setlease(struct nfs4_delegation *dp) in nfs4_setlease() argument
4050 struct nfs4_file *fp = dp->dl_stid.sc_file; in nfs4_setlease()
4079 status = hash_delegation_locked(dp, fp); in nfs4_setlease()
4084 status = hash_delegation_locked(dp, fp); in nfs4_setlease()
4106 struct nfs4_delegation *dp; in nfs4_set_delegation() local
4120 dp = alloc_init_deleg(clp, fh, odstate); in nfs4_set_delegation()
4121 if (!dp) in nfs4_set_delegation()
4127 dp->dl_stid.sc_file = fp; in nfs4_set_delegation()
4131 status = nfs4_setlease(dp); in nfs4_set_delegation()
4138 status = hash_delegation_locked(dp, fp); in nfs4_set_delegation()
4144 put_clnt_odstate(dp->dl_clnt_odstate); in nfs4_set_delegation()
4145 nfs4_put_stid(&dp->dl_stid); in nfs4_set_delegation()
4148 return dp; in nfs4_set_delegation()
4182 struct nfs4_delegation *dp; in nfs4_open_delegation() local
4223 dp = nfs4_set_delegation(clp, fh, stp->st_stid.sc_file, stp->st_clnt_odstate); in nfs4_open_delegation()
4224 if (IS_ERR(dp)) in nfs4_open_delegation()
4227 memcpy(&open->op_delegate_stateid, &dp->dl_stid.sc_stateid, sizeof(dp->dl_stid.sc_stateid)); in nfs4_open_delegation()
4230 STATEID_VAL(&dp->dl_stid.sc_stateid)); in nfs4_open_delegation()
4232 nfs4_put_stid(&dp->dl_stid); in nfs4_open_delegation()
4249 struct nfs4_delegation *dp) in nfsd4_deleg_xgrade_none_ext() argument
4252 dp->dl_type == NFS4_OPEN_DELEGATE_WRITE) { in nfsd4_deleg_xgrade_none_ext()
4256 dp->dl_type == NFS4_OPEN_DELEGATE_WRITE) { in nfsd4_deleg_xgrade_none_ext()
4274 struct nfs4_delegation *dp = NULL; in nfsd4_process_open2() local
4284 status = nfs4_check_deleg(cl, open, &dp); in nfsd4_process_open2()
4362 if (open->op_delegate_type == NFS4_OPEN_DELEGATE_NONE && dp && in nfsd4_process_open2()
4364 nfsd4_deleg_xgrade_none_ext(open, dp); in nfsd4_process_open2()
4377 if (dp) in nfsd4_process_open2()
4378 nfs4_put_stid(&dp->dl_stid); in nfsd4_process_open2()
4463 struct nfs4_delegation *dp; in nfs4_laundromat() local
4497 dp = list_entry (pos, struct nfs4_delegation, dl_recall_lru); in nfs4_laundromat()
4498 if (time_after((unsigned long)dp->dl_time, (unsigned long)cutoff)) { in nfs4_laundromat()
4499 t = dp->dl_time - cutoff; in nfs4_laundromat()
4503 WARN_ON(!unhash_delegation_locked(dp)); in nfs4_laundromat()
4504 list_add(&dp->dl_recall_lru, &reaplist); in nfs4_laundromat()
4508 dp = list_first_entry(&reaplist, struct nfs4_delegation, in nfs4_laundromat()
4510 list_del_init(&dp->dl_recall_lru); in nfs4_laundromat()
4511 revoke_delegation(dp); in nfs4_laundromat()
4881 struct nfs4_delegation *dp; in nfsd4_free_stateid() local
4915 dp = delegstateid(s); in nfsd4_free_stateid()
4916 list_del_init(&dp->dl_recall_lru); in nfsd4_free_stateid()
5186 struct nfs4_delegation *dp; in nfsd4_delegreturn() local
5198 dp = delegstateid(s); in nfsd4_delegreturn()
5199 status = check_stateid_generation(stateid, &dp->dl_stid.sc_stateid, nfsd4_has_session(cstate)); in nfsd4_delegreturn()
5203 destroy_delegation(dp); in nfsd4_delegreturn()
5205 nfs4_put_stid(&dp->dl_stid); in nfsd4_delegreturn()
6448 struct nfs4_delegation *dp, *next; in nfsd_find_all_delegations() local
6456 list_for_each_entry_safe(dp, next, &clp->cl_delegations, dl_perclnt) { in nfsd_find_all_delegations()
6464 if (dp->dl_time != 0) in nfsd_find_all_delegations()
6468 WARN_ON(!unhash_delegation_locked(dp)); in nfsd_find_all_delegations()
6469 list_add(&dp->dl_recall_lru, victims); in nfsd_find_all_delegations()
6518 struct nfs4_delegation *dp, *next; in nfsd_forget_delegations() local
6520 list_for_each_entry_safe(dp, next, reaplist, dl_recall_lru) { in nfsd_forget_delegations()
6521 list_del_init(&dp->dl_recall_lru); in nfsd_forget_delegations()
6522 clp = dp->dl_stid.sc_client; in nfsd_forget_delegations()
6523 revoke_delegation(dp); in nfsd_forget_delegations()
6578 struct nfs4_delegation *dp, *next; in nfsd_recall_delegations() local
6580 list_for_each_entry_safe(dp, next, reaplist, dl_recall_lru) { in nfsd_recall_delegations()
6581 list_del_init(&dp->dl_recall_lru); in nfsd_recall_delegations()
6582 clp = dp->dl_stid.sc_client; in nfsd_recall_delegations()
6590 dp->dl_time = 0; in nfsd_recall_delegations()
6592 nfsd_break_one_deleg(dp); in nfsd_recall_delegations()
6788 struct nfs4_delegation *dp = NULL; in nfs4_state_shutdown_net() local
6798 dp = list_entry (pos, struct nfs4_delegation, dl_recall_lru); in nfs4_state_shutdown_net()
6799 WARN_ON(!unhash_delegation_locked(dp)); in nfs4_state_shutdown_net()
6800 list_add(&dp->dl_recall_lru, &reaplist); in nfs4_state_shutdown_net()
6804 dp = list_entry (pos, struct nfs4_delegation, dl_recall_lru); in nfs4_state_shutdown_net()
6805 list_del_init(&dp->dl_recall_lru); in nfs4_state_shutdown_net()
6806 put_clnt_odstate(dp->dl_clnt_odstate); in nfs4_state_shutdown_net()
6807 nfs4_put_deleg_lease(dp->dl_stid.sc_file); in nfs4_state_shutdown_net()
6808 nfs4_put_stid(&dp->dl_stid); in nfs4_state_shutdown_net()