Loading fs/nfs/delegation.c +18 −4 Original line number Diff line number Diff line Loading @@ -385,29 +385,43 @@ void nfs_super_return_all_delegations(struct super_block *sb) nfs4_schedule_state_manager(clp); } static void nfs_client_mark_return_all_delegations(struct nfs_client *clp) static void nfs_client_mark_return_all_delegation_types(struct nfs_client *clp, fmode_t flags) { struct nfs_delegation *delegation; rcu_read_lock(); list_for_each_entry_rcu(delegation, &clp->cl_delegations, super_list) { if ((delegation->type == (FMODE_READ|FMODE_WRITE)) && !(flags & FMODE_WRITE)) continue; if (delegation->type & flags) nfs_mark_return_delegation(clp, delegation); } rcu_read_unlock(); } static void nfs_client_mark_return_all_delegations(struct nfs_client *clp) { nfs_client_mark_return_all_delegation_types(clp, FMODE_READ|FMODE_WRITE); } static void nfs_delegation_run_state_manager(struct nfs_client *clp) { if (test_bit(NFS4CLNT_DELEGRETURN, &clp->cl_state)) nfs4_schedule_state_manager(clp); } void nfs_expire_all_delegations(struct nfs_client *clp) static void nfs_expire_all_delegation_types(struct nfs_client *clp, fmode_t flags) { nfs_client_mark_return_all_delegations(clp); nfs_client_mark_return_all_delegation_types(clp, flags); nfs_delegation_run_state_manager(clp); } void nfs_expire_all_delegations(struct nfs_client *clp) { nfs_expire_all_delegation_types(clp, FMODE_READ|FMODE_WRITE); } /* * Return all delegations following an NFS4ERR_CB_PATH_DOWN error. */ Loading Loading
fs/nfs/delegation.c +18 −4 Original line number Diff line number Diff line Loading @@ -385,29 +385,43 @@ void nfs_super_return_all_delegations(struct super_block *sb) nfs4_schedule_state_manager(clp); } static void nfs_client_mark_return_all_delegations(struct nfs_client *clp) static void nfs_client_mark_return_all_delegation_types(struct nfs_client *clp, fmode_t flags) { struct nfs_delegation *delegation; rcu_read_lock(); list_for_each_entry_rcu(delegation, &clp->cl_delegations, super_list) { if ((delegation->type == (FMODE_READ|FMODE_WRITE)) && !(flags & FMODE_WRITE)) continue; if (delegation->type & flags) nfs_mark_return_delegation(clp, delegation); } rcu_read_unlock(); } static void nfs_client_mark_return_all_delegations(struct nfs_client *clp) { nfs_client_mark_return_all_delegation_types(clp, FMODE_READ|FMODE_WRITE); } static void nfs_delegation_run_state_manager(struct nfs_client *clp) { if (test_bit(NFS4CLNT_DELEGRETURN, &clp->cl_state)) nfs4_schedule_state_manager(clp); } void nfs_expire_all_delegations(struct nfs_client *clp) static void nfs_expire_all_delegation_types(struct nfs_client *clp, fmode_t flags) { nfs_client_mark_return_all_delegations(clp); nfs_client_mark_return_all_delegation_types(clp, flags); nfs_delegation_run_state_manager(clp); } void nfs_expire_all_delegations(struct nfs_client *clp) { nfs_expire_all_delegation_types(clp, FMODE_READ|FMODE_WRITE); } /* * Return all delegations following an NFS4ERR_CB_PATH_DOWN error. */ Loading