]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: always defer agfl block frees
authorBrian Foster <bfoster@redhat.com>
Fri, 5 Oct 2018 02:36:12 +0000 (21:36 -0500)
committerEric Sandeen <sandeen@redhat.com>
Fri, 5 Oct 2018 02:36:12 +0000 (21:36 -0500)
Source kernel commit: c03edc9e49b6a3c1f4b27f505a04093ab333b245

The AGFL fixup code conditionally defers block frees from the free
list based on whether the current transaction has an associated
xfs_defer_ops structure. Now that dfops is embedded in the
transaction and the internal dfops is used unconditionally, this
invariant is always true.

Remove the now dead logic to check for ->t_dfops in
xfs_alloc_fix_freelist() and unconditionally defer AGFL block frees.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
libxfs/xfs_alloc.c

index ff6ab858c4a7d2d46cd089a9303cfaddcfb08de9..e6d0a702f9ff640d617f73d0eced83a439bc9bd6 100644 (file)
@@ -2319,15 +2319,8 @@ xfs_alloc_fix_freelist(
                if (error)
                        goto out_agbp_relse;
 
-               /* defer agfl frees if dfops is provided */
-               if (tp->t_dfops) {
-                       xfs_defer_agfl_block(tp, args->agno, bno, &targs.oinfo);
-               } else {
-                       error = xfs_free_agfl_block(tp, args->agno, bno, agbp,
-                                                   &targs.oinfo);
-                       if (error)
-                               goto out_agbp_relse;
-               }
+               /* defer agfl frees */
+               xfs_defer_agfl_block(tp, args->agno, bno, &targs.oinfo);
        }
 
        targs.tp = tp;