break;
}
goto return_base;
-@@ -645,7 +684,26 @@ return_reval:
+@@ -645,6 +684,27 @@ return_reval:
* Check the cached dentry for staleness.
*/
dentry = nd->dentry;
-- if (dentry && dentry->d_op && dentry->d_op->d_revalidate) {
+ if (dentry && dentry->d_op && dentry->d_op->d_revalidate_it) {
+ err = -ESTALE;
+ if (!dentry->d_op->d_revalidate_it(dentry, 0, it)) {
+ }
+ if (!nd->dentry->d_inode)
+ goto no_inode;
-+ }
-+ else if (dentry && dentry->d_op && dentry->d_op->d_revalidate){
++ } else
+ if (dentry && dentry->d_op && dentry->d_op->d_revalidate) {
err = -ESTALE;
if (!dentry->d_op->d_revalidate(dentry, 0)) {
- d_invalidate(dentry);
@@ -658,15 +716,28 @@ out_dput:
dput(dentry);
break;