diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-04-02 14:34:06 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-05-29 23:28:33 -0400 |
commit | b0b0382bb4904965a9e9fca77ad87514dfda0d1c (patch) | |
tree | dc46873fa74e0d194e4a2571b16f0767e1919ae8 /fs/reiserfs | |
parent | 6d42e7e9f6d86ed4dfacde75a6cf515068f9749c (diff) |
->encode_fh() API change
pass inode + parent's inode or NULL instead of dentry + bool saying
whether we want the parent or not.
NOTE: that needs ceph fix folded in.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/reiserfs')
-rw-r--r-- | fs/reiserfs/inode.c | 30 | ||||
-rw-r--r-- | fs/reiserfs/reiserfs.h | 4 |
2 files changed, 14 insertions, 20 deletions
diff --git a/fs/reiserfs/inode.c b/fs/reiserfs/inode.c index 59d06871a850..a6d4268fb6c1 100644 --- a/fs/reiserfs/inode.c +++ b/fs/reiserfs/inode.c | |||
@@ -1592,13 +1592,12 @@ struct dentry *reiserfs_fh_to_parent(struct super_block *sb, struct fid *fid, | |||
1592 | (fh_type == 6) ? fid->raw[5] : 0); | 1592 | (fh_type == 6) ? fid->raw[5] : 0); |
1593 | } | 1593 | } |
1594 | 1594 | ||
1595 | int reiserfs_encode_fh(struct dentry *dentry, __u32 * data, int *lenp, | 1595 | int reiserfs_encode_fh(struct inode *inode, __u32 * data, int *lenp, |
1596 | int need_parent) | 1596 | struct inode *parent) |
1597 | { | 1597 | { |
1598 | struct inode *inode = dentry->d_inode; | ||
1599 | int maxlen = *lenp; | 1598 | int maxlen = *lenp; |
1600 | 1599 | ||
1601 | if (need_parent && (maxlen < 5)) { | 1600 | if (parent && (maxlen < 5)) { |
1602 | *lenp = 5; | 1601 | *lenp = 5; |
1603 | return 255; | 1602 | return 255; |
1604 | } else if (maxlen < 3) { | 1603 | } else if (maxlen < 3) { |
@@ -1610,20 +1609,15 @@ int reiserfs_encode_fh(struct dentry *dentry, __u32 * data, int *lenp, | |||
1610 | data[1] = le32_to_cpu(INODE_PKEY(inode)->k_dir_id); | 1609 | data[1] = le32_to_cpu(INODE_PKEY(inode)->k_dir_id); |
1611 | data[2] = inode->i_generation; | 1610 | data[2] = inode->i_generation; |
1612 | *lenp = 3; | 1611 | *lenp = 3; |
1613 | /* no room for directory info? return what we've stored so far */ | 1612 | if (parent) { |
1614 | if (maxlen < 5 || !need_parent) | 1613 | data[3] = parent->i_ino; |
1615 | return 3; | 1614 | data[4] = le32_to_cpu(INODE_PKEY(parent)->k_dir_id); |
1616 | 1615 | *lenp = 5; | |
1617 | spin_lock(&dentry->d_lock); | 1616 | if (maxlen >= 6) { |
1618 | inode = dentry->d_parent->d_inode; | 1617 | data[5] = parent->i_generation; |
1619 | data[3] = inode->i_ino; | 1618 | *lenp = 6; |
1620 | data[4] = le32_to_cpu(INODE_PKEY(inode)->k_dir_id); | 1619 | } |
1621 | *lenp = 5; | 1620 | } |
1622 | if (maxlen >= 6) { | ||
1623 | data[5] = inode->i_generation; | ||
1624 | *lenp = 6; | ||
1625 | } | ||
1626 | spin_unlock(&dentry->d_lock); | ||
1627 | return *lenp; | 1621 | return *lenp; |
1628 | } | 1622 | } |
1629 | 1623 | ||
diff --git a/fs/reiserfs/reiserfs.h b/fs/reiserfs/reiserfs.h index a59d27126338..14a4f9dfb171 100644 --- a/fs/reiserfs/reiserfs.h +++ b/fs/reiserfs/reiserfs.h | |||
@@ -2611,8 +2611,8 @@ struct dentry *reiserfs_fh_to_dentry(struct super_block *sb, struct fid *fid, | |||
2611 | int fh_len, int fh_type); | 2611 | int fh_len, int fh_type); |
2612 | struct dentry *reiserfs_fh_to_parent(struct super_block *sb, struct fid *fid, | 2612 | struct dentry *reiserfs_fh_to_parent(struct super_block *sb, struct fid *fid, |
2613 | int fh_len, int fh_type); | 2613 | int fh_len, int fh_type); |
2614 | int reiserfs_encode_fh(struct dentry *dentry, __u32 * data, int *lenp, | 2614 | int reiserfs_encode_fh(struct inode *inode, __u32 * data, int *lenp, |
2615 | int connectable); | 2615 | struct inode *parent); |
2616 | 2616 | ||
2617 | int reiserfs_truncate_file(struct inode *, int update_timestamps); | 2617 | int reiserfs_truncate_file(struct inode *, int update_timestamps); |
2618 | void make_cpu_key(struct cpu_key *cpu_key, struct inode *inode, loff_t offset, | 2618 | void make_cpu_key(struct cpu_key *cpu_key, struct inode *inode, loff_t offset, |