Skip to content

Commit

Permalink
shmem: new export ops
Browse files Browse the repository at this point in the history
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 <hch@lst.de>
Cc: Neil Brown <neilb@suse.de>
Cc: "J. Bruce Fields" <bfields@fieldses.org>
Cc: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Christoph Hellwig authored and Linus Torvalds committed Oct 22, 2007
1 parent 905251a commit 480b116
Showing 1 changed file with 13 additions and 22 deletions.
35 changes: 13 additions & 22 deletions mm/shmem.c
Original file line number Diff line number Diff line change
Expand Up @@ -2020,33 +2020,25 @@ static int shmem_match(struct inode *ino, void *vfh)
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];

if (fh_len < 3)
return NULL;

inode = ilookup5(sb, (unsigned long)(inum+fh[0]), shmem_match, vfh);
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,
Expand Down Expand Up @@ -2081,9 +2073,8 @@ static int shmem_encode_fh(struct dentry *dentry, __u32 *fh, int *len,

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,
Expand Down

0 comments on commit 480b116

Please sign in to comment.