return false;
/* retain; LRU fodder */
- dentry->d_lockref.count--;
if (unlikely(!(dentry->d_flags & DCACHE_LRU_LIST)))
d_lru_add(dentry);
else if (unlikely(!(dentry->d_flags & DCACHE_REFERENCED)))
} else if (likely(!retain_dentry(dentry))) {
__dentry_kill(dentry);
return parent;
+ } else {
+ dentry->d_lockref.count--;
}
/* we are keeping it, after all */
if (inode)
rcu_read_unlock();
if (likely(retain_dentry(dentry))) {
+ dentry->d_lockref.count--;
spin_unlock(&dentry->d_lock);
return;
}
if (!retain_dentry(dentry)) {
--dentry->d_lockref.count;
to_shrink_list(dentry, list);
+ } else {
+ --dentry->d_lockref.count;
}
spin_unlock(&dentry->d_lock);
}