diff --git a/lustre/liblustre/namei.c b/lustre/liblustre/namei.c
index a9bd06723ae1706fe02a480fc4dcfd8ee4d90f06..1f23df942871a767fd9b5d8ca242cb40d9ac1bc0 100644
--- a/lustre/liblustre/namei.c
+++ b/lustre/liblustre/namei.c
@@ -290,10 +290,8 @@ int llu_pb_revalidate(struct pnode *pnode, int flags, struct lookup_intent *it)
                 ptlrpc_req_finished(req);
         if (rc == 0) {
                 LASSERT(pb->pb_ino);
-                if (S_ISDIR(llu_i2info(pb->pb_ino)->lli_st_mode))
-                        llu_invalidate_inode_pages(pb->pb_ino);
-                llu_i2info(pb->pb_ino)->lli_stale_flag = 1;
-                unhook_stale_inode(pnode);
+                I_RELE(pb->pb_ino);
+                pb->pb_ino = NULL;
         } else {
                 llu_lookup_finish_locks(it, pnode);
                 llu_i2info(pb->pb_ino)->lli_stale_flag = 0;
diff --git a/lustre/liblustre/super.c b/lustre/liblustre/super.c
index 82ab7ca0d27f42ad90cb53712b2e4c469086ec76..392e22ac8cb68d5b5d6f4bf9430571f9d4fc6b4a 100644
--- a/lustre/liblustre/super.c
+++ b/lustre/liblustre/super.c
@@ -1239,7 +1239,7 @@ struct inode *llu_iget(struct filesys *fs, struct lustre_md *md)
                 struct llu_inode_info *lli = llu_i2info(inode);
 
                 if (lli->lli_stale_flag ||
-                    lli->lli_st_generation == md->body->generation)
+                    lli->lli_st_generation != md->body->generation)
                         I_RELE(inode);
                 else {
                         llu_update_inode(inode, md->body, md->lsm);