diff options
author | Nick Piggin <npiggin@kernel.dk> | 2011-01-07 01:49:35 -0500 |
---|---|---|
committer | Nick Piggin <npiggin@kernel.dk> | 2011-01-07 01:50:22 -0500 |
commit | b23fb0a60379a95e10c671f646b259ea2558421e (patch) | |
tree | 7c3644b91241d32fda502a7be0b78e4c225f8091 /fs/affs | |
parent | 2fd6b7f50797f2e993eea59e0a0b8c6399c811dc (diff) |
fs: scale inode alias list
Add a new lock, dcache_inode_lock, to protect the inode's i_dentry list
from concurrent modification. d_alias is also protected by d_lock.
Signed-off-by: Nick Piggin <npiggin@kernel.dk>
Diffstat (limited to 'fs/affs')
-rw-r--r-- | fs/affs/amigaffs.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/affs/amigaffs.c b/fs/affs/amigaffs.c index 7d0f0a30f7a3..2321cc92d44f 100644 --- a/fs/affs/amigaffs.c +++ b/fs/affs/amigaffs.c | |||
@@ -129,6 +129,7 @@ affs_fix_dcache(struct dentry *dentry, u32 entry_ino) | |||
129 | struct list_head *head, *next; | 129 | struct list_head *head, *next; |
130 | 130 | ||
131 | spin_lock(&dcache_lock); | 131 | spin_lock(&dcache_lock); |
132 | spin_lock(&dcache_inode_lock); | ||
132 | head = &inode->i_dentry; | 133 | head = &inode->i_dentry; |
133 | next = head->next; | 134 | next = head->next; |
134 | while (next != head) { | 135 | while (next != head) { |
@@ -139,6 +140,7 @@ affs_fix_dcache(struct dentry *dentry, u32 entry_ino) | |||
139 | } | 140 | } |
140 | next = next->next; | 141 | next = next->next; |
141 | } | 142 | } |
143 | spin_unlock(&dcache_inode_lock); | ||
142 | spin_unlock(&dcache_lock); | 144 | spin_unlock(&dcache_lock); |
143 | } | 145 | } |
144 | 146 | ||