Whamcloud - gitweb
e2fsck: add support for dir_data feature
[tools/e2fsprogs.git] / e2fsck / pass3.c
index 565b8e3..519c7d8 100644 (file)
@@ -610,6 +610,7 @@ static int fix_dotdot_proc(struct ext2_dir_entry *dirent,
        struct fix_dotdot_struct *fp = (struct fix_dotdot_struct *) priv_data;
        errcode_t       retval;
        struct problem_context pctx;
+       __u16 dirdata = 0;
 
        if ((dirent->name_len & 0xFF) != 2)
                return 0;
@@ -629,6 +630,9 @@ static int fix_dotdot_proc(struct ext2_dir_entry *dirent,
                fix_problem(fp->ctx, PR_3_ADJUST_INODE, &pctx);
        }
        dirent->inode = fp->parent;
+
+       dirdata  = dirent->name_len & (~EXT2_FT_MASK << 8);
+
        if (fp->ctx->fs->super->s_feature_incompat &
            EXT2_FEATURE_INCOMPAT_FILETYPE)
                dirent->name_len = (dirent->name_len & 0xFF) |
@@ -636,6 +640,9 @@ static int fix_dotdot_proc(struct ext2_dir_entry *dirent,
        else
                dirent->name_len = dirent->name_len & 0xFF;
 
+       if (fp->ctx->fs->super->s_feature_incompat & EXT4_FEATURE_INCOMPAT_DIRDATA)
+               dirent->name_len |= dirdata;
+
        fp->done++;
        return DIRENT_ABORT | DIRENT_CHANGED;
 }