]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
repair: Set ftype for entries in lost+found
authorJan Kara <jack@suse.cz>
Mon, 15 Sep 2014 23:16:44 +0000 (09:16 +1000)
committerDave Chinner <david@fromorbit.com>
Mon, 15 Sep 2014 23:16:44 +0000 (09:16 +1000)
So far all entries in lost+found had file type XFS_DIR3_FT_UNKNOWN which
is somewhat annoying as the next xfs_repair pass will find these and
report as an error. Set proper file type when creating these entries.

Signed-off-by: Jan Kara <jack@suse.cz>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
repair/phase6.c

index f13069f4cd7167aa6d9f7f5a8ca4de40415fea42..0ec4f07ca1c25c4dee3a15b05dab4e20386dbb15 100644 (file)
@@ -1097,8 +1097,6 @@ mv_orphanage(
        xname.name = fname;
        xname.len = snprintf((char *)fname, sizeof(fname), "%llu",
                                (unsigned long long)ino);
-       /* XXX use xfs_mode_to_ftype[] when userspace gains it */
-       xname.type = XFS_DIR3_FT_UNKNOWN;
 
        err = libxfs_iget(mp, NULL, orphanage_ino, 0, &orphanage_ip, 0);
        if (err)
@@ -1117,6 +1115,8 @@ mv_orphanage(
        if ((err = libxfs_iget(mp, NULL, ino, 0, &ino_p, 0)))
                do_error(_("%d - couldn't iget disconnected inode\n"), err);
 
+       xname.type = xfs_mode_to_ftype[(ino_p->i_d.di_mode & S_IFMT)>>S_SHIFT];
+
        if (isa_dir)  {
                irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, orphanage_ino),
                                XFS_INO_TO_AGINO(mp, orphanage_ino));