Inode: Allow external list initialisation
authorDavid Chinner <david@fromorbit.com>
Thu, 30 Oct 2008 06:35:24 +0000 (17:35 +1100)
committerLachlan McIlroy <lachlan@redback.melbourne.sgi.com>
Thu, 30 Oct 2008 06:35:24 +0000 (17:35 +1100)
commit8290c35f87304a6b73d4fd17b03580b4f7425de8
treecf7fb08de3fd7a6a1ccb079d2d5d53837aca16fe
parent2cb1599f9b2ecdd7a9e59feeee647eb258966839
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>
fs/inode.c
include/linux/fs.h