|
@@ -1636,7 +1636,7 @@ struct dentry *d_alloc(struct dentry * parent, const struct qstr *name)
|
|
|
struct dentry *dentry = __d_alloc(parent->d_sb, name);
|
|
|
if (!dentry)
|
|
|
return NULL;
|
|
|
-
|
|
|
+ dentry->d_flags |= DCACHE_RCUACCESS;
|
|
|
spin_lock(&parent->d_lock);
|
|
|
/*
|
|
|
* don't need child lock because it is not subject
|
|
@@ -2358,7 +2358,6 @@ static void __d_rehash(struct dentry * entry, struct hlist_bl_head *b)
|
|
|
{
|
|
|
BUG_ON(!d_unhashed(entry));
|
|
|
hlist_bl_lock(b);
|
|
|
- entry->d_flags |= DCACHE_RCUACCESS;
|
|
|
hlist_bl_add_head_rcu(&entry->d_hash, b);
|
|
|
hlist_bl_unlock(b);
|
|
|
}
|
|
@@ -2843,6 +2842,7 @@ static void __d_move(struct dentry *dentry, struct dentry *target,
|
|
|
/* ... and switch them in the tree */
|
|
|
if (IS_ROOT(dentry)) {
|
|
|
/* splicing a tree */
|
|
|
+ dentry->d_flags |= DCACHE_RCUACCESS;
|
|
|
dentry->d_parent = target->d_parent;
|
|
|
target->d_parent = target;
|
|
|
list_del_init(&target->d_child);
|