Skip to content

Commit

Permalink
NFSD: Lock state before calling fault injection function
Browse files Browse the repository at this point in the history
Each function touches state in some way, so getting the lock earlier
can help simplify code.

Signed-off-by: Bryan Schumaker <bjschuma@netapp.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
  • Loading branch information
Bryan Schumaker authored and J. Bruce Fields committed Dec 3, 2012
1 parent e5f9570 commit 0439583
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 16 deletions.
2 changes: 2 additions & 0 deletions fs/nfsd/fault_inject.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,9 @@ static int nfsd_inject_set(void *op_ptr, u64 val)
else
printk(KERN_INFO "NFSD Fault Injection: %s (n = %llu)", op->file, val);

nfs4_lock_state();
op->func(val);
nfs4_unlock_state();
return 0;
}

Expand Down
18 changes: 2 additions & 16 deletions fs/nfsd/nfs4state.c
Original file line number Diff line number Diff line change
Expand Up @@ -4611,13 +4611,11 @@ void nfsd_forget_clients(u64 num)
int count = 0;
struct nfsd_net *nn = net_generic(current->nsproxy->net_ns, nfsd_net_id);

nfs4_lock_state();
list_for_each_entry_safe(clp, next, &nn->client_lru, cl_lru) {
expire_client(clp);
if (++count == num)
break;
}
nfs4_unlock_state();

printk(KERN_INFO "NFSD: Forgot %d clients", count);
}
Expand Down Expand Up @@ -4653,25 +4651,15 @@ static int nfsd_release_n_owners(u64 num, bool is_open_owner,

void nfsd_forget_locks(u64 num)
{
int count;
struct nfsd_net *nn = net_generic(&init_net, nfsd_net_id);

nfs4_lock_state();
count = nfsd_release_n_owners(num, false, release_lockowner_sop, nn);
nfs4_unlock_state();

int count = nfsd_release_n_owners(num, false, release_lockowner_sop, nn);
printk(KERN_INFO "NFSD: Forgot %d locks", count);
}

void nfsd_forget_openowners(u64 num)
{
int count;
struct nfsd_net *nn = net_generic(&init_net, nfsd_net_id);

nfs4_lock_state();
count = nfsd_release_n_owners(num, true, release_openowner_sop, nn);
nfs4_unlock_state();

int count = nfsd_release_n_owners(num, true, release_openowner_sop, nn);
printk(KERN_INFO "NFSD: Forgot %d open owners", count);
}

Expand Down Expand Up @@ -4704,10 +4692,8 @@ void nfsd_forget_delegations(u64 num)
count = nfsd_process_n_delegations(num, &victims);
spin_unlock(&recall_lock);

nfs4_lock_state();
list_for_each_entry_safe(dp, dnext, &victims, dl_recall_lru)
unhash_delegation(dp);
nfs4_unlock_state();

printk(KERN_INFO "NFSD: Forgot %d delegations", count);
}
Expand Down

0 comments on commit 0439583

Please sign in to comment.