xfs: merge xfs_efd_init into xfs_trans_get_efd
authorChristoph Hellwig <hch@lst.de>
Sat, 29 Jun 2019 02:27:35 +0000 (19:27 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Sat, 29 Jun 2019 02:27:35 +0000 (19:27 -0700)
There is no good reason to keep these two functions separate.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
fs/xfs/xfs_extfree_item.c
fs/xfs/xfs_extfree_item.h
fs/xfs/xfs_trans_extfree.c

index 2c37994..b4a245d 100644 (file)
@@ -313,32 +313,35 @@ static const struct xfs_item_ops xfs_efd_item_ops = {
 };
 
 /*
- * Allocate and initialize an efd item with the given number of extents.
+ * Allocate an "extent free done" log item that will hold nextents worth of
+ * extents.  The caller must use all nextents extents, because we are not
+ * flexible about this at all.
  */
 struct xfs_efd_log_item *
-xfs_efd_init(
-       struct xfs_mount        *mp,
-       struct xfs_efi_log_item *efip,
-       uint                    nextents)
-
+xfs_trans_get_efd(
+       struct xfs_trans                *tp,
+       struct xfs_efi_log_item         *efip,
+       unsigned int                    nextents)
 {
-       struct xfs_efd_log_item *efdp;
-       uint                    size;
+       struct xfs_efd_log_item         *efdp;
 
        ASSERT(nextents > 0);
+
        if (nextents > XFS_EFD_MAX_FAST_EXTENTS) {
-               size = (uint)(sizeof(xfs_efd_log_item_t) +
-                       ((nextents - 1) * sizeof(xfs_extent_t)));
-               efdp = kmem_zalloc(size, KM_SLEEP);
+               efdp = kmem_zalloc(sizeof(struct xfs_efd_log_item) +
+                               (nextents - 1) * sizeof(struct xfs_extent),
+                               KM_SLEEP);
        } else {
                efdp = kmem_zone_zalloc(xfs_efd_zone, KM_SLEEP);
        }
 
-       xfs_log_item_init(mp, &efdp->efd_item, XFS_LI_EFD, &xfs_efd_item_ops);
+       xfs_log_item_init(tp->t_mountp, &efdp->efd_item, XFS_LI_EFD,
+                         &xfs_efd_item_ops);
        efdp->efd_efip = efip;
        efdp->efd_format.efd_nextents = nextents;
        efdp->efd_format.efd_efi_id = efip->efi_format.efi_id;
 
+       xfs_trans_add_item(tp, &efdp->efd_item);
        return efdp;
 }
 
index b0dc4eb..16aaab0 100644 (file)
@@ -79,8 +79,6 @@ extern struct kmem_zone       *xfs_efi_zone;
 extern struct kmem_zone        *xfs_efd_zone;
 
 xfs_efi_log_item_t     *xfs_efi_init(struct xfs_mount *, uint);
-xfs_efd_log_item_t     *xfs_efd_init(struct xfs_mount *, xfs_efi_log_item_t *,
-                                     uint);
 int                    xfs_efi_copy_format(xfs_log_iovec_t *buf,
                                            xfs_efi_log_format_t *dst_efi_fmt);
 void                   xfs_efi_item_free(xfs_efi_log_item_t *);
index 8ee7a3f..20ab1c9 100644 (file)
 #include "xfs_trace.h"
 
 /*
- * This routine is called to allocate an "extent free done"
- * log item that will hold nextents worth of extents.  The
- * caller must use all nextents extents, because we are not
- * flexible about this at all.
- */
-struct xfs_efd_log_item *
-xfs_trans_get_efd(struct xfs_trans             *tp,
-                 struct xfs_efi_log_item       *efip,
-                 uint                          nextents)
-{
-       struct xfs_efd_log_item                 *efdp;
-
-       ASSERT(tp != NULL);
-       ASSERT(nextents > 0);
-
-       efdp = xfs_efd_init(tp->t_mountp, efip, nextents);
-       ASSERT(efdp != NULL);
-
-       /*
-        * Get a log_item_desc to point at the new item.
-        */
-       xfs_trans_add_item(tp, &efdp->efd_item);
-       return efdp;
-}
-
-/*
  * Free an extent and log it to the EFD. Note that the transaction is marked
  * dirty regardless of whether the extent free succeeds or fails to support the
  * EFI/EFD lifecycle rules.