nfs: add a nfs_ilookup helper
This helper will allow to find an existing NFS inode by the file handle and fattr. Signed-off-by: Peng Tao <tao.peng@primarydata.com> [hch: split from a larger patch] Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
774d9513a3
commit
f174ff7a0a
|
@ -386,6 +386,28 @@ void nfs_setsecurity(struct inode *inode, struct nfs_fattr *fattr,
|
|||
#endif
|
||||
EXPORT_SYMBOL_GPL(nfs_setsecurity);
|
||||
|
||||
/* Search for inode identified by fh, fileid and i_mode in inode cache. */
|
||||
struct inode *
|
||||
nfs_ilookup(struct super_block *sb, struct nfs_fattr *fattr, struct nfs_fh *fh)
|
||||
{
|
||||
struct nfs_find_desc desc = {
|
||||
.fh = fh,
|
||||
.fattr = fattr,
|
||||
};
|
||||
struct inode *inode;
|
||||
unsigned long hash;
|
||||
|
||||
if (!(fattr->valid & NFS_ATTR_FATTR_FILEID) ||
|
||||
!(fattr->valid & NFS_ATTR_FATTR_TYPE))
|
||||
return NULL;
|
||||
|
||||
hash = nfs_fattr_to_ino_t(fattr);
|
||||
inode = ilookup5(sb, hash, nfs_find_actor, &desc);
|
||||
|
||||
dprintk("%s: returning %p\n", __func__, inode);
|
||||
return inode;
|
||||
}
|
||||
|
||||
/*
|
||||
* This is our front-end to iget that looks up inodes by file handle
|
||||
* instead of inode number.
|
||||
|
|
|
@ -332,6 +332,7 @@ extern void nfs_zap_caches(struct inode *);
|
|||
extern void nfs_invalidate_atime(struct inode *);
|
||||
extern struct inode *nfs_fhget(struct super_block *, struct nfs_fh *,
|
||||
struct nfs_fattr *, struct nfs4_label *);
|
||||
struct inode *nfs_ilookup(struct super_block *sb, struct nfs_fattr *, struct nfs_fh *);
|
||||
extern int nfs_refresh_inode(struct inode *, struct nfs_fattr *);
|
||||
extern int nfs_post_op_update_inode(struct inode *inode, struct nfs_fattr *fattr);
|
||||
extern int nfs_post_op_update_inode_force_wcc(struct inode *inode, struct nfs_fattr *fattr);
|
||||
|
|
Loading…
Reference in New Issue