diff options
Diffstat (limited to 'fs/xfs/xfs_bmap_btree.h')
-rw-r--r-- | fs/xfs/xfs_bmap_btree.h | 48 |
1 files changed, 12 insertions, 36 deletions
diff --git a/fs/xfs/xfs_bmap_btree.h b/fs/xfs/xfs_bmap_btree.h index 5669242b52d3..835be2a84ca1 100644 --- a/fs/xfs/xfs_bmap_btree.h +++ b/fs/xfs/xfs_bmap_btree.h | |||
@@ -151,33 +151,6 @@ typedef struct xfs_btree_lblock xfs_bmbt_block_t; | |||
151 | 151 | ||
152 | #define XFS_BUF_TO_BMBT_BLOCK(bp) ((xfs_bmbt_block_t *)XFS_BUF_PTR(bp)) | 152 | #define XFS_BUF_TO_BMBT_BLOCK(bp) ((xfs_bmbt_block_t *)XFS_BUF_PTR(bp)) |
153 | 153 | ||
154 | #define XFS_BMAP_RBLOCK_DSIZE(lev,cur) ((cur)->bc_private.b.forksize) | ||
155 | #define XFS_BMAP_RBLOCK_ISIZE(lev,cur) \ | ||
156 | ((int)XFS_IFORK_PTR((cur)->bc_private.b.ip, \ | ||
157 | (cur)->bc_private.b.whichfork)->if_broot_bytes) | ||
158 | |||
159 | #define XFS_BMAP_BLOCK_DMAXRECS(lev,cur) \ | ||
160 | (((lev) == (cur)->bc_nlevels - 1 ? \ | ||
161 | XFS_BTREE_BLOCK_MAXRECS(XFS_BMAP_RBLOCK_DSIZE(lev,cur), \ | ||
162 | xfs_bmdr, (lev) == 0) : \ | ||
163 | ((cur)->bc_mp->m_bmap_dmxr[(lev) != 0]))) | ||
164 | #define XFS_BMAP_BLOCK_IMAXRECS(lev,cur) \ | ||
165 | (((lev) == (cur)->bc_nlevels - 1 ? \ | ||
166 | XFS_BTREE_BLOCK_MAXRECS(XFS_BMAP_RBLOCK_ISIZE(lev,cur),\ | ||
167 | xfs_bmbt, (lev) == 0) : \ | ||
168 | ((cur)->bc_mp->m_bmap_dmxr[(lev) != 0]))) | ||
169 | |||
170 | #define XFS_BMAP_BLOCK_DMINRECS(lev,cur) \ | ||
171 | (((lev) == (cur)->bc_nlevels - 1 ? \ | ||
172 | XFS_BTREE_BLOCK_MINRECS(XFS_BMAP_RBLOCK_DSIZE(lev,cur),\ | ||
173 | xfs_bmdr, (lev) == 0) : \ | ||
174 | ((cur)->bc_mp->m_bmap_dmnr[(lev) != 0]))) | ||
175 | #define XFS_BMAP_BLOCK_IMINRECS(lev,cur) \ | ||
176 | (((lev) == (cur)->bc_nlevels - 1 ? \ | ||
177 | XFS_BTREE_BLOCK_MINRECS(XFS_BMAP_RBLOCK_ISIZE(lev,cur),\ | ||
178 | xfs_bmbt, (lev) == 0) : \ | ||
179 | ((cur)->bc_mp->m_bmap_dmnr[(lev) != 0]))) | ||
180 | |||
181 | #define XFS_BMAP_REC_DADDR(bb,i,cur) (XFS_BTREE_REC_ADDR(xfs_bmbt, bb, i)) | 154 | #define XFS_BMAP_REC_DADDR(bb,i,cur) (XFS_BTREE_REC_ADDR(xfs_bmbt, bb, i)) |
182 | 155 | ||
183 | #define XFS_BMAP_REC_IADDR(bb,i,cur) (XFS_BTREE_REC_ADDR(xfs_bmbt, bb, i)) | 156 | #define XFS_BMAP_REC_IADDR(bb,i,cur) (XFS_BTREE_REC_ADDR(xfs_bmbt, bb, i)) |
@@ -192,8 +165,8 @@ typedef struct xfs_btree_lblock xfs_bmbt_block_t; | |||
192 | (XFS_BTREE_PTR_ADDR(xfs_bmbt, bb, i, XFS_BMAP_BLOCK_DMAXRECS( \ | 165 | (XFS_BTREE_PTR_ADDR(xfs_bmbt, bb, i, XFS_BMAP_BLOCK_DMAXRECS( \ |
193 | be16_to_cpu((bb)->bb_level), cur))) | 166 | be16_to_cpu((bb)->bb_level), cur))) |
194 | #define XFS_BMAP_PTR_IADDR(bb,i,cur) \ | 167 | #define XFS_BMAP_PTR_IADDR(bb,i,cur) \ |
195 | (XFS_BTREE_PTR_ADDR(xfs_bmbt, bb, i, XFS_BMAP_BLOCK_IMAXRECS( \ | 168 | (XFS_BTREE_PTR_ADDR(xfs_bmbt, bb, i, xfs_bmbt_get_maxrecs(cur, \ |
196 | be16_to_cpu((bb)->bb_level), cur))) | 169 | be16_to_cpu((bb)->bb_level)))) |
197 | 170 | ||
198 | /* | 171 | /* |
199 | * These are to be used when we know the size of the block and | 172 | * These are to be used when we know the size of the block and |
@@ -203,11 +176,8 @@ typedef struct xfs_btree_lblock xfs_bmbt_block_t; | |||
203 | (XFS_BTREE_REC_ADDR(xfs_bmbt,bb,i)) | 176 | (XFS_BTREE_REC_ADDR(xfs_bmbt,bb,i)) |
204 | #define XFS_BMAP_BROOT_KEY_ADDR(bb,i,sz) \ | 177 | #define XFS_BMAP_BROOT_KEY_ADDR(bb,i,sz) \ |
205 | (XFS_BTREE_KEY_ADDR(xfs_bmbt,bb,i)) | 178 | (XFS_BTREE_KEY_ADDR(xfs_bmbt,bb,i)) |
206 | #define XFS_BMAP_BROOT_PTR_ADDR(bb,i,sz) \ | 179 | #define XFS_BMAP_BROOT_PTR_ADDR(mp, bb,i,sz) \ |
207 | (XFS_BTREE_PTR_ADDR(xfs_bmbt,bb,i,XFS_BMAP_BROOT_MAXRECS(sz))) | 180 | (XFS_BTREE_PTR_ADDR(xfs_bmbt,bb,i,xfs_bmbt_maxrecs(mp, sz, 0))) |
208 | |||
209 | #define XFS_BMAP_BROOT_NUMRECS(bb) be16_to_cpu((bb)->bb_numrecs) | ||
210 | #define XFS_BMAP_BROOT_MAXRECS(sz) XFS_BTREE_BLOCK_MAXRECS(sz,xfs_bmbt,0) | ||
211 | 181 | ||
212 | #define XFS_BMAP_BROOT_SPACE_CALC(nrecs) \ | 182 | #define XFS_BMAP_BROOT_SPACE_CALC(nrecs) \ |
213 | (int)(sizeof(xfs_bmbt_block_t) + \ | 183 | (int)(sizeof(xfs_bmbt_block_t) + \ |
@@ -234,7 +204,8 @@ typedef struct xfs_btree_lblock xfs_bmbt_block_t; | |||
234 | /* | 204 | /* |
235 | * Prototypes for xfs_bmap.c to call. | 205 | * Prototypes for xfs_bmap.c to call. |
236 | */ | 206 | */ |
237 | extern void xfs_bmdr_to_bmbt(xfs_bmdr_block_t *, int, xfs_bmbt_block_t *, int); | 207 | extern void xfs_bmdr_to_bmbt(struct xfs_mount *, xfs_bmdr_block_t *, int, |
208 | xfs_bmbt_block_t *, int); | ||
238 | extern void xfs_bmbt_get_all(xfs_bmbt_rec_host_t *r, xfs_bmbt_irec_t *s); | 209 | extern void xfs_bmbt_get_all(xfs_bmbt_rec_host_t *r, xfs_bmbt_irec_t *s); |
239 | extern xfs_filblks_t xfs_bmbt_get_blockcount(xfs_bmbt_rec_host_t *r); | 210 | extern xfs_filblks_t xfs_bmbt_get_blockcount(xfs_bmbt_rec_host_t *r); |
240 | extern xfs_fsblock_t xfs_bmbt_get_startblock(xfs_bmbt_rec_host_t *r); | 211 | extern xfs_fsblock_t xfs_bmbt_get_startblock(xfs_bmbt_rec_host_t *r); |
@@ -257,7 +228,12 @@ extern void xfs_bmbt_disk_set_all(xfs_bmbt_rec_t *r, xfs_bmbt_irec_t *s); | |||
257 | extern void xfs_bmbt_disk_set_allf(xfs_bmbt_rec_t *r, xfs_fileoff_t o, | 228 | extern void xfs_bmbt_disk_set_allf(xfs_bmbt_rec_t *r, xfs_fileoff_t o, |
258 | xfs_fsblock_t b, xfs_filblks_t c, xfs_exntst_t v); | 229 | xfs_fsblock_t b, xfs_filblks_t c, xfs_exntst_t v); |
259 | 230 | ||
260 | extern void xfs_bmbt_to_bmdr(xfs_bmbt_block_t *, int, xfs_bmdr_block_t *, int); | 231 | extern void xfs_bmbt_to_bmdr(struct xfs_mount *, xfs_bmbt_block_t *, int, |
232 | xfs_bmdr_block_t *, int); | ||
233 | |||
234 | extern int xfs_bmbt_get_maxrecs(struct xfs_btree_cur *, int level); | ||
235 | extern int xfs_bmdr_maxrecs(struct xfs_mount *, int blocklen, int leaf); | ||
236 | extern int xfs_bmbt_maxrecs(struct xfs_mount *, int blocklen, int leaf); | ||
261 | 237 | ||
262 | extern struct xfs_btree_cur *xfs_bmbt_init_cursor(struct xfs_mount *, | 238 | extern struct xfs_btree_cur *xfs_bmbt_init_cursor(struct xfs_mount *, |
263 | struct xfs_trans *, struct xfs_inode *, int); | 239 | struct xfs_trans *, struct xfs_inode *, int); |