diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-03-04 18:13:56 -0500 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-03-06 10:32:46 -0500 |
commit | f597c53790f662662281b82b7692a22d2a4d4afa (patch) | |
tree | 3567e1c7e232973fee14b7ddffa3545cd88392d0 /fs/nfs/delegation.c | |
parent | 1e3987c3052a48fbfc8f5d30214c825eff41192d (diff) |
NFSv4: Add helpers for basic copying of stateids
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/delegation.c')
-rw-r--r-- | fs/nfs/delegation.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/fs/nfs/delegation.c b/fs/nfs/delegation.c index c7249e26e2e9..87f7544f3dce 100644 --- a/fs/nfs/delegation.c +++ b/fs/nfs/delegation.c | |||
@@ -105,7 +105,7 @@ again: | |||
105 | continue; | 105 | continue; |
106 | if (!test_bit(NFS_DELEGATED_STATE, &state->flags)) | 106 | if (!test_bit(NFS_DELEGATED_STATE, &state->flags)) |
107 | continue; | 107 | continue; |
108 | if (memcmp(state->stateid.data, stateid->data, sizeof(state->stateid.data)) != 0) | 108 | if (!nfs4_stateid_match(&state->stateid, stateid)) |
109 | continue; | 109 | continue; |
110 | get_nfs_open_context(ctx); | 110 | get_nfs_open_context(ctx); |
111 | spin_unlock(&inode->i_lock); | 111 | spin_unlock(&inode->i_lock); |
@@ -139,8 +139,7 @@ void nfs_inode_reclaim_delegation(struct inode *inode, struct rpc_cred *cred, | |||
139 | if (delegation != NULL) { | 139 | if (delegation != NULL) { |
140 | spin_lock(&delegation->lock); | 140 | spin_lock(&delegation->lock); |
141 | if (delegation->inode != NULL) { | 141 | if (delegation->inode != NULL) { |
142 | memcpy(delegation->stateid.data, res->delegation.data, | 142 | nfs4_stateid_copy(&delegation->stateid, &res->delegation); |
143 | sizeof(delegation->stateid.data)); | ||
144 | delegation->type = res->delegation_type; | 143 | delegation->type = res->delegation_type; |
145 | delegation->maxsize = res->maxsize; | 144 | delegation->maxsize = res->maxsize; |
146 | oldcred = delegation->cred; | 145 | oldcred = delegation->cred; |
@@ -236,8 +235,7 @@ int nfs_inode_set_delegation(struct inode *inode, struct rpc_cred *cred, struct | |||
236 | delegation = kmalloc(sizeof(*delegation), GFP_NOFS); | 235 | delegation = kmalloc(sizeof(*delegation), GFP_NOFS); |
237 | if (delegation == NULL) | 236 | if (delegation == NULL) |
238 | return -ENOMEM; | 237 | return -ENOMEM; |
239 | memcpy(delegation->stateid.data, res->delegation.data, | 238 | nfs4_stateid_copy(&delegation->stateid, &res->delegation); |
240 | sizeof(delegation->stateid.data)); | ||
241 | delegation->type = res->delegation_type; | 239 | delegation->type = res->delegation_type; |
242 | delegation->maxsize = res->maxsize; | 240 | delegation->maxsize = res->maxsize; |
243 | delegation->change_attr = inode->i_version; | 241 | delegation->change_attr = inode->i_version; |
@@ -250,8 +248,8 @@ int nfs_inode_set_delegation(struct inode *inode, struct rpc_cred *cred, struct | |||
250 | old_delegation = rcu_dereference_protected(nfsi->delegation, | 248 | old_delegation = rcu_dereference_protected(nfsi->delegation, |
251 | lockdep_is_held(&clp->cl_lock)); | 249 | lockdep_is_held(&clp->cl_lock)); |
252 | if (old_delegation != NULL) { | 250 | if (old_delegation != NULL) { |
253 | if (memcmp(&delegation->stateid, &old_delegation->stateid, | 251 | if (nfs4_stateid_match(&delegation->stateid, |
254 | sizeof(old_delegation->stateid)) == 0 && | 252 | &old_delegation->stateid) && |
255 | delegation->type == old_delegation->type) { | 253 | delegation->type == old_delegation->type) { |
256 | goto out; | 254 | goto out; |
257 | } | 255 | } |
@@ -708,7 +706,7 @@ int nfs4_copy_delegation_stateid(nfs4_stateid *dst, struct inode *inode) | |||
708 | rcu_read_lock(); | 706 | rcu_read_lock(); |
709 | delegation = rcu_dereference(nfsi->delegation); | 707 | delegation = rcu_dereference(nfsi->delegation); |
710 | if (delegation != NULL) { | 708 | if (delegation != NULL) { |
711 | memcpy(dst->data, delegation->stateid.data, sizeof(dst->data)); | 709 | nfs4_stateid_copy(dst, &delegation->stateid); |
712 | ret = 1; | 710 | ret = 1; |
713 | } | 711 | } |
714 | rcu_read_unlock(); | 712 | rcu_read_unlock(); |