return PTR_ERR(dentry);
}
/* known good */
- need_reval = 0;
status = 1;
} else if (unlikely(d_need_lookup(dentry))) {
dentry = d_inode_lookup(parent, dentry, nd);
return PTR_ERR(dentry);
}
/* known good */
- need_reval = 0;
status = 1;
- }
- if (unlikely(dentry->d_flags & DCACHE_OP_REVALIDATE) && need_reval)
+ } else if (unlikely(dentry->d_flags & DCACHE_OP_REVALIDATE))
status = d_revalidate(dentry, nd);
if (unlikely(status <= 0)) {
if (status < 0) {
return PTR_ERR(dentry);
}
/* known good */
- need_reval = 0;
status = 1;
}
}
if (!d_invalidate(dentry)) {
dput(dentry);
dentry = NULL;
- need_reval = 1;
goto retry;
}
}