X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=e2fsck%2Fproblem.h;h=f4a87d236b44e877ab2fff18d7b82be91827de03;hb=8161a7484f47f12e562080a1312a4db9d2f71b40;hp=a0d067fc32ffb6a63643e40a57cd17a1d1892c1b;hpb=d647a1ea4db5fa4e4ed48573c63a1bde56e071db;p=tools%2Fe2fsprogs.git diff --git a/e2fsck/problem.h b/e2fsck/problem.h index a0d067f..f4a87d2 100644 --- a/e2fsck/problem.h +++ b/e2fsck/problem.h @@ -13,7 +13,7 @@ typedef __u32 problem_t; struct problem_context { errcode_t errcode; - ino_t ino, ino2, dir; + ext2_ino_t ino, ino2, dir; struct ext2_inode *inode; struct ext2_dir_entry *dirent; blk_t blk, blk2; @@ -28,13 +28,16 @@ struct problem_context { * handled as a set. The user answers once for a particular latch * group. */ -#define PR_LATCH_MASK 0x0070 /* Latch mask */ +#define PR_LATCH_MASK 0x0ff0 /* Latch mask */ #define PR_LATCH_BLOCK 0x0010 /* Latch for illegal blocks (pass 1) */ #define PR_LATCH_BBLOCK 0x0020 /* Latch for bad block inode blocks (pass 1) */ #define PR_LATCH_IBITMAP 0x0030 /* Latch for pass 5 inode bitmap proc. */ #define PR_LATCH_BBITMAP 0x0040 /* Latch for pass 5 inode bitmap proc. */ #define PR_LATCH_RELOC 0x0050 /* Latch for superblock relocate hint */ #define PR_LATCH_DBLOCK 0x0060 /* Latch for pass 1b dup block headers */ +#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(x) ((((x) & PR_LATCH_MASK) >> 4) - 1) @@ -93,7 +96,82 @@ struct problem_context { /* The Hurd does not support the filetype feature */ #define PR_0_HURD_CLEAR_FILETYPE 0x00000E + +/* Journal inode is invalid */ +#define PR_0_JOURNAL_BAD_INODE 0x00000F + +/* The external journal has multiple filesystems (which we can't handle yet) */ +#define PR_0_JOURNAL_UNSUPP_MULTIFS 0x000010 + +/* Can't find external journal */ +#define PR_0_CANT_FIND_JOURNAL 0x000011 + +/* External journal has bad superblock */ +#define PR_0_EXT_JOURNAL_BAD_SUPER 0x000012 + +/* Superblock has a bad journal UUID */ +#define PR_0_JOURNAL_BAD_UUID 0x000013 + +/* Journal has an unknown superblock type */ +#define PR_0_JOURNAL_UNSUPP_SUPER 0x000014 + +/* Journal superblock is corrupt */ +#define PR_0_JOURNAL_BAD_SUPER 0x000015 + +/* Journal superblock is corrupt */ +#define PR_0_JOURNAL_HAS_JOURNAL 0x000016 + +/* Superblock has recovery flag set but no journal */ +#define PR_0_JOURNAL_RECOVER_SET 0x000017 + +/* Journal has data, but recovery flag is clear */ +#define PR_0_JOURNAL_RECOVERY_CLEAR 0x000018 + +/* Ask if we should clear the journal */ +#define PR_0_JOURNAL_RESET_JOURNAL 0x000019 + +/* Filesystem revision is 0, but feature flags are set */ +#define PR_0_FS_REV_LEVEL 0x00001A + +/* Clearing orphan inode */ +#define PR_0_ORPHAN_CLEAR_INODE 0x000020 + +/* Illegal block found in orphaned inode */ +#define PR_0_ORPHAN_ILLEGAL_BLOCK_NUM 0x000021 + +/* Already cleared block found in orphaned inode */ +#define PR_0_ORPHAN_ALREADY_CLEARED_BLOCK 0x000022 +/* Illegal orphan inode in superblock */ +#define PR_0_ORPHAN_ILLEGAL_HEAD_INODE 0x000023 + +/* Illegal inode in orphaned inode list */ +#define PR_0_ORPHAN_ILLEGAL_INODE 0x000024 + +/* Journal has unsupported read-only feature - abort */ +#define PR_0_JOURNAL_UNSUPP_ROCOMPAT 0x000025 + +/* Journal has unsupported incompatible feature - abort */ +#define PR_0_JOURNAL_UNSUPP_INCOMPAT 0x000026 + +/* Journal has unsupported version number */ +#define PR_0_JOURNAL_UNSUPP_VERSION 0x000027 + +/* Moving journal to hidden file */ +#define PR_0_MOVE_JOURNAL 0x000028 + +/* Error moving journal */ +#define PR_0_ERR_MOVE_JOURNAL 0x000029 + +/* Clearing V2 journal superblock */ +#define PR_0_CLEAR_V2_JOURNAL 0x00002A + +/* Run journal anyway */ +#define PR_0_JOURNAL_RUN 0x00002B + +/* Run journal anyway by default */ +#define PR_0_JOURNAL_RUN_DEFAULT 0x00002C + /* * Pass 1 errors */ @@ -168,76 +246,73 @@ struct problem_context { #define PR_1_BBINODE_BAD_METABLOCK_PROMPT 0x010016 /* Bad primary block */ -#define PR_1_BAD_PRIMARY_BLOCK 0x0100017 +#define PR_1_BAD_PRIMARY_BLOCK 0x010017 /* Bad primary block prompt */ -#define PR_1_BAD_PRIMARY_BLOCK_PROMPT 0x0100018 +#define PR_1_BAD_PRIMARY_BLOCK_PROMPT 0x010018 /* Bad primary superblock */ -#define PR_1_BAD_PRIMARY_SUPERBLOCK 0x0100019 +#define PR_1_BAD_PRIMARY_SUPERBLOCK 0x010019 /* Bad primary block group descriptors */ -#define PR_1_BAD_PRIMARY_GROUP_DESCRIPTOR 0x010001A +#define PR_1_BAD_PRIMARY_GROUP_DESCRIPTOR 0x01001A /* Bad superblock in group */ -#define PR_1_BAD_SUPERBLOCK 0x010001B +#define PR_1_BAD_SUPERBLOCK 0x01001B /* Bad block group descriptors in group */ -#define PR_1_BAD_GROUP_DESCRIPTORS 0x010001C +#define PR_1_BAD_GROUP_DESCRIPTORS 0x01001C /* Block claimed for no reason */ -#define PR_1_PROGERR_CLAIMED_BLOCK 0x010001D +#define PR_1_PROGERR_CLAIMED_BLOCK 0x01001D /* Error allocating blocks for relocating metadata */ -#define PR_1_RELOC_BLOCK_ALLOCATE 0x010001E +#define PR_1_RELOC_BLOCK_ALLOCATE 0x01001E /* Error allocating block buffer during relocation process */ -#define PR_1_RELOC_MEMORY_ALLOCATE 0x010001F +#define PR_1_RELOC_MEMORY_ALLOCATE 0x01001F /* Relocating metadata group information from X to Y */ -#define PR_1_RELOC_FROM_TO 0x0100020 +#define PR_1_RELOC_FROM_TO 0x010020 /* Relocating metatdata group information to X */ -#define PR_1_RELOC_TO 0x0100021 +#define PR_1_RELOC_TO 0x010021 /* Block read error during relocation process */ -#define PR_1_RELOC_READ_ERR 0x0100022 +#define PR_1_RELOC_READ_ERR 0x010022 /* Block write error during relocation process */ -#define PR_1_RELOC_WRITE_ERR 0x0100023 +#define PR_1_RELOC_WRITE_ERR 0x010023 /* Error allocating inode bitmap */ -#define PR_1_ALLOCATE_IBITMAP_ERROR 0x0100024 +#define PR_1_ALLOCATE_IBITMAP_ERROR 0x010024 /* Error allocating block bitmap */ -#define PR_1_ALLOCATE_BBITMAP_ERROR 0x0100025 +#define PR_1_ALLOCATE_BBITMAP_ERROR 0x010025 /* Error allocating icount structure */ -#define PR_1_ALLOCATE_ICOUNT 0x0100026 +#define PR_1_ALLOCATE_ICOUNT 0x010026 /* Error allocating dbcount */ -#define PR_1_ALLOCATE_DBCOUNT 0x0100027 +#define PR_1_ALLOCATE_DBCOUNT 0x010027 /* Error while scanning inodes */ -#define PR_1_ISCAN_ERROR 0x0100028 +#define PR_1_ISCAN_ERROR 0x010028 /* Error while iterating over blocks */ -#define PR_1_BLOCK_ITERATE 0x0100029 +#define PR_1_BLOCK_ITERATE 0x010029 /* Error while storing inode count information */ -#define PR_1_ICOUNT_STORE 0x010002A +#define PR_1_ICOUNT_STORE 0x01002A /* Error while storing directory block information */ -#define PR_1_ADD_DBLOCK 0x010002B +#define PR_1_ADD_DBLOCK 0x01002B /* Error while reading inode (for clearing) */ -#define PR_1_READ_INODE 0x010002C +#define PR_1_READ_INODE 0x01002C /* Suppress messages prompt */ -#define PR_1_SUPPRESS_MESSAGES 0x010002D - -/* Filesystem contains large files, but has no such flag in sb */ -#define PR_1_FEATURE_LARGE_FILES 0x01002E +#define PR_1_SUPPRESS_MESSAGES 0x01002D /* Imagic flag set on an inode when filesystem doesn't support it */ #define PR_1_SET_IMAGIC 0x01002F @@ -251,6 +326,84 @@ struct problem_context { /* Non-zero size on on device, fifo or socket inode */ #define PR_1_SET_NONZSIZE 0x010032 +/* Filesystem revision is 0, but feature flags are set */ +#define PR_1_FS_REV_LEVEL 0x010033 + +/* Journal inode not in use, needs clearing */ +#define PR_1_JOURNAL_INODE_NOT_CLEAR 0x010034 + +/* Journal inode has wrong mode */ +#define PR_1_JOURNAL_BAD_MODE 0x010035 + +/* Inode that was part of orphan linked list */ +#define PR_1_LOW_DTIME 0x010036 + +/* Latch question which asks how to deal with low dtime inodes */ +#define PR_1_ORPHAN_LIST_REFUGEES 0x010037 + +/* Error allocating refcount structure */ +#define PR_1_ALLOCATE_REFCOUNT 0x010038 + +/* Error reading Extended Attribute block */ +#define PR_1_READ_EA_BLOCK 0x010039 + +/* Invalid Extended Attribute block */ +#define PR_1_BAD_EA_BLOCK 0x01003A + +/* Error reading Extended Attribute block while fixing refcount -- abort */ +#define PR_1_EXTATTR_READ_ABORT 0x01003B + +/* Extended attribute reference count incorrect */ +#define PR_1_EXTATTR_REFCOUNT 0x01003C + +/* Error writing Extended Attribute block while fixing refcount */ +#define PR_1_EXTATTR_WRITE 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 + +/* Error EA allocation collision */ +#define PR_1_EA_ALLOC_COLLISION 0x010040 + +/* Bad extended attribute name */ +#define PR_1_EA_BAD_NAME 0x010041 + +/* Bad extended attribute value */ +#define PR_1_EA_BAD_VALUE 0x010042 + +/* Inode too big (latch question) */ +#define PR_1_INODE_TOOBIG 0x010043 + +/* Directory too big */ +#define PR_1_TOOBIG_DIR 0x010044 + +/* Regular file too big */ +#define PR_1_TOOBIG_REG 0x010045 + +/* Symlink too big */ +#define PR_1_TOOBIG_SYMLINK 0x010046 + +/* INDEX_FL flag set on a non-HTREE filesystem */ +#define PR_1_HTREE_SET 0x010047 + +/* INDEX_FL flag set on a non-directory */ +#define PR_1_HTREE_NODIR 0x010048 + +/* Invalid root node in HTREE directory */ +#define PR_1_HTREE_BADROOT 0x010049 + +/* Unsupported hash version in HTREE directory */ +#define PR_1_HTREE_HASHV 0x01004A + +/* Incompatible flag in HTREE root node */ +#define PR_1_HTREE_INCOMPAT 0x01004B + +/* HTREE too deep */ +#define PR_1_HTREE_DEPTH 0x01004C + /* * Pass 1b errors */ @@ -273,6 +426,12 @@ struct problem_context { /* Error allocating inode bitmap */ #define PR_1B_ALLOCATE_IBITMAP_ERROR 0x011005 +/* Error while iterating over blocks */ +#define PR_1B_BLOCK_ITERATE 0x0110006 + +/* Error adjusting EA refcount */ +#define PR_1B_ADJ_EA_REFCOUNT 0x0110007 + /* Pass 1C: Scan directories for inodes with dup blocks. */ #define PR_1C_PASS_HEADER 0x012000 @@ -438,6 +597,54 @@ struct problem_context { /* Directory filename can't be zero-length */ #define PR_2_NULL_NAME 0x020030 +/* Invalid symlink */ +#define PR_2_INVALID_SYMLINK 0x020031 + +/* i_file_acl (extended attribute) is bad */ +#define PR_2_FILE_ACL_BAD 0x020032 + +/* Filesystem contains large files, but has no such flag in sb */ +#define PR_2_FEATURE_LARGE_FILES 0x020033 + +/* Node in HTREE directory not referenced */ +#define PR_2_HTREE_NOTREF 0x020034 + +/* Node in HTREE directory referenced twice */ +#define PR_2_HTREE_DUPREF 0x020035 + +/* Node in HTREE directory has bad min hash */ +#define PR_2_HTREE_MIN_HASH 0x020036 + +/* Node in HTREE directory has bad max hash */ +#define PR_2_HTREE_MAX_HASH 0x020037 + +/* Clear invalid HTREE directory */ +#define PR_2_HTREE_CLEAR 0x020038 + +/* Clear the htree flag forcibly */ +#define PR_2_HTREE_FCLR 0x020039 + +/* Bad block in htree interior node */ +#define PR_2_HTREE_BADBLK 0x02003A + +/* Error adjusting EA refcount */ +#define PR_2_ADJ_EA_REFCOUNT 0x02003B + +/* Invalid HTREE root node */ +#define PR_2_HTREE_BAD_ROOT 0x02003C + +/* Invalid HTREE limit */ +#define PR_2_HTREE_BAD_LIMIT 0x02003D + +/* Invalid HTREE count */ +#define PR_2_HTREE_BAD_COUNT 0x02003E + +/* HTREE interior node has out-of-order hashes in table */ +#define PR_2_HTREE_HASH_ORDER 0x02003F + +/* Node in HTREE directory has bad depth */ +#define PR_2_HTREE_BAD_DEPTH 0x020040 + /* * Pass 3 errors */ @@ -515,6 +722,27 @@ struct problem_context { #define PR_3_LPF_NOTDIR 0x030017 /* + * Pass 3a --- rehashing diretories + */ +/* Pass 3a: Reindexing directories */ +#define PR_3A_PASS_HEADER 0x031000 + +/* Error iterating over directories */ +#define PR_3A_OPTIMIZE_ITER 0x031001 + +/* Error rehash directory */ +#define PR_3A_OPTIMIZE_DIR_ERR 0x031002 + +/* Rehashing dir header */ +#define PR_3A_OPTIMIZE_DIR_HEADER 0x031003 + +/* Rehashing directory %d */ +#define PR_3A_OPTIMIZE_DIR 0x031004 + +/* Rehashing dir end */ +#define PR_3A_OPTIMIZE_DIR_END 0x031005 + +/* * Pass 4 errors */ @@ -550,7 +778,7 @@ struct problem_context { #define PR_5_BLOCK_BITMAP_HEADER 0x050003 /* Block not used, but marked in bitmap */ -#define PR_5_UNUSED_BLOCK 0x050004 +#define PR_5_BLOCK_UNUSED 0x050004 /* Block used, but not marked used in bitmap */ #define PR_5_BLOCK_USED 0x050005 @@ -562,7 +790,7 @@ struct problem_context { #define PR_5_INODE_BITMAP_HEADER 0x050007 /* Inode not used, but marked in bitmap */ -#define PR_5_UNUSED_INODE 0x050008 +#define PR_5_INODE_UNUSED 0x050008 /* Inode used, but not marked used in bitmap */ #define PR_5_INODE_USED 0x050009 @@ -587,10 +815,28 @@ struct problem_context { /* Programming error: bitmap endpoints don't match */ #define PR_5_BMAP_ENDPOINTS 0x050010 - + /* Internal error: fudging end of bitmap */ #define PR_5_FUDGE_BITMAP_ERROR 0x050011 - + +/* Error copying in replacement inode bitmap */ +#define PR_5_COPY_IBITMAP_ERROR 0x050012 + +/* Error copying in replacement block bitmap */ +#define PR_5_COPY_BBITMAP_ERROR 0x050013 + +/* Block range not used, but marked in bitmap */ +#define PR_5_BLOCK_RANGE_UNUSED 0x050014 + +/* Block range used, but not marked used in bitmap */ +#define PR_5_BLOCK_RANGE_USED 0x050015 + +/* 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 + /* * Function declarations */