diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2015-08-21 09:31:20 +0300 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2015-08-21 09:31:20 +0300 |
commit | 061f98e959ea025a5d87c3e089d59ec2ec5f5d6d (patch) | |
tree | 4fd1c5d0eb8fd8ee55057dcb2da526d6bbade8d6 /include/linux/fs.h | |
parent | b5f5914cb8a2745ee4edc9d7f3596d596f1ea1b0 (diff) | |
parent | ac05fbb40062411ea1b722aa2cede7feaa94f1b4 (diff) | |
download | linux-061f98e959ea025a5d87c3e089d59ec2ec5f5d6d.tar.xz |
Merge branch 'superblock-scaling' of git://git.kernel.org/pub/scm/linux/kernel/git/josef/btrfs-next into for-next
Conflicts:
include/linux/fs.h
Diffstat (limited to 'include/linux/fs.h')
-rw-r--r-- | include/linux/fs.h | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h index ce356f66cc2a..9b85aa5c7a70 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -637,7 +637,7 @@ struct inode { unsigned long dirtied_time_when; struct hlist_node i_hash; - struct list_head i_wb_list; /* backing dev IO list */ + struct list_head i_io_list; /* backing dev IO list */ #ifdef CONFIG_CGROUP_WRITEBACK struct bdi_writeback *i_wb; /* the associated cgroup wb */ @@ -1303,7 +1303,6 @@ struct super_block { #endif const struct xattr_handler **s_xattr; - struct list_head s_inodes; /* all inodes */ struct hlist_bl_head s_anon; /* anonymous dentries for (nfs) exporting */ struct list_head s_mounts; /* list of mounts; _not_ for fs use */ struct block_device *s_bdev; @@ -1370,10 +1369,17 @@ struct super_block { struct list_lru s_inode_lru ____cacheline_aligned_in_smp; struct rcu_head rcu; struct work_struct destroy_work; + + struct mutex s_sync_lock; /* sync serialisation lock */ + /* * Indicates how deep in a filesystem stack this SB is */ int s_stack_depth; + + /* s_inode_list_lock protects s_inodes */ + spinlock_t s_inode_list_lock ____cacheline_aligned_in_smp; + struct list_head s_inodes; /* all inodes */ }; extern struct timespec current_fs_time(struct super_block *sb); @@ -2607,7 +2613,7 @@ static inline void insert_inode_hash(struct inode *inode) extern void __remove_inode_hash(struct inode *); static inline void remove_inode_hash(struct inode *inode) { - if (!inode_unhashed(inode)) + if (!inode_unhashed(inode) && !hlist_fake(&inode->i_hash)) __remove_inode_hash(inode); } |