Andi Kleen mentioned that the ext2 part of the inode union was rather large.
So I wondered if I could chop it down a bit.

 * i_osync is only referenced, never set
 * i_faddr, i_frag_no, i_frag_size -- we don't support fragments.
 * not_used_1 can clearly be removed.
 * i_high_size is obsoleted by the VFS support for 64-bit files.
 * i_new_inode is set but never referenced.

I decided not to remove the ACL entries yet.

Index: fs/ext2/ialloc.c
===================================================================
RCS file: /var/cvs/linux/fs/ext2/ialloc.c,v
retrieving revision 1.1.1.3
diff -u -p -r1.1.1.3 ialloc.c
--- fs/ext2/ialloc.c    2000/12/26 00:20:32     1.1.1.3
+++ fs/ext2/ialloc.c    2001/03/12 13:44:25
@@ -432,13 +432,9 @@ repeat:
        inode->i_blksize = PAGE_SIZE;   /* This is the optimal IO size (for stat), not 
the fs block size */
        inode->i_blocks = 0;
        inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME;
-       inode->u.ext2_i.i_new_inode = 1;
        inode->u.ext2_i.i_flags = dir->u.ext2_i.i_flags;
        if (S_ISLNK(mode))
                inode->u.ext2_i.i_flags &= ~(EXT2_IMMUTABLE_FL | EXT2_APPEND_FL);
-       inode->u.ext2_i.i_faddr = 0;
-       inode->u.ext2_i.i_frag_no = 0;
-       inode->u.ext2_i.i_frag_size = 0;
        inode->u.ext2_i.i_file_acl = 0;
        inode->u.ext2_i.i_dir_acl = 0;
        inode->u.ext2_i.i_dtime = 0;
