diff options
author | bde <bde@FreeBSD.org> | 1998-10-13 15:45:43 +0000 |
---|---|---|
committer | bde <bde@FreeBSD.org> | 1998-10-13 15:45:43 +0000 |
commit | 8ccf93af582d83baeb145bbbbd40f6cd8fe99c68 (patch) | |
tree | 44cc40318f4ab5469f77e85d0002b65783b92f2a /sys/gnu/ext2fs | |
parent | 43cb8a7cb93931496071f3ec7aa0f9bc83cf82e6 (diff) | |
download | FreeBSD-src-8ccf93af582d83baeb145bbbbd40f6cd8fe99c68.zip FreeBSD-src-8ccf93af582d83baeb145bbbbd40f6cd8fe99c68.tar.gz |
Fixed bloatage of `struct inode'. We used 5 "spare" fields for ext2fs,
but when i_effnlink was added to support soft updates, there was only
room for 4 spares. The number of spares was not reduced, so the inode
size became 260 (on i386's), or 512 after rounding up by malloc().
Use one spare field in `struct dinode' instead of the 5th spare field
in the inode and reduced to 4 spares in the inode so that the size is
256 again.
Changed the types of the spares in the inode from int to u_int32_t
so that the inode size has more chance of being <= 256 under other
arches, and downdated ext2fs to match (it was broken to use ints
before rev.1.1).
Diffstat (limited to 'sys/gnu/ext2fs')
-rw-r--r-- | sys/gnu/ext2fs/ext2_extern.h | 4 | ||||
-rw-r--r-- | sys/gnu/ext2fs/ext2_fs.h | 4 | ||||
-rw-r--r-- | sys/gnu/ext2fs/ext2_linux_balloc.c | 4 | ||||
-rw-r--r-- | sys/gnu/ext2fs/inode.h | 4 |
4 files changed, 8 insertions, 8 deletions
diff --git a/sys/gnu/ext2fs/ext2_extern.h b/sys/gnu/ext2fs/ext2_extern.h index eb18348..0afd890 100644 --- a/sys/gnu/ext2fs/ext2_extern.h +++ b/sys/gnu/ext2fs/ext2_extern.h @@ -81,8 +81,8 @@ struct ext2_group_desc * get_group_desc __P((struct mount * , void ext2_discard_prealloc __P((struct inode *)); int ext2_inactive __P((struct vop_inactive_args *)); int ext2_new_block __P ((struct mount * mp, unsigned long goal, - int * prealloc_count, - int * prealloc_block)); + u_int32_t * prealloc_count, + u_int32_t * prealloc_block)); ino_t ext2_new_inode __P ((const struct inode * dir, int mode)); unsigned long ext2_count_free __P((struct buf *map, unsigned int numchars)); void ext2_free_blocks __P((struct mount * mp, unsigned long block, diff --git a/sys/gnu/ext2fs/ext2_fs.h b/sys/gnu/ext2fs/ext2_fs.h index 655a9df..ce45bbd 100644 --- a/sys/gnu/ext2fs/ext2_fs.h +++ b/sys/gnu/ext2fs/ext2_fs.h @@ -38,7 +38,7 @@ /* the Linux implementation of EXT2 stores some information about * an inode in a ext2_inode_info structure which is part of the incore * inode in Linux - * I decided to use the i_spare[11] fields instead - we'll see how this + * I decided to use the "spare" fields instead - we'll see how this * works out */ @@ -46,7 +46,7 @@ #define i_next_alloc_block i_spare[1] #define i_next_alloc_goal i_spare[2] #define i_prealloc_block i_spare[3] -#define i_prealloc_count i_spare[4] +#define i_prealloc_count i_din.di_spare[0] /* * The second extended filesystem constants/structures diff --git a/sys/gnu/ext2fs/ext2_linux_balloc.c b/sys/gnu/ext2fs/ext2_linux_balloc.c index 717b0e0..56ea652 100644 --- a/sys/gnu/ext2fs/ext2_linux_balloc.c +++ b/sys/gnu/ext2fs/ext2_linux_balloc.c @@ -244,8 +244,8 @@ void ext2_free_blocks (struct mount * mp, unsigned long block, * bitmap, and then for any free bit if that fails. */ int ext2_new_block (struct mount * mp, unsigned long goal, - int * prealloc_count, - int * prealloc_block) + u_int32_t * prealloc_count, + u_int32_t * prealloc_block) { struct ext2_sb_info *sb = VFSTOUFS(mp)->um_e2fs; struct buffer_head * bh; diff --git a/sys/gnu/ext2fs/inode.h b/sys/gnu/ext2fs/inode.h index 76b7b5e..4b6ca7d 100644 --- a/sys/gnu/ext2fs/inode.h +++ b/sys/gnu/ext2fs/inode.h @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)inode.h 8.9 (Berkeley) 5/14/95 - * $Id: inode.h,v 1.22 1998/03/26 20:53:58 phk Exp $ + * $Id: inode.h,v 1.23 1998/07/03 22:17:01 bde Exp $ */ #ifndef _UFS_UFS_INODE_H_ @@ -92,7 +92,7 @@ struct inode { doff_t i_offset; /* Offset of free space in directory. */ ino_t i_ino; /* Inode number of found directory. */ u_int32_t i_reclen; /* Size of found directory entry. */ - int i_spare[5]; /* XXX actually non-spare (for ext2fs). */ + u_int32_t i_spare[4]; /* XXX actually non-spare (for ext2fs). */ /* * The on-disk dinode itself. */ |