]>
git.ipfire.org Git - thirdparty/xfsprogs-dev.git/blob - libxfs/xfs_ag_resv.h
1 // SPDX-License-Identifier: GPL-2.0+
3 * Copyright (C) 2016 Oracle. All Rights Reserved.
4 * Author: Darrick J. Wong <darrick.wong@oracle.com>
6 #ifndef __XFS_AG_RESV_H__
7 #define __XFS_AG_RESV_H__
9 int xfs_ag_resv_free(struct xfs_perag
*pag
);
10 int xfs_ag_resv_init(struct xfs_perag
*pag
, struct xfs_trans
*tp
);
12 bool xfs_ag_resv_critical(struct xfs_perag
*pag
, enum xfs_ag_resv_type type
);
13 xfs_extlen_t
xfs_ag_resv_needed(struct xfs_perag
*pag
,
14 enum xfs_ag_resv_type type
);
16 void xfs_ag_resv_alloc_extent(struct xfs_perag
*pag
, enum xfs_ag_resv_type type
,
17 struct xfs_alloc_arg
*args
);
18 void xfs_ag_resv_free_extent(struct xfs_perag
*pag
, enum xfs_ag_resv_type type
,
19 struct xfs_trans
*tp
, xfs_extlen_t len
);
22 * RMAPBT reservation accounting wrappers. Since rmapbt blocks are sourced from
23 * the AGFL, they are allocated one at a time and the reservation updates don't
24 * require a transaction.
27 xfs_ag_resv_rmapbt_alloc(
31 struct xfs_alloc_arg args
= { NULL
};
32 struct xfs_perag
*pag
;
35 pag
= xfs_perag_get(mp
, agno
);
36 xfs_ag_resv_alloc_extent(pag
, XFS_AG_RESV_RMAPBT
, &args
);
41 xfs_ag_resv_rmapbt_free(
45 struct xfs_perag
*pag
;
47 pag
= xfs_perag_get(mp
, agno
);
48 xfs_ag_resv_free_extent(pag
, XFS_AG_RESV_RMAPBT
, NULL
, 1);
52 #endif /* __XFS_AG_RESV_H__ */