diff options
author | Alexey Dobriyan <adobriyan@gmail.com> | 2007-05-08 00:24:55 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-08 11:15:00 -0700 |
commit | fe08a9d4982d9618ec25760ea715c46fe051e508 (patch) | |
tree | 6535cfaf206d19cb0a5e09192f49b37e91ba6232 /fs | |
parent | 6f2fad748ccced5b9313efce2a2c7ae4c04ef564 (diff) | |
download | linux-3.10-fe08a9d4982d9618ec25760ea715c46fe051e508.tar.gz linux-3.10-fe08a9d4982d9618ec25760ea715c46fe051e508.tar.bz2 linux-3.10-fe08a9d4982d9618ec25760ea715c46fe051e508.zip |
reiserfs: shrink superblock if no xattrs
This makes in-core superblock fit into one cacheline here.
Before:
struct dentry * xattr_root; /* 124 4 */
/* --- cacheline 1 boundary (128 bytes) --- */
struct rw_semaphore xattr_dir_sem; /* 128 12 */
int j_errno; /* 140 4 */
}; /* size: 144, cachelines: 2 */
/* sum members: 142, holes: 1, sum holes: 2 */
/* last cacheline: 16 bytes */
After:
int j_errno; /* 124 4 */
/* --- cacheline 1 boundary (128 bytes) --- */
}; /* size: 128, cachelines: 1 */
/* sum members: 126, holes: 1, sum holes: 2 */
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Cc: <reiserfs-dev@namesys.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/reiserfs/super.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c index 7054aaef049..5c58b419f4e 100644 --- a/fs/reiserfs/super.c +++ b/fs/reiserfs/super.c @@ -433,12 +433,13 @@ int remove_save_link(struct inode *inode, int truncate) static void reiserfs_kill_sb(struct super_block *s) { if (REISERFS_SB(s)) { +#ifdef CONFIG_REISERFS_FS_XATTR if (REISERFS_SB(s)->xattr_root) { d_invalidate(REISERFS_SB(s)->xattr_root); dput(REISERFS_SB(s)->xattr_root); REISERFS_SB(s)->xattr_root = NULL; } - +#endif if (REISERFS_SB(s)->priv_root) { d_invalidate(REISERFS_SB(s)->priv_root); dput(REISERFS_SB(s)->priv_root); @@ -1562,9 +1563,10 @@ static int reiserfs_fill_super(struct super_block *s, void *data, int silent) REISERFS_SB(s)->s_alloc_options.preallocmin = 0; /* Preallocate by 16 blocks (17-1) at once */ REISERFS_SB(s)->s_alloc_options.preallocsize = 17; +#ifdef CONFIG_REISERFS_FS_XATTR /* Initialize the rwsem for xattr dir */ init_rwsem(&REISERFS_SB(s)->xattr_dir_sem); - +#endif /* setup default block allocator options */ reiserfs_init_alloc_options(s); |