diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2008-12-23 15:21:39 -0500 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2008-12-23 15:21:39 -0500 |
commit | 15c831bf1a3f8cab9812a96228145200726fea33 (patch) | |
tree | 6133811e099f223d17aaa46c9672bfb367435b26 /fs/nfs/nfs4proc.c | |
parent | 86e894899820f2b3094d5557124fc22743ae0fc7 (diff) |
NFS: Use atomic bitops when changing struct nfs_delegation->flags
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/nfs4proc.c')
-rw-r--r-- | fs/nfs/nfs4proc.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 254cbff103f5..d53aa2dace84 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c | |||
@@ -344,7 +344,7 @@ static int can_open_delegated(struct nfs_delegation *delegation, mode_t open_fla | |||
344 | { | 344 | { |
345 | if ((delegation->type & open_flags) != open_flags) | 345 | if ((delegation->type & open_flags) != open_flags) |
346 | return 0; | 346 | return 0; |
347 | if (delegation->flags & NFS_DELEGATION_NEED_RECLAIM) | 347 | if (test_bit(NFS_DELEGATION_NEED_RECLAIM, &delegation->flags)) |
348 | return 0; | 348 | return 0; |
349 | return 1; | 349 | return 1; |
350 | } | 350 | } |
@@ -536,7 +536,7 @@ static struct nfs4_state *nfs4_opendata_to_nfs4_state(struct nfs4_opendata *data | |||
536 | if (delegation) | 536 | if (delegation) |
537 | delegation_flags = delegation->flags; | 537 | delegation_flags = delegation->flags; |
538 | rcu_read_unlock(); | 538 | rcu_read_unlock(); |
539 | if (!(delegation_flags & NFS_DELEGATION_NEED_RECLAIM)) | 539 | if ((delegation_flags & 1UL<<NFS_DELEGATION_NEED_RECLAIM) == 0) |
540 | nfs_inode_set_delegation(state->inode, | 540 | nfs_inode_set_delegation(state->inode, |
541 | data->owner->so_cred, | 541 | data->owner->so_cred, |
542 | &data->o_res); | 542 | &data->o_res); |
@@ -667,7 +667,7 @@ static int _nfs4_do_open_reclaim(struct nfs_open_context *ctx, struct nfs4_state | |||
667 | opendata->o_arg.fh = NFS_FH(state->inode); | 667 | opendata->o_arg.fh = NFS_FH(state->inode); |
668 | rcu_read_lock(); | 668 | rcu_read_lock(); |
669 | delegation = rcu_dereference(NFS_I(state->inode)->delegation); | 669 | delegation = rcu_dereference(NFS_I(state->inode)->delegation); |
670 | if (delegation != NULL && (delegation->flags & NFS_DELEGATION_NEED_RECLAIM) != 0) | 670 | if (delegation != NULL && test_bit(NFS_DELEGATION_NEED_RECLAIM, &delegation->flags) != 0) |
671 | delegation_type = delegation->type; | 671 | delegation_type = delegation->type; |
672 | rcu_read_unlock(); | 672 | rcu_read_unlock(); |
673 | opendata->o_arg.u.delegation_type = delegation_type; | 673 | opendata->o_arg.u.delegation_type = delegation_type; |
@@ -839,7 +839,7 @@ static void nfs4_open_prepare(struct rpc_task *task, void *calldata) | |||
839 | rcu_read_lock(); | 839 | rcu_read_lock(); |
840 | delegation = rcu_dereference(NFS_I(data->state->inode)->delegation); | 840 | delegation = rcu_dereference(NFS_I(data->state->inode)->delegation); |
841 | if (delegation != NULL && | 841 | if (delegation != NULL && |
842 | (delegation->flags & NFS_DELEGATION_NEED_RECLAIM) == 0) { | 842 | test_bit(NFS_DELEGATION_NEED_RECLAIM, &delegation->flags) == 0) { |
843 | rcu_read_unlock(); | 843 | rcu_read_unlock(); |
844 | goto out_no_action; | 844 | goto out_no_action; |
845 | } | 845 | } |