Re: [RFC] [PATCH] Clean up fs.h union for ext2

Daniel Phillips
2002-01-06T03:29:22Z

On January 5, 2002 03:56 pm, Anton Altaparmakov wrote:
> At 14:47 05/01/02, Daniel Phillips wrote:
> >On January 5, 2002 03:29 pm, Anton Altaparmakov wrote:
> > > If anyone wants a look NTFS TNG already has gone all the way (for a
> > > while now in fact). Both fs inode and super block are fs internal slab
> > > caches and both use static inline NTFS_I / NTFS_SB functions and the
> > > ntfs includes from linux/fs.h are removed altogether. Code is in
> > > sourceforge cvs. For instructions how to download the code or to browse
> > > it online, see:
> >
> >Nice, did you use the generic_ip fields?
>
> Yes. From ntfs-driver-tng/linux/fs/ntfs/fs.h:
>
> [...]
>
> static inline ntfs_inode *NTFS_I(struct inode *inode)
> {
> return inode->u.generic_ip;
> }

OK, so are doing two kmem_cache_allocs for every new_inode. With the
unbork.fs patch you could save 50% of the kmem_cache_allocs by
rewriting as follows:

static inline ntfs_inode *NTFS_I(struct inode *inode)
{
/* should bug-check to be sure it's really one of ours */
return (ntfs_inode *) &(inode->u);
}

And you just fill in the inode_size field of the file_system_type
declaration. The vfs will then handle all the details of allocating/freeing
inodes and the inode slab cache. (Note that Al seems to think this is the
wrong way of doing it, but hasn't said why he thinks that yet.)

For superblocks - are you sure you want a dedicated slab cache for those? It
seems to me that kmalloc is perfectly appropriate for this, and saves the
code needed to set up, keep track of, and tear down the slab cache.

--
Daniel