diff -rupN linux-2.6.7.old/fs/ext3/namei.c linux-2.6.7/fs/ext3/namei.c --- linux-2.6.7.old/fs/ext3/namei.c 2004-11-05 16:44:21.000000000 +0200 +++ linux-2.6.7/fs/ext3/namei.c 2004-11-05 16:57:12.858866328 +0200 @@ -1163,6 +1163,7 @@ static struct dentry *ext3_lookup(struct dentry->d_flags |= DCACHE_CROSS_REF; dentry->d_generation = mds[1]; dentry->d_mdsnum = mds[0]; + dentry->d_fid = mds[2]; dentry->d_inum = ino; ext3_unlock_htree(dir, lock); d_add(dentry, NULL); @@ -1391,7 +1392,7 @@ static int add_dirent_to_buf(handle_t *h if (EXT3_HAS_INCOMPAT_FEATURE(sb, EXT3_FEATURE_INCOMPAT_MDSNUM) && (dentry->d_flags & DCACHE_CROSS_REF) && (dentry->d_mdsnum != EXT3_SB(sb)->s_mdsnum)) - reclen += 8; /* we need space to store mds num */ + reclen += 12; /* we need space to store mds num */ if (!de) { de = (struct ext3_dir_entry_2 *)bh->b_data; top = bh->b_data + dir->i_sb->s_blocksize - reclen; @@ -1444,6 +1445,7 @@ static int add_dirent_to_buf(handle_t *h mds = (__u32 *)((char *)de + EXT3_DIR_REC_LEN(namelen)); mds[0] = cpu_to_le32(dentry->d_mdsnum); mds[1] = cpu_to_le32(dentry->d_generation); + mds[2] = cpu_to_le32(dentry->d_fid); de->inode = cpu_to_le32(dentry->d_inum); de->file_type = 128; } else { diff -rupN linux-2.6.7.old/include/linux/ext3_fs.h linux-2.6.7/include/linux/ext3_fs.h --- linux-2.6.7.old/include/linux/ext3_fs.h 2004-11-05 16:44:21.000000000 +0200 +++ linux-2.6.7/include/linux/ext3_fs.h 2004-11-05 16:56:17.183330296 +0200 @@ -616,7 +616,7 @@ struct ext3_dir_entry_2 { #define EXT3_DIR_REC_LEN(name_len) (((name_len) + 8 + EXT3_DIR_ROUND) & \ ~EXT3_DIR_ROUND) #define EXT3_DIR_REC_LEN_DE(de) (EXT3_DIR_REC_LEN((de)->name_len) + \ - (((de)->file_type & 128) ? 8 : 0)) + (((de)->file_type & 128) ? 12 : 0)) /* * Hash Tree Directory indexing