diff --git a/fs/dcache.c b/fs/dcache.c index dab7db10d68528e6d9bfdb8fa022a5f2c21abecc..e482775343a0d3fe6d518e257286b08bc3b56da8 100644 --- a/fs/dcache.c +++ b/fs/dcache.c @@ -501,7 +501,12 @@ dentry_kill(struct dentry *dentry, int unlock_on_failure) if ((dentry->d_flags & DCACHE_OP_PRUNE) && !d_unhashed(dentry)) dentry->d_op->d_prune(dentry); - dentry_lru_del(dentry); + if (dentry->d_flags & DCACHE_LRU_LIST) { + if (!(dentry->d_flags & DCACHE_SHRINK_LIST)) + d_lru_del(dentry); + else + d_shrink_del(dentry); + } /* if it was on the hash then remove it */ __d_drop(dentry); list_del(&dentry->d_u.d_child);