Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 175968
b: refs/heads/master
c: c79571a
h: refs/heads/master
v: v3
  • Loading branch information
Alexandros Batsakis authored and Trond Myklebust committed Dec 5, 2009
1 parent 018acb6 commit 9d574ba
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b4a6f4966efc7e70dc8d8a9e60744de6845b14bf
refs/heads/master: c79571a508801e055a0be583d6dc70bddad7bb64
22 changes: 18 additions & 4 deletions trunk/fs/nfs/delegation.c
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
nfs_mark_return_delegation(clp, delegation);
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.
*/
Expand Down

0 comments on commit 9d574ba

Please sign in to comment.