diff options
Diffstat (limited to 'fs/xfs/libxfs/xfs_alloc.c')
-rw-r--r-- | fs/xfs/libxfs/xfs_alloc.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/fs/xfs/libxfs/xfs_alloc.c b/fs/xfs/libxfs/xfs_alloc.c index 776ae2f325d1..05b5243d89f6 100644 --- a/fs/xfs/libxfs/xfs_alloc.c +++ b/fs/xfs/libxfs/xfs_alloc.c | |||
@@ -1582,6 +1582,7 @@ xfs_alloc_ag_vextent_small( | |||
1582 | xfs_extlen_t *flenp, /* result length */ | 1582 | xfs_extlen_t *flenp, /* result length */ |
1583 | int *stat) /* status: 0-freelist, 1-normal/none */ | 1583 | int *stat) /* status: 0-freelist, 1-normal/none */ |
1584 | { | 1584 | { |
1585 | struct xfs_owner_info oinfo; | ||
1585 | int error; | 1586 | int error; |
1586 | xfs_agblock_t fbno; | 1587 | xfs_agblock_t fbno; |
1587 | xfs_extlen_t flen; | 1588 | xfs_extlen_t flen; |
@@ -1624,6 +1625,18 @@ xfs_alloc_ag_vextent_small( | |||
1624 | error0); | 1625 | error0); |
1625 | args->wasfromfl = 1; | 1626 | args->wasfromfl = 1; |
1626 | trace_xfs_alloc_small_freelist(args); | 1627 | trace_xfs_alloc_small_freelist(args); |
1628 | |||
1629 | /* | ||
1630 | * If we're feeding an AGFL block to something that | ||
1631 | * doesn't live in the free space, we need to clear | ||
1632 | * out the OWN_AG rmap. | ||
1633 | */ | ||
1634 | xfs_rmap_ag_owner(&oinfo, XFS_RMAP_OWN_AG); | ||
1635 | error = xfs_rmap_free(args->tp, args->agbp, args->agno, | ||
1636 | fbno, 1, &oinfo); | ||
1637 | if (error) | ||
1638 | goto error0; | ||
1639 | |||
1627 | *stat = 0; | 1640 | *stat = 0; |
1628 | return 0; | 1641 | return 0; |
1629 | } | 1642 | } |
@@ -2264,6 +2277,9 @@ xfs_alloc_log_agf( | |||
2264 | offsetof(xfs_agf_t, agf_longest), | 2277 | offsetof(xfs_agf_t, agf_longest), |
2265 | offsetof(xfs_agf_t, agf_btreeblks), | 2278 | offsetof(xfs_agf_t, agf_btreeblks), |
2266 | offsetof(xfs_agf_t, agf_uuid), | 2279 | offsetof(xfs_agf_t, agf_uuid), |
2280 | offsetof(xfs_agf_t, agf_rmap_blocks), | ||
2281 | /* needed so that we don't log the whole rest of the structure: */ | ||
2282 | offsetof(xfs_agf_t, agf_spare64), | ||
2267 | sizeof(xfs_agf_t) | 2283 | sizeof(xfs_agf_t) |
2268 | }; | 2284 | }; |
2269 | 2285 | ||