diff options
Diffstat (limited to 'fs/xfs/xfs_dir2_leaf.h')
-rw-r--r-- | fs/xfs/xfs_dir2_leaf.h | 310 |
1 files changed, 123 insertions, 187 deletions
diff --git a/fs/xfs/xfs_dir2_leaf.h b/fs/xfs/xfs_dir2_leaf.h index 3303cd6f4c00..43f0ec2131a9 100644 --- a/fs/xfs/xfs_dir2_leaf.h +++ b/fs/xfs/xfs_dir2_leaf.h | |||
@@ -44,10 +44,6 @@ struct xfs_mount; | |||
44 | struct xfs_trans; | 44 | struct xfs_trans; |
45 | 45 | ||
46 | /* | 46 | /* |
47 | * Constants. | ||
48 | */ | ||
49 | |||
50 | /* | ||
51 | * Offset of the leaf/node space. First block in this space | 47 | * Offset of the leaf/node space. First block in this space |
52 | * is the btree root. | 48 | * is the btree root. |
53 | */ | 49 | */ |
@@ -57,10 +53,6 @@ struct xfs_trans; | |||
57 | XFS_DIR2_BYTE_TO_DB(mp, XFS_DIR2_LEAF_OFFSET) | 53 | XFS_DIR2_BYTE_TO_DB(mp, XFS_DIR2_LEAF_OFFSET) |
58 | 54 | ||
59 | /* | 55 | /* |
60 | * Types. | ||
61 | */ | ||
62 | |||
63 | /* | ||
64 | * Offset in data space of a data entry. | 56 | * Offset in data space of a data entry. |
65 | */ | 57 | */ |
66 | typedef __uint32_t xfs_dir2_dataptr_t; | 58 | typedef __uint32_t xfs_dir2_dataptr_t; |
@@ -68,10 +60,6 @@ typedef __uint32_t xfs_dir2_dataptr_t; | |||
68 | #define XFS_DIR2_NULL_DATAPTR ((xfs_dir2_dataptr_t)0) | 60 | #define XFS_DIR2_NULL_DATAPTR ((xfs_dir2_dataptr_t)0) |
69 | 61 | ||
70 | /* | 62 | /* |
71 | * Structures. | ||
72 | */ | ||
73 | |||
74 | /* | ||
75 | * Leaf block header. | 63 | * Leaf block header. |
76 | */ | 64 | */ |
77 | typedef struct xfs_dir2_leaf_hdr { | 65 | typedef struct xfs_dir2_leaf_hdr { |
@@ -109,245 +97,193 @@ typedef struct xfs_dir2_leaf { | |||
109 | } xfs_dir2_leaf_t; | 97 | } xfs_dir2_leaf_t; |
110 | 98 | ||
111 | /* | 99 | /* |
112 | * Macros. | 100 | * DB blocks here are logical directory block numbers, not filesystem blocks. |
113 | * The DB blocks are logical directory block numbers, not filesystem blocks. | ||
114 | */ | 101 | */ |
115 | 102 | ||
116 | #if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_DIR2_MAX_LEAF_ENTS) | 103 | #define XFS_DIR2_MAX_LEAF_ENTS(mp) xfs_dir2_max_leaf_ents(mp) |
117 | int | 104 | static inline int xfs_dir2_max_leaf_ents(struct xfs_mount *mp) |
118 | xfs_dir2_max_leaf_ents(struct xfs_mount *mp); | 105 | { |
119 | #define XFS_DIR2_MAX_LEAF_ENTS(mp) \ | 106 | return (int)(((mp)->m_dirblksize - (uint)sizeof(xfs_dir2_leaf_hdr_t)) / |
120 | xfs_dir2_max_leaf_ents(mp) | 107 | (uint)sizeof(xfs_dir2_leaf_entry_t)); |
121 | #else | 108 | } |
122 | #define XFS_DIR2_MAX_LEAF_ENTS(mp) \ | ||
123 | ((int)(((mp)->m_dirblksize - (uint)sizeof(xfs_dir2_leaf_hdr_t)) / \ | ||
124 | (uint)sizeof(xfs_dir2_leaf_entry_t))) | ||
125 | #endif | ||
126 | 109 | ||
127 | /* | 110 | /* |
128 | * Get address of the bestcount field in the single-leaf block. | 111 | * Get address of the bestcount field in the single-leaf block. |
129 | */ | 112 | */ |
130 | #if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_DIR2_LEAF_TAIL_P) | 113 | #define XFS_DIR2_LEAF_TAIL_P(mp,lp) xfs_dir2_leaf_tail_p(mp, lp) |
131 | xfs_dir2_leaf_tail_t * | 114 | static inline xfs_dir2_leaf_tail_t * |
132 | xfs_dir2_leaf_tail_p(struct xfs_mount *mp, xfs_dir2_leaf_t *lp); | 115 | xfs_dir2_leaf_tail_p(struct xfs_mount *mp, xfs_dir2_leaf_t *lp) |
133 | #define XFS_DIR2_LEAF_TAIL_P(mp,lp) \ | 116 | { |
134 | xfs_dir2_leaf_tail_p(mp, lp) | 117 | return (xfs_dir2_leaf_tail_t *) |
135 | #else | 118 | ((char *)(lp) + (mp)->m_dirblksize - |
136 | #define XFS_DIR2_LEAF_TAIL_P(mp,lp) \ | 119 | (uint)sizeof(xfs_dir2_leaf_tail_t)); |
137 | ((xfs_dir2_leaf_tail_t *)\ | 120 | } |
138 | ((char *)(lp) + (mp)->m_dirblksize - \ | ||
139 | (uint)sizeof(xfs_dir2_leaf_tail_t))) | ||
140 | #endif | ||
141 | 121 | ||
142 | /* | 122 | /* |
143 | * Get address of the bests array in the single-leaf block. | 123 | * Get address of the bests array in the single-leaf block. |
144 | */ | 124 | */ |
145 | #if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_DIR2_LEAF_BESTS_P) | ||
146 | xfs_dir2_data_off_t * | ||
147 | xfs_dir2_leaf_bests_p(xfs_dir2_leaf_tail_t *ltp); | ||
148 | #define XFS_DIR2_LEAF_BESTS_P(ltp) xfs_dir2_leaf_bests_p(ltp) | 125 | #define XFS_DIR2_LEAF_BESTS_P(ltp) xfs_dir2_leaf_bests_p(ltp) |
149 | #else | 126 | static inline xfs_dir2_data_off_t * |
150 | #define XFS_DIR2_LEAF_BESTS_P(ltp) \ | 127 | xfs_dir2_leaf_bests_p(xfs_dir2_leaf_tail_t *ltp) |
151 | ((xfs_dir2_data_off_t *)(ltp) - INT_GET((ltp)->bestcount, ARCH_CONVERT)) | 128 | { |
152 | #endif | 129 | return (xfs_dir2_data_off_t *) |
130 | (ltp) - INT_GET((ltp)->bestcount, ARCH_CONVERT); | ||
131 | } | ||
153 | 132 | ||
154 | /* | 133 | /* |
155 | * Convert dataptr to byte in file space | 134 | * Convert dataptr to byte in file space |
156 | */ | 135 | */ |
157 | #if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_DIR2_DATAPTR_TO_BYTE) | ||
158 | xfs_dir2_off_t | ||
159 | xfs_dir2_dataptr_to_byte(struct xfs_mount *mp, xfs_dir2_dataptr_t dp); | ||
160 | #define XFS_DIR2_DATAPTR_TO_BYTE(mp,dp) xfs_dir2_dataptr_to_byte(mp, dp) | 136 | #define XFS_DIR2_DATAPTR_TO_BYTE(mp,dp) xfs_dir2_dataptr_to_byte(mp, dp) |
161 | #else | 137 | static inline xfs_dir2_off_t |
162 | #define XFS_DIR2_DATAPTR_TO_BYTE(mp,dp) \ | 138 | xfs_dir2_dataptr_to_byte(struct xfs_mount *mp, xfs_dir2_dataptr_t dp) |
163 | ((xfs_dir2_off_t)(dp) << XFS_DIR2_DATA_ALIGN_LOG) | 139 | { |
164 | #endif | 140 | return (xfs_dir2_off_t)(dp) << XFS_DIR2_DATA_ALIGN_LOG; |
141 | } | ||
165 | 142 | ||
166 | /* | 143 | /* |
167 | * Convert byte in file space to dataptr. It had better be aligned. | 144 | * Convert byte in file space to dataptr. It had better be aligned. |
168 | */ | 145 | */ |
169 | #if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_DIR2_BYTE_TO_DATAPTR) | ||
170 | xfs_dir2_dataptr_t | ||
171 | xfs_dir2_byte_to_dataptr(struct xfs_mount *mp, xfs_dir2_off_t by); | ||
172 | #define XFS_DIR2_BYTE_TO_DATAPTR(mp,by) xfs_dir2_byte_to_dataptr(mp,by) | 146 | #define XFS_DIR2_BYTE_TO_DATAPTR(mp,by) xfs_dir2_byte_to_dataptr(mp,by) |
173 | #else | 147 | static inline xfs_dir2_dataptr_t |
174 | #define XFS_DIR2_BYTE_TO_DATAPTR(mp,by) \ | 148 | xfs_dir2_byte_to_dataptr(struct xfs_mount *mp, xfs_dir2_off_t by) |
175 | ((xfs_dir2_dataptr_t)((by) >> XFS_DIR2_DATA_ALIGN_LOG)) | 149 | { |
176 | #endif | 150 | return (xfs_dir2_dataptr_t)((by) >> XFS_DIR2_DATA_ALIGN_LOG); |
151 | } | ||
152 | |||
153 | /* | ||
154 | * Convert byte in space to (DB) block | ||
155 | */ | ||
156 | #define XFS_DIR2_BYTE_TO_DB(mp,by) xfs_dir2_byte_to_db(mp, by) | ||
157 | static inline xfs_dir2_db_t | ||
158 | xfs_dir2_byte_to_db(struct xfs_mount *mp, xfs_dir2_off_t by) | ||
159 | { | ||
160 | return (xfs_dir2_db_t)((by) >> \ | ||
161 | ((mp)->m_sb.sb_blocklog + (mp)->m_sb.sb_dirblklog)); | ||
162 | } | ||
177 | 163 | ||
178 | /* | 164 | /* |
179 | * Convert dataptr to a block number | 165 | * Convert dataptr to a block number |
180 | */ | 166 | */ |
181 | #if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_DIR2_DATAPTR_TO_DB) | ||
182 | xfs_dir2_db_t | ||
183 | xfs_dir2_dataptr_to_db(struct xfs_mount *mp, xfs_dir2_dataptr_t dp); | ||
184 | #define XFS_DIR2_DATAPTR_TO_DB(mp,dp) xfs_dir2_dataptr_to_db(mp, dp) | 167 | #define XFS_DIR2_DATAPTR_TO_DB(mp,dp) xfs_dir2_dataptr_to_db(mp, dp) |
185 | #else | 168 | static inline xfs_dir2_db_t |
186 | #define XFS_DIR2_DATAPTR_TO_DB(mp,dp) \ | 169 | xfs_dir2_dataptr_to_db(struct xfs_mount *mp, xfs_dir2_dataptr_t dp) |
187 | XFS_DIR2_BYTE_TO_DB(mp, XFS_DIR2_DATAPTR_TO_BYTE(mp, dp)) | 170 | { |
188 | #endif | 171 | return XFS_DIR2_BYTE_TO_DB(mp, XFS_DIR2_DATAPTR_TO_BYTE(mp, dp)); |
172 | } | ||
173 | |||
174 | /* | ||
175 | * Convert byte in space to offset in a block | ||
176 | */ | ||
177 | #define XFS_DIR2_BYTE_TO_OFF(mp,by) xfs_dir2_byte_to_off(mp, by) | ||
178 | static inline xfs_dir2_data_aoff_t | ||
179 | xfs_dir2_byte_to_off(struct xfs_mount *mp, xfs_dir2_off_t by) | ||
180 | { | ||
181 | return (xfs_dir2_data_aoff_t)((by) & \ | ||
182 | ((1 << ((mp)->m_sb.sb_blocklog + (mp)->m_sb.sb_dirblklog)) - 1)); | ||
183 | } | ||
189 | 184 | ||
190 | /* | 185 | /* |
191 | * Convert dataptr to a byte offset in a block | 186 | * Convert dataptr to a byte offset in a block |
192 | */ | 187 | */ |
193 | #if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_DIR2_DATAPTR_TO_OFF) | ||
194 | xfs_dir2_data_aoff_t | ||
195 | xfs_dir2_dataptr_to_off(struct xfs_mount *mp, xfs_dir2_dataptr_t dp); | ||
196 | #define XFS_DIR2_DATAPTR_TO_OFF(mp,dp) xfs_dir2_dataptr_to_off(mp, dp) | 188 | #define XFS_DIR2_DATAPTR_TO_OFF(mp,dp) xfs_dir2_dataptr_to_off(mp, dp) |
197 | #else | 189 | static inline xfs_dir2_data_aoff_t |
198 | #define XFS_DIR2_DATAPTR_TO_OFF(mp,dp) \ | 190 | xfs_dir2_dataptr_to_off(struct xfs_mount *mp, xfs_dir2_dataptr_t dp) |
199 | XFS_DIR2_BYTE_TO_OFF(mp, XFS_DIR2_DATAPTR_TO_BYTE(mp, dp)) | 191 | { |
200 | #endif | 192 | return XFS_DIR2_BYTE_TO_OFF(mp, XFS_DIR2_DATAPTR_TO_BYTE(mp, dp)); |
193 | } | ||
201 | 194 | ||
202 | /* | 195 | /* |
203 | * Convert block and offset to byte in space | 196 | * Convert block and offset to byte in space |
204 | */ | 197 | */ |
205 | #if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_DIR2_DB_OFF_TO_BYTE) | ||
206 | xfs_dir2_off_t | ||
207 | xfs_dir2_db_off_to_byte(struct xfs_mount *mp, xfs_dir2_db_t db, | ||
208 | xfs_dir2_data_aoff_t o); | ||
209 | #define XFS_DIR2_DB_OFF_TO_BYTE(mp,db,o) \ | 198 | #define XFS_DIR2_DB_OFF_TO_BYTE(mp,db,o) \ |
210 | xfs_dir2_db_off_to_byte(mp, db, o) | 199 | xfs_dir2_db_off_to_byte(mp, db, o) |
211 | #else | 200 | static inline xfs_dir2_off_t |
212 | #define XFS_DIR2_DB_OFF_TO_BYTE(mp,db,o) \ | 201 | xfs_dir2_db_off_to_byte(struct xfs_mount *mp, xfs_dir2_db_t db, |
213 | (((xfs_dir2_off_t)(db) << \ | 202 | xfs_dir2_data_aoff_t o) |
214 | ((mp)->m_sb.sb_blocklog + (mp)->m_sb.sb_dirblklog)) + (o)) | 203 | { |
215 | #endif | 204 | return ((xfs_dir2_off_t)(db) << \ |
205 | ((mp)->m_sb.sb_blocklog + (mp)->m_sb.sb_dirblklog)) + (o); | ||
206 | } | ||
216 | 207 | ||
217 | /* | 208 | /* |
218 | * Convert byte in space to (DB) block | 209 | * Convert block (DB) to block (dablk) |
219 | */ | 210 | */ |
220 | #if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_DIR2_BYTE_TO_DB) | 211 | #define XFS_DIR2_DB_TO_DA(mp,db) xfs_dir2_db_to_da(mp, db) |
221 | xfs_dir2_db_t xfs_dir2_byte_to_db(struct xfs_mount *mp, xfs_dir2_off_t by); | 212 | static inline xfs_dablk_t |
222 | #define XFS_DIR2_BYTE_TO_DB(mp,by) xfs_dir2_byte_to_db(mp, by) | 213 | xfs_dir2_db_to_da(struct xfs_mount *mp, xfs_dir2_db_t db) |
223 | #else | 214 | { |
224 | #define XFS_DIR2_BYTE_TO_DB(mp,by) \ | 215 | return (xfs_dablk_t)((db) << (mp)->m_sb.sb_dirblklog); |
225 | ((xfs_dir2_db_t)((by) >> \ | 216 | } |
226 | ((mp)->m_sb.sb_blocklog + (mp)->m_sb.sb_dirblklog))) | ||
227 | #endif | ||
228 | 217 | ||
229 | /* | 218 | /* |
230 | * Convert byte in space to (DA) block | 219 | * Convert byte in space to (DA) block |
231 | */ | 220 | */ |
232 | #if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_DIR2_BYTE_TO_DA) | ||
233 | xfs_dablk_t xfs_dir2_byte_to_da(struct xfs_mount *mp, xfs_dir2_off_t by); | ||
234 | #define XFS_DIR2_BYTE_TO_DA(mp,by) xfs_dir2_byte_to_da(mp, by) | 221 | #define XFS_DIR2_BYTE_TO_DA(mp,by) xfs_dir2_byte_to_da(mp, by) |
235 | #else | 222 | static inline xfs_dablk_t |
236 | #define XFS_DIR2_BYTE_TO_DA(mp,by) \ | 223 | xfs_dir2_byte_to_da(struct xfs_mount *mp, xfs_dir2_off_t by) |
237 | XFS_DIR2_DB_TO_DA(mp, XFS_DIR2_BYTE_TO_DB(mp, by)) | 224 | { |
238 | #endif | 225 | return XFS_DIR2_DB_TO_DA(mp, XFS_DIR2_BYTE_TO_DB(mp, by)); |
239 | 226 | } | |
240 | /* | ||
241 | * Convert byte in space to offset in a block | ||
242 | */ | ||
243 | #if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_DIR2_BYTE_TO_OFF) | ||
244 | xfs_dir2_data_aoff_t | ||
245 | xfs_dir2_byte_to_off(struct xfs_mount *mp, xfs_dir2_off_t by); | ||
246 | #define XFS_DIR2_BYTE_TO_OFF(mp,by) xfs_dir2_byte_to_off(mp, by) | ||
247 | #else | ||
248 | #define XFS_DIR2_BYTE_TO_OFF(mp,by) \ | ||
249 | ((xfs_dir2_data_aoff_t)((by) & \ | ||
250 | ((1 << ((mp)->m_sb.sb_blocklog + \ | ||
251 | (mp)->m_sb.sb_dirblklog)) - 1))) | ||
252 | #endif | ||
253 | 227 | ||
254 | /* | 228 | /* |
255 | * Convert block and offset to dataptr | 229 | * Convert block and offset to dataptr |
256 | */ | 230 | */ |
257 | #if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_DIR2_DB_OFF_TO_DATAPTR) | ||
258 | xfs_dir2_dataptr_t | ||
259 | xfs_dir2_db_off_to_dataptr(struct xfs_mount *mp, xfs_dir2_db_t db, | ||
260 | xfs_dir2_data_aoff_t o); | ||
261 | #define XFS_DIR2_DB_OFF_TO_DATAPTR(mp,db,o) \ | 231 | #define XFS_DIR2_DB_OFF_TO_DATAPTR(mp,db,o) \ |
262 | xfs_dir2_db_off_to_dataptr(mp, db, o) | 232 | xfs_dir2_db_off_to_dataptr(mp, db, o) |
263 | #else | 233 | static inline xfs_dir2_dataptr_t |
264 | #define XFS_DIR2_DB_OFF_TO_DATAPTR(mp,db,o) \ | 234 | xfs_dir2_db_off_to_dataptr(struct xfs_mount *mp, xfs_dir2_db_t db, |
265 | XFS_DIR2_BYTE_TO_DATAPTR(mp, XFS_DIR2_DB_OFF_TO_BYTE(mp, db, o)) | 235 | xfs_dir2_data_aoff_t o) |
266 | #endif | 236 | { |
267 | 237 | return XFS_DIR2_BYTE_TO_DATAPTR(mp, XFS_DIR2_DB_OFF_TO_BYTE(mp, db, o)); | |
268 | /* | 238 | } |
269 | * Convert block (DB) to block (dablk) | ||
270 | */ | ||
271 | #if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_DIR2_DB_TO_DA) | ||
272 | xfs_dablk_t xfs_dir2_db_to_da(struct xfs_mount *mp, xfs_dir2_db_t db); | ||
273 | #define XFS_DIR2_DB_TO_DA(mp,db) xfs_dir2_db_to_da(mp, db) | ||
274 | #else | ||
275 | #define XFS_DIR2_DB_TO_DA(mp,db) \ | ||
276 | ((xfs_dablk_t)((db) << (mp)->m_sb.sb_dirblklog)) | ||
277 | #endif | ||
278 | 239 | ||
279 | /* | 240 | /* |
280 | * Convert block (dablk) to block (DB) | 241 | * Convert block (dablk) to block (DB) |
281 | */ | 242 | */ |
282 | #if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_DIR2_DA_TO_DB) | ||
283 | xfs_dir2_db_t xfs_dir2_da_to_db(struct xfs_mount *mp, xfs_dablk_t da); | ||
284 | #define XFS_DIR2_DA_TO_DB(mp,da) xfs_dir2_da_to_db(mp, da) | 243 | #define XFS_DIR2_DA_TO_DB(mp,da) xfs_dir2_da_to_db(mp, da) |
285 | #else | 244 | static inline xfs_dir2_db_t |
286 | #define XFS_DIR2_DA_TO_DB(mp,da) \ | 245 | xfs_dir2_da_to_db(struct xfs_mount *mp, xfs_dablk_t da) |
287 | ((xfs_dir2_db_t)((da) >> (mp)->m_sb.sb_dirblklog)) | 246 | { |
288 | #endif | 247 | return (xfs_dir2_db_t)((da) >> (mp)->m_sb.sb_dirblklog); |
248 | } | ||
289 | 249 | ||
290 | /* | 250 | /* |
291 | * Convert block (dablk) to byte offset in space | 251 | * Convert block (dablk) to byte offset in space |
292 | */ | 252 | */ |
293 | #if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_DIR2_DA_TO_BYTE) | ||
294 | xfs_dir2_off_t xfs_dir2_da_to_byte(struct xfs_mount *mp, xfs_dablk_t da); | ||
295 | #define XFS_DIR2_DA_TO_BYTE(mp,da) xfs_dir2_da_to_byte(mp, da) | 253 | #define XFS_DIR2_DA_TO_BYTE(mp,da) xfs_dir2_da_to_byte(mp, da) |
296 | #else | 254 | static inline xfs_dir2_off_t |
297 | #define XFS_DIR2_DA_TO_BYTE(mp,da) \ | 255 | xfs_dir2_da_to_byte(struct xfs_mount *mp, xfs_dablk_t da) |
298 | XFS_DIR2_DB_OFF_TO_BYTE(mp, XFS_DIR2_DA_TO_DB(mp, da), 0) | 256 | { |
299 | #endif | 257 | return XFS_DIR2_DB_OFF_TO_BYTE(mp, XFS_DIR2_DA_TO_DB(mp, da), 0); |
258 | } | ||
300 | 259 | ||
301 | /* | 260 | /* |
302 | * Function declarations. | 261 | * Function declarations. |
303 | */ | 262 | */ |
304 | 263 | extern int xfs_dir2_block_to_leaf(struct xfs_da_args *args, | |
305 | extern int | 264 | struct xfs_dabuf *dbp); |
306 | xfs_dir2_block_to_leaf(struct xfs_da_args *args, struct xfs_dabuf *dbp); | 265 | extern int xfs_dir2_leaf_addname(struct xfs_da_args *args); |
307 | 266 | extern void xfs_dir2_leaf_compact(struct xfs_da_args *args, | |
308 | extern int | 267 | struct xfs_dabuf *bp); |
309 | xfs_dir2_leaf_addname(struct xfs_da_args *args); | 268 | extern void xfs_dir2_leaf_compact_x1(struct xfs_dabuf *bp, int *indexp, |
310 | 269 | int *lowstalep, int *highstalep, | |
311 | extern void | 270 | int *lowlogp, int *highlogp); |
312 | xfs_dir2_leaf_compact(struct xfs_da_args *args, struct xfs_dabuf *bp); | 271 | extern int xfs_dir2_leaf_getdents(struct xfs_trans *tp, struct xfs_inode *dp, |
313 | 272 | struct uio *uio, int *eofp, | |
314 | extern void | 273 | struct xfs_dirent *dbp, xfs_dir2_put_t put); |
315 | xfs_dir2_leaf_compact_x1(struct xfs_dabuf *bp, int *indexp, | 274 | extern int xfs_dir2_leaf_init(struct xfs_da_args *args, xfs_dir2_db_t bno, |
316 | int *lowstalep, int *highstalep, int *lowlogp, | 275 | struct xfs_dabuf **bpp, int magic); |
317 | int *highlogp); | 276 | extern void xfs_dir2_leaf_log_ents(struct xfs_trans *tp, struct xfs_dabuf *bp, |
318 | 277 | int first, int last); | |
319 | extern int | 278 | extern void xfs_dir2_leaf_log_header(struct xfs_trans *tp, |
320 | xfs_dir2_leaf_getdents(struct xfs_trans *tp, struct xfs_inode *dp, | 279 | struct xfs_dabuf *bp); |
321 | struct uio *uio, int *eofp, struct xfs_dirent *dbp, | 280 | extern int xfs_dir2_leaf_lookup(struct xfs_da_args *args); |
322 | xfs_dir2_put_t put); | 281 | extern int xfs_dir2_leaf_removename(struct xfs_da_args *args); |
323 | 282 | extern int xfs_dir2_leaf_replace(struct xfs_da_args *args); | |
324 | extern int | 283 | extern int xfs_dir2_leaf_search_hash(struct xfs_da_args *args, |
325 | xfs_dir2_leaf_init(struct xfs_da_args *args, xfs_dir2_db_t bno, | 284 | struct xfs_dabuf *lbp); |
326 | struct xfs_dabuf **bpp, int magic); | 285 | extern int xfs_dir2_leaf_trim_data(struct xfs_da_args *args, |
327 | 286 | struct xfs_dabuf *lbp, xfs_dir2_db_t db); | |
328 | extern void | 287 | extern int xfs_dir2_node_to_leaf(struct xfs_da_state *state); |
329 | xfs_dir2_leaf_log_ents(struct xfs_trans *tp, struct xfs_dabuf *bp, | ||
330 | int first, int last); | ||
331 | |||
332 | extern void | ||
333 | xfs_dir2_leaf_log_header(struct xfs_trans *tp, struct xfs_dabuf *bp); | ||
334 | |||
335 | extern int | ||
336 | xfs_dir2_leaf_lookup(struct xfs_da_args *args); | ||
337 | |||
338 | extern int | ||
339 | xfs_dir2_leaf_removename(struct xfs_da_args *args); | ||
340 | |||
341 | extern int | ||
342 | xfs_dir2_leaf_replace(struct xfs_da_args *args); | ||
343 | |||
344 | extern int | ||
345 | xfs_dir2_leaf_search_hash(struct xfs_da_args *args, | ||
346 | struct xfs_dabuf *lbp); | ||
347 | extern int | ||
348 | xfs_dir2_leaf_trim_data(struct xfs_da_args *args, struct xfs_dabuf *lbp, xfs_dir2_db_t db); | ||
349 | |||
350 | extern int | ||
351 | xfs_dir2_node_to_leaf(struct xfs_da_state *state); | ||
352 | 288 | ||
353 | #endif /* __XFS_DIR2_LEAF_H__ */ | 289 | #endif /* __XFS_DIR2_LEAF_H__ */ |