diff --git a/lustre/mds/handler.c b/lustre/mds/handler.c
index 44597b1e75ec2f069245b7c6438dfef6675a64d0..45916168dac0a8baa5e249309667e155b1bd86e3 100644
--- a/lustre/mds/handler.c
+++ b/lustre/mds/handler.c
@@ -309,11 +309,10 @@ struct dentry *mds_fid2dentry(struct mds_obd *mds, struct ll_fid *fid,
         if (!inode)
                 RETURN(ERR_PTR(-ENOENT));
 
-#warning "I think we need something another here -bzzz"
-#if 0
         /* here we disabled generation check, as root inode i_generation
          * of cache mds and real mds are different. */
-        if (generation && inode->i_generation != generation) {
+        if (inode->i_ino != mds->mds_rootfid.id && generation &&
+                        inode->i_generation != generation) {
                 /* we didn't find the right inode.. */
                 CERROR("bad inode %lu, link: %lu ct: %d or generation %u/%u\n",
                        inode->i_ino, (unsigned long)inode->i_nlink,
@@ -322,7 +321,6 @@ struct dentry *mds_fid2dentry(struct mds_obd *mds, struct ll_fid *fid,
                 dput(result);
                 RETURN(ERR_PTR(-ENOENT));
         }
-#endif
 
         if (mnt) {
                 *mnt = mds->mds_vfsmnt;
diff --git a/lustre/mds/mds_open.c b/lustre/mds/mds_open.c
index 1acafaa73814f878ddc1a0e3e9ee4f8e8b651286..b159950617bf52261f25367378084746a194962f 100644
--- a/lustre/mds/mds_open.c
+++ b/lustre/mds/mds_open.c
@@ -818,6 +818,10 @@ int mds_open(struct mds_update_record *rec, int offset,
         int mea_size, update_mode;
         ENTRY;
 
+        DEBUG_REQ(D_INODE, req, "parent "LPU64"/%u name %*s mode %o",
+                  rec->ur_fid1->id, rec->ur_fid1->generation,
+                  rec->ur_namelen - 1, rec->ur_name, rec->ur_mode);
+
         parent_lockh[0].cookie = 0;
         parent_lockh[1].cookie = 0;