Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/contrib/openzfs/include/libzdb.h
48255 views
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 ? \
7
DMU_OT_ZAP_OTHER : \
8
(idx) == DMU_OTN_UINT64_DATA || (idx) == DMU_OTN_UINT64_METADATA ? \
9
DMU_OT_UINT64_OTHER : DMU_OT_NUMTYPES)
10
11
/* Some platforms require part of inode IDs to be remapped */
12
#ifdef __APPLE__
13
#define ZDB_MAP_OBJECT_ID(obj) INO_XNUTOZFS(obj, 2)
14
#else
15
#define ZDB_MAP_OBJECT_ID(obj) (obj)
16
#endif
17
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 | \
26
ZOR_FLAG_ZAP)
27
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
36
37
38
typedef struct zdb_ctx {
39
} zdb_ctx_t;
40
41
typedef struct zopt_object_range {
42
uint64_t zor_obj_start;
43
uint64_t zor_obj_end;
44
uint64_t zor_flags;
45
} zopt_object_range_t;
46
47
48
typedef struct sublivelist_verify {
49
/* FREE's that haven't yet matched to an ALLOC, in one sub-livelist */
50
zfs_btree_t sv_pair;
51
52
/* ALLOC's without a matching FREE, accumulates across sub-livelists */
53
zfs_btree_t sv_leftover;
54
} sublivelist_verify_t;
55
56
typedef struct sublivelist_verify_block {
57
dva_t svb_dva;
58
59
/*
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.
63
*/
64
uint64_t svb_allocated_txg;
65
} sublivelist_verify_block_t;
66
67
const char *zdb_ot_name(dmu_object_type_t type);
68
int livelist_compare(const void *larg, const void *rarg);
69
70