Many files:
Checked in e2fsprogs 1.05
diff --git a/e2fsck/pass2.c b/e2fsck/pass2.c
index f4a4d32..91bcc08 100644
--- a/e2fsck/pass2.c
+++ b/e2fsck/pass2.c
@@ -530,6 +530,7 @@
errcode_t retval;
struct ext2_inode inode;
+ inode_link_info[ino] = 0;
e2fsck_read_inode(fs, ino, &inode, "deallocate_inode");
inode.i_links_count = 0;
inode.i_dtime = time(0);
@@ -609,6 +610,7 @@
errcode_t retval;
int inode_modified = 0;
char *pathname;
+ unsigned char *frag, *fsize;
e2fsck_read_inode(fs, ino, &inode, "process_bad_inode");
retval = ext2fs_get_pathname(fs, dir, ino, &pathname);
@@ -634,23 +636,30 @@
}
check_for_zero_u32(fs, ino, pathname, "i_faddr", &inode.i_faddr,
&inode_modified);
-#if HAVE_EXT2_FRAGS
- check_for_zero_u8(fs, ino, pathname, "i_frag", &inode.i_frag,
- &inode_modified);
- check_for_zero_u8(fs, ino, pathname, "i_fsize", &inode.i_fsize,
- &inode_modified);
-#else
- /*
- * Even if the OS specific fields don't support i_frag and
- * i_fsize, make sure they are set to zero anyway. This may
- * cause problems if on some other OS these fields are reused
- * for something else, but that's probably a bad idea....
- */
- check_for_zero_u8(fs, ino, pathname, "i_frag",
- &inode.osd2.linux2.l_i_frag, &inode_modified);
- check_for_zero_u8(fs, ino, pathname, "i_fsize",
- &inode.osd2.linux2.l_i_fsize, &inode_modified);
-#endif
+
+ switch (fs->super->s_creator_os) {
+ case EXT2_OS_LINUX:
+ frag = &inode.osd2.linux2.l_i_frag;
+ fsize = &inode.osd2.linux2.l_i_fsize;
+ break;
+ case EXT2_OS_HURD:
+ frag = &inode.osd2.hurd2.h_i_frag;
+ fsize = &inode.osd2.hurd2.h_i_fsize;
+ break;
+ case EXT2_OS_MASIX:
+ frag = &inode.osd2.masix2.m_i_frag;
+ fsize = &inode.osd2.masix2.m_i_fsize;
+ break;
+ default:
+ frag = fsize = 0;
+ }
+ if (frag)
+ check_for_zero_u8(fs, ino, pathname, "i_frag", frag,
+ &inode_modified);
+ if (fsize)
+ check_for_zero_u8(fs, ino, pathname, "i_fsize", fsize,
+ &inode_modified);
+
check_for_zero_u32(fs, ino, pathname, "i_file_acl", &inode.i_file_acl,
&inode_modified);
check_for_zero_u32(fs, ino, pathname, "i_dir_acl", &inode.i_dir_acl,