blk64_t blk, blk2;
e2_blkcnt_t blkcount;
int group;
+ __u32 csum1, csum2;
__u64 num;
const char *str;
};
#define PR_LATCH_LOW_DTIME 0x0070 /* Latch for pass1 orphaned list refugees */
#define PR_LATCH_TOOBIG 0x0080 /* Latch for file to big errors */
#define PR_LATCH_OPTIMIZE_DIR 0x0090 /* Latch for optimize directories */
+#define PR_LATCH_BG_CHECKSUM 0x00A0 /* Latch for block group checksums */
#define PR_LATCH(x) ((((x) & PR_LATCH_MASK) >> 4) - 1)
/* Group descriptor N marked uninitialized without feature set. */
#define PR_0_GDT_UNINIT 0x000036
-/* Block bitmap is not initialised and Inode bitmap is */
-#define PR_0_BB_UNINIT_IB_INIT 0x000037
+/* Block bitmap is not initialised and Inode bitmap is -- NO LONGER USED */
+/* #define PR_0_BB_UNINIT_IB_INIT 0x000037 */
/* Group descriptor N has invalid unused inodes count. */
#define PR_0_GDT_ITABLE_UNUSED 0x000038
/* The test_fs filesystem flag is set and ext4 is available */
#define PR_0_CLEAR_TESTFS_FLAG 0x00003B
+/* Last mount time is in the future (fudged) */
+#define PR_0_FUTURE_SB_LAST_MOUNT_FUDGED 0x00003C
+
+/* Last write time is in the future (fudged) */
+#define PR_0_FUTURE_SB_LAST_WRITE_FUDGED 0x00003D
+
+/* Block group checksum (latch question) */
+#define PR_0_GDT_CSUM_LATCH 0x00003E
+
+/* Free inodes count wrong */
+#define PR_0_FREE_INODE_COUNT 0x00003F
+
+/* Free blocks count wrong */
+#define PR_0_FREE_BLOCK_COUNT 0x000040
+
+/* Make quota file hidden */
+#define PR_0_HIDE_QUOTA 0x000041
+
+/* Superblock has invalid MMP block. */
+#define PR_0_MMP_INVALID_BLK 0x000042
+
+/* Superblock has invalid MMP magic. */
+#define PR_0_MMP_INVALID_MAGIC 0x000043
+
+/* Opening file system failed */
+#define PR_0_OPEN_FAILED 0x000044
+
+/* Checking group descriptor failed */
+#define PR_0_CHECK_DESC_FAILED 0x000045
+
+/* Invalid s_min_extra_isize */
+#define PR_0_MIN_EXTRA_ISIZE_INVALID 0x000046
+
+/* Invalid s_want_extra_isize */
+#define PR_0_WANT_EXTRA_ISIZE_INVALID 0x000047
+
+/* Clear EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE flag */
+#define PR_0_CLEAR_EXTRA_ISIZE 0x000048
+
+
/*
* Pass 1 errors
*/
#define PR_1_EXTATTR_REFCOUNT 0x01003C
/* Error writing Extended Attribute block while fixing refcount */
-#define PR_1_EXTATTR_WRITE 0x01003D
+#define PR_1_EXTATTR_WRITE_ABORT 0x01003D
/* Multiple EA blocks not supported */
#define PR_1_EA_MULTI_BLOCK 0x01003E
/* Error allocating EA region allocation structure */
-#define PR_1_EA_ALLOC_REGION 0x01003F
+#define PR_1_EA_ALLOC_REGION_ABORT 0x01003F
/* Error EA allocation collision */
#define PR_1_EA_ALLOC_COLLISION 0x010040
/* Extent node header invalid */
#define PR_1_EXTENT_HEADER_INVALID 0x01005F
+/* PR_1_EOFBLOCKS_FL_SET 0x010060 was here */
+
+/* Failed to convert subcluster bitmap */
+#define PR_1_CONVERT_SUBCLUSTER 0x010061
+
+/* Quota inode has wrong mode */
+#define PR_1_QUOTA_BAD_MODE 0x010062
+
+/* Quota inode is not in use, but contains data */
+#define PR_1_QUOTA_INODE_NOT_CLEAR 0x010063
+
+/* Quota inode is user visible */
+#define PR_1_QUOTA_INODE_NOT_HIDDEN 0x010064
+
+/* Invalid bad inode */
+#define PR_1_INVALID_BAD_INODE 0x010065
+
+/* Extent has zero length */
+#define PR_1_EXTENT_LENGTH_ZERO 0x010066
+
+/* Bad extended attribute value in inode */
+#define PR_1_INODE_EA_BAD_VALUE 0x010070
+
+/* Warning for user that all inodes need to be expanded atleast by
+ * s_min_extra_isize
+ */
+#define PR_1_EXPAND_EISIZE_WARNING 0x010074
+
+/* Expand the inode */
+#define PR_1_EXPAND_EISIZE 0x010075
+
+/* Delete an EA so that EXTRA_ISIZE may be enabled */
+#define PR_1_EISIZE_DELETE_EA 0x010076
+
+/* An EA needs to be deleted by e2fsck is being run with -p or -y */
+#define PR_1_EA_BLK_NOSPC 0x010077
+
+/* Disable EXTRA_ISIZE feature as inode cannot be expanded
+ * without deletion of an EA
+ */
+#define PR_1_CLEAR_EXTRA_ISIZE 0x010078
+
+/* invalid inode creation time */
+#define PR_1_CRTIME_BAD 0x010079
+
+
/*
* Pass 1b errors
*/
/* Couldn't clone file (error) */
#define PR_1D_CLONE_ERROR 0x013008
+/* File with shared blocks found */
+#define PR_1D_DISCONNECT_QUESTION 0x013009
+
+/* Couldn't unlink file (error) */
+#define PR_1D_DISCONNECT_ERROR 0x01300A
+
+
/*
* Pass 2 errors
*/
/* i_file_acl_hi should be zero */
#define PR_2_I_FILE_ACL_HI_ZERO 0x020048
+/* Inode completely corrupt */
+#define PR_2_INODE_TOOBAD 0x020049
+
/*
* Pass 3 errors
*/
/* Inode in use but group is marked INODE_UNINIT */
#define PR_5_INODE_UNINIT 0x050019
+/* Expand the inodes which need a new EA block */
+#define PR_5_EXPAND_EISIZE 0x05001a
+
/*
* Post-Pass 5 errors
*/
/* Recreate the journal if E2F_FLAG_JOURNAL_INODE flag is set */
#define PR_6_RECREATE_JOURNAL 0x060001
+/* Update quota information if it is inconsistent */
+#define PR_6_UPDATE_QUOTAS 0x060002
+
/*
* Function declarations
*/
void clear_problem_context(struct problem_context *pctx);
/* message.c */
-void print_e2fsck_message(e2fsck_t ctx, const char *msg,
+void print_e2fsck_message(FILE *f, e2fsck_t ctx, const char *msg,
struct problem_context *pctx, int first,
int recurse);