diff options
author | David Chinner <david@fromorbit.com> | 2008-10-30 02:35:24 -0400 |
---|---|---|
committer | Lachlan McIlroy <lachlan@redback.melbourne.sgi.com> | 2008-10-30 02:35:24 -0400 |
commit | 8290c35f87304a6b73d4fd17b03580b4f7425de8 (patch) | |
tree | cf7fb08de3fd7a6a1ccb079d2d5d53837aca16fe /include | |
parent | 2cb1599f9b2ecdd7a9e59feeee647eb258966839 (diff) |
Inode: Allow external list initialisation
To allow XFS to combine the XFS and linux inodes into a single
structure, we need to drive inode lookup from the XFS inode cache,
not the generic inode cache. This means that we need initialise a
struct inode from a context outside alloc_inode() as it is no longer
used by XFS.
After inode allocation and initialisation, we need to add the inode
to the superblock list, the in-use list, hash it and do some
accounting. This all needs to be done with the inode_lock held and
there are already several places in fs/inode.c that do this list
manipulation. Factor out the common code, add a locking wrapper and
export the function so ti can be called from XFS.
Signed-off-by: Dave Chinner <david@fromorbit.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/fs.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h index 04abead4b021..1deedf235d55 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -1883,6 +1883,7 @@ extern loff_t vfs_llseek(struct file *file, loff_t offset, int origin); | |||
1883 | 1883 | ||
1884 | extern struct inode * inode_init_always(struct super_block *, struct inode *); | 1884 | extern struct inode * inode_init_always(struct super_block *, struct inode *); |
1885 | extern void inode_init_once(struct inode *); | 1885 | extern void inode_init_once(struct inode *); |
1886 | extern void inode_add_to_lists(struct super_block *, struct inode *); | ||
1886 | extern void iput(struct inode *); | 1887 | extern void iput(struct inode *); |
1887 | extern struct inode * igrab(struct inode *); | 1888 | extern struct inode * igrab(struct inode *); |
1888 | extern ino_t iunique(struct super_block *, ino_t); | 1889 | extern ino_t iunique(struct super_block *, ino_t); |