1 #define ZDB_COMPRESS_NAME(idx) ((idx) < ZIO_COMPRESS_FUNCTIONS ? \
2 zio_compress_table[(idx)].ci_name : "UNKNOWN")
3 #define ZDB_CHECKSUM_NAME(idx) ((idx) < ZIO_CHECKSUM_FUNCTIONS ? \
4 zio_checksum_table[(idx)].ci_name : "UNKNOWN")
5 #define ZDB_OT_TYPE(idx) ((idx) < DMU_OT_NUMTYPES ? (idx) : \
6 (idx) == DMU_OTN_ZAP_DATA || (idx) == DMU_OTN_ZAP_METADATA ? \
8 (idx) == DMU_OTN_UINT64_DATA || (idx) == DMU_OTN_UINT64_METADATA ? \
9 DMU_OT_UINT64_OTHER : DMU_OT_NUMTYPES)
11 /* Some platforms require part of inode IDs to be remapped */
13 #define ZDB_MAP_OBJECT_ID(obj) INO_XNUTOZFS(obj, 2)
15 #define ZDB_MAP_OBJECT_ID(obj) (obj)
18 #define ZOR_FLAG_PLAIN_FILE 0x0001
19 #define ZOR_FLAG_DIRECTORY 0x0002
20 #define ZOR_FLAG_SPACE_MAP 0x0004
21 #define ZOR_FLAG_ZAP 0x0008
22 #define ZOR_FLAG_ALL_TYPES -1
23 #define ZOR_SUPPORTED_FLAGS (ZOR_FLAG_PLAIN_FILE | \
24 ZOR_FLAG_DIRECTORY | \
25 ZOR_FLAG_SPACE_MAP | \
28 #define ZDB_FLAG_CHECKSUM 0x0001
29 #define ZDB_FLAG_DECOMPRESS 0x0002
30 #define ZDB_FLAG_BSWAP 0x0004
31 #define ZDB_FLAG_GBH 0x0008
32 #define ZDB_FLAG_INDIRECT 0x0010
33 #define ZDB_FLAG_RAW 0x0020
34 #define ZDB_FLAG_PRINT_BLKPTR 0x0040
35 #define ZDB_FLAG_VERBOSE 0x0080
38 typedef struct zdb_ctx
{
41 typedef struct zopt_object_range
{
42 uint64_t zor_obj_start
;
45 } zopt_object_range_t
;
48 typedef struct sublivelist_verify
{
49 /* FREE's that haven't yet matched to an ALLOC, in one sub-livelist */
52 /* ALLOC's without a matching FREE, accumulates across sub-livelists */
53 zfs_btree_t sv_leftover
;
54 } sublivelist_verify_t
;
56 typedef struct sublivelist_verify_block
{
60 * We need this to check if the block marked as allocated
61 * in the livelist was freed (and potentially reallocated)
62 * in the metaslab spacemaps at a later TXG.
64 uint64_t svb_allocated_txg
;
65 } sublivelist_verify_block_t
;
67 const char *zdb_ot_name(dmu_object_type_t type
);
68 int livelist_compare(const void *larg
, const void *rarg
);