Lines Matching refs:dp

694 	struct nfs4_delegation *dp;  in alloc_init_deleg()  local
703 dp = delegstateid(nfs4_alloc_stid(clp, deleg_slab)); in alloc_init_deleg()
704 if (dp == NULL) in alloc_init_deleg()
707 dp->dl_stid.sc_free = nfs4_free_deleg; in alloc_init_deleg()
713 dp->dl_stid.sc_stateid.si_generation = 1; in alloc_init_deleg()
714 INIT_LIST_HEAD(&dp->dl_perfile); in alloc_init_deleg()
715 INIT_LIST_HEAD(&dp->dl_perclnt); in alloc_init_deleg()
716 INIT_LIST_HEAD(&dp->dl_recall_lru); in alloc_init_deleg()
717 dp->dl_clnt_odstate = odstate; in alloc_init_deleg()
719 dp->dl_type = NFS4_OPEN_DELEGATE_READ; in alloc_init_deleg()
720 dp->dl_retries = 1; in alloc_init_deleg()
721 nfsd4_init_cb(&dp->dl_recall, dp->dl_stid.sc_client, in alloc_init_deleg()
723 return dp; in alloc_init_deleg()
813 hash_delegation_locked(struct nfs4_delegation *dp, struct nfs4_file *fp) in hash_delegation_locked() argument
816 struct nfs4_client *clp = dp->dl_stid.sc_client; in hash_delegation_locked()
825 atomic_inc(&dp->dl_stid.sc_count); in hash_delegation_locked()
826 dp->dl_stid.sc_type = NFS4_DELEG_STID; in hash_delegation_locked()
827 list_add(&dp->dl_perfile, &fp->fi_delegations); in hash_delegation_locked()
828 list_add(&dp->dl_perclnt, &clp->cl_delegations); in hash_delegation_locked()
833 unhash_delegation_locked(struct nfs4_delegation *dp) in unhash_delegation_locked() argument
835 struct nfs4_file *fp = dp->dl_stid.sc_file; in unhash_delegation_locked()
839 if (list_empty(&dp->dl_perfile)) in unhash_delegation_locked()
842 dp->dl_stid.sc_type = NFS4_CLOSED_DELEG_STID; in unhash_delegation_locked()
844 ++dp->dl_time; in unhash_delegation_locked()
846 list_del_init(&dp->dl_perclnt); in unhash_delegation_locked()
847 list_del_init(&dp->dl_recall_lru); in unhash_delegation_locked()
848 list_del_init(&dp->dl_perfile); in unhash_delegation_locked()
853 static void destroy_delegation(struct nfs4_delegation *dp) in destroy_delegation() argument
858 unhashed = unhash_delegation_locked(dp); in destroy_delegation()
861 put_clnt_odstate(dp->dl_clnt_odstate); in destroy_delegation()
862 nfs4_put_deleg_lease(dp->dl_stid.sc_file); in destroy_delegation()
863 nfs4_put_stid(&dp->dl_stid); in destroy_delegation()
867 static void revoke_delegation(struct nfs4_delegation *dp) in revoke_delegation() argument
869 struct nfs4_client *clp = dp->dl_stid.sc_client; in revoke_delegation()
871 WARN_ON(!list_empty(&dp->dl_recall_lru)); in revoke_delegation()
873 put_clnt_odstate(dp->dl_clnt_odstate); in revoke_delegation()
874 nfs4_put_deleg_lease(dp->dl_stid.sc_file); in revoke_delegation()
877 nfs4_put_stid(&dp->dl_stid); in revoke_delegation()
879 dp->dl_stid.sc_type = NFS4_REVOKED_DELEG_STID; in revoke_delegation()
881 list_add(&dp->dl_recall_lru, &clp->cl_revoked); in revoke_delegation()
1781 struct nfs4_delegation *dp; in __destroy_client() local
1787 dp = list_entry(clp->cl_delegations.next, struct nfs4_delegation, dl_perclnt); in __destroy_client()
1788 WARN_ON(!unhash_delegation_locked(dp)); in __destroy_client()
1789 list_add(&dp->dl_recall_lru, &reaplist); in __destroy_client()
1793 dp = list_entry(reaplist.next, struct nfs4_delegation, dl_recall_lru); in __destroy_client()
1794 list_del_init(&dp->dl_recall_lru); in __destroy_client()
1795 put_clnt_odstate(dp->dl_clnt_odstate); in __destroy_client()
1796 nfs4_put_deleg_lease(dp->dl_stid.sc_file); in __destroy_client()
1797 nfs4_put_stid(&dp->dl_stid); in __destroy_client()
1800 dp = list_entry(clp->cl_revoked.next, struct nfs4_delegation, dl_recall_lru); in __destroy_client()
1801 list_del_init(&dp->dl_recall_lru); in __destroy_client()
1802 nfs4_put_stid(&dp->dl_stid); in __destroy_client()
3531 struct nfs4_delegation *dp = cb_to_delegation(cb); in nfsd4_cb_recall_prepare() local
3532 struct nfsd_net *nn = net_generic(dp->dl_stid.sc_client->net, in nfsd4_cb_recall_prepare()
3535 block_delegations(&dp->dl_stid.sc_file->fi_fhandle); in nfsd4_cb_recall_prepare()
3545 if (dp->dl_time == 0) { in nfsd4_cb_recall_prepare()
3546 dp->dl_time = get_seconds(); in nfsd4_cb_recall_prepare()
3547 list_add_tail(&dp->dl_recall_lru, &nn->del_recall_lru); in nfsd4_cb_recall_prepare()
3555 struct nfs4_delegation *dp = cb_to_delegation(cb); in nfsd4_cb_recall_done() local
3566 if (dp->dl_retries--) { in nfsd4_cb_recall_done()
3578 struct nfs4_delegation *dp = cb_to_delegation(cb); in nfsd4_cb_recall_release() local
3580 nfs4_put_stid(&dp->dl_stid); in nfsd4_cb_recall_release()
3589 static void nfsd_break_one_deleg(struct nfs4_delegation *dp) in nfsd_break_one_deleg() argument
3598 atomic_inc(&dp->dl_stid.sc_count); in nfsd_break_one_deleg()
3599 nfsd4_run_cb(&dp->dl_recall); in nfsd_break_one_deleg()
3608 struct nfs4_delegation *dp; in nfsd_break_deleg_cb() local
3634 list_for_each_entry(dp, &fp->fi_delegations, dl_perfile) in nfsd_break_deleg_cb()
3635 nfsd_break_one_deleg(dp); in nfsd_break_deleg_cb()
3764 nfs4_check_delegmode(struct nfs4_delegation *dp, int flags) in nfs4_check_delegmode() argument
3766 if ((flags & WR_STATE) && (dp->dl_type == NFS4_OPEN_DELEGATE_READ)) in nfs4_check_delegmode()
3795 struct nfs4_delegation **dp) in nfs4_check_deleg() argument
3810 *dp = deleg; in nfs4_check_deleg()
4008 static int nfs4_setlease(struct nfs4_delegation *dp) in nfs4_setlease() argument
4010 struct nfs4_file *fp = dp->dl_stid.sc_file; in nfs4_setlease()
4039 status = hash_delegation_locked(dp, fp); in nfs4_setlease()
4044 status = hash_delegation_locked(dp, fp); in nfs4_setlease()
4066 struct nfs4_delegation *dp; in nfs4_set_delegation() local
4080 dp = alloc_init_deleg(clp, fh, odstate); in nfs4_set_delegation()
4081 if (!dp) in nfs4_set_delegation()
4087 dp->dl_stid.sc_file = fp; in nfs4_set_delegation()
4091 status = nfs4_setlease(dp); in nfs4_set_delegation()
4098 status = hash_delegation_locked(dp, fp); in nfs4_set_delegation()
4104 put_clnt_odstate(dp->dl_clnt_odstate); in nfs4_set_delegation()
4105 nfs4_put_stid(&dp->dl_stid); in nfs4_set_delegation()
4108 return dp; in nfs4_set_delegation()
4142 struct nfs4_delegation *dp; in nfs4_open_delegation() local
4182 dp = nfs4_set_delegation(clp, fh, stp->st_stid.sc_file, stp->st_clnt_odstate); in nfs4_open_delegation()
4183 if (IS_ERR(dp)) in nfs4_open_delegation()
4186 memcpy(&open->op_delegate_stateid, &dp->dl_stid.sc_stateid, sizeof(dp->dl_stid.sc_stateid)); in nfs4_open_delegation()
4189 STATEID_VAL(&dp->dl_stid.sc_stateid)); in nfs4_open_delegation()
4191 nfs4_put_stid(&dp->dl_stid); in nfs4_open_delegation()
4208 struct nfs4_delegation *dp) in nfsd4_deleg_xgrade_none_ext() argument
4211 dp->dl_type == NFS4_OPEN_DELEGATE_WRITE) { in nfsd4_deleg_xgrade_none_ext()
4215 dp->dl_type == NFS4_OPEN_DELEGATE_WRITE) { in nfsd4_deleg_xgrade_none_ext()
4232 struct nfs4_delegation *dp = NULL; in nfsd4_process_open2() local
4242 status = nfs4_check_deleg(cl, open, &dp); in nfsd4_process_open2()
4306 if (open->op_delegate_type == NFS4_OPEN_DELEGATE_NONE && dp && in nfsd4_process_open2()
4308 nfsd4_deleg_xgrade_none_ext(open, dp); in nfsd4_process_open2()
4321 if (dp) in nfsd4_process_open2()
4322 nfs4_put_stid(&dp->dl_stid); in nfsd4_process_open2()
4407 struct nfs4_delegation *dp; in nfs4_laundromat() local
4441 dp = list_entry (pos, struct nfs4_delegation, dl_recall_lru); in nfs4_laundromat()
4442 if (net_generic(dp->dl_stid.sc_client->net, nfsd_net_id) != nn) in nfs4_laundromat()
4444 if (time_after((unsigned long)dp->dl_time, (unsigned long)cutoff)) { in nfs4_laundromat()
4445 t = dp->dl_time - cutoff; in nfs4_laundromat()
4449 WARN_ON(!unhash_delegation_locked(dp)); in nfs4_laundromat()
4450 list_add(&dp->dl_recall_lru, &reaplist); in nfs4_laundromat()
4454 dp = list_first_entry(&reaplist, struct nfs4_delegation, in nfs4_laundromat()
4456 list_del_init(&dp->dl_recall_lru); in nfs4_laundromat()
4457 revoke_delegation(dp); in nfs4_laundromat()
4789 struct nfs4_delegation *dp; in nfsd4_free_stateid() local
4823 dp = delegstateid(s); in nfsd4_free_stateid()
4824 list_del_init(&dp->dl_recall_lru); in nfsd4_free_stateid()
5099 struct nfs4_delegation *dp; in nfsd4_delegreturn() local
5111 dp = delegstateid(s); in nfsd4_delegreturn()
5112 status = check_stateid_generation(stateid, &dp->dl_stid.sc_stateid, nfsd4_has_session(cstate)); in nfsd4_delegreturn()
5116 destroy_delegation(dp); in nfsd4_delegreturn()
5118 nfs4_put_stid(&dp->dl_stid); in nfsd4_delegreturn()
6370 struct nfs4_delegation *dp, *next; in nfsd_find_all_delegations() local
6378 list_for_each_entry_safe(dp, next, &clp->cl_delegations, dl_perclnt) { in nfsd_find_all_delegations()
6386 if (dp->dl_time != 0) in nfsd_find_all_delegations()
6390 WARN_ON(!unhash_delegation_locked(dp)); in nfsd_find_all_delegations()
6391 list_add(&dp->dl_recall_lru, victims); in nfsd_find_all_delegations()
6440 struct nfs4_delegation *dp, *next; in nfsd_forget_delegations() local
6442 list_for_each_entry_safe(dp, next, reaplist, dl_recall_lru) { in nfsd_forget_delegations()
6443 list_del_init(&dp->dl_recall_lru); in nfsd_forget_delegations()
6444 clp = dp->dl_stid.sc_client; in nfsd_forget_delegations()
6445 revoke_delegation(dp); in nfsd_forget_delegations()
6500 struct nfs4_delegation *dp, *next; in nfsd_recall_delegations() local
6502 list_for_each_entry_safe(dp, next, reaplist, dl_recall_lru) { in nfsd_recall_delegations()
6503 list_del_init(&dp->dl_recall_lru); in nfsd_recall_delegations()
6504 clp = dp->dl_stid.sc_client; in nfsd_recall_delegations()
6512 dp->dl_time = 0; in nfsd_recall_delegations()
6514 nfsd_break_one_deleg(dp); in nfsd_recall_delegations()
6709 struct nfs4_delegation *dp = NULL; in nfs4_state_shutdown_net() local
6719 dp = list_entry (pos, struct nfs4_delegation, dl_recall_lru); in nfs4_state_shutdown_net()
6720 WARN_ON(!unhash_delegation_locked(dp)); in nfs4_state_shutdown_net()
6721 list_add(&dp->dl_recall_lru, &reaplist); in nfs4_state_shutdown_net()
6725 dp = list_entry (pos, struct nfs4_delegation, dl_recall_lru); in nfs4_state_shutdown_net()
6726 list_del_init(&dp->dl_recall_lru); in nfs4_state_shutdown_net()
6727 put_clnt_odstate(dp->dl_clnt_odstate); in nfs4_state_shutdown_net()
6728 nfs4_put_deleg_lease(dp->dl_stid.sc_file); in nfs4_state_shutdown_net()
6729 nfs4_put_stid(&dp->dl_stid); in nfs4_state_shutdown_net()