shmem: new export ops
Subsystems (5)
PATCH 13/19 shmem: new export ops
I'm not sure what people were thinking when adding support to export tmpfs, but here's the conversion anyway:
Signed-off-by Christoph Hellwig <[email protected]>
mm/shmem.c +13 -22
@@ -1977,33 +1977,25 @@return ino->i_ino == inum && fh[0 ] == ino->i_generation; } -static struct dentry *shmem_get_dentry (struct super_block *sb,void *vfh) +static struct dentry *shmem_fh_to_dentry (struct super_block *sb, +struct fid *fid,int fh_len,int fh_type) { -struct dentry *de =NULL ;struct inode *inode; -__u32 *fh = vfh; -__u64 inum = fh[2 ]; - inum = (inum <<32 ) | fh[1 ]; +struct dentry *dentry =NULL ; +u64 inum = fid->raw[2 ]; + inum = (inum <<32 ) | fid->raw[1 ]; - inode =ilookup5 (sb, (unsigned long )(inum+fh[0 ]), shmem_match, vfh); +if (fh_len <3 ) +return NULL ; + + inode =ilookup5 (sb, (unsigned long )(inum + fid->raw[0 ]), + shmem_match, fid->raw);if (inode) { - de =d_find_alias (inode); + dentry =d_find_alias (inode);iput (inode); } -return de? de:ERR_PTR (-ESTALE ); -} - -static struct dentry *shmem_decode_fh (struct super_block *sb,__u32 *fh, -int len,int type, -int (*acceptable)(void *context,struct dentry *de), -void *context) -{ -if (len <3 ) -return ERR_PTR (-ESTALE ); - -return sb->s_export_op->find_exported_dentry (sb, fh,NULL , acceptable, - context); +return dentry; } static int shmem_encode_fh(struct dentry *dentry, __u32 *fh, int *len,
@@ -2038,9 +2030,8 @@static struct export_operations shmem_export_ops = { .get_parent = shmem_get_parent, - .get_dentry = shmem_get_dentry, .encode_fh = shmem_encode_fh, - .decode_fh = shmem_decode_fh, + .fh_to_dentry = shmem_fh_to_dentry, }; static int shmem_parse_options(char *options, int *mode, uid_t *uid,
--