diff options
author | Nick Piggin <npiggin@kernel.dk> | 2011-01-07 01:49:32 -0500 |
---|---|---|
committer | Nick Piggin <npiggin@kernel.dk> | 2011-01-07 01:50:21 -0500 |
commit | b7ab39f631f505edc2bbdb86620d5493f995c9da (patch) | |
tree | 62be97ebc7fc69ceb601f23312d335ebb8038ee7 /fs/ecryptfs/inode.c | |
parent | 2304450783dfde7b0b94ae234edd0dbffa865073 (diff) |
fs: dcache scale dentry refcount
Make d_count non-atomic and protect it with d_lock. This allows us to ensure a
0 refcount dentry remains 0 without dcache_lock. It is also fairly natural when
we start protecting many other dentry members with d_lock.
Signed-off-by: Nick Piggin <npiggin@kernel.dk>
Diffstat (limited to 'fs/ecryptfs/inode.c')
-rw-r--r-- | fs/ecryptfs/inode.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c index a1ed7a7cb173..5e5c7ec1fc98 100644 --- a/fs/ecryptfs/inode.c +++ b/fs/ecryptfs/inode.c | |||
@@ -260,7 +260,7 @@ int ecryptfs_lookup_and_interpose_lower(struct dentry *ecryptfs_dentry, | |||
260 | ecryptfs_dentry->d_parent)); | 260 | ecryptfs_dentry->d_parent)); |
261 | lower_inode = lower_dentry->d_inode; | 261 | lower_inode = lower_dentry->d_inode; |
262 | fsstack_copy_attr_atime(ecryptfs_dir_inode, lower_dir_dentry->d_inode); | 262 | fsstack_copy_attr_atime(ecryptfs_dir_inode, lower_dir_dentry->d_inode); |
263 | BUG_ON(!atomic_read(&lower_dentry->d_count)); | 263 | BUG_ON(!lower_dentry->d_count); |
264 | ecryptfs_set_dentry_private(ecryptfs_dentry, | 264 | ecryptfs_set_dentry_private(ecryptfs_dentry, |
265 | kmem_cache_alloc(ecryptfs_dentry_info_cache, | 265 | kmem_cache_alloc(ecryptfs_dentry_info_cache, |
266 | GFP_KERNEL)); | 266 | GFP_KERNEL)); |