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>
This commit is contained in:
Родитель
6f2fad748c
Коммит
fe08a9d498
|
@ -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);
|
||||
|
||||
|
|
|
@ -401,9 +401,10 @@ struct reiserfs_sb_info {
|
|||
int reserved_blocks; /* amount of blocks reserved for further allocations */
|
||||
spinlock_t bitmap_lock; /* this lock on now only used to protect reserved_blocks variable */
|
||||
struct dentry *priv_root; /* root of /.reiserfs_priv */
|
||||
#ifdef CONFIG_REISERFS_FS_XATTR
|
||||
struct dentry *xattr_root; /* root of /.reiserfs_priv/.xa */
|
||||
struct rw_semaphore xattr_dir_sem;
|
||||
|
||||
#endif
|
||||
int j_errno;
|
||||
#ifdef CONFIG_QUOTA
|
||||
char *s_qf_names[MAXQUOTAS];
|
||||
|
|
Загрузка…
Ссылка в новой задаче