btrfs-progs: check: update error bit definitions

Bit shifts should be done on unsigned types as we're approaching 32,
also update some missing descriptions.

Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
David Sterba 2023-10-24 00:54:26 +02:00
parent 4126a425df
commit ca785f2dd8
2 changed files with 74 additions and 74 deletions

View File

@ -20,33 +20,33 @@
#ifndef __BTRFS_CHECK_MODE_LOWMEM_H__
#define __BTRFS_CHECK_MODE_LOWMEM_H__
#define ROOT_DIR_ERROR (1<<1) /* bad ROOT_DIR */
#define DIR_ITEM_MISSING (1<<2) /* DIR_ITEM not found */
#define DIR_ITEM_MISMATCH (1<<3) /* DIR_ITEM found but not match */
#define INODE_REF_MISSING (1<<4) /* INODE_REF/INODE_EXTREF not found */
#define INODE_ITEM_MISSING (1<<5) /* INODE_ITEM not found */
#define INODE_ITEM_MISMATCH (1<<6) /* INODE_ITEM found but not match */
#define FILE_EXTENT_ERROR (1<<7) /* bad FILE_EXTENT */
#define ODD_CSUM_ITEM (1<<8) /* CSUM_ITEM error */
#define CSUM_ITEM_MISSING (1<<9) /* CSUM_ITEM not found */
#define LINK_COUNT_ERROR (1<<10) /* INODE_ITEM nlink count error */
#define NBYTES_ERROR (1<<11) /* INODE_ITEM nbytes count error */
#define ISIZE_ERROR (1<<12) /* INODE_ITEM size count error */
#define ORPHAN_ITEM (1<<13) /* INODE_ITEM no reference */
#define NO_INODE_ITEM (1<<14) /* no inode_item */
#define LAST_ITEM (1<<15) /* Complete this tree traversal */
#define ROOT_REF_MISSING (1<<16) /* ROOT_REF not found */
#define ROOT_REF_MISMATCH (1<<17) /* ROOT_REF found but not match */
#define DIR_INDEX_MISSING (1<<18) /* INODE_INDEX not found */
#define DIR_INDEX_MISMATCH (1<<19) /* INODE_INDEX found but not match */
#define DIR_COUNT_AGAIN (1<<20) /* DIR isize should be recalculated */
#define BG_ACCOUNTING_ERROR (1<<21) /* Block group accounting error */
#define FATAL_ERROR (1<<22) /* Fatal bit for errno */
#define INODE_FLAGS_ERROR (1<<23) /* Invalid inode flags */
#define DIR_ITEM_HASH_MISMATCH (1<<24) /* Dir item hash mismatch */
#define INODE_MODE_ERROR (1<<25) /* Bad inode mode */
#define INVALID_GENERATION (1<<26) /* Generation is too new */
#define SUPER_BYTES_USED_ERROR (1<<27) /* Super bytes_used is invalid */
#define ROOT_DIR_ERROR (1U << 1) /* bad ROOT_DIR */
#define DIR_ITEM_MISSING (1U << 2) /* DIR_ITEM not found */
#define DIR_ITEM_MISMATCH (1U << 3) /* DIR_ITEM found but not match */
#define INODE_REF_MISSING (1U << 4) /* INODE_REF/INODE_EXTREF not found */
#define INODE_ITEM_MISSING (1U << 5) /* INODE_ITEM not found */
#define INODE_ITEM_MISMATCH (1U << 6) /* INODE_ITEM found but not match */
#define FILE_EXTENT_ERROR (1U << 7) /* bad FILE_EXTENT */
#define ODD_CSUM_ITEM (1U << 8) /* CSUM_ITEM error */
#define CSUM_ITEM_MISSING (1U << 9) /* CSUM_ITEM not found */
#define LINK_COUNT_ERROR (1U << 10) /* INODE_ITEM nlink count error */
#define NBYTES_ERROR (1U << 11) /* INODE_ITEM nbytes count error */
#define ISIZE_ERROR (1U << 12) /* INODE_ITEM size count error */
#define ORPHAN_ITEM (1U << 13) /* INODE_ITEM no reference */
#define NO_INODE_ITEM (1U << 14) /* no inode_item */
#define LAST_ITEM (1U << 15) /* Complete this tree traversal */
#define ROOT_REF_MISSING (1U << 16) /* ROOT_REF not found */
#define ROOT_REF_MISMATCH (1U << 17) /* ROOT_REF found but not match */
#define DIR_INDEX_MISSING (1U << 18) /* INODE_INDEX not found */
#define DIR_INDEX_MISMATCH (1U << 19) /* INODE_INDEX found but not match */
#define DIR_COUNT_AGAIN (1U << 20) /* DIR isize should be recalculated */
#define BG_ACCOUNTING_ERROR (1U << 21) /* Block group accounting error */
#define FATAL_ERROR (1U << 22) /* Fatal bit for errno */
#define INODE_FLAGS_ERROR (1U << 23) /* Invalid inode flags */
#define DIR_ITEM_HASH_MISMATCH (1U << 24) /* Dir item hash mismatch */
#define INODE_MODE_ERROR (1U << 25) /* Bad inode mode */
#define INVALID_GENERATION (1U << 26) /* Generation is too new */
#define SUPER_BYTES_USED_ERROR (1U << 27) /* Super bytes_used is invalid */
/*
* Error bit for low memory mode check.
@ -54,17 +54,17 @@
* Currently no caller cares about it yet. Just internal use for error
* classification.
*/
#define BACKREF_MISSING (1 << 0) /* Backref missing in extent tree */
#define BACKREF_MISMATCH (1 << 1) /* Backref exists but does not match */
#define BYTES_UNALIGNED (1 << 2) /* Some bytes are not aligned */
#define REFERENCER_MISSING (1 << 3) /* Referencer not found */
#define REFERENCER_MISMATCH (1 << 4) /* Referencer found but does not match */
#define CROSSING_STRIPE_BOUNDARY (1 << 4) /* For kernel scrub workaround */
#define ITEM_SIZE_MISMATCH (1 << 5) /* Bad item size */
#define UNKNOWN_TYPE (1 << 6) /* Unknown type */
#define ACCOUNTING_MISMATCH (1 << 7) /* Used space accounting error */
#define CHUNK_TYPE_MISMATCH (1 << 8)
#define BACKREF_OUT_OF_ORDER (1 << 9)
#define BACKREF_MISSING (1U << 0) /* Backref missing in extent tree */
#define BACKREF_MISMATCH (1U << 1) /* Backref exists but does not match */
#define BYTES_UNALIGNED (1U << 2) /* Some bytes are not aligned */
#define REFERENCER_MISSING (1U << 3) /* Referencer not found */
#define REFERENCER_MISMATCH (1U << 4) /* Referencer found but does not match */
#define CROSSING_STRIPE_BOUNDARY (1U << 4) /* For kernel scrub workaround */
#define ITEM_SIZE_MISMATCH (1U << 5) /* Bad item size */
#define UNKNOWN_TYPE (1U << 6) /* Unknown type */
#define ACCOUNTING_MISMATCH (1U << 7) /* Used space accounting error */
#define CHUNK_TYPE_MISMATCH (1U << 8) /* Extent type and chunk type don't match */
#define BACKREF_OUT_OF_ORDER (1U << 9) /* Inline backrefs out of order */
int check_fs_roots_lowmem(void);
int check_chunks_and_extents_lowmem(void);

