diff options
| author | Christoph Hellwig <hch@lst.de> | 2007-10-21 19:42:07 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-22 11:13:19 -0400 |
| commit | 74af0baad4fd44cc4412cc210d6d9b6fdf7be8da (patch) | |
| tree | 8f32eb3face12fa06b6a50886020dac3d42b8ff9 /fs/ext3 | |
| parent | 2e4c68e30352bc0018999c3e631e4363ce428424 (diff) | |
ext3: new export ops
Trivial switch over to the new generic helpers.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Cc: Neil Brown <neilb@suse.de>
Cc: "J. Bruce Fields" <bfields@fieldses.org>
Cc: <linux-ext4@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/ext3')
| -rw-r--r-- | fs/ext3/super.c | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/fs/ext3/super.c b/fs/ext3/super.c index 81868c0bc40e..6a66f3d02b75 100644 --- a/fs/ext3/super.c +++ b/fs/ext3/super.c | |||
| @@ -631,13 +631,10 @@ static int ext3_show_options(struct seq_file *seq, struct vfsmount *vfs) | |||
| 631 | } | 631 | } |
| 632 | 632 | ||
| 633 | 633 | ||
| 634 | static struct dentry *ext3_get_dentry(struct super_block *sb, void *vobjp) | 634 | static struct inode *ext3_nfs_get_inode(struct super_block *sb, |
| 635 | u64 ino, u32 generation) | ||
| 635 | { | 636 | { |
| 636 | __u32 *objp = vobjp; | ||
| 637 | unsigned long ino = objp[0]; | ||
| 638 | __u32 generation = objp[1]; | ||
| 639 | struct inode *inode; | 637 | struct inode *inode; |
| 640 | struct dentry *result; | ||
| 641 | 638 | ||
| 642 | if (ino < EXT3_FIRST_INO(sb) && ino != EXT3_ROOT_INO) | 639 | if (ino < EXT3_FIRST_INO(sb) && ino != EXT3_ROOT_INO) |
| 643 | return ERR_PTR(-ESTALE); | 640 | return ERR_PTR(-ESTALE); |
| @@ -660,15 +657,22 @@ static struct dentry *ext3_get_dentry(struct super_block *sb, void *vobjp) | |||
| 660 | iput(inode); | 657 | iput(inode); |
| 661 | return ERR_PTR(-ESTALE); | 658 | return ERR_PTR(-ESTALE); |
| 662 | } | 659 | } |
| 663 | /* now to find a dentry. | 660 | |
| 664 | * If possible, get a well-connected one | 661 | return inode; |
| 665 | */ | 662 | } |
| 666 | result = d_alloc_anon(inode); | 663 | |
| 667 | if (!result) { | 664 | static struct dentry *ext3_fh_to_dentry(struct super_block *sb, struct fid *fid, |
| 668 | iput(inode); | 665 | int fh_len, int fh_type) |
| 669 | return ERR_PTR(-ENOMEM); | 666 | { |
| 670 | } | 667 | return generic_fh_to_dentry(sb, fid, fh_len, fh_type, |
| 671 | return result; | 668 | ext3_nfs_get_inode); |
| 669 | } | ||
| 670 | |||
| 671 | static struct dentry *ext3_fh_to_parent(struct super_block *sb, struct fid *fid, | ||
| 672 | int fh_len, int fh_type) | ||
| 673 | { | ||
| 674 | return generic_fh_to_parent(sb, fid, fh_len, fh_type, | ||
| 675 | ext3_nfs_get_inode); | ||
| 672 | } | 676 | } |
| 673 | 677 | ||
| 674 | #ifdef CONFIG_QUOTA | 678 | #ifdef CONFIG_QUOTA |
| @@ -738,8 +742,9 @@ static const struct super_operations ext3_sops = { | |||
| 738 | }; | 742 | }; |
| 739 | 743 | ||
| 740 | static struct export_operations ext3_export_ops = { | 744 | static struct export_operations ext3_export_ops = { |
| 745 | .fh_to_dentry = ext3_fh_to_dentry, | ||
| 746 | .fh_to_parent = ext3_fh_to_parent, | ||
| 741 | .get_parent = ext3_get_parent, | 747 | .get_parent = ext3_get_parent, |
| 742 | .get_dentry = ext3_get_dentry, | ||
| 743 | }; | 748 | }; |
| 744 | 749 | ||
| 745 | enum { | 750 | enum { |
