Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 71994
b: refs/heads/master
c: 644f9ab
h: refs/heads/master
v: v3
  • Loading branch information
Christoph Hellwig authored and Linus Torvalds committed Oct 22, 2007
1 parent d4a316b commit 04b8cf6
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 42 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 34c0d154243dd913c5690ae6ceb9557017429b9c
refs/heads/master: 644f9ab3b0aa386820ce709de747d46b4cece16f
65 changes: 24 additions & 41 deletions trunk/fs/ocfs2/export.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,9 @@ struct ocfs2_inode_handle
u32 ih_generation;
};

static struct dentry *ocfs2_get_dentry(struct super_block *sb, void *vobjp)
static struct dentry *ocfs2_get_dentry(struct super_block *sb,
struct ocfs2_inode_handle *handle)
{
struct ocfs2_inode_handle *handle = vobjp;
struct inode *inode;
struct dentry *result;

Expand Down Expand Up @@ -194,54 +194,37 @@ static int ocfs2_encode_fh(struct dentry *dentry, u32 *fh_in, int *max_len,
return type;
}

static struct dentry *ocfs2_decode_fh(struct super_block *sb, u32 *fh_in,
int fh_len, int fileid_type,
int (*acceptable)(void *context,
struct dentry *de),
void *context)
static struct dentry *ocfs2_fh_to_dentry(struct super_block *sb,
struct fid *fid, int fh_len, int fh_type)
{
struct ocfs2_inode_handle handle, parent;
struct dentry *ret = NULL;
__le32 *fh = (__force __le32 *) fh_in;

mlog_entry("(0x%p, 0x%p, %d, %d, 0x%p, 0x%p)\n",
sb, fh, fh_len, fileid_type, acceptable, context);

if (fh_len < 3 || fileid_type > 2)
goto bail;

if (fileid_type == 2) {
if (fh_len < 6)
goto bail;

parent.ih_blkno = (u64)le32_to_cpu(fh[3]) << 32;
parent.ih_blkno |= (u64)le32_to_cpu(fh[4]);
parent.ih_generation = le32_to_cpu(fh[5]);
struct ocfs2_inode_handle handle;

mlog(0, "Decoding parent: blkno: %llu, generation: %u\n",
(unsigned long long)parent.ih_blkno,
parent.ih_generation);
}
if (fh_len < 3 || fh_type > 2)
return NULL;

handle.ih_blkno = (u64)le32_to_cpu(fh[0]) << 32;
handle.ih_blkno |= (u64)le32_to_cpu(fh[1]);
handle.ih_generation = le32_to_cpu(fh[2]);
handle.ih_blkno = (u64)le32_to_cpu(fid->raw[0]) << 32;
handle.ih_blkno |= (u64)le32_to_cpu(fid->raw[1]);
handle.ih_generation = le32_to_cpu(fid->raw[2]);
return ocfs2_get_dentry(sb, &handle);
}

mlog(0, "Encoding fh: blkno: %llu, generation: %u\n",
(unsigned long long)handle.ih_blkno, handle.ih_generation);
static struct dentry *ocfs2_fh_to_parent(struct super_block *sb,
struct fid *fid, int fh_len, int fh_type)
{
struct ocfs2_inode_handle parent;

ret = ocfs2_export_ops.find_exported_dentry(sb, &handle, &parent,
acceptable, context);
if (fh_type != 2 || fh_len < 6)
return NULL;

bail:
mlog_exit_ptr(ret);
return ret;
parent.ih_blkno = (u64)le32_to_cpu(fid->raw[3]) << 32;
parent.ih_blkno |= (u64)le32_to_cpu(fid->raw[4]);
parent.ih_generation = le32_to_cpu(fid->raw[5]);
return ocfs2_get_dentry(sb, &parent);
}

struct export_operations ocfs2_export_ops = {
.decode_fh = ocfs2_decode_fh,
.encode_fh = ocfs2_encode_fh,

.fh_to_dentry = ocfs2_fh_to_dentry,
.fh_to_parent = ocfs2_fh_to_parent,
.get_parent = ocfs2_get_parent,
.get_dentry = ocfs2_get_dentry,
};

0 comments on commit 04b8cf6

Please sign in to comment.