diff options
author | Christoph Hellwig <hch@lst.de> | 2014-08-14 02:41:48 -0400 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2015-02-02 12:09:39 -0500 |
commit | 4d94c2ef2008a07fb1467e33da156de6fba9aad1 (patch) | |
tree | 57bca0d39ac09aaa01848711e6ccc2838274c855 | |
parent | 11afe9f76e121e960445deee5b7f26f0787a1990 (diff) |
nfsd: move nfsd_fh_match to nfsfh.h
The pnfs code will need it too. Also remove the nfsd_ prefix to match the
other filehandle helpers in that file.
Signed-off-by: Christoph Hellwig <hch@lst.de>
-rw-r--r-- | fs/nfsd/nfs4state.c | 12 | ||||
-rw-r--r-- | fs/nfsd/nfsfh.h | 9 |
2 files changed, 11 insertions, 10 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index e6b354a0d89e..eb0336e526d2 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c | |||
@@ -398,14 +398,6 @@ static unsigned int file_hashval(struct knfsd_fh *fh) | |||
398 | return nfsd_fh_hashval(fh) & (FILE_HASH_SIZE - 1); | 398 | return nfsd_fh_hashval(fh) & (FILE_HASH_SIZE - 1); |
399 | } | 399 | } |
400 | 400 | ||
401 | static bool nfsd_fh_match(struct knfsd_fh *fh1, struct knfsd_fh *fh2) | ||
402 | { | ||
403 | return fh1->fh_size == fh2->fh_size && | ||
404 | !memcmp(fh1->fh_base.fh_pad, | ||
405 | fh2->fh_base.fh_pad, | ||
406 | fh1->fh_size); | ||
407 | } | ||
408 | |||
409 | static struct hlist_head file_hashtbl[FILE_HASH_SIZE]; | 401 | static struct hlist_head file_hashtbl[FILE_HASH_SIZE]; |
410 | 402 | ||
411 | static void | 403 | static void |
@@ -3295,7 +3287,7 @@ find_file_locked(struct knfsd_fh *fh, unsigned int hashval) | |||
3295 | struct nfs4_file *fp; | 3287 | struct nfs4_file *fp; |
3296 | 3288 | ||
3297 | hlist_for_each_entry_rcu(fp, &file_hashtbl[hashval], fi_hash) { | 3289 | hlist_for_each_entry_rcu(fp, &file_hashtbl[hashval], fi_hash) { |
3298 | if (nfsd_fh_match(&fp->fi_fhandle, fh)) { | 3290 | if (fh_match(&fp->fi_fhandle, fh)) { |
3299 | if (atomic_inc_not_zero(&fp->fi_ref)) | 3291 | if (atomic_inc_not_zero(&fp->fi_ref)) |
3300 | return fp; | 3292 | return fp; |
3301 | } | 3293 | } |
@@ -4290,7 +4282,7 @@ laundromat_main(struct work_struct *laundry) | |||
4290 | 4282 | ||
4291 | static inline __be32 nfs4_check_fh(struct svc_fh *fhp, struct nfs4_ol_stateid *stp) | 4283 | static inline __be32 nfs4_check_fh(struct svc_fh *fhp, struct nfs4_ol_stateid *stp) |
4292 | { | 4284 | { |
4293 | if (!nfsd_fh_match(&fhp->fh_handle, &stp->st_stid.sc_file->fi_fhandle)) | 4285 | if (!fh_match(&fhp->fh_handle, &stp->st_stid.sc_file->fi_fhandle)) |
4294 | return nfserr_bad_stateid; | 4286 | return nfserr_bad_stateid; |
4295 | return nfs_ok; | 4287 | return nfs_ok; |
4296 | } | 4288 | } |
diff --git a/fs/nfsd/nfsfh.h b/fs/nfsd/nfsfh.h index 08236d70c667..e24d95436db3 100644 --- a/fs/nfsd/nfsfh.h +++ b/fs/nfsd/nfsfh.h | |||
@@ -187,6 +187,15 @@ fh_init(struct svc_fh *fhp, int maxsize) | |||
187 | return fhp; | 187 | return fhp; |
188 | } | 188 | } |
189 | 189 | ||
190 | static inline bool fh_match(struct knfsd_fh *fh1, struct knfsd_fh *fh2) | ||
191 | { | ||
192 | if (fh1->fh_size != fh2->fh_size) | ||
193 | return false; | ||
194 | if (memcmp(fh1->fh_base.fh_pad, fh2->fh_base.fh_pad, fh1->fh_size) != 0) | ||
195 | return false; | ||
196 | return true; | ||
197 | } | ||
198 | |||
190 | #ifdef CONFIG_NFSD_V3 | 199 | #ifdef CONFIG_NFSD_V3 |
191 | /* | 200 | /* |
192 | * The wcc data stored in current_fh should be cleared | 201 | * The wcc data stored in current_fh should be cleared |