View File

@ -136,19 +136,19 @@ struct root_item_record {
struct btrfs_key drop_key;
};
#define REF_ERR_NO_DIR_ITEM (1 << 0)
#define REF_ERR_NO_DIR_INDEX (1 << 1)
#define REF_ERR_NO_INODE_REF (1 << 2)
#define REF_ERR_DUP_DIR_ITEM (1 << 3)
#define REF_ERR_DUP_DIR_INDEX (1 << 4)
#define REF_ERR_DUP_INODE_REF (1 << 5)
#define REF_ERR_INDEX_UNMATCH (1 << 6)
#define REF_ERR_FILETYPE_UNMATCH (1 << 7)
#define REF_ERR_NAME_TOO_LONG (1 << 8) // 100
#define REF_ERR_NO_ROOT_REF (1 << 9)
#define REF_ERR_NO_ROOT_BACKREF (1 << 10)
#define REF_ERR_DUP_ROOT_REF (1 << 11)
#define REF_ERR_DUP_ROOT_BACKREF (1 << 12)
#define REF_ERR_NO_DIR_ITEM (1U << 0)
#define REF_ERR_NO_DIR_INDEX (1U << 1)
#define REF_ERR_NO_INODE_REF (1U << 2)
#define REF_ERR_DUP_DIR_ITEM (1U << 3)
#define REF_ERR_DUP_DIR_INDEX (1U << 4)
#define REF_ERR_DUP_INODE_REF (1U << 5)
#define REF_ERR_INDEX_UNMATCH (1U << 6)
#define REF_ERR_FILETYPE_UNMATCH (1U << 7)
#define REF_ERR_NAME_TOO_LONG (1U << 8) // 100
#define REF_ERR_NO_ROOT_REF (1U << 9)
#define REF_ERR_NO_ROOT_BACKREF (1U << 10)
#define REF_ERR_DUP_ROOT_REF (1U << 11)
#define REF_ERR_DUP_ROOT_BACKREF (1U << 12)
struct file_extent_hole {
struct rb_node node;
@ -166,29 +166,29 @@ struct unaligned_extent_rec_t {
u64 bytenr;
};
#define I_ERR_NO_INODE_ITEM (1 << 0)
#define I_ERR_NO_ORPHAN_ITEM (1 << 1)
#define I_ERR_DUP_INODE_ITEM (1 << 2)
#define I_ERR_DUP_DIR_INDEX (1 << 3)
#define I_ERR_ODD_DIR_ITEM (1 << 4)
#define I_ERR_ODD_FILE_EXTENT (1 << 5)
#define I_ERR_BAD_FILE_EXTENT (1 << 6)
#define I_ERR_FILE_EXTENT_OVERLAP (1 << 7)
#define I_ERR_FILE_EXTENT_DISCOUNT (1 << 8) // 100
#define I_ERR_DIR_ISIZE_WRONG (1 << 9)
#define I_ERR_FILE_NBYTES_WRONG (1 << 10) // 400
#define I_ERR_ODD_CSUM_ITEM (1 << 11)
#define I_ERR_SOME_CSUM_MISSING (1 << 12)
#define I_ERR_LINK_COUNT_WRONG (1 << 13)
#define I_ERR_UNALIGNED_EXTENT_REC (1 << 14)
#define I_ERR_FILE_EXTENT_TOO_LARGE (1 << 15)
#define I_ERR_ODD_INODE_FLAGS (1 << 16)
#define I_ERR_INLINE_RAM_BYTES_WRONG (1 << 17)
#define I_ERR_MISMATCH_DIR_HASH (1 << 18)
#define I_ERR_INVALID_IMODE (1 << 19)
#define I_ERR_INVALID_GEN (1 << 20)
#define I_ERR_INVALID_NLINK (1 << 21)
#define I_ERR_INVALID_XATTR (1 << 22)
#define I_ERR_NO_INODE_ITEM (1U << 0)
#define I_ERR_NO_ORPHAN_ITEM (1U << 1)
#define I_ERR_DUP_INODE_ITEM (1U << 2)
#define I_ERR_DUP_DIR_INDEX (1U << 3)
#define I_ERR_ODD_DIR_ITEM (1U << 4)
#define I_ERR_ODD_FILE_EXTENT (1U << 5)
#define I_ERR_BAD_FILE_EXTENT (1U << 6)
#define I_ERR_FILE_EXTENT_OVERLAP (1U << 7)
#define I_ERR_FILE_EXTENT_DISCOUNT (1U << 8) // 100
#define I_ERR_DIR_ISIZE_WRONG (1U << 9)
#define I_ERR_FILE_NBYTES_WRONG (1U << 10) // 400
#define I_ERR_ODD_CSUM_ITEM (1U << 11)
#define I_ERR_SOME_CSUM_MISSING (1U << 12)
#define I_ERR_LINK_COUNT_WRONG (1U << 13)
#define I_ERR_UNALIGNED_EXTENT_REC (1U << 14)
#define I_ERR_FILE_EXTENT_TOO_LARGE (1U << 15)
#define I_ERR_ODD_INODE_FLAGS (1U << 16)
#define I_ERR_INLINE_RAM_BYTES_WRONG (1U << 17)
#define I_ERR_MISMATCH_DIR_HASH (1U << 18)
#define I_ERR_INVALID_IMODE (1U << 19)
#define I_ERR_INVALID_GEN (1U << 20)
#define I_ERR_INVALID_NLINK (1U << 21)
#define I_ERR_INVALID_XATTR (1U << 22)
struct inode_record {
struct list_head backrefs;