|
@@ -141,21 +141,42 @@ xfs_finobt_alloc_block(
|
|
|
union xfs_btree_ptr *new,
|
|
|
int *stat)
|
|
|
{
|
|
|
+ if (cur->bc_mp->m_inotbt_nores)
|
|
|
+ return xfs_inobt_alloc_block(cur, start, new, stat);
|
|
|
return __xfs_inobt_alloc_block(cur, start, new, stat,
|
|
|
XFS_AG_RESV_METADATA);
|
|
|
}
|
|
|
|
|
|
STATIC int
|
|
|
-xfs_inobt_free_block(
|
|
|
+__xfs_inobt_free_block(
|
|
|
struct xfs_btree_cur *cur,
|
|
|
- struct xfs_buf *bp)
|
|
|
+ struct xfs_buf *bp,
|
|
|
+ enum xfs_ag_resv_type resv)
|
|
|
{
|
|
|
struct xfs_owner_info oinfo;
|
|
|
|
|
|
xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_INOBT);
|
|
|
return xfs_free_extent(cur->bc_tp,
|
|
|
XFS_DADDR_TO_FSB(cur->bc_mp, XFS_BUF_ADDR(bp)), 1,
|
|
|
- &oinfo, XFS_AG_RESV_NONE);
|
|
|
+ &oinfo, resv);
|
|
|
+}
|
|
|
+
|
|
|
+STATIC int
|
|
|
+xfs_inobt_free_block(
|
|
|
+ struct xfs_btree_cur *cur,
|
|
|
+ struct xfs_buf *bp)
|
|
|
+{
|
|
|
+ return __xfs_inobt_free_block(cur, bp, XFS_AG_RESV_NONE);
|
|
|
+}
|
|
|
+
|
|
|
+STATIC int
|
|
|
+xfs_finobt_free_block(
|
|
|
+ struct xfs_btree_cur *cur,
|
|
|
+ struct xfs_buf *bp)
|
|
|
+{
|
|
|
+ if (cur->bc_mp->m_inotbt_nores)
|
|
|
+ return xfs_inobt_free_block(cur, bp);
|
|
|
+ return __xfs_inobt_free_block(cur, bp, XFS_AG_RESV_METADATA);
|
|
|
}
|
|
|
|
|
|
STATIC int
|
|
@@ -380,7 +401,7 @@ static const struct xfs_btree_ops xfs_finobt_ops = {
|
|
|
.dup_cursor = xfs_inobt_dup_cursor,
|
|
|
.set_root = xfs_finobt_set_root,
|
|
|
.alloc_block = xfs_finobt_alloc_block,
|
|
|
- .free_block = xfs_inobt_free_block,
|
|
|
+ .free_block = xfs_finobt_free_block,
|
|
|
.get_minrecs = xfs_inobt_get_minrecs,
|
|
|
.get_maxrecs = xfs_inobt_get_maxrecs,
|
|
|
.init_key_from_rec = xfs_inobt_init_key_from_rec,
|