Index: fs/ext2/inode.c
===================================================================
RCS file: /var/cvs/linux/fs/ext2/inode.c,v
retrieving revision 1.1.1.3
diff -u -p -r1.1.1.3 inode.c
--- fs/ext2/inode.c     2001/01/01 10:32:55     1.1.1.3
+++ fs/ext2/inode.c     2001/03/12 13:43:00
@@ -405,7 +405,7 @@ static int ext2_alloc_branch(struct inod
                *branch[n].p = branch[n].key;
                mark_buffer_uptodate(bh, 1);
                mark_buffer_dirty_inode(bh, inode);
-               if (IS_SYNC(inode) || inode->u.ext2_i.i_osync) {
+               if (IS_SYNC(inode)) {
                        ll_rw_block (WRITE, 1, &bh);
                        wait_on_buffer (bh);
                }
@@ -470,13 +470,13 @@ static inline int ext2_splice_branch(str
        /* had we spliced it onto indirect block? */
        if (where->bh) {
                mark_buffer_dirty_inode(where->bh, inode);
-               if (IS_SYNC(inode) || inode->u.ext2_i.i_osync) {
+               if (IS_SYNC(inode)) {
                        ll_rw_block (WRITE, 1, &where->bh);
                        wait_on_buffer(where->bh);
                }
        }
 
-       if (IS_SYNC(inode) || inode->u.ext2_i.i_osync)
+       if (IS_SYNC(inode))
                ext2_sync_inode (inode);
        else
                mark_inode_dirty(inode);
@@ -1036,14 +1036,10 @@ void ext2_read_inode (struct inode * ino
        inode->i_blocks = le32_to_cpu(raw_inode->i_blocks);
        inode->i_version = ++event;
        inode->u.ext2_i.i_flags = le32_to_cpu(raw_inode->i_flags);
-       inode->u.ext2_i.i_faddr = le32_to_cpu(raw_inode->i_faddr);
-       inode->u.ext2_i.i_frag_no = raw_inode->i_frag;
-       inode->u.ext2_i.i_frag_size = raw_inode->i_fsize;
        inode->u.ext2_i.i_file_acl = le32_to_cpu(raw_inode->i_file_acl);
        if (S_ISDIR(inode->i_mode))
                inode->u.ext2_i.i_dir_acl = le32_to_cpu(raw_inode->i_dir_acl);
        else {
-               inode->u.ext2_i.i_high_size = le32_to_cpu(raw_inode->i_size_high);
                inode->i_size |= ((__u64)le32_to_cpu(raw_inode->i_size_high)) << 32;
        }
        inode->i_generation = le32_to_cpu(raw_inode->i_generation);
@@ -1112,25 +1108,26 @@ static int ext2_update_inode(struct inod
        unsigned long offset;
        int err = 0;
        struct ext2_group_desc * gdp;
+       struct super_block *sb = inode->i_sb;
 
        if ((inode->i_ino != EXT2_ROOT_INO &&
-            inode->i_ino < EXT2_FIRST_INO(inode->i_sb)) ||
-           inode->i_ino > le32_to_cpu(inode->i_sb->u.ext2_sb.s_es->s_inodes_count)) {
-               ext2_error (inode->i_sb, "ext2_write_inode",
+            inode->i_ino < EXT2_FIRST_INO(sb)) ||
+           inode->i_ino > le32_to_cpu(sb->u.ext2_sb.s_es->s_inodes_count)) {
+               ext2_error (sb, "ext2_write_inode",
                            "bad inode number: %lu", inode->i_ino);
                return -EIO;
        }
-       block_group = (inode->i_ino - 1) / EXT2_INODES_PER_GROUP(inode->i_sb);
-       if (block_group >= inode->i_sb->u.ext2_sb.s_groups_count) {
-               ext2_error (inode->i_sb, "ext2_write_inode",
+       block_group = (inode->i_ino - 1) / EXT2_INODES_PER_GROUP(sb);
+       if (block_group >= sb->u.ext2_sb.s_groups_count) {
+               ext2_error (sb, "ext2_write_inode",
                            "group >= groups count");
                return -EIO;
        }
-       group_desc = block_group >> EXT2_DESC_PER_BLOCK_BITS(inode->i_sb);
-       desc = block_group & (EXT2_DESC_PER_BLOCK(inode->i_sb) - 1);
-       bh = inode->i_sb->u.ext2_sb.s_group_desc[group_desc];
+       group_desc = block_group >> EXT2_DESC_PER_BLOCK_BITS(sb);
+       desc = block_group & (EXT2_DESC_PER_BLOCK(sb) - 1);
+       bh = sb->u.ext2_sb.s_group_desc[group_desc];
        if (!bh) {
-               ext2_error (inode->i_sb, "ext2_write_inode",
+               ext2_error (sb, "ext2_write_inode",
                            "Descriptor not loaded");
                return -EIO;
        }
@@ -1138,21 +1135,21 @@ static int ext2_update_inode(struct inod
        /*
         * Figure out the offset within the block group inode table
         */
-       offset = ((inode->i_ino - 1) % EXT2_INODES_PER_GROUP(inode->i_sb)) *
-               EXT2_INODE_SIZE(inode->i_sb);
+       offset = ((inode->i_ino - 1) % EXT2_INODES_PER_GROUP(sb)) *
+               EXT2_INODE_SIZE(sb);
        block = le32_to_cpu(gdp[desc].bg_inode_table) +
-               (offset >> EXT2_BLOCK_SIZE_BITS(inode->i_sb));
-       if (!(bh = bread (inode->i_dev, block, inode->i_sb->s_blocksize))) {
-               ext2_error (inode->i_sb, "ext2_write_inode",
+               (offset >> EXT2_BLOCK_SIZE_BITS(sb));
+       if (!(bh = bread (inode->i_dev, block, sb->s_blocksize))) {
+               ext2_error (sb, "ext2_write_inode",
                            "unable to read inode block - "
                            "inode=%lu, block=%lu", inode->i_ino, block);
                return -EIO;
        }
-       offset &= EXT2_BLOCK_SIZE(inode->i_sb) - 1;
+       offset &= EXT2_BLOCK_SIZE(sb) - 1;
        raw_inode = (struct ext2_inode *) (bh->b_data + offset);
 
        raw_inode->i_mode = cpu_to_le16(inode->i_mode);
-       if(!(test_opt(inode->i_sb, NO_UID32))) {
+       if(!(test_opt(sb, NO_UID32))) {
                raw_inode->i_uid_low = cpu_to_le16(low_16_bits(inode->i_uid));
                raw_inode->i_gid_low = cpu_to_le16(low_16_bits(inode->i_gid));
 /*
@@ -1180,16 +1177,14 @@ static int ext2_update_inode(struct inod
        raw_inode->i_blocks = cpu_to_le32(inode->i_blocks);
        raw_inode->i_dtime = cpu_to_le32(inode->u.ext2_i.i_dtime);
        raw_inode->i_flags = cpu_to_le32(inode->u.ext2_i.i_flags);
-       raw_inode->i_faddr = cpu_to_le32(inode->u.ext2_i.i_faddr);
-       raw_inode->i_frag = inode->u.ext2_i.i_frag_no;
-       raw_inode->i_fsize = inode->u.ext2_i.i_frag_size;
+       raw_inode->i_frag = 0;
+       raw_inode->i_fsize = 0;
        raw_inode->i_file_acl = cpu_to_le32(inode->u.ext2_i.i_file_acl);
        if (S_ISDIR(inode->i_mode))
                raw_inode->i_dir_acl = cpu_to_le32(inode->u.ext2_i.i_dir_acl);
        else {
                raw_inode->i_size_high = cpu_to_le32(inode->i_size >> 32);
                if (raw_inode->i_size_high) {
-                       struct super_block *sb = inode->i_sb;
                        if (!EXT2_HAS_RO_COMPAT_FEATURE(sb,
                                        EXT2_FEATURE_RO_COMPAT_LARGE_FILE) ||
                            EXT2_SB(sb)->s_es->s_rev_level ==
Index: include/linux/ext2_fs_i.h
===================================================================
RCS file: /var/cvs/linux/include/linux/ext2_fs_i.h,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 ext2_fs_i.h
--- include/linux/ext2_fs_i.h   1999/05/11 21:37:47     1.1.1.1
+++ include/linux/ext2_fs_i.h   2001/03/12 13:44:05
@@ -22,21 +22,14 @@
 struct ext2_inode_info {
        __u32   i_data[15];
        __u32   i_flags;
-       __u32   i_faddr;
-       __u8    i_frag_no;
-       __u8    i_frag_size;
-       __u16   i_osync;
        __u32   i_file_acl;
        __u32   i_dir_acl;
        __u32   i_dtime;
-       __u32   not_used_1;     /* FIX: not used/ 2.2 placeholder */
        __u32   i_block_group;
        __u32   i_next_alloc_block;
        __u32   i_next_alloc_goal;
        __u32   i_prealloc_block;
        __u32   i_prealloc_count;
-       __u32   i_high_size;
-       int     i_new_inode:1;  /* Is a freshly allocated inode */
 };
 
 #endif /* _LINUX_EXT2_FS_I */
-
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to [EMAIL PROTECTED]

Reply via email to