Whamcloud - gitweb
ext2fs_set_gdt_csum(): Return an error code on errors instead of void
[tools/e2fsprogs.git] / e2fsck / problem.h
index 8626f7f..a2bd2b5 100644 (file)
@@ -16,7 +16,7 @@ struct problem_context {
        ext2_ino_t ino, ino2, dir;
        struct ext2_inode *inode;
        struct ext2_dir_entry *dirent;
-       blk_t   blk, blk2;
+       blk64_t blk, blk2;
        e2_blkcnt_t     blkcount;
        int             group;
        __u64   num;
@@ -172,6 +172,42 @@ struct problem_context {
 /* Run journal anyway by default */
 #define PR_0_JOURNAL_RUN_DEFAULT               0x00002C
 
+/* Backup journal inode blocks */
+#define PR_0_BACKUP_JNL                                0x00002D
+
+/* Reserved blocks w/o resize_inode */
+#define PR_0_NONZERO_RESERVED_GDT_BLOCKS       0x00002E
+
+/* Resize_inode not enabled, but resize inode is non-zero */
+#define PR_0_CLEAR_RESIZE_INODE                        0x00002F
+
+/* Resize inode invalid */
+#define PR_0_RESIZE_INODE_INVALID              0x000030
+
+/* Last mount time is in the future */
+#define PR_0_FUTURE_SB_LAST_MOUNT              0x000031
+
+/* Last write time is in the future */
+#define PR_0_FUTURE_SB_LAST_WRITE              0x000032
+
+/* Superblock hint for external journal incorrect */
+#define PR_0_EXTERNAL_JOURNAL_HINT             0x000033
+
+/* Superblock hint for external journal incorrect */
+#define PR_0_DIRHASH_HINT                      0x000034
+
+/* Group descriptor N checksum is invalid */
+#define PR_0_GDT_CSUM                          0x000035
+
+/* 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
+
+/* Group descriptor N has invalid unused inodes count. */
+#define PR_0_GDT_ITABLE_UNUSED                 0x000038
+
 /*
  * Pass 1 errors
  */
@@ -404,6 +440,57 @@ struct problem_context {
 /* HTREE too deep */   
 #define PR_1_HTREE_DEPTH               0x01004C
 
+/* Bad block has indirect block that conflicts with filesystem block */
+#define PR_1_BB_FS_BLOCK               0x01004D
+
+/* Resize inode failed */
+#define PR_1_RESIZE_INODE_CREATE       0x01004E
+
+/* inode->i_size is too long */        
+#define PR_1_EXTRA_ISIZE               0x01004F
+
+/* attribute name is too long */
+#define PR_1_ATTR_NAME_LEN             0x010050
+
+/* wrong EA value offset */
+#define PR_1_ATTR_VALUE_OFFSET         0x010051
+
+/* wrong EA blocknumber */
+#define PR_1_ATTR_VALUE_BLOCK          0x010052
+
+/* wrong EA value size */
+#define PR_1_ATTR_VALUE_SIZE           0x010053
+
+/* wrong EA hash value */
+#define PR_1_ATTR_HASH                 0x010054
+
+/* inode appears to be a directory */
+#define PR_1_TREAT_AS_DIRECTORY                0x010055
+
+/* Error while reading extent tree */
+#define PR_1_READ_EXTENT               0x010056
+
+/* Error deleting a bogus extent */
+#define PR_1_EXTENT_DELETE_FAIL                0x010057
+
+/* Bad starting block in extent */
+#define PR_1_EXTENT_BAD_START_BLK      0x010058
+
+/* Extent ends beyond filesystem */
+#define PR_1_EXTENT_ENDS_BEYOND                0x010059
+
+/* EXTENTS_FL flag set on a non-extents capable filesystem */
+#define PR_1_EXTENTS_SET               0x01005A
+
+/* inode has extents, superblock missing INCOMPAT_EXTENTS feature */
+#define PR_1_EXTENT_FEATURE            0x01005B
+
+/* inode missing EXTENTS_FL, but is an extent inode */
+#define PR_1_UNSET_EXTENT_FL           0x01005C
+
+/* Fast symlink has EXTENTS_FL set */
+#define PR_1_FAST_SYMLINK_EXTENT_FL    0x01005D
+
 /*
  * Pass 1b errors
  */
@@ -622,7 +709,7 @@ struct problem_context {
 #define PR_2_HTREE_CLEAR       0x020038
 
 /* Clear the htree flag forcibly */
-#define PR_2_HTREE_FCLR                0x020039
+/* #define PR_2_HTREE_FCLR     0x020039 */
 
 /* Bad block in htree interior node */
 #define PR_2_HTREE_BADBLK      0x02003A
@@ -654,6 +741,18 @@ struct problem_context {
 /* Duplicate directory entry found */
 #define PR_2_REPORT_DUP_DIRENT 0x020043
 
+/* i_blocks_hi should be zero */
+#define PR_2_BLOCKS_HI_ZERO    0x020044
+
+/* Unexpected HTREE block */
+#define PR_2_UNEXPECTED_HTREE_BLOCK    0x020045
+
+/* Inode found in group where _INODE_UNINIT is set */
+#define PR_2_INOREF_BG_INO_UNINIT      0x020046
+
+/* Inode found in group unused inodes area */
+#define PR_2_INOREF_IN_UNUSED          0x020047
+
 /*
  * Pass 3 errors
  */
@@ -842,10 +941,23 @@ struct problem_context {
 
 /* Inode range not used, but marked in bitmap */
 #define PR_5_INODE_RANGE_UNUSED                0x050016
-         
+
 /* Inode rangeused, but not marked used in bitmap */
 #define PR_5_INODE_RANGE_USED          0x050017
 
+/* Block in use but group is marked BLOCK_UNINIT */
+#define PR_5_BLOCK_UNINIT              0x050018
+
+/* Inode in use but group is marked INODE_UNINIT */
+#define PR_5_INODE_UNINIT              0x050019
+
+/*
+ * Post-Pass 5 errors
+ */
+
+/* Recreate the journal if E2F_FLAG_JOURNAL_INODE flag is set */
+#define PR_6_RECREATE_JOURNAL          0x060001
+
 /*
  * Function declarations
  */
@@ -857,5 +969,6 @@ void clear_problem_context(struct problem_context *ctx);
 
 /* message.c */
 void print_e2fsck_message(e2fsck_t ctx, const char *msg,
-                         struct problem_context *pctx, int first);
+                         struct problem_context *pctx, int first, 
+                         int recurse);