diff options
author | Nick Piggin <npiggin@kernel.dk> | 2011-01-07 01:50:05 -0500 |
---|---|---|
committer | Nick Piggin <npiggin@kernel.dk> | 2011-01-07 01:50:31 -0500 |
commit | ceb5bdc2d246f6d81cf61ed70f325308a11821d2 (patch) | |
tree | 65fc9e0227994d4ffc80530dd15bb5a9672a295e /include | |
parent | 626d607435617cc0f033522083e2bb195b81813c (diff) |
fs: dcache per-bucket dcache hash locking
We can turn the dcache hash locking from a global dcache_hash_lock into
per-bucket locking.
Signed-off-by: Nick Piggin <npiggin@kernel.dk>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/dcache.h | 3 | ||||
-rw-r--r-- | include/linux/fs.h | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/include/linux/dcache.h b/include/linux/dcache.h index 8b2064d02928..5f0392ef759b 100644 --- a/include/linux/dcache.h +++ b/include/linux/dcache.h | |||
@@ -4,6 +4,7 @@ | |||
4 | #include <asm/atomic.h> | 4 | #include <asm/atomic.h> |
5 | #include <linux/list.h> | 5 | #include <linux/list.h> |
6 | #include <linux/rculist.h> | 6 | #include <linux/rculist.h> |
7 | #include <linux/rculist_bl.h> | ||
7 | #include <linux/spinlock.h> | 8 | #include <linux/spinlock.h> |
8 | #include <linux/seqlock.h> | 9 | #include <linux/seqlock.h> |
9 | #include <linux/cache.h> | 10 | #include <linux/cache.h> |
@@ -95,7 +96,7 @@ struct dentry { | |||
95 | /* RCU lookup touched fields */ | 96 | /* RCU lookup touched fields */ |
96 | unsigned int d_flags; /* protected by d_lock */ | 97 | unsigned int d_flags; /* protected by d_lock */ |
97 | seqcount_t d_seq; /* per dentry seqlock */ | 98 | seqcount_t d_seq; /* per dentry seqlock */ |
98 | struct hlist_node d_hash; /* lookup hash list */ | 99 | struct hlist_bl_node d_hash; /* lookup hash list */ |
99 | struct dentry *d_parent; /* parent directory */ | 100 | struct dentry *d_parent; /* parent directory */ |
100 | struct qstr d_name; | 101 | struct qstr d_name; |
101 | struct inode *d_inode; /* Where the name belongs to - NULL is | 102 | struct inode *d_inode; /* Where the name belongs to - NULL is |
diff --git a/include/linux/fs.h b/include/linux/fs.h index d5a4d42f655b..baf3e556ff0e 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -392,6 +392,7 @@ struct inodes_stat_t { | |||
392 | #include <linux/capability.h> | 392 | #include <linux/capability.h> |
393 | #include <linux/semaphore.h> | 393 | #include <linux/semaphore.h> |
394 | #include <linux/fiemap.h> | 394 | #include <linux/fiemap.h> |
395 | #include <linux/rculist_bl.h> | ||
395 | 396 | ||
396 | #include <asm/atomic.h> | 397 | #include <asm/atomic.h> |
397 | #include <asm/byteorder.h> | 398 | #include <asm/byteorder.h> |
@@ -1377,7 +1378,7 @@ struct super_block { | |||
1377 | const struct xattr_handler **s_xattr; | 1378 | const struct xattr_handler **s_xattr; |
1378 | 1379 | ||
1379 | struct list_head s_inodes; /* all inodes */ | 1380 | struct list_head s_inodes; /* all inodes */ |
1380 | struct hlist_head s_anon; /* anonymous dentries for (nfs) exporting */ | 1381 | struct hlist_bl_head s_anon; /* anonymous dentries for (nfs) exporting */ |
1381 | #ifdef CONFIG_SMP | 1382 | #ifdef CONFIG_SMP |
1382 | struct list_head __percpu *s_files; | 1383 | struct list_head __percpu *s_files; |
1383 | #else | 1384 | #else |