fs: re-order super_block to remove 16 bytes of padding on 64bit builds
authorRichard Kennedy <richard@rsk.demon.co.uk>
Tue, 26 Jan 2010 14:12:43 +0000 (14:12 +0000)
committerAl Viro <viro@zeniv.linux.org.uk>
Wed, 3 Mar 2010 19:07:55 +0000 (14:07 -0500)
re-order structure super_block to remove 16 bytes of alignment padding
on 64bit builds.

This shrinks the size of super_block from 712 to 696 bytes so requiring
one fewer 64 byte cache lines.

Signed-off-by: Richard Kennedy <richard@rsk.demon.co.uk>
-----
patch against 2.6.33-rc5
compiled & tested on x86_64 AMDX2 desktop machine.

I've been running with this patch applied for several weeks with no
problems.

regards
Richard
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
include/linux/fs.h

index 2b124c8..aa76dae 100644 (file)
@@ -1314,9 +1314,9 @@ extern spinlock_t sb_lock;
 struct super_block {
        struct list_head        s_list;         /* Keep this first */
        dev_t                   s_dev;          /* search index; _not_ kdev_t */
-       unsigned long           s_blocksize;
-       unsigned char           s_blocksize_bits;
        unsigned char           s_dirt;
+       unsigned char           s_blocksize_bits;
+       unsigned long           s_blocksize;
        loff_t                  s_maxbytes;     /* Max file size */
        struct file_system_type *s_type;
        const struct super_operations   *s_op;
@@ -1357,16 +1357,16 @@ struct super_block {
        void                    *s_fs_info;     /* Filesystem private info */
        fmode_t                 s_mode;
 
+       /* Granularity of c/m/atime in ns.
+          Cannot be worse than a second */
+       u32                s_time_gran;
+
        /*
         * The next field is for VFS *only*. No filesystems have any business
         * even looking at it. You had been warned.
         */
        struct mutex s_vfs_rename_mutex;        /* Kludge */
 
-       /* Granularity of c/m/atime in ns.
-          Cannot be worse than a second */
-       u32                s_time_gran;
-
        /*
         * Filesystem subtype.  If non-empty the filesystem type field
         * in /proc/mounts will be "type.subtype"