]> git.ipfire.org Git - people/ms/linux.git/blobdiff - fs/xfs/xfs_extfree_item.c
Merge branch 'for-6.0/dax' into libnvdimm-fixes
[people/ms/linux.git] / fs / xfs / xfs_extfree_item.c
index 765be054dffe6cbcaa37a940ca6bda23c6f6b8fa..27ccfcd82f042420f197fa32c4857f49a9bf179e 100644 (file)
@@ -11,6 +11,7 @@
 #include "xfs_bit.h"
 #include "xfs_shared.h"
 #include "xfs_mount.h"
+#include "xfs_ag.h"
 #include "xfs_defer.h"
 #include "xfs_trans.h"
 #include "xfs_trans_priv.h"
@@ -187,12 +188,12 @@ xfs_efi_copy_format(xfs_log_iovec_t *buf, xfs_efi_log_format_t *dst_efi_fmt)
 {
        xfs_efi_log_format_t *src_efi_fmt = buf->i_addr;
        uint i;
-       uint len = sizeof(xfs_efi_log_format_t) + 
-               (src_efi_fmt->efi_nextents - 1) * sizeof(xfs_extent_t);  
-       uint len32 = sizeof(xfs_efi_log_format_32_t) + 
-               (src_efi_fmt->efi_nextents - 1) * sizeof(xfs_extent_32_t);  
-       uint len64 = sizeof(xfs_efi_log_format_64_t) + 
-               (src_efi_fmt->efi_nextents - 1) * sizeof(xfs_extent_64_t);  
+       uint len = sizeof(xfs_efi_log_format_t) +
+               (src_efi_fmt->efi_nextents - 1) * sizeof(xfs_extent_t);
+       uint len32 = sizeof(xfs_efi_log_format_32_t) +
+               (src_efi_fmt->efi_nextents - 1) * sizeof(xfs_extent_32_t);
+       uint len64 = sizeof(xfs_efi_log_format_64_t) +
+               (src_efi_fmt->efi_nextents - 1) * sizeof(xfs_extent_64_t);
 
        if (buf->i_len == len) {
                memcpy((char *)dst_efi_fmt, (char*)src_efi_fmt, len);
@@ -551,6 +552,7 @@ xfs_agfl_free_finish_item(
        xfs_agnumber_t                  agno;
        xfs_agblock_t                   agbno;
        uint                            next_extent;
+       struct xfs_perag                *pag;
 
        free = container_of(item, struct xfs_extent_free_item, xefi_list);
        ASSERT(free->xefi_blockcount == 1);
@@ -560,9 +562,11 @@ xfs_agfl_free_finish_item(
 
        trace_xfs_agfl_free_deferred(mp, agno, 0, agbno, free->xefi_blockcount);
 
-       error = xfs_alloc_read_agf(mp, tp, agno, 0, &agbp);
+       pag = xfs_perag_get(mp, agno);
+       error = xfs_alloc_read_agf(pag, tp, 0, &agbp);
        if (!error)
                error = xfs_free_agfl_block(tp, agno, agbno, agbp, &oinfo);
+       xfs_perag_put(pag);
 
        /*
         * Mark the transaction dirty, even on error. This ensures the