Whamcloud - gitweb
e2fsck: check for consistent encryption policies
[tools/e2fsprogs.git] / e2fsck / problem.h
index d291e26..c7f65f6 100644 (file)
@@ -20,7 +20,7 @@ struct problem_context {
        e2_blkcnt_t     blkcount;
        dgrp_t          group;
        __u32           csum1, csum2;
-       __u64   num;
+       __u64           num, num2;
        const char *str;
 };
 
@@ -91,7 +91,7 @@ struct problem_context {
 /* Miscellaneous superblock corruption */
 #define PR_0_MISC_CORRUPT_SUPER                        0x00000B
 
-/* Error determing physical device size of filesystem */
+/* Error determining physical device size of filesystem */
 #define PR_0_GETSIZE_ERROR                     0x00000C
 
 /* Inode count in the superblock incorrect */
@@ -279,6 +279,14 @@ struct problem_context {
 /* Bad desired extra isize in superblock */
 #define PR_0_BAD_WANT_EXTRA_ISIZE              0x00004E
 
+/* Invalid quota inode number */
+#define PR_0_INVALID_QUOTA_INO                 0x00004F
+
+/* Inode count in the superblock incorrect */
+#define PR_0_INODE_COUNT_BIG                   0x000050
+
+/* Meta_bg and resize_inode are not compatible, remove resize_inode*/
+#define PR_0_DISABLE_RESIZE_INODE              0x000051
 
 /*
  * Pass 1 errors
@@ -557,7 +565,6 @@ struct problem_context {
 #define PR_1_EXTENTS_SET                       0x01005A
 
 /* inode is in extents format, but superblock is missing EXTENTS feature */
-/* inode has extents, superblock missing INCOMPAT_EXTENTS feature */
 #define PR_1_EXTENT_FEATURE                    0x01005B
 
 /* inode missing EXTENTS_FL, but is an extent inode */
@@ -660,8 +667,8 @@ struct problem_context {
 /* Inode leaf has a duplicate extent mapping */
 #define PR_1_EXTENT_COLLISION                  0x01007D
 
-/* Error allocating memory for encrypted directory list */
-#define PR_1_ALLOCATE_ENCRYPTED_DIRLIST                0x01007E
+/* Error allocating memory for encrypted inode list */
+#define PR_1_ALLOCATE_ENCRYPTED_INODE_LIST     0x01007E
 
 /* Inode extent tree could be more shallow */
 #define PR_1_EXTENT_BAD_MAX_DEPTH              0x01007F
@@ -675,6 +682,31 @@ struct problem_context {
 /* Timestamp(s) on inode beyond 2310-04-04 are likely pre-1970. */
 #define PR_1_EA_TIME_OUT_OF_RANGE              0x010082
 
+/* Inode has illegal EA value inode */
+#define PR_1_ATTR_VALUE_EA_INODE               0x010083
+
+/* Parent inode has invalid EA entry. EA inode does not have
+ * EXT4_EA_INODE_FL flag. Delete EA entry? */
+#define PR_1_ATTR_NO_EA_INODE_FL               0x010085
+
+/* EA inode for parent inode does not have EXT4_EA_INODE_FL flag */
+#define PR_1_ATTR_SET_EA_INODE_FL              0x010086
+
+/* Offer to clear uninitialized flag on an extent */
+#define PR_1_CLEAR_UNINIT_EXTENT               0x010087
+
+/* Casefold flag set on a non-directory */
+#define PR_1_CASEFOLD_NONDIR                   0x010088
+
+/* Casefold flag set, but file system is missing the casefold feature */
+#define PR_1_CASEFOLD_FEATURE                  0x010089
+
+/* Inode has encrypt flag but no encryption extended attribute */
+#define PR_1_MISSING_ENCRYPTION_XATTR          0x01008A
+
+/* Encrypted inode has corrupt encryption extended attribute */
+#define PR_1_CORRUPT_ENCRYPTION_XATTR          0x01008B
+
 /*
  * Pass 1b errors
  */
@@ -780,7 +812,7 @@ struct problem_context {
 /* Directory entry has deleted or unused inode */
 #define PR_2_UNUSED_INODE      0x020003
 
-/* Directry entry is link to '.' */
+/* Directory entry is link to '.' */
 #define PR_2_LINK_DOT          0x020004
 
 /* Directory entry points to inode now located in a bad block */
@@ -789,7 +821,7 @@ struct problem_context {
 /* Directory entry contains a link to a directory */
 #define PR_2_LINK_DIR          0x020006
 
-/* Directory entry contains a link to the root directry */
+/* Directory entry contains a link to the root directory */
 #define PR_2_LINK_ROOT         0x020007
 
 /* Directory entry has illegal characters in its name */
@@ -813,8 +845,8 @@ struct problem_context {
 /* i_file_acl should be zero */
 #define PR_2_FILE_ACL_ZERO     0x02000E
 
-/* i_dir_acl should be zero */
-#define PR_2_DIR_ACL_ZERO      0x02000F
+/* i_size_high should be zero */
+#define PR_2_DIR_SIZE_HIGH_ZERO        0x02000F
 
 /* i_frag should be zero */
 #define PR_2_FRAG_ZERO         0x020010
@@ -990,6 +1022,12 @@ struct problem_context {
 /* Encrypted directory entry is too short */
 #define PR_2_BAD_ENCRYPTED_NAME                0x020050
 
+/* Encrypted directory contains unencrypted file */
+#define PR_2_UNENCRYPTED_FILE          0x020051
+
+/* Encrypted directory contains file with different encryption policy */
+#define PR_2_INCONSISTENT_ENCRYPTION_POLICY    0x020052
+
 /*
  * Pass 3 errors
  */
@@ -1079,7 +1117,7 @@ struct problem_context {
 #define PR_3_LPF_ENCRYPTED             0x03001B
 
 /*
- * Pass 3a --- rehashing diretories
+ * Pass 3a --- rehashing directories
  */
 /* Pass 3a: Reindexing directories */
 #define PR_3A_PASS_HEADER              0x031000
@@ -1120,6 +1158,12 @@ struct problem_context {
 /* Inconsistent inode count information cached */
 #define PR_4_INCONSISTENT_COUNT                0x040004
 
+/* Extended attribute inode ref count wrong */
+#define PR_4_EA_INODE_REF_COUNT                0x040005
+
+/* directory exceeds max links, but no DIR_NLINK feature in superblock */
+#define PR_4_DIR_NLINK_FEATURE         0x040006
+
 /*
  * Pass 5 errors
  */
@@ -1193,7 +1237,7 @@ 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 */
+/* Inode range used, but not marked used in bitmap */
 #define PR_5_INODE_RANGE_USED          0x050017
 
 /* Block in use but group is marked BLOCK_UNINIT */