]>
git.ipfire.org Git - thirdparty/xfsprogs-dev.git/blob - db/field.c
1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright (c) 2000-2001,2005 Silicon Graphics, Inc.
21 #include "attrshort.h"
27 const ftattr_t ftattrtab
[] = {
28 { FLDT_AEXTNUM
, "aextnum", fp_num
, "%d", SI(bitsz(xfs_aextnum_t
)),
29 FTARG_SIGNED
, NULL
, NULL
},
30 { FLDT_AGBLOCK
, "agblock", fp_num
, "%u", SI(bitsz(xfs_agblock_t
)),
31 FTARG_DONULL
, fa_agblock
, NULL
},
32 { FLDT_AGBLOCKNZ
, "agblocknz", fp_num
, "%u", SI(bitsz(xfs_agblock_t
)),
33 FTARG_SKIPZERO
|FTARG_DONULL
, fa_agblock
, NULL
},
34 { FLDT_AGF
, "agf", NULL
, (char *)agf_flds
, agf_size
, FTARG_SIZE
, NULL
,
36 { FLDT_AGFL
, "agfl", NULL
, (char *)agfl_flds
, agfl_size
, FTARG_SIZE
,
38 { FLDT_AGFL_CRC
, "agfl", NULL
, (char *)agfl_crc_flds
, agfl_size
,
39 FTARG_SIZE
, NULL
, agfl_crc_flds
},
40 { FLDT_AGI
, "agi", NULL
, (char *)agi_flds
, agi_size
, FTARG_SIZE
, NULL
,
42 { FLDT_AGINO
, "agino", fp_num
, "%u", SI(bitsz(xfs_agino_t
)),
43 FTARG_DONULL
, fa_agino
, NULL
},
44 { FLDT_AGINONN
, "aginonn", fp_num
, "%u", SI(bitsz(xfs_agino_t
)),
45 FTARG_SKIPNULL
, fa_agino
, NULL
},
46 { FLDT_AGNUMBER
, "agnumber", fp_num
, "%u", SI(bitsz(xfs_agnumber_t
)),
47 FTARG_DONULL
, NULL
, NULL
},
50 { FLDT_ATTR
, "attr", NULL
, (char *)attr_flds
, attr_size
, FTARG_SIZE
,
52 { FLDT_ATTR_BLKINFO
, "attr_blkinfo", NULL
, (char *)attr_blkinfo_flds
,
53 SI(bitsz(struct xfs_da_blkinfo
)), 0, NULL
, attr_blkinfo_flds
},
54 { FLDT_ATTR_LEAF_ENTRY
, "attr_leaf_entry", fp_sarray
,
55 (char *)attr_leaf_entry_flds
, SI(bitsz(struct xfs_attr_leaf_entry
)),
56 0, NULL
, attr_leaf_entry_flds
},
57 { FLDT_ATTR_LEAF_HDR
, "attr_leaf_hdr", NULL
, (char *)attr_leaf_hdr_flds
,
58 SI(bitsz(struct xfs_attr_leaf_hdr
)), 0, NULL
, attr_leaf_hdr_flds
},
59 { FLDT_ATTR_LEAF_MAP
, "attr_leaf_map", fp_sarray
,
60 (char *)attr_leaf_map_flds
, SI(bitsz(struct xfs_attr_leaf_map
)), 0,
61 NULL
, attr_leaf_map_flds
},
62 { FLDT_ATTR_LEAF_NAME
, "attr_leaf_name", NULL
,
63 (char *)attr_leaf_name_flds
, attr_leaf_name_size
, FTARG_SIZE
, NULL
,
64 attr_leaf_name_flds
},
65 { FLDT_ATTR_NODE_ENTRY
, "attr_node_entry", fp_sarray
,
66 (char *)attr_node_entry_flds
, SI(bitsz(struct xfs_da_node_entry
)), 0,
67 NULL
, attr_node_entry_flds
},
68 { FLDT_ATTR_NODE_HDR
, "attr_node_hdr", NULL
, (char *)attr_node_hdr_flds
,
69 SI(bitsz(struct xfs_da_node_hdr
)), 0, NULL
, attr_node_hdr_flds
},
70 { FLDT_ATTR_SF_ENTRY
, "attr_sf_entry", NULL
, (char *)attr_sf_entry_flds
,
71 attr_sf_entry_size
, FTARG_SIZE
, NULL
, attr_sf_entry_flds
},
72 { FLDT_ATTR_SF_HDR
, "attr_sf_hdr", NULL
, (char *)attr_sf_hdr_flds
,
73 SI(bitsz(struct xfs_attr_sf_hdr
)), 0, NULL
, attr_sf_hdr_flds
},
74 { FLDT_ATTRBLOCK
, "attrblock", fp_num
, "%u", SI(bitsz(uint32_t)), 0,
76 { FLDT_ATTRSHORT
, "attrshort", NULL
, (char *)attr_shortform_flds
,
77 attrshort_size
, FTARG_SIZE
, NULL
, attr_shortform_flds
},
79 /* attr3 specific fields */
80 { FLDT_ATTR3
, "attr3", NULL
, (char *)attr3_flds
, attr_size
, FTARG_SIZE
,
82 { FLDT_ATTR3_BLKINFO
, "attr3_blkinfo", NULL
, (char *)attr3_blkinfo_flds
,
83 SI(bitsz(struct xfs_da3_blkinfo
)), 0, NULL
, attr3_blkinfo_flds
},
84 { FLDT_ATTR3_LEAF_HDR
, "attr3_leaf_hdr", NULL
,
85 (char *)attr3_leaf_hdr_flds
, SI(bitsz(struct xfs_attr3_leaf_hdr
)),
86 0, NULL
, attr3_leaf_hdr_flds
},
87 { FLDT_ATTR3_NODE_HDR
, "attr3_node_hdr", NULL
,
88 (char *)attr3_node_hdr_flds
, SI(bitsz(struct xfs_da3_node_hdr
)),
89 0, NULL
, attr3_node_hdr_flds
},
90 { FLDT_ATTR3_REMOTE_HDR
, "attr3_remote_hdr", NULL
,
91 (char *)attr3_remote_crc_flds
, attr_size
, FTARG_SIZE
, NULL
,
92 attr3_remote_crc_flds
},
94 { FLDT_BMAPBTA
, "bmapbta", NULL
, (char *)bmapbta_flds
, btblock_size
,
95 FTARG_SIZE
, NULL
, bmapbta_flds
},
96 { FLDT_BMAPBTA_CRC
, "bmapbta", NULL
, (char *)bmapbta_crc_flds
,
97 btblock_size
, FTARG_SIZE
, NULL
, bmapbta_crc_flds
},
98 { FLDT_BMAPBTAKEY
, "bmapbtakey", fp_sarray
, (char *)bmapbta_key_flds
,
99 SI(bitsz(xfs_bmbt_key_t
)), 0, NULL
, bmapbta_key_flds
},
100 { FLDT_BMAPBTAPTR
, "bmapbtaptr", fp_num
, "%llu",
101 SI(bitsz(xfs_bmbt_ptr_t
)), 0, fa_dfsbno
, NULL
},
102 { FLDT_BMAPBTAREC
, "bmapbtarec", fp_sarray
, (char *)bmapbta_rec_flds
,
103 SI(bitsz(xfs_bmbt_rec_t
)), 0, NULL
, bmapbta_rec_flds
},
104 { FLDT_BMAPBTD
, "bmapbtd", NULL
, (char *)bmapbtd_flds
, btblock_size
,
105 FTARG_SIZE
, NULL
, bmapbtd_flds
},
106 { FLDT_BMAPBTD_CRC
, "bmapbtd", NULL
, (char *)bmapbtd_crc_flds
,
107 btblock_size
, FTARG_SIZE
, NULL
, bmapbtd_crc_flds
},
108 { FLDT_BMAPBTDKEY
, "bmapbtdkey", fp_sarray
, (char *)bmapbtd_key_flds
,
109 SI(bitsz(xfs_bmbt_key_t
)), 0, NULL
, bmapbtd_key_flds
},
110 { FLDT_BMAPBTDPTR
, "bmapbtdptr", fp_num
, "%llu",
111 SI(bitsz(xfs_bmbt_ptr_t
)), 0, fa_dfsbno
, NULL
},
112 { FLDT_BMAPBTDREC
, "bmapbtdrec", fp_sarray
, (char *)bmapbtd_rec_flds
,
113 SI(bitsz(xfs_bmbt_rec_t
)), 0, NULL
, bmapbtd_rec_flds
},
114 { FLDT_BMROOTA
, "bmroota", NULL
, (char *)bmroota_flds
, bmroota_size
,
115 FTARG_SIZE
, NULL
, bmroota_flds
},
116 { FLDT_BMROOTAKEY
, "bmrootakey", fp_sarray
, (char *)bmroota_key_flds
,
117 SI(bitsz(xfs_bmdr_key_t
)), 0, NULL
, bmroota_key_flds
},
118 { FLDT_BMROOTAPTR
, "bmrootaptr", fp_num
, "%llu",
119 SI(bitsz(xfs_bmdr_ptr_t
)), 0, fa_dfsbno
, NULL
},
120 { FLDT_BMROOTD
, "bmrootd", NULL
, (char *)bmrootd_flds
, bmrootd_size
,
121 FTARG_SIZE
, NULL
, bmrootd_flds
},
122 { FLDT_BMROOTDKEY
, "bmrootdkey", fp_sarray
, (char *)bmrootd_key_flds
,
123 SI(bitsz(xfs_bmdr_key_t
)), 0, NULL
, bmrootd_key_flds
},
124 { FLDT_BMROOTDPTR
, "bmrootdptr", fp_num
, "%llu",
125 SI(bitsz(xfs_bmdr_ptr_t
)), 0, fa_dfsbno
, NULL
},
126 { FLDT_BNOBT
, "bnobt", NULL
, (char *)bnobt_flds
, btblock_size
, FTARG_SIZE
,
128 { FLDT_BNOBT_CRC
, "bnobt", NULL
, (char *)bnobt_crc_flds
, btblock_size
,
129 FTARG_SIZE
, NULL
, bnobt_crc_flds
},
130 { FLDT_BNOBTKEY
, "bnobtkey", fp_sarray
, (char *)bnobt_key_flds
,
131 SI(bitsz(xfs_alloc_key_t
)), 0, NULL
, bnobt_key_flds
},
132 { FLDT_BNOBTPTR
, "bnobtptr", fp_num
, "%u", SI(bitsz(xfs_alloc_ptr_t
)),
133 0, fa_agblock
, NULL
},
134 { FLDT_BNOBTREC
, "bnobtrec", fp_sarray
, (char *)bnobt_rec_flds
,
135 SI(bitsz(xfs_alloc_rec_t
)), 0, NULL
, bnobt_rec_flds
},
136 { FLDT_CEXTFLG
, "cextflag", fp_num
, "%u", SI(BMBT_EXNTFLAG_BITLEN
), 0,
138 { FLDT_CEXTLEN
, "cextlen", fp_num
, "%u", SI(BMBT_BLOCKCOUNT_BITLEN
), 0,
140 { FLDT_CFILEOFFA
, "cfileoffa", fp_num
, "%llu", SI(BMBT_STARTOFF_BITLEN
),
141 0, fa_cfileoffa
, NULL
},
142 { FLDT_CFILEOFFD
, "cfileoffd", fp_num
, "%llu", SI(BMBT_STARTOFF_BITLEN
),
143 0, fa_cfileoffd
, NULL
},
144 { FLDT_CFSBLOCK
, "cfsblock", fp_num
, "%llu", SI(BMBT_STARTBLOCK_BITLEN
),
145 0, fa_cfsblock
, NULL
},
146 { FLDT_CHARNS
, "charns", fp_charns
, NULL
, SI(bitsz(char)), 0, NULL
,
148 { FLDT_CHARS
, "chars", fp_num
, "%c", SI(bitsz(char)), 0, NULL
, NULL
},
149 { FLDT_REXTLEN
, "rextlen", fp_num
, "%u", SI(RMAPBT_BLOCKCOUNT_BITLEN
),
151 { FLDT_RFILEOFFD
, "rfileoffd", fp_num
, "%llu", SI(RMAPBT_OFFSET_BITLEN
),
153 { FLDT_REXTFLG
, "rextflag", fp_num
, "%u", SI(RMAPBT_EXNTFLAG_BITLEN
), 0,
155 { FLDT_RATTRFORKFLG
, "rattrforkflag", fp_num
, "%u", SI(RMAPBT_ATTRFLAG_BITLEN
), 0,
157 { FLDT_RBMBTFLG
, "rbmbtflag", fp_num
, "%u", SI(RMAPBT_BMBTFLAG_BITLEN
), 0,
159 { FLDT_CAGBLOCK
, "cagblock", fp_num
, "%u", SI(REFCNTBT_AGBLOCK_BITLEN
),
160 FTARG_DONULL
, fa_agblock
, NULL
},
161 { FLDT_CCOWFLG
, "ccowflag", fp_num
, "%u", SI(REFCNTBT_COWFLAG_BITLEN
), 0,
163 { FLDT_CNTBT
, "cntbt", NULL
, (char *)cntbt_flds
, btblock_size
, FTARG_SIZE
,
165 { FLDT_CNTBT_CRC
, "cntbt", NULL
, (char *)cntbt_crc_flds
, btblock_size
,
166 FTARG_SIZE
, NULL
, cntbt_crc_flds
},
167 { FLDT_CNTBTKEY
, "cntbtkey", fp_sarray
, (char *)cntbt_key_flds
,
168 SI(bitsz(xfs_alloc_key_t
)), 0, NULL
, cntbt_key_flds
},
169 { FLDT_CNTBTPTR
, "cntbtptr", fp_num
, "%u", SI(bitsz(xfs_alloc_ptr_t
)),
170 0, fa_agblock
, NULL
},
171 { FLDT_CNTBTREC
, "cntbtrec", fp_sarray
, (char *)cntbt_rec_flds
,
172 SI(bitsz(xfs_alloc_rec_t
)), 0, NULL
, cntbt_rec_flds
},
174 { FLDT_RMAPBT_CRC
, "rmapbt", NULL
, (char *)rmapbt_crc_flds
, btblock_size
,
175 FTARG_SIZE
, NULL
, rmapbt_crc_flds
},
176 { FLDT_RMAPBTKEY
, "rmapbtkey", fp_sarray
, (char *)rmapbt_key_flds
,
177 SI(bitize(2 * sizeof(struct xfs_rmap_key
))), 0, NULL
, rmapbt_key_flds
},
178 { FLDT_RMAPBTPTR
, "rmapbtptr", fp_num
, "%u",
179 SI(bitsz(xfs_rmap_ptr_t
)), 0, fa_agblock
, NULL
},
180 { FLDT_RMAPBTREC
, "rmapbtrec", fp_sarray
, (char *)rmapbt_rec_flds
,
181 SI(bitsz(struct xfs_rmap_rec
)), 0, NULL
, rmapbt_rec_flds
},
183 { FLDT_REFCBT_CRC
, "refcntbt", NULL
, (char *)refcbt_crc_flds
, btblock_size
,
184 FTARG_SIZE
, NULL
, refcbt_crc_flds
},
185 { FLDT_REFCBTKEY
, "refcntbtkey", fp_sarray
, (char *)refcbt_key_flds
,
186 SI(bitsz(struct xfs_refcount_key
)), 0, NULL
, refcbt_key_flds
},
187 { FLDT_REFCBTPTR
, "refcntbtptr", fp_num
, "%u", SI(bitsz(xfs_refcount_ptr_t
)),
188 0, fa_agblock
, NULL
},
189 { FLDT_REFCBTREC
, "refcntbtrec", fp_sarray
, (char *)refcbt_rec_flds
,
190 SI(bitsz(struct xfs_refcount_rec
)), 0, NULL
, refcbt_rec_flds
},
193 { FLDT_CRC
, "crc", fp_crc
, "%#x (%s)", SI(bitsz(uint32_t)),
196 { FLDT_DEV
, "dev", fp_num
, "%#x", SI(bitsz(xfs_dev_t
)), 0, NULL
, NULL
},
197 { FLDT_DFILOFFA
, "dfiloffa", fp_num
, "%llu", SI(bitsz(xfs_fileoff_t
)),
198 0, fa_dfiloffa
, NULL
},
199 { FLDT_DFILOFFD
, "dfiloffd", fp_num
, "%llu", SI(bitsz(xfs_fileoff_t
)),
200 0, fa_dfiloffd
, NULL
},
201 { FLDT_DFSBNO
, "dfsbno", fp_num
, "%llu", SI(bitsz(xfs_fsblock_t
)),
202 FTARG_DONULL
, fa_dfsbno
, NULL
},
203 { FLDT_DINODE_A
, "dinode_a", NULL
, (char *)inode_a_flds
, inode_a_size
,
204 FTARG_SIZE
|FTARG_OKEMPTY
, NULL
, inode_a_flds
},
205 { FLDT_DINODE_CORE
, "dinode_core", NULL
, (char *)inode_core_flds
,
206 SI(bitsz(xfs_dinode_t
)), 0, NULL
, inode_core_flds
},
207 { FLDT_DINODE_FMT
, "dinode_fmt", fp_dinode_fmt
, NULL
,
208 SI(bitsz(int8_t)), 0, NULL
, NULL
},
209 { FLDT_DINODE_U
, "dinode_u", NULL
, (char *)inode_u_flds
, inode_u_size
,
210 FTARG_SIZE
|FTARG_OKEMPTY
, NULL
, inode_u_flds
},
211 { FLDT_DINODE_V3
, "dinode_v3", NULL
, (char *)inode_v3_flds
,
212 SI(bitsz(xfs_dinode_t
)), 0, NULL
, inode_v3_flds
},
215 { FLDT_DIR2
, "dir2", NULL
, (char *)dir2_flds
, dir2_size
, FTARG_SIZE
,
217 { FLDT_DIR2_BLOCK_TAIL
, "dir2_block_tail", NULL
,
218 (char *)dir2_block_tail_flds
, SI(bitsz(xfs_dir2_block_tail_t
)), 0,
219 NULL
, dir2_block_tail_flds
},
220 { FLDT_DIR2_DATA_FREE
, "dir2_data_free", NULL
,
221 (char *)dir2_data_free_flds
, SI(bitsz(xfs_dir2_data_free_t
)), 0, NULL
,
222 dir2_data_free_flds
},
223 { FLDT_DIR2_DATA_HDR
, "dir2_data_hdr", NULL
, (char *)dir2_data_hdr_flds
,
224 SI(bitsz(xfs_dir2_data_hdr_t
)), 0, NULL
, dir2_data_hdr_flds
},
225 { FLDT_DIR2_DATA_OFF
, "dir2_data_off", fp_num
, "%#x",
226 SI(bitsz(xfs_dir2_data_off_t
)), 0, NULL
, NULL
},
227 { FLDT_DIR2_DATA_OFFNZ
, "dir2_data_offnz", fp_num
, "%#x",
228 SI(bitsz(xfs_dir2_data_off_t
)), FTARG_SKIPZERO
, NULL
, NULL
},
229 { FLDT_DIR2_DATA_UNION
, "dir2_data_union", NULL
,
230 (char *)dir2_data_union_flds
, dir2_data_union_size
, FTARG_SIZE
, NULL
,
231 dir2_data_union_flds
},
232 { FLDT_DIR2_FREE_HDR
, "dir2_free_hdr", NULL
, (char *)dir2_free_hdr_flds
,
233 SI(bitsz(xfs_dir2_free_hdr_t
)), 0, NULL
, dir2_free_hdr_flds
},
234 { FLDT_DIR2_INO4
, "dir2_ino4", fp_num
, "%u",
235 SI(bitize(XFS_INO32_SIZE
)), 0, fa_ino4
, NULL
},
236 { FLDT_DIR2_INO8
, "dir2_ino8", fp_num
, "%llu",
237 SI(bitize(XFS_INO64_SIZE
)), 0, fa_ino8
, NULL
},
238 { FLDT_DIR2_INOU
, "dir2_inou", NULL
, (char *)dir2_inou_flds
,
239 dir2_inou_size
, FTARG_SIZE
, NULL
, dir2_inou_flds
},
240 { FLDT_DIR2_LEAF_ENTRY
, "dir2_leaf_entry", NULL
,
241 (char *)dir2_leaf_entry_flds
, SI(bitsz(xfs_dir2_leaf_entry_t
)), 0,
242 NULL
, dir2_leaf_entry_flds
},
243 { FLDT_DIR2_LEAF_HDR
, "dir2_leaf_hdr", NULL
, (char *)dir2_leaf_hdr_flds
,
244 SI(bitsz(xfs_dir2_leaf_hdr_t
)), 0, NULL
, dir2_leaf_hdr_flds
},
245 { FLDT_DIR2_LEAF_TAIL
, "dir2_leaf_tail", NULL
,
246 (char *)dir2_leaf_tail_flds
, SI(bitsz(xfs_dir2_leaf_tail_t
)), 0, NULL
,
247 dir2_leaf_tail_flds
},
248 { FLDT_DIR2_SF_ENTRY
, "dir2_sf_entry", NULL
, (char *)dir2_sf_entry_flds
,
249 dir2_sf_entry_size
, FTARG_SIZE
, NULL
, dir2_sf_entry_flds
},
250 { FLDT_DIR2_SF_HDR
, "dir2_sf_hdr", NULL
, (char *)dir2_sf_hdr_flds
,
251 dir2_sf_hdr_size
, FTARG_SIZE
, NULL
, dir2_sf_hdr_flds
},
252 { FLDT_DIR2_SF_OFF
, "dir2_sf_off", fp_num
, "%#x",
253 SI(bitize(2*sizeof(__u8
))), 0, NULL
, NULL
},
254 { FLDT_DIR2SF
, "dir2sf", NULL
, (char *)dir2sf_flds
, dir2sf_size
,
255 FTARG_SIZE
, NULL
, dir2sf_flds
},
258 { FLDT_DIR3
, "dir3", NULL
, (char *)dir3_flds
, dir2_size
, FTARG_SIZE
,
260 { FLDT_DIR3_BLKHDR
, "dir3_blk_hdr", NULL
, (char *)dir3_blkhdr_flds
,
261 SI(bitsz(struct xfs_dir3_blk_hdr
)), 0, NULL
, dir3_blkhdr_flds
},
262 { FLDT_DIR3_DATA_HDR
, "dir3_data_hdr", NULL
, (char *)dir3_data_hdr_flds
,
263 SI(bitsz(struct xfs_dir3_data_hdr
)), 0, NULL
, dir3_data_hdr_flds
},
264 { FLDT_DIR3_FREE_HDR
, "dir3_free_hdr", NULL
, (char *)dir3_free_hdr_flds
,
265 SI(bitsz(struct xfs_dir3_free_hdr
)), 0, NULL
, dir3_free_hdr_flds
},
266 { FLDT_DIR3_LEAF_HDR
, "dir3_leaf_hdr", NULL
, (char *)dir3_leaf_hdr_flds
,
267 SI(bitsz(struct xfs_dir3_leaf_hdr
)), 0, NULL
, dir3_leaf_hdr_flds
},
268 { FLDT_DIR3_DATA_UNION
, "dir3_data_union", NULL
,
269 (char *)dir3_data_union_flds
, dir2_data_union_size
, FTARG_SIZE
, NULL
,
270 dir3_data_union_flds
},
271 { FLDT_DIR3_SF_ENTRY
, "dir3_sf_entry", NULL
, (char *)dir3_sf_entry_flds
,
272 dir2_sf_entry_size
, FTARG_SIZE
, NULL
, dir3_sf_entry_flds
},
273 { FLDT_DIR3SF
, "dir3sf", NULL
, (char *)dir3sf_flds
, dir2sf_size
,
274 FTARG_SIZE
, NULL
, dir3sf_flds
},
276 /* dir v2/3 node fields */
277 { FLDT_DA_BLKINFO
, "dir_blkinfo", NULL
, (char *)da_blkinfo_flds
,
278 SI(bitsz(struct xfs_da_blkinfo
)), 0, NULL
, da_blkinfo_flds
},
279 { FLDT_DA_NODE_ENTRY
, "dir_node_entry", fp_sarray
,
280 (char *)da_node_entry_flds
, SI(bitsz(struct xfs_da_node_entry
)), 0,
281 NULL
, da_node_entry_flds
},
282 { FLDT_DA_NODE_HDR
, "dir_node_hdr", NULL
, (char *)da_node_hdr_flds
,
283 SI(bitsz(struct xfs_da_node_hdr
)), 0, NULL
, da_node_hdr_flds
},
284 { FLDT_DA3_BLKINFO
, "dir_blkinfo", NULL
, (char *)da3_blkinfo_flds
,
285 SI(bitsz(struct xfs_da3_blkinfo
)), 0, NULL
, da3_blkinfo_flds
},
286 { FLDT_DA3_NODE_HDR
, "dir_node_hdr", NULL
, (char *)da3_node_hdr_flds
,
287 SI(bitsz(struct xfs_da3_node_hdr
)), 0, NULL
, da3_node_hdr_flds
},
289 { FLDT_DIRBLOCK
, "dirblock", fp_num
, "%u", SI(bitsz(uint32_t)), 0,
291 { FLDT_DISK_DQUOT
, "disk_dquot", NULL
, (char *)disk_dquot_flds
,
292 SI(bitsz(xfs_disk_dquot_t
)), 0, NULL
, disk_dquot_flds
},
293 { FLDT_DQBLK
, "dqblk", NULL
, (char *)dqblk_flds
, SI(bitsz(xfs_dqblk_t
)),
294 0, NULL
, dqblk_flds
},
295 { FLDT_DQID
, "dqid", fp_num
, "%d", SI(bitsz(xfs_dqid_t
)), 0, NULL
,
297 { FLDT_DRFSBNO
, "drfsbno", fp_num
, "%llu", SI(bitsz(xfs_rfsblock_t
)),
298 FTARG_DONULL
, fa_drfsbno
, NULL
},
299 { FLDT_DRTBNO
, "drtbno", fp_num
, "%llu", SI(bitsz(xfs_rtblock_t
)),
300 FTARG_DONULL
, fa_drtbno
, NULL
},
301 { FLDT_EXTLEN
, "extlen", fp_num
, "%u", SI(bitsz(xfs_extlen_t
)), 0, NULL
,
303 { FLDT_EXTNUM
, "extnum", fp_num
, "%d", SI(bitsz(xfs_extnum_t
)),
304 FTARG_SIGNED
, NULL
, NULL
},
305 { FLDT_FSIZE
, "fsize", fp_num
, "%lld", SI(bitsz(xfs_fsize_t
)),
306 FTARG_SIGNED
, NULL
, NULL
},
307 { FLDT_INO
, "ino", fp_num
, "%llu", SI(bitsz(xfs_ino_t
)), FTARG_DONULL
,
309 { FLDT_INOBT
, "inobt", NULL
, (char *)inobt_flds
, btblock_size
,
310 FTARG_SIZE
, NULL
, inobt_flds
},
311 { FLDT_INOBT_CRC
, "inobt", NULL
, (char *)inobt_crc_flds
, btblock_size
,
312 FTARG_SIZE
, NULL
, inobt_crc_flds
},
313 { FLDT_INOBT_SPCRC
, "inobt", NULL
, (char *)inobt_spcrc_flds
,
314 btblock_size
, FTARG_SIZE
, NULL
, inobt_spcrc_flds
},
315 { FLDT_INOBTKEY
, "inobtkey", fp_sarray
, (char *)inobt_key_flds
,
316 SI(bitsz(xfs_inobt_key_t
)), 0, NULL
, inobt_key_flds
},
317 { FLDT_INOBTPTR
, "inobtptr", fp_num
, "%u", SI(bitsz(xfs_inobt_ptr_t
)),
318 0, fa_agblock
, NULL
},
319 { FLDT_INOBTREC
, "inobtrec", fp_sarray
, (char *)inobt_rec_flds
,
320 SI(bitsz(xfs_inobt_rec_t
)), 0, NULL
, inobt_rec_flds
},
321 { FLDT_INOBTSPREC
, "inobtsprec", fp_sarray
, (char *) inobt_sprec_flds
,
322 SI(bitsz(xfs_inobt_rec_t
)), 0, NULL
, inobt_sprec_flds
},
323 { FLDT_INODE
, "inode", NULL
, (char *)inode_flds
, inode_size
, FTARG_SIZE
,
325 { FLDT_INODE_CRC
, "inode", NULL
, (char *)inode_crc_flds
, inode_size
,
326 FTARG_SIZE
, NULL
, inode_crc_flds
},
327 { FLDT_INOFREE
, "inofree", fp_num
, "%#llx", SI(bitsz(xfs_inofree_t
)), 0,
329 { FLDT_INT16D
, "int16d", fp_num
, "%d", SI(bitsz(int16_t)),
330 FTARG_SIGNED
, NULL
, NULL
},
331 { FLDT_INT32D
, "int32d", fp_num
, "%d", SI(bitsz(int32_t)),
332 FTARG_SIGNED
, NULL
, NULL
},
333 { FLDT_INT64D
, "int64d", fp_num
, "%lld", SI(bitsz(int64_t)),
334 FTARG_SIGNED
, NULL
, NULL
},
335 { FLDT_INT8D
, "int8d", fp_num
, "%d", SI(bitsz(int8_t)), FTARG_SIGNED
,
337 { FLDT_NSEC
, "nsec", fp_num
, "%09d", SI(bitsz(int32_t)), FTARG_SIGNED
,
339 { FLDT_QCNT
, "qcnt", fp_num
, "%llu", SI(bitsz(xfs_qcnt_t
)), 0, NULL
,
341 { FLDT_QWARNCNT
, "qwarncnt", fp_num
, "%u", SI(bitsz(xfs_qwarncnt_t
)), 0,
343 { FLDT_SB
, "sb", NULL
, (char *)sb_flds
, sb_size
, FTARG_SIZE
, NULL
,
346 /* CRC enabled symlink */
347 { FLDT_SYMLINK_CRC
, "symlink", NULL
, (char *)symlink_crc_flds
,
348 symlink_size
, FTARG_SIZE
, NULL
, symlink_crc_flds
},
350 { FLDT_TIME
, "time", fp_time
, NULL
, SI(bitsz(int32_t)), FTARG_SIGNED
,
352 { FLDT_TIMESTAMP
, "timestamp", NULL
, (char *)timestamp_flds
,
353 SI(bitsz(xfs_timestamp_t
)), 0, NULL
, timestamp_flds
},
354 { FLDT_UINT1
, "uint1", fp_num
, "%u", SI(1), 0, NULL
, NULL
},
355 { FLDT_UINT16D
, "uint16d", fp_num
, "%u", SI(bitsz(uint16_t)), 0, NULL
,
357 { FLDT_UINT16O
, "uint16o", fp_num
, "%#o", SI(bitsz(uint16_t)), 0,
359 { FLDT_UINT16X
, "uint16x", fp_num
, "%#x", SI(bitsz(uint16_t)), 0,
361 { FLDT_UINT32D
, "uint32d", fp_num
, "%u", SI(bitsz(uint32_t)), 0, NULL
,
363 { FLDT_UINT32O
, "uint32o", fp_num
, "%#o", SI(bitsz(uint32_t)), 0,
365 { FLDT_UINT32X
, "uint32x", fp_num
, "%#x", SI(bitsz(uint32_t)), 0,
367 { FLDT_UINT64D
, "uint64d", fp_num
, "%llu", SI(bitsz(uint64_t)), 0,
369 { FLDT_UINT64O
, "uint64o", fp_num
, "%#llo", SI(bitsz(uint64_t)), 0,
371 { FLDT_UINT64X
, "uint64x", fp_num
, "%#llx", SI(bitsz(uint64_t)), 0,
373 { FLDT_UINT8D
, "uint8d", fp_num
, "%u", SI(bitsz(uint8_t)), 0, NULL
,
375 { FLDT_UINT8O
, "uint8o", fp_num
, "%#o", SI(bitsz(uint8_t)), 0, NULL
,
377 { FLDT_UINT8X
, "uint8x", fp_num
, "%#x", SI(bitsz(uint8_t)), 0, NULL
,
379 { FLDT_UUID
, "uuid", fp_uuid
, NULL
, SI(bitsz(uuid_t
)), 0, NULL
, NULL
},
391 if (!(f
->flags
& FLD_OFFSET
)) {
392 if (f
->flags
& FLD_ARRAY
) {
395 const ftattr_t
*fa
= &ftattrtab
[f
->ftyp
];
398 abase
= (f
->flags
& FLD_ABASE1
) != 0;
399 ASSERT(fa
->ftyp
== f
->ftyp
);
400 ASSERT((fa
->arg
& FTARG_SIZE
) == 0);
401 return (int)(intptr_t)f
->offset
+
402 (idx
- abase
) * fsize(f
, obj
, startoff
, idx
);
404 return (int)(intptr_t)f
->offset
;
406 return (*f
->offset
)(obj
, startoff
, idx
);
415 if (!(f
->flags
& FLD_COUNT
))
416 return (int)(intptr_t)f
->count
;
418 return (*f
->count
)(obj
, startoff
);
424 const field_t
*fields
,
430 /* we only match if this field name matches and has a non-zero count */
431 for (f
= fields
; f
->name
; f
++)
432 if (strcmp(f
->name
, name
) == 0 && fcount(f
, obj
, startoff
))
446 fa
= &ftattrtab
[f
->ftyp
];
447 ASSERT(fa
->ftyp
== f
->ftyp
);
448 if (!(fa
->arg
& FTARG_SIZE
))
449 return (int)(intptr_t)fa
->size
;
451 return (*fa
->size
)(obj
, startoff
, idx
);