]>
git.ipfire.org Git - thirdparty/xfsprogs-dev.git/blob - db/field.c
2 * Copyright (c) 2000-2001,2005 Silicon Graphics, Inc.
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License as
7 * published by the Free Software Foundation.
9 * This program is distributed in the hope that it would be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write the Free Software Foundation,
16 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
33 #include "attrshort.h"
39 const ftattr_t ftattrtab
[] = {
40 { FLDT_AEXTNUM
, "aextnum", fp_num
, "%d", SI(bitsz(xfs_aextnum_t
)),
41 FTARG_SIGNED
, NULL
, NULL
},
42 { FLDT_AGBLOCK
, "agblock", fp_num
, "%u", SI(bitsz(xfs_agblock_t
)),
43 FTARG_DONULL
, fa_agblock
, NULL
},
44 { FLDT_AGBLOCKNZ
, "agblocknz", fp_num
, "%u", SI(bitsz(xfs_agblock_t
)),
45 FTARG_SKIPZERO
|FTARG_DONULL
, fa_agblock
, NULL
},
46 { FLDT_AGF
, "agf", NULL
, (char *)agf_flds
, agf_size
, FTARG_SIZE
, NULL
,
48 { FLDT_AGFL
, "agfl", NULL
, (char *)agfl_flds
, agfl_size
, FTARG_SIZE
,
50 { FLDT_AGFL_CRC
, "agfl", NULL
, (char *)agfl_crc_flds
, agfl_size
,
51 FTARG_SIZE
, NULL
, agfl_crc_flds
},
52 { FLDT_AGI
, "agi", NULL
, (char *)agi_flds
, agi_size
, FTARG_SIZE
, NULL
,
54 { FLDT_AGINO
, "agino", fp_num
, "%u", SI(bitsz(xfs_agino_t
)),
55 FTARG_DONULL
, fa_agino
, NULL
},
56 { FLDT_AGINONN
, "aginonn", fp_num
, "%u", SI(bitsz(xfs_agino_t
)),
57 FTARG_SKIPNULL
, fa_agino
, NULL
},
58 { FLDT_AGNUMBER
, "agnumber", fp_num
, "%u", SI(bitsz(xfs_agnumber_t
)),
59 FTARG_DONULL
, NULL
, NULL
},
62 { FLDT_ATTR
, "attr", NULL
, (char *)attr_flds
, attr_size
, FTARG_SIZE
,
64 { FLDT_ATTR_BLKINFO
, "attr_blkinfo", NULL
, (char *)attr_blkinfo_flds
,
65 SI(bitsz(struct xfs_da_blkinfo
)), 0, NULL
, attr_blkinfo_flds
},
66 { FLDT_ATTR_LEAF_ENTRY
, "attr_leaf_entry", fp_sarray
,
67 (char *)attr_leaf_entry_flds
, SI(bitsz(struct xfs_attr_leaf_entry
)),
68 0, NULL
, attr_leaf_entry_flds
},
69 { FLDT_ATTR_LEAF_HDR
, "attr_leaf_hdr", NULL
, (char *)attr_leaf_hdr_flds
,
70 SI(bitsz(struct xfs_attr_leaf_hdr
)), 0, NULL
, attr_leaf_hdr_flds
},
71 { FLDT_ATTR_LEAF_MAP
, "attr_leaf_map", fp_sarray
,
72 (char *)attr_leaf_map_flds
, SI(bitsz(struct xfs_attr_leaf_map
)), 0,
73 NULL
, attr_leaf_map_flds
},
74 { FLDT_ATTR_LEAF_NAME
, "attr_leaf_name", NULL
,
75 (char *)attr_leaf_name_flds
, attr_leaf_name_size
, FTARG_SIZE
, NULL
,
76 attr_leaf_name_flds
},
77 { FLDT_ATTR_NODE_ENTRY
, "attr_node_entry", fp_sarray
,
78 (char *)attr_node_entry_flds
, SI(bitsz(struct xfs_da_node_entry
)), 0,
79 NULL
, attr_node_entry_flds
},
80 { FLDT_ATTR_NODE_HDR
, "attr_node_hdr", NULL
, (char *)attr_node_hdr_flds
,
81 SI(bitsz(struct xfs_da_node_hdr
)), 0, NULL
, attr_node_hdr_flds
},
82 { FLDT_ATTR_SF_ENTRY
, "attr_sf_entry", NULL
, (char *)attr_sf_entry_flds
,
83 attr_sf_entry_size
, FTARG_SIZE
, NULL
, attr_sf_entry_flds
},
84 { FLDT_ATTR_SF_HDR
, "attr_sf_hdr", NULL
, (char *)attr_sf_hdr_flds
,
85 SI(bitsz(struct xfs_attr_sf_hdr
)), 0, NULL
, attr_sf_hdr_flds
},
86 { FLDT_ATTRBLOCK
, "attrblock", fp_num
, "%u", SI(bitsz(__uint32_t
)), 0,
88 { FLDT_ATTRSHORT
, "attrshort", NULL
, (char *)attr_shortform_flds
,
89 attrshort_size
, FTARG_SIZE
, NULL
, attr_shortform_flds
},
91 /* attr3 specific fields */
92 { FLDT_ATTR3
, "attr3", NULL
, (char *)attr3_flds
, attr_size
, FTARG_SIZE
,
94 { FLDT_ATTR3_LEAF_HDR
, "attr3_leaf_hdr", NULL
,
95 (char *)attr3_leaf_hdr_flds
, SI(bitsz(struct xfs_attr3_leaf_hdr
)),
96 0, NULL
, attr3_leaf_hdr_flds
},
97 { FLDT_ATTR3_NODE_HDR
, "attr3_node_hdr", NULL
,
98 (char *)da3_node_hdr_flds
, SI(bitsz(struct xfs_da3_node_hdr
)),
99 0, NULL
, da3_node_hdr_flds
},
101 { FLDT_BMAPBTA
, "bmapbta", NULL
, (char *)bmapbta_flds
, btblock_size
,
102 FTARG_SIZE
, NULL
, bmapbta_flds
},
103 { FLDT_BMAPBTA_CRC
, "bmapbta", NULL
, (char *)bmapbta_crc_flds
,
104 btblock_size
, FTARG_SIZE
, NULL
, bmapbta_crc_flds
},
105 { FLDT_BMAPBTAKEY
, "bmapbtakey", fp_sarray
, (char *)bmapbta_key_flds
,
106 SI(bitsz(xfs_bmbt_key_t
)), 0, NULL
, bmapbta_key_flds
},
107 { FLDT_BMAPBTAPTR
, "bmapbtaptr", fp_num
, "%llu",
108 SI(bitsz(xfs_bmbt_ptr_t
)), 0, fa_dfsbno
, NULL
},
109 { FLDT_BMAPBTAREC
, "bmapbtarec", fp_sarray
, (char *)bmapbta_rec_flds
,
110 SI(bitsz(xfs_bmbt_rec_t
)), 0, NULL
, bmapbta_rec_flds
},
111 { FLDT_BMAPBTD
, "bmapbtd", NULL
, (char *)bmapbtd_flds
, btblock_size
,
112 FTARG_SIZE
, NULL
, bmapbtd_flds
},
113 { FLDT_BMAPBTD_CRC
, "bmapbtd", NULL
, (char *)bmapbtd_crc_flds
,
114 btblock_size
, FTARG_SIZE
, NULL
, bmapbtd_crc_flds
},
115 { FLDT_BMAPBTDKEY
, "bmapbtdkey", fp_sarray
, (char *)bmapbtd_key_flds
,
116 SI(bitsz(xfs_bmbt_key_t
)), 0, NULL
, bmapbtd_key_flds
},
117 { FLDT_BMAPBTDPTR
, "bmapbtdptr", fp_num
, "%llu",
118 SI(bitsz(xfs_bmbt_ptr_t
)), 0, fa_dfsbno
, NULL
},
119 { FLDT_BMAPBTDREC
, "bmapbtdrec", fp_sarray
, (char *)bmapbtd_rec_flds
,
120 SI(bitsz(xfs_bmbt_rec_t
)), 0, NULL
, bmapbtd_rec_flds
},
121 { FLDT_BMROOTA
, "bmroota", NULL
, (char *)bmroota_flds
, bmroota_size
,
122 FTARG_SIZE
, NULL
, bmroota_flds
},
123 { FLDT_BMROOTAKEY
, "bmrootakey", fp_sarray
, (char *)bmroota_key_flds
,
124 SI(bitsz(xfs_bmdr_key_t
)), 0, NULL
, bmroota_key_flds
},
125 { FLDT_BMROOTAPTR
, "bmrootaptr", fp_num
, "%llu",
126 SI(bitsz(xfs_bmdr_ptr_t
)), 0, fa_dfsbno
, NULL
},
127 { FLDT_BMROOTD
, "bmrootd", NULL
, (char *)bmrootd_flds
, bmrootd_size
,
128 FTARG_SIZE
, NULL
, bmrootd_flds
},
129 { FLDT_BMROOTDKEY
, "bmrootdkey", fp_sarray
, (char *)bmrootd_key_flds
,
130 SI(bitsz(xfs_bmdr_key_t
)), 0, NULL
, bmrootd_key_flds
},
131 { FLDT_BMROOTDPTR
, "bmrootdptr", fp_num
, "%llu",
132 SI(bitsz(xfs_bmdr_ptr_t
)), 0, fa_dfsbno
, NULL
},
133 { FLDT_BNOBT
, "bnobt", NULL
, (char *)bnobt_flds
, btblock_size
, FTARG_SIZE
,
135 { FLDT_BNOBT_CRC
, "bnobt", NULL
, (char *)bnobt_crc_flds
, btblock_size
,
136 FTARG_SIZE
, NULL
, bnobt_crc_flds
},
137 { FLDT_BNOBTKEY
, "bnobtkey", fp_sarray
, (char *)bnobt_key_flds
,
138 SI(bitsz(xfs_alloc_key_t
)), 0, NULL
, bnobt_key_flds
},
139 { FLDT_BNOBTPTR
, "bnobtptr", fp_num
, "%u", SI(bitsz(xfs_alloc_ptr_t
)),
140 0, fa_agblock
, NULL
},
141 { FLDT_BNOBTREC
, "bnobtrec", fp_sarray
, (char *)bnobt_rec_flds
,
142 SI(bitsz(xfs_alloc_rec_t
)), 0, NULL
, bnobt_rec_flds
},
143 { FLDT_CEXTFLG
, "cextflag", fp_num
, "%u", SI(BMBT_EXNTFLAG_BITLEN
), 0,
145 { FLDT_CEXTLEN
, "cextlen", fp_num
, "%u", SI(BMBT_BLOCKCOUNT_BITLEN
), 0,
147 { FLDT_CFILEOFFA
, "cfileoffa", fp_num
, "%llu", SI(BMBT_STARTOFF_BITLEN
),
148 0, fa_cfileoffa
, NULL
},
149 { FLDT_CFILEOFFD
, "cfileoffd", fp_num
, "%llu", SI(BMBT_STARTOFF_BITLEN
),
150 0, fa_cfileoffd
, NULL
},
151 { FLDT_CFSBLOCK
, "cfsblock", fp_num
, "%llu", SI(BMBT_STARTBLOCK_BITLEN
),
152 0, fa_cfsblock
, NULL
},
153 { FLDT_CHARNS
, "charns", fp_charns
, NULL
, SI(bitsz(char)), 0, NULL
,
155 { FLDT_CHARS
, "chars", fp_num
, "%c", SI(bitsz(char)), 0, NULL
, NULL
},
156 { FLDT_CNTBT
, "cntbt", NULL
, (char *)cntbt_flds
, btblock_size
, FTARG_SIZE
,
158 { FLDT_CNTBT_CRC
, "cntbt", NULL
, (char *)cntbt_crc_flds
, btblock_size
,
159 FTARG_SIZE
, NULL
, cntbt_crc_flds
},
160 { FLDT_CNTBTKEY
, "cntbtkey", fp_sarray
, (char *)cntbt_key_flds
,
161 SI(bitsz(xfs_alloc_key_t
)), 0, NULL
, cntbt_key_flds
},
162 { FLDT_CNTBTPTR
, "cntbtptr", fp_num
, "%u", SI(bitsz(xfs_alloc_ptr_t
)),
163 0, fa_agblock
, NULL
},
164 { FLDT_CNTBTREC
, "cntbtrec", fp_sarray
, (char *)cntbt_rec_flds
,
165 SI(bitsz(xfs_alloc_rec_t
)), 0, NULL
, cntbt_rec_flds
},
168 { FLDT_CRC
, "crc", fp_crc
, "%#x (%s)", SI(bitsz(__uint32_t
)),
171 { FLDT_DEV
, "dev", fp_num
, "%#x", SI(bitsz(xfs_dev_t
)), 0, NULL
, NULL
},
172 { FLDT_DFILOFFA
, "dfiloffa", fp_num
, "%llu", SI(bitsz(xfs_fileoff_t
)),
173 0, fa_dfiloffa
, NULL
},
174 { FLDT_DFILOFFD
, "dfiloffd", fp_num
, "%llu", SI(bitsz(xfs_fileoff_t
)),
175 0, fa_dfiloffd
, NULL
},
176 { FLDT_DFSBNO
, "dfsbno", fp_num
, "%llu", SI(bitsz(xfs_fsblock_t
)),
177 FTARG_DONULL
, fa_dfsbno
, NULL
},
178 { FLDT_DINODE_A
, "dinode_a", NULL
, (char *)inode_a_flds
, inode_a_size
,
179 FTARG_SIZE
|FTARG_OKEMPTY
, NULL
, inode_a_flds
},
180 { FLDT_DINODE_CORE
, "dinode_core", NULL
, (char *)inode_core_flds
,
181 SI(bitsz(xfs_dinode_t
)), 0, NULL
, inode_core_flds
},
182 { FLDT_DINODE_FMT
, "dinode_fmt", fp_dinode_fmt
, NULL
,
183 SI(bitsz(__int8_t
)), 0, NULL
, NULL
},
184 { FLDT_DINODE_U
, "dinode_u", NULL
, (char *)inode_u_flds
, inode_u_size
,
185 FTARG_SIZE
|FTARG_OKEMPTY
, NULL
, inode_u_flds
},
186 { FLDT_DINODE_V3
, "dinode_v3", NULL
, (char *)inode_v3_flds
,
187 SI(bitsz(xfs_dinode_t
)), 0, NULL
, inode_v3_flds
},
190 { FLDT_DIR2
, "dir2", NULL
, (char *)dir2_flds
, dir2_size
, FTARG_SIZE
,
192 { FLDT_DIR2_BLOCK_TAIL
, "dir2_block_tail", NULL
,
193 (char *)dir2_block_tail_flds
, SI(bitsz(xfs_dir2_block_tail_t
)), 0,
194 NULL
, dir2_block_tail_flds
},
195 { FLDT_DIR2_DATA_FREE
, "dir2_data_free", NULL
,
196 (char *)dir2_data_free_flds
, SI(bitsz(xfs_dir2_data_free_t
)), 0, NULL
,
197 dir2_data_free_flds
},
198 { FLDT_DIR2_DATA_HDR
, "dir2_data_hdr", NULL
, (char *)dir2_data_hdr_flds
,
199 SI(bitsz(xfs_dir2_data_hdr_t
)), 0, NULL
, dir2_data_hdr_flds
},
200 { FLDT_DIR2_DATA_OFF
, "dir2_data_off", fp_num
, "%#x",
201 SI(bitsz(xfs_dir2_data_off_t
)), 0, NULL
, NULL
},
202 { FLDT_DIR2_DATA_OFFNZ
, "dir2_data_offnz", fp_num
, "%#x",
203 SI(bitsz(xfs_dir2_data_off_t
)), FTARG_SKIPZERO
, NULL
, NULL
},
204 { FLDT_DIR2_DATA_UNION
, "dir2_data_union", NULL
,
205 (char *)dir2_data_union_flds
, dir2_data_union_size
, FTARG_SIZE
, NULL
,
206 dir2_data_union_flds
},
207 { FLDT_DIR2_FREE_HDR
, "dir2_free_hdr", NULL
, (char *)dir2_free_hdr_flds
,
208 SI(bitsz(xfs_dir2_free_hdr_t
)), 0, NULL
, dir2_free_hdr_flds
},
209 { FLDT_DIR2_INO4
, "dir2_ino4", fp_num
, "%u", SI(bitsz(xfs_dir2_ino4_t
)),
211 { FLDT_DIR2_INO8
, "dir2_ino8", fp_num
, "%llu",
212 SI(bitsz(xfs_dir2_ino8_t
)), 0, fa_ino8
, NULL
},
213 { FLDT_DIR2_INOU
, "dir2_inou", NULL
, (char *)dir2_inou_flds
,
214 dir2_inou_size
, FTARG_SIZE
, NULL
, dir2_inou_flds
},
215 { FLDT_DIR2_LEAF_ENTRY
, "dir2_leaf_entry", NULL
,
216 (char *)dir2_leaf_entry_flds
, SI(bitsz(xfs_dir2_leaf_entry_t
)), 0,
217 NULL
, dir2_leaf_entry_flds
},
218 { FLDT_DIR2_LEAF_HDR
, "dir2_leaf_hdr", NULL
, (char *)dir2_leaf_hdr_flds
,
219 SI(bitsz(xfs_dir2_leaf_hdr_t
)), 0, NULL
, dir2_leaf_hdr_flds
},
220 { FLDT_DIR2_LEAF_TAIL
, "dir2_leaf_tail", NULL
,
221 (char *)dir2_leaf_tail_flds
, SI(bitsz(xfs_dir2_leaf_tail_t
)), 0, NULL
,
222 dir2_leaf_tail_flds
},
223 { FLDT_DIR2_SF_ENTRY
, "dir2_sf_entry", NULL
, (char *)dir2_sf_entry_flds
,
224 dir2_sf_entry_size
, FTARG_SIZE
, NULL
, dir2_sf_entry_flds
},
225 { FLDT_DIR2_SF_HDR
, "dir2_sf_hdr", NULL
, (char *)dir2_sf_hdr_flds
,
226 dir2_sf_hdr_size
, FTARG_SIZE
, NULL
, dir2_sf_hdr_flds
},
227 { FLDT_DIR2_SF_OFF
, "dir2_sf_off", fp_num
, "%#x",
228 SI(bitsz(xfs_dir2_sf_off_t
)), 0, NULL
, NULL
},
229 { FLDT_DIR2SF
, "dir2sf", NULL
, (char *)dir2sf_flds
, dir2sf_size
,
230 FTARG_SIZE
, NULL
, dir2sf_flds
},
233 { FLDT_DIR3
, "dir3", NULL
, (char *)dir3_flds
, dir2_size
, FTARG_SIZE
,
235 { FLDT_DIR3_BLKHDR
, "dir3_blk_hdr", NULL
, (char *)dir3_blkhdr_flds
,
236 SI(bitsz(struct xfs_dir3_blk_hdr
)), 0, NULL
, dir3_blkhdr_flds
},
237 { FLDT_DIR3_DATA_HDR
, "dir3_data_hdr", NULL
, (char *)dir3_data_hdr_flds
,
238 SI(bitsz(struct xfs_dir3_data_hdr
)), 0, NULL
, dir3_data_hdr_flds
},
239 { FLDT_DIR3_FREE_HDR
, "dir3_free_hdr", NULL
, (char *)dir3_free_hdr_flds
,
240 SI(bitsz(struct xfs_dir3_free_hdr
)), 0, NULL
, dir3_free_hdr_flds
},
241 { FLDT_DIR3_LEAF_HDR
, "dir3_leaf_hdr", NULL
, (char *)dir3_leaf_hdr_flds
,
242 SI(bitsz(struct xfs_dir3_leaf_hdr
)), 0, NULL
, dir3_leaf_hdr_flds
},
243 { FLDT_DIR3_DATA_UNION
, "dir3_data_union", NULL
,
244 (char *)dir3_data_union_flds
, dir2_data_union_size
, FTARG_SIZE
, NULL
,
245 dir3_data_union_flds
},
246 { FLDT_DIR3_SF_ENTRY
, "dir3_sf_entry", NULL
, (char *)dir3_sf_entry_flds
,
247 dir2_sf_entry_size
, FTARG_SIZE
, NULL
, dir3_sf_entry_flds
},
248 { FLDT_DIR3SF
, "dir3sf", NULL
, (char *)dir3sf_flds
, dir2sf_size
,
249 FTARG_SIZE
, NULL
, dir3sf_flds
},
251 /* dir v2/3 node fields */
252 { FLDT_DA_BLKINFO
, "dir_blkinfo", NULL
, (char *)da_blkinfo_flds
,
253 SI(bitsz(struct xfs_da_blkinfo
)), 0, NULL
, da_blkinfo_flds
},
254 { FLDT_DA_NODE_ENTRY
, "dir_node_entry", fp_sarray
,
255 (char *)da_node_entry_flds
, SI(bitsz(struct xfs_da_node_entry
)), 0,
256 NULL
, da_node_entry_flds
},
257 { FLDT_DA_NODE_HDR
, "dir_node_hdr", NULL
, (char *)da_node_hdr_flds
,
258 SI(bitsz(struct xfs_da_node_hdr
)), 0, NULL
, da_node_hdr_flds
},
259 { FLDT_DA3_BLKINFO
, "dir_blkinfo", NULL
, (char *)da3_blkinfo_flds
,
260 SI(bitsz(struct xfs_da3_blkinfo
)), 0, NULL
, da3_blkinfo_flds
},
261 { FLDT_DA3_NODE_HDR
, "dir_node_hdr", NULL
, (char *)da3_node_hdr_flds
,
262 SI(bitsz(struct xfs_da3_node_hdr
)), 0, NULL
, da3_node_hdr_flds
},
264 { FLDT_DIRBLOCK
, "dirblock", fp_num
, "%u", SI(bitsz(__uint32_t
)), 0,
266 { FLDT_DISK_DQUOT
, "disk_dquot", NULL
, (char *)disk_dquot_flds
,
267 SI(bitsz(xfs_disk_dquot_t
)), 0, NULL
, disk_dquot_flds
},
268 { FLDT_DQBLK
, "dqblk", NULL
, (char *)dqblk_flds
, SI(bitsz(xfs_dqblk_t
)),
269 0, NULL
, dqblk_flds
},
270 { FLDT_DQID
, "dqid", fp_num
, "%d", SI(bitsz(xfs_dqid_t
)), 0, NULL
,
272 { FLDT_DRFSBNO
, "drfsbno", fp_num
, "%llu", SI(bitsz(xfs_rfsblock_t
)),
273 FTARG_DONULL
, fa_drfsbno
, NULL
},
274 { FLDT_DRTBNO
, "drtbno", fp_num
, "%llu", SI(bitsz(xfs_rtblock_t
)),
275 FTARG_DONULL
, fa_drtbno
, NULL
},
276 { FLDT_EXTLEN
, "extlen", fp_num
, "%u", SI(bitsz(xfs_extlen_t
)), 0, NULL
,
278 { FLDT_EXTNUM
, "extnum", fp_num
, "%d", SI(bitsz(xfs_extnum_t
)),
279 FTARG_SIGNED
, NULL
, NULL
},
280 { FLDT_FSIZE
, "fsize", fp_num
, "%lld", SI(bitsz(xfs_fsize_t
)),
281 FTARG_SIGNED
, NULL
, NULL
},
282 { FLDT_INO
, "ino", fp_num
, "%llu", SI(bitsz(xfs_ino_t
)), FTARG_DONULL
,
284 { FLDT_INOBT
, "inobt", NULL
, (char *)inobt_flds
, btblock_size
,
285 FTARG_SIZE
, NULL
, inobt_flds
},
286 { FLDT_INOBT_CRC
, "inobt", NULL
, (char *)inobt_crc_flds
, btblock_size
,
287 FTARG_SIZE
, NULL
, inobt_crc_flds
},
288 { FLDT_INOBT_SPCRC
, "inobt", NULL
, (char *)inobt_spcrc_flds
,
289 btblock_size
, FTARG_SIZE
, NULL
, inobt_spcrc_flds
},
290 { FLDT_INOBTKEY
, "inobtkey", fp_sarray
, (char *)inobt_key_flds
,
291 SI(bitsz(xfs_inobt_key_t
)), 0, NULL
, inobt_key_flds
},
292 { FLDT_INOBTPTR
, "inobtptr", fp_num
, "%u", SI(bitsz(xfs_inobt_ptr_t
)),
293 0, fa_agblock
, NULL
},
294 { FLDT_INOBTREC
, "inobtrec", fp_sarray
, (char *)inobt_rec_flds
,
295 SI(bitsz(xfs_inobt_rec_t
)), 0, NULL
, inobt_rec_flds
},
296 { FLDT_INOBTSPREC
, "inobtsprec", fp_sarray
, (char *) inobt_sprec_flds
,
297 SI(bitsz(xfs_inobt_rec_t
)), 0, NULL
, inobt_sprec_flds
},
298 { FLDT_INODE
, "inode", NULL
, (char *)inode_flds
, inode_size
, FTARG_SIZE
,
300 { FLDT_INODE_CRC
, "inode", NULL
, (char *)inode_crc_flds
, inode_size
,
301 FTARG_SIZE
, NULL
, inode_crc_flds
},
302 { FLDT_INOFREE
, "inofree", fp_num
, "%#llx", SI(bitsz(xfs_inofree_t
)), 0,
304 { FLDT_INT16D
, "int16d", fp_num
, "%d", SI(bitsz(__int16_t
)),
305 FTARG_SIGNED
, NULL
, NULL
},
306 { FLDT_INT32D
, "int32d", fp_num
, "%d", SI(bitsz(__int32_t
)),
307 FTARG_SIGNED
, NULL
, NULL
},
308 { FLDT_INT64D
, "int64d", fp_num
, "%lld", SI(bitsz(__int64_t
)),
309 FTARG_SIGNED
, NULL
, NULL
},
310 { FLDT_INT8D
, "int8d", fp_num
, "%d", SI(bitsz(__int8_t
)), FTARG_SIGNED
,
312 { FLDT_NSEC
, "nsec", fp_num
, "%09d", SI(bitsz(__int32_t
)), FTARG_SIGNED
,
314 { FLDT_QCNT
, "qcnt", fp_num
, "%llu", SI(bitsz(xfs_qcnt_t
)), 0, NULL
,
316 { FLDT_QWARNCNT
, "qwarncnt", fp_num
, "%u", SI(bitsz(xfs_qwarncnt_t
)), 0,
318 { FLDT_SB
, "sb", NULL
, (char *)sb_flds
, sb_size
, FTARG_SIZE
, NULL
,
321 /* CRC enabled symlink */
322 { FLDT_SYMLINK_CRC
, "symlink", NULL
, (char *)symlink_crc_flds
,
323 symlink_size
, FTARG_SIZE
, NULL
, symlink_crc_flds
},
325 { FLDT_TIME
, "time", fp_time
, NULL
, SI(bitsz(__int32_t
)), FTARG_SIGNED
,
327 { FLDT_TIMESTAMP
, "timestamp", NULL
, (char *)timestamp_flds
,
328 SI(bitsz(xfs_timestamp_t
)), 0, NULL
, timestamp_flds
},
329 { FLDT_UINT1
, "uint1", fp_num
, "%u", SI(1), 0, NULL
, NULL
},
330 { FLDT_UINT16D
, "uint16d", fp_num
, "%u", SI(bitsz(__uint16_t
)), 0, NULL
,
332 { FLDT_UINT16O
, "uint16o", fp_num
, "%#o", SI(bitsz(__uint16_t
)), 0,
334 { FLDT_UINT16X
, "uint16x", fp_num
, "%#x", SI(bitsz(__uint16_t
)), 0,
336 { FLDT_UINT32D
, "uint32d", fp_num
, "%u", SI(bitsz(__uint32_t
)), 0, NULL
,
338 { FLDT_UINT32O
, "uint32o", fp_num
, "%#o", SI(bitsz(__uint32_t
)), 0,
340 { FLDT_UINT32X
, "uint32x", fp_num
, "%#x", SI(bitsz(__uint32_t
)), 0,
342 { FLDT_UINT64D
, "uint64d", fp_num
, "%llu", SI(bitsz(__uint64_t
)), 0,
344 { FLDT_UINT64O
, "uint64o", fp_num
, "%#llo", SI(bitsz(__uint64_t
)), 0,
346 { FLDT_UINT64X
, "uint64x", fp_num
, "%#llx", SI(bitsz(__uint64_t
)), 0,
348 { FLDT_UINT8D
, "uint8d", fp_num
, "%u", SI(bitsz(__uint8_t
)), 0, NULL
,
350 { FLDT_UINT8O
, "uint8o", fp_num
, "%#o", SI(bitsz(__uint8_t
)), 0, NULL
,
352 { FLDT_UINT8X
, "uint8x", fp_num
, "%#x", SI(bitsz(__uint8_t
)), 0, NULL
,
354 { FLDT_UUID
, "uuid", fp_uuid
, NULL
, SI(bitsz(uuid_t
)), 0, NULL
, NULL
},
366 if (!(f
->flags
& FLD_OFFSET
)) {
367 if (f
->flags
& FLD_ARRAY
) {
370 const ftattr_t
*fa
= &ftattrtab
[f
->ftyp
];
373 abase
= (f
->flags
& FLD_ABASE1
) != 0;
374 ASSERT(fa
->ftyp
== f
->ftyp
);
375 ASSERT((fa
->arg
& FTARG_SIZE
) == 0);
376 return (int)(intptr_t)f
->offset
+
377 (idx
- abase
) * fsize(f
, obj
, startoff
, idx
);
379 return (int)(intptr_t)f
->offset
;
381 return (*f
->offset
)(obj
, startoff
, idx
);
390 if (!(f
->flags
& FLD_COUNT
))
391 return (int)(intptr_t)f
->count
;
393 return (*f
->count
)(obj
, startoff
);
399 const field_t
*fields
,
405 /* we only match if this field name matches and has a non-zero count */
406 for (f
= fields
; f
->name
; f
++)
407 if (strcmp(f
->name
, name
) == 0 && fcount(f
, obj
, startoff
))
421 fa
= &ftattrtab
[f
->ftyp
];
422 ASSERT(fa
->ftyp
== f
->ftyp
);
423 if (!(fa
->arg
& FTARG_SIZE
))
424 return (int)(intptr_t)fa
->size
;
426 return (*fa
->size
)(obj
, startoff
, idx
);