diff --git a/fs/xfs/libxfs/xfs_alloc.c b/fs/xfs/libxfs/xfs_alloc.c
index a0dc2999778d3093e0bd417eb58197a9c4682352..776ae2f325d1e4f534540206a30a138b01c1ea46 100644
--- a/fs/xfs/libxfs/xfs_alloc.c
+++ b/fs/xfs/libxfs/xfs_alloc.c
@@ -2819,8 +2819,6 @@ xfs_free_extent(
 
 	ASSERT(len != 0);
 
-	trace_xfs_bmap_free_deferred(mp, agno, 0, agbno, len);
-
 	if (XFS_TEST_ERROR(false, mp,
 			XFS_ERRTAG_FREE_EXTENT,
 			XFS_RANDOM_FREE_EXTENT))
diff --git a/fs/xfs/xfs_trans_extfree.c b/fs/xfs/xfs_trans_extfree.c
index 7d1e84c1b848d1f21185da0a8b645574328a3e2b..459ddec137a48a2aec19d57a739e0cdbef44ae70 100644
--- a/fs/xfs/xfs_trans_extfree.c
+++ b/fs/xfs/xfs_trans_extfree.c
@@ -21,6 +21,7 @@
 #include "xfs_format.h"
 #include "xfs_log_format.h"
 #include "xfs_trans_resv.h"
+#include "xfs_bit.h"
 #include "xfs_mount.h"
 #include "xfs_defer.h"
 #include "xfs_trans.h"
@@ -28,6 +29,7 @@
 #include "xfs_extfree_item.h"
 #include "xfs_alloc.h"
 #include "xfs_bmap.h"
+#include "xfs_trace.h"
 
 /*
  * This routine is called to allocate an "extent free done"
@@ -68,10 +70,15 @@ xfs_trans_free_extent(
 	xfs_extlen_t		ext_len,
 	struct xfs_owner_info	*oinfo)
 {
+	struct xfs_mount	*mp = tp->t_mountp;
 	uint			next_extent;
+	xfs_agnumber_t		agno = XFS_FSB_TO_AGNO(mp, start_block);
+	xfs_agblock_t		agbno = XFS_FSB_TO_AGBNO(mp, start_block);
 	struct xfs_extent	*extp;
 	int			error;
 
+	trace_xfs_bmap_free_deferred(tp->t_mountp, agno, 0, agbno, ext_len);
+
 	error = xfs_free_extent(tp, start_block, ext_len, oinfo);
 
 	/*