Skip to content

Commit 81927e6

Browse files
Christoph HellwigDarrick J. Wong
authored andcommitted
xfs: factor out a xfs_efd_add_extent helper
Factor out a helper to add an extent to and EFD instead of duplicating the logic in two places. Signed-off-by: Christoph Hellwig <[email protected]> Reviewed-by: Darrick J. Wong <[email protected]> Signed-off-by: Darrick J. Wong <[email protected]>
1 parent 61665fa commit 81927e6

File tree

1 file changed

+18
-19
lines changed

1 file changed

+18
-19
lines changed

fs/xfs/xfs_extfree_item.c

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,22 @@ xfs_efd_from_efi(
336336
efdp->efd_next_extent = efip->efi_format.efi_nextents;
337337
}
338338

339+
static void
340+
xfs_efd_add_extent(
341+
struct xfs_efd_log_item *efdp,
342+
struct xfs_extent_free_item *xefi)
343+
{
344+
struct xfs_extent *extp;
345+
346+
ASSERT(efdp->efd_next_extent < efdp->efd_format.efd_nextents);
347+
348+
extp = &efdp->efd_format.efd_extents[efdp->efd_next_extent];
349+
extp->ext_start = xefi->xefi_startblock;
350+
extp->ext_len = xefi->xefi_blockcount;
351+
352+
efdp->efd_next_extent++;
353+
}
354+
339355
/* Sort bmap items by AG. */
340356
static int
341357
xfs_extent_free_diff_items(
@@ -460,8 +476,6 @@ xfs_extent_free_finish_item(
460476
struct xfs_extent_free_item *xefi = xefi_entry(item);
461477
struct xfs_efd_log_item *efdp = EFD_ITEM(done);
462478
struct xfs_mount *mp = tp->t_mountp;
463-
struct xfs_extent *extp;
464-
uint next_extent;
465479
xfs_agblock_t agbno;
466480
int error = 0;
467481

@@ -490,14 +504,7 @@ xfs_extent_free_finish_item(
490504
return error;
491505
}
492506

493-
/* Add the work we finished to the EFD, even though nobody uses that */
494-
next_extent = efdp->efd_next_extent;
495-
ASSERT(next_extent < efdp->efd_format.efd_nextents);
496-
extp = &(efdp->efd_format.efd_extents[next_extent]);
497-
extp->ext_start = xefi->xefi_startblock;
498-
extp->ext_len = xefi->xefi_blockcount;
499-
efdp->efd_next_extent++;
500-
507+
xfs_efd_add_extent(efdp, xefi);
501508
xfs_extent_free_cancel_item(item);
502509
return error;
503510
}
@@ -525,11 +532,9 @@ xfs_agfl_free_finish_item(
525532
struct xfs_mount *mp = tp->t_mountp;
526533
struct xfs_efd_log_item *efdp = EFD_ITEM(done);
527534
struct xfs_extent_free_item *xefi = xefi_entry(item);
528-
struct xfs_extent *extp;
529535
struct xfs_buf *agbp;
530536
int error;
531537
xfs_agblock_t agbno;
532-
uint next_extent;
533538

534539
ASSERT(xefi->xefi_blockcount == 1);
535540
agbno = XFS_FSB_TO_AGBNO(mp, xefi->xefi_startblock);
@@ -542,13 +547,7 @@ xfs_agfl_free_finish_item(
542547
error = xfs_free_ag_extent(tp, agbp, xefi->xefi_pag->pag_agno,
543548
agbno, 1, &oinfo, XFS_AG_RESV_AGFL);
544549

545-
next_extent = efdp->efd_next_extent;
546-
ASSERT(next_extent < efdp->efd_format.efd_nextents);
547-
extp = &(efdp->efd_format.efd_extents[next_extent]);
548-
extp->ext_start = xefi->xefi_startblock;
549-
extp->ext_len = xefi->xefi_blockcount;
550-
efdp->efd_next_extent++;
551-
550+
xfs_efd_add_extent(efdp, xefi);
552551
xfs_extent_free_cancel_item(&xefi->xefi_list);
553552
return error;
554553
}

0 commit comments

Comments
 (0)