diff options
Diffstat (limited to 'fs/xfs/libxfs/xfs_alloc.c')
-rw-r--r-- | fs/xfs/libxfs/xfs_alloc.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/fs/xfs/libxfs/xfs_alloc.c b/fs/xfs/libxfs/xfs_alloc.c index 36101e55ed07..1dc244d15a75 100644 --- a/fs/xfs/libxfs/xfs_alloc.c +++ b/fs/xfs/libxfs/xfs_alloc.c | |||
@@ -728,7 +728,7 @@ xfs_alloc_ag_vextent( | |||
728 | 728 | ||
729 | ASSERT(args->len >= args->minlen); | 729 | ASSERT(args->len >= args->minlen); |
730 | ASSERT(args->len <= args->maxlen); | 730 | ASSERT(args->len <= args->maxlen); |
731 | ASSERT(!args->wasfromfl || args->resv != XFS_AG_RESV_AGFL); | 731 | ASSERT(!args->wasfromfl || args->resv != XFS_AG_RESV_RMAPBT); |
732 | ASSERT(args->agbno % args->alignment == 0); | 732 | ASSERT(args->agbno % args->alignment == 0); |
733 | 733 | ||
734 | /* if not file data, insert new block into the reverse map btree */ | 734 | /* if not file data, insert new block into the reverse map btree */ |
@@ -1600,7 +1600,7 @@ xfs_alloc_ag_vextent_small( | |||
1600 | * freelist. | 1600 | * freelist. |
1601 | */ | 1601 | */ |
1602 | else if (args->minlen == 1 && args->alignment == 1 && | 1602 | else if (args->minlen == 1 && args->alignment == 1 && |
1603 | args->resv != XFS_AG_RESV_AGFL && | 1603 | args->resv != XFS_AG_RESV_RMAPBT && |
1604 | (be32_to_cpu(XFS_BUF_TO_AGF(args->agbp)->agf_flcount) | 1604 | (be32_to_cpu(XFS_BUF_TO_AGF(args->agbp)->agf_flcount) |
1605 | > args->minleft)) { | 1605 | > args->minleft)) { |
1606 | error = xfs_alloc_get_freelist(args->tp, args->agbp, &fbno, 0); | 1606 | error = xfs_alloc_get_freelist(args->tp, args->agbp, &fbno, 0); |
@@ -1634,7 +1634,7 @@ xfs_alloc_ag_vextent_small( | |||
1634 | * If we're feeding an AGFL block to something that | 1634 | * If we're feeding an AGFL block to something that |
1635 | * doesn't live in the free space, we need to clear | 1635 | * doesn't live in the free space, we need to clear |
1636 | * out the OWN_AG rmap and add the block back to | 1636 | * out the OWN_AG rmap and add the block back to |
1637 | * the AGFL per-AG reservation. | 1637 | * the RMAPBT per-AG reservation. |
1638 | */ | 1638 | */ |
1639 | xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_AG); | 1639 | xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_AG); |
1640 | error = xfs_rmap_free(args->tp, args->agbp, args->agno, | 1640 | error = xfs_rmap_free(args->tp, args->agbp, args->agno, |
@@ -1642,7 +1642,7 @@ xfs_alloc_ag_vextent_small( | |||
1642 | if (error) | 1642 | if (error) |
1643 | goto error0; | 1643 | goto error0; |
1644 | pag = xfs_perag_get(args->mp, args->agno); | 1644 | pag = xfs_perag_get(args->mp, args->agno); |
1645 | xfs_ag_resv_free_extent(pag, XFS_AG_RESV_AGFL, | 1645 | xfs_ag_resv_free_extent(pag, XFS_AG_RESV_RMAPBT, |
1646 | args->tp, 1); | 1646 | args->tp, 1); |
1647 | xfs_perag_put(pag); | 1647 | xfs_perag_put(pag); |
1648 | 1648 | ||
@@ -1928,14 +1928,12 @@ xfs_free_ag_extent( | |||
1928 | XFS_STATS_INC(mp, xs_freex); | 1928 | XFS_STATS_INC(mp, xs_freex); |
1929 | XFS_STATS_ADD(mp, xs_freeb, len); | 1929 | XFS_STATS_ADD(mp, xs_freeb, len); |
1930 | 1930 | ||
1931 | trace_xfs_free_extent(mp, agno, bno, len, type == XFS_AG_RESV_AGFL, | 1931 | trace_xfs_free_extent(mp, agno, bno, len, type, haveleft, haveright); |
1932 | haveleft, haveright); | ||
1933 | 1932 | ||
1934 | return 0; | 1933 | return 0; |
1935 | 1934 | ||
1936 | error0: | 1935 | error0: |
1937 | trace_xfs_free_extent(mp, agno, bno, len, type == XFS_AG_RESV_AGFL, | 1936 | trace_xfs_free_extent(mp, agno, bno, len, type, -1, -1); |
1938 | -1, -1); | ||
1939 | if (bno_cur) | 1937 | if (bno_cur) |
1940 | xfs_btree_del_cursor(bno_cur, XFS_BTREE_ERROR); | 1938 | xfs_btree_del_cursor(bno_cur, XFS_BTREE_ERROR); |
1941 | if (cnt_cur) | 1939 | if (cnt_cur) |
@@ -2172,7 +2170,7 @@ xfs_alloc_fix_freelist( | |||
2172 | if (error) | 2170 | if (error) |
2173 | goto out_agbp_relse; | 2171 | goto out_agbp_relse; |
2174 | error = xfs_free_ag_extent(tp, agbp, args->agno, bno, 1, | 2172 | error = xfs_free_ag_extent(tp, agbp, args->agno, bno, 1, |
2175 | &targs.oinfo, XFS_AG_RESV_AGFL); | 2173 | &targs.oinfo, XFS_AG_RESV_RMAPBT); |
2176 | if (error) | 2174 | if (error) |
2177 | goto out_agbp_relse; | 2175 | goto out_agbp_relse; |
2178 | bp = xfs_btree_get_bufs(mp, tp, args->agno, bno, 0); | 2176 | bp = xfs_btree_get_bufs(mp, tp, args->agno, bno, 0); |
@@ -2198,7 +2196,7 @@ xfs_alloc_fix_freelist( | |||
2198 | while (pag->pagf_flcount < need) { | 2196 | while (pag->pagf_flcount < need) { |
2199 | targs.agbno = 0; | 2197 | targs.agbno = 0; |
2200 | targs.maxlen = need - pag->pagf_flcount; | 2198 | targs.maxlen = need - pag->pagf_flcount; |
2201 | targs.resv = XFS_AG_RESV_AGFL; | 2199 | targs.resv = XFS_AG_RESV_RMAPBT; |
2202 | 2200 | ||
2203 | /* Allocate as many blocks as possible at once. */ | 2201 | /* Allocate as many blocks as possible at once. */ |
2204 | error = xfs_alloc_ag_vextent(&targs); | 2202 | error = xfs_alloc_ag_vextent(&targs); |
@@ -2879,7 +2877,7 @@ xfs_free_extent( | |||
2879 | int error; | 2877 | int error; |
2880 | 2878 | ||
2881 | ASSERT(len != 0); | 2879 | ASSERT(len != 0); |
2882 | ASSERT(type != XFS_AG_RESV_AGFL); | 2880 | ASSERT(type != XFS_AG_RESV_RMAPBT); |
2883 | 2881 | ||
2884 | if (XFS_TEST_ERROR(false, mp, | 2882 | if (XFS_TEST_ERROR(false, mp, |
2885 | XFS_ERRTAG_FREE_EXTENT)) | 2883 | XFS_ERRTAG_FREE_EXTENT)) |