bcachefs: Add hash seed, type to inode_to_text()
This helped with discovering some filesystem corruption fsck has having trouble with: the str_hash type had gotten flipped on one snapshot's version of an inode. All versions of a given inode number have the same hash seed and hash type, since lookups will be done with a single hash/seed and type and see dirents/xattrs from multiple snapshots. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
78cf0ae636
commit
d8e879377f
@ -533,6 +533,10 @@ static void __bch2_inode_unpacked_to_text(struct printbuf *out,
|
|||||||
prt_printf(out, "(%x)\n", inode->bi_flags);
|
prt_printf(out, "(%x)\n", inode->bi_flags);
|
||||||
|
|
||||||
prt_printf(out, "journal_seq=%llu\n", inode->bi_journal_seq);
|
prt_printf(out, "journal_seq=%llu\n", inode->bi_journal_seq);
|
||||||
|
prt_printf(out, "hash_seed=%llx\n", inode->bi_hash_seed);
|
||||||
|
prt_printf(out, "hash_type=");
|
||||||
|
bch2_prt_str_hash_type(out, INODE_STR_HASH(inode));
|
||||||
|
prt_newline(out);
|
||||||
prt_printf(out, "bi_size=%llu\n", inode->bi_size);
|
prt_printf(out, "bi_size=%llu\n", inode->bi_size);
|
||||||
prt_printf(out, "bi_sectors=%llu\n", inode->bi_sectors);
|
prt_printf(out, "bi_sectors=%llu\n", inode->bi_sectors);
|
||||||
prt_printf(out, "bi_version=%llu\n", inode->bi_version);
|
prt_printf(out, "bi_version=%llu\n", inode->bi_version);
|
||||||
|
@ -63,7 +63,7 @@ const char * const bch2_compression_opts[] = {
|
|||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
const char * const bch2_str_hash_types[] = {
|
const char * const __bch2_str_hash_types[] = {
|
||||||
BCH_STR_HASH_TYPES()
|
BCH_STR_HASH_TYPES()
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
@ -115,6 +115,7 @@ PRT_STR_OPT_BOUNDSCHECKED(fs_usage_type, enum bch_fs_usage_type);
|
|||||||
PRT_STR_OPT_BOUNDSCHECKED(data_type, enum bch_data_type);
|
PRT_STR_OPT_BOUNDSCHECKED(data_type, enum bch_data_type);
|
||||||
PRT_STR_OPT_BOUNDSCHECKED(csum_type, enum bch_csum_type);
|
PRT_STR_OPT_BOUNDSCHECKED(csum_type, enum bch_csum_type);
|
||||||
PRT_STR_OPT_BOUNDSCHECKED(compression_type, enum bch_compression_type);
|
PRT_STR_OPT_BOUNDSCHECKED(compression_type, enum bch_compression_type);
|
||||||
|
PRT_STR_OPT_BOUNDSCHECKED(str_hash_type, enum bch_str_hash_type);
|
||||||
|
|
||||||
static int bch2_opt_fix_errors_parse(struct bch_fs *c, const char *val, u64 *res,
|
static int bch2_opt_fix_errors_parse(struct bch_fs *c, const char *val, u64 *res,
|
||||||
struct printbuf *err)
|
struct printbuf *err)
|
||||||
|
@ -18,7 +18,7 @@ extern const char * const bch2_sb_compat[];
|
|||||||
extern const char * const __bch2_btree_ids[];
|
extern const char * const __bch2_btree_ids[];
|
||||||
extern const char * const bch2_csum_opts[];
|
extern const char * const bch2_csum_opts[];
|
||||||
extern const char * const bch2_compression_opts[];
|
extern const char * const bch2_compression_opts[];
|
||||||
extern const char * const bch2_str_hash_types[];
|
extern const char * const __bch2_str_hash_types[];
|
||||||
extern const char * const bch2_str_hash_opts[];
|
extern const char * const bch2_str_hash_opts[];
|
||||||
extern const char * const __bch2_data_types[];
|
extern const char * const __bch2_data_types[];
|
||||||
extern const char * const bch2_member_states[];
|
extern const char * const bch2_member_states[];
|
||||||
@ -29,6 +29,7 @@ void bch2_prt_fs_usage_type(struct printbuf *, enum bch_fs_usage_type);
|
|||||||
void bch2_prt_data_type(struct printbuf *, enum bch_data_type);
|
void bch2_prt_data_type(struct printbuf *, enum bch_data_type);
|
||||||
void bch2_prt_csum_type(struct printbuf *, enum bch_csum_type);
|
void bch2_prt_csum_type(struct printbuf *, enum bch_csum_type);
|
||||||
void bch2_prt_compression_type(struct printbuf *, enum bch_compression_type);
|
void bch2_prt_compression_type(struct printbuf *, enum bch_compression_type);
|
||||||
|
void bch2_prt_str_hash_type(struct printbuf *, enum bch_str_hash_type);
|
||||||
|
|
||||||
static inline const char *bch2_d_type_str(unsigned d_type)
|
static inline const char *bch2_d_type_str(unsigned d_type)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user