fs: dcache scale d_unhashed
Protect d_unhashed(dentry) condition with d_lock. This means keeping DCACHE_UNHASHED bit in synch with hash manipulations. Signed-off-by: Nick Piggin <npiggin@kernel.dk>
This commit is contained in:
@@ -174,13 +174,16 @@ struct dentry *ocfs2_find_local_alias(struct inode *inode,
|
||||
list_for_each(p, &inode->i_dentry) {
|
||||
dentry = list_entry(p, struct dentry, d_alias);
|
||||
|
||||
spin_lock(&dentry->d_lock);
|
||||
if (ocfs2_match_dentry(dentry, parent_blkno, skip_unhashed)) {
|
||||
mlog(0, "dentry found: %.*s\n",
|
||||
dentry->d_name.len, dentry->d_name.name);
|
||||
|
||||
dget_locked(dentry);
|
||||
dget_locked_dlock(dentry);
|
||||
spin_unlock(&dentry->d_lock);
|
||||
break;
|
||||
}
|
||||
spin_unlock(&dentry->d_lock);
|
||||
|
||||
dentry = NULL;
|
||||
}
|
||||
|
Reference in New Issue
Block a user