mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-11 07:30:16 +00:00
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:
parent
6f2fad748c
commit
fe08a9d498
@ -433,12 +433,13 @@ int remove_save_link(struct inode *inode, int truncate)
|
|||||||
static void reiserfs_kill_sb(struct super_block *s)
|
static void reiserfs_kill_sb(struct super_block *s)
|
||||||
{
|
{
|
||||||
if (REISERFS_SB(s)) {
|
if (REISERFS_SB(s)) {
|
||||||
|
#ifdef CONFIG_REISERFS_FS_XATTR
|
||||||
if (REISERFS_SB(s)->xattr_root) {
|
if (REISERFS_SB(s)->xattr_root) {
|
||||||
d_invalidate(REISERFS_SB(s)->xattr_root);
|
d_invalidate(REISERFS_SB(s)->xattr_root);
|
||||||
dput(REISERFS_SB(s)->xattr_root);
|
dput(REISERFS_SB(s)->xattr_root);
|
||||||
REISERFS_SB(s)->xattr_root = NULL;
|
REISERFS_SB(s)->xattr_root = NULL;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
if (REISERFS_SB(s)->priv_root) {
|
if (REISERFS_SB(s)->priv_root) {
|
||||||
d_invalidate(REISERFS_SB(s)->priv_root);
|
d_invalidate(REISERFS_SB(s)->priv_root);
|
||||||
dput(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;
|
REISERFS_SB(s)->s_alloc_options.preallocmin = 0;
|
||||||
/* Preallocate by 16 blocks (17-1) at once */
|
/* Preallocate by 16 blocks (17-1) at once */
|
||||||
REISERFS_SB(s)->s_alloc_options.preallocsize = 17;
|
REISERFS_SB(s)->s_alloc_options.preallocsize = 17;
|
||||||
|
#ifdef CONFIG_REISERFS_FS_XATTR
|
||||||
/* Initialize the rwsem for xattr dir */
|
/* Initialize the rwsem for xattr dir */
|
||||||
init_rwsem(&REISERFS_SB(s)->xattr_dir_sem);
|
init_rwsem(&REISERFS_SB(s)->xattr_dir_sem);
|
||||||
|
#endif
|
||||||
/* setup default block allocator options */
|
/* setup default block allocator options */
|
||||||
reiserfs_init_alloc_options(s);
|
reiserfs_init_alloc_options(s);
|
||||||
|
|
||||||
|
@ -401,9 +401,10 @@ struct reiserfs_sb_info {
|
|||||||
int reserved_blocks; /* amount of blocks reserved for further allocations */
|
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 */
|
spinlock_t bitmap_lock; /* this lock on now only used to protect reserved_blocks variable */
|
||||||
struct dentry *priv_root; /* root of /.reiserfs_priv */
|
struct dentry *priv_root; /* root of /.reiserfs_priv */
|
||||||
|
#ifdef CONFIG_REISERFS_FS_XATTR
|
||||||
struct dentry *xattr_root; /* root of /.reiserfs_priv/.xa */
|
struct dentry *xattr_root; /* root of /.reiserfs_priv/.xa */
|
||||||
struct rw_semaphore xattr_dir_sem;
|
struct rw_semaphore xattr_dir_sem;
|
||||||
|
#endif
|
||||||
int j_errno;
|
int j_errno;
|
||||||
#ifdef CONFIG_QUOTA
|
#ifdef CONFIG_QUOTA
|
||||||
char *s_qf_names[MAXQUOTAS];
|
char *s_qf_names[MAXQUOTAS];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user