brintos

brintos / linux-shallow public Read only

0
0
Text · 2.1 KiB · beb93be Raw
73 lines · c
1// SPDX-License-Identifier: GPL-2.0+2/*3 * Copyright (C) 2016 Oracle.  All Rights Reserved.4 * Author: Darrick J. Wong <darrick.wong@oracle.com>5 */6#ifndef __XFS_REFCOUNT_BTREE_H__7#define	__XFS_REFCOUNT_BTREE_H__8 9/*10 * Reference Count Btree on-disk structures11 */12 13struct xfs_buf;14struct xfs_btree_cur;15struct xfs_mount;16struct xfs_perag;17struct xbtree_afakeroot;18 19/*20 * Btree block header size21 */22#define XFS_REFCOUNT_BLOCK_LEN	XFS_BTREE_SBLOCK_CRC_LEN23 24/*25 * Record, key, and pointer address macros for btree blocks.26 *27 * (note that some of these may appear unused, but they are used in userspace)28 */29#define XFS_REFCOUNT_REC_ADDR(block, index) \30	((struct xfs_refcount_rec *) \31		((char *)(block) + \32		 XFS_REFCOUNT_BLOCK_LEN + \33		 (((index) - 1) * sizeof(struct xfs_refcount_rec))))34 35#define XFS_REFCOUNT_KEY_ADDR(block, index) \36	((struct xfs_refcount_key *) \37		((char *)(block) + \38		 XFS_REFCOUNT_BLOCK_LEN + \39		 ((index) - 1) * sizeof(struct xfs_refcount_key)))40 41#define XFS_REFCOUNT_PTR_ADDR(block, index, maxrecs) \42	((xfs_refcount_ptr_t *) \43		((char *)(block) + \44		 XFS_REFCOUNT_BLOCK_LEN + \45		 (maxrecs) * sizeof(struct xfs_refcount_key) + \46		 ((index) - 1) * sizeof(xfs_refcount_ptr_t)))47 48extern struct xfs_btree_cur *xfs_refcountbt_init_cursor(struct xfs_mount *mp,49		struct xfs_trans *tp, struct xfs_buf *agbp,50		struct xfs_perag *pag);51unsigned int xfs_refcountbt_maxrecs(struct xfs_mount *mp, unsigned int blocklen,52		bool leaf);53extern void xfs_refcountbt_compute_maxlevels(struct xfs_mount *mp);54 55extern xfs_extlen_t xfs_refcountbt_calc_size(struct xfs_mount *mp,56		unsigned long long len);57extern xfs_extlen_t xfs_refcountbt_max_size(struct xfs_mount *mp,58		xfs_agblock_t agblocks);59 60extern int xfs_refcountbt_calc_reserves(struct xfs_mount *mp,61		struct xfs_trans *tp, struct xfs_perag *pag, xfs_extlen_t *ask,62		xfs_extlen_t *used);63 64void xfs_refcountbt_commit_staged_btree(struct xfs_btree_cur *cur,65		struct xfs_trans *tp, struct xfs_buf *agbp);66 67unsigned int xfs_refcountbt_maxlevels_ondisk(void);68 69int __init xfs_refcountbt_init_cur_cache(void);70void xfs_refcountbt_destroy_cur_cache(void);71 72#endif	/* __XFS_REFCOUNT_BTREE_H__ */73