Commit bd3a88f6 authored by Darrick J. Wong's avatar Darrick J. Wong
Browse files

xfs: use xfs_defer_create_done for the relogging operation



Now that we have a helper to handle creating a log intent done item and
updating all the necessary state flags, use it to reduce boilerplate in
the ->iop_relog implementations.

Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
parent f3fd7f6f
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -500,7 +500,11 @@ xfs_defer_relog(

		trace_xfs_defer_relog_intent((*tpp)->t_mountp, dfp);
		XFS_STATS_INC((*tpp)->t_mountp, defer_relog);
		dfp->dfp_intent = xfs_trans_item_relog(dfp->dfp_intent, *tpp);

		xfs_defer_create_done(*tpp, dfp);
		dfp->dfp_intent = xfs_trans_item_relog(dfp->dfp_intent,
				dfp->dfp_done, *tpp);
		dfp->dfp_done = NULL;
	}

	if ((*tpp)->t_flags & XFS_TRANS_DIRTY)
+1 −5
Original line number Diff line number Diff line
@@ -630,9 +630,9 @@ xfs_attr_recover_work(
static struct xfs_log_item *
xfs_attri_item_relog(
	struct xfs_log_item		*intent,
	struct xfs_log_item		*done_item,
	struct xfs_trans		*tp)
{
	struct xfs_attrd_log_item	*attrdp;
	struct xfs_attri_log_item	*old_attrip;
	struct xfs_attri_log_item	*new_attrip;
	struct xfs_attri_log_format	*new_attrp;
@@ -641,10 +641,6 @@ xfs_attri_item_relog(
	old_attrip = ATTRI_ITEM(intent);
	old_attrp = &old_attrip->attri_format;

	tp->t_flags |= XFS_TRANS_DIRTY;
	attrdp = xfs_trans_get_attrd(tp, old_attrip);
	set_bit(XFS_LI_DIRTY, &attrdp->attrd_item.li_flags);

	/*
	 * Create a new log item that shares the same name/value buffer as the
	 * old log item.
+1 −5
Original line number Diff line number Diff line
@@ -572,9 +572,9 @@ xfs_bui_item_match(
static struct xfs_log_item *
xfs_bui_item_relog(
	struct xfs_log_item		*intent,
	struct xfs_log_item		*done_item,
	struct xfs_trans		*tp)
{
	struct xfs_bud_log_item		*budp;
	struct xfs_bui_log_item		*buip;
	struct xfs_map_extent		*map;
	unsigned int			count;
@@ -582,10 +582,6 @@ xfs_bui_item_relog(
	count = BUI_ITEM(intent)->bui_format.bui_nextents;
	map = BUI_ITEM(intent)->bui_format.bui_extents;

	tp->t_flags |= XFS_TRANS_DIRTY;
	budp = xfs_trans_get_bud(tp, BUI_ITEM(intent));
	set_bit(XFS_LI_DIRTY, &budp->bud_item.li_flags);

	buip = xfs_bui_init(tp->t_mountp);
	memcpy(buip->bui_format.bui_extents, map, count * sizeof(*map));
	atomic_set(&buip->bui_next_extent, count);
+2 −4
Original line number Diff line number Diff line
@@ -691,9 +691,10 @@ xfs_efi_item_match(
static struct xfs_log_item *
xfs_efi_item_relog(
	struct xfs_log_item		*intent,
	struct xfs_log_item		*done_item,
	struct xfs_trans		*tp)
{
	struct xfs_efd_log_item		*efdp;
	struct xfs_efd_log_item		*efdp = EFD_ITEM(done_item);
	struct xfs_efi_log_item		*efip;
	struct xfs_extent		*extp;
	unsigned int			count;
@@ -701,11 +702,8 @@ xfs_efi_item_relog(
	count = EFI_ITEM(intent)->efi_format.efi_nextents;
	extp = EFI_ITEM(intent)->efi_format.efi_extents;

	tp->t_flags |= XFS_TRANS_DIRTY;
	efdp = xfs_trans_get_efd(tp, EFI_ITEM(intent), count);
	efdp->efd_next_extent = count;
	memcpy(efdp->efd_format.efd_extents, extp, count * sizeof(*extp));
	set_bit(XFS_LI_DIRTY, &efdp->efd_item.li_flags);

	efip = xfs_efi_init(tp->t_mountp, count);
	memcpy(efip->efi_format.efi_extents, extp, count * sizeof(*extp));
+1 −5
Original line number Diff line number Diff line
@@ -533,9 +533,9 @@ xfs_cui_item_match(
static struct xfs_log_item *
xfs_cui_item_relog(
	struct xfs_log_item		*intent,
	struct xfs_log_item		*done_item,
	struct xfs_trans		*tp)
{
	struct xfs_cud_log_item		*cudp;
	struct xfs_cui_log_item		*cuip;
	struct xfs_phys_extent		*pmap;
	unsigned int			count;
@@ -543,10 +543,6 @@ xfs_cui_item_relog(
	count = CUI_ITEM(intent)->cui_format.cui_nextents;
	pmap = CUI_ITEM(intent)->cui_format.cui_extents;

	tp->t_flags |= XFS_TRANS_DIRTY;
	cudp = xfs_trans_get_cud(tp, CUI_ITEM(intent));
	set_bit(XFS_LI_DIRTY, &cudp->cud_item.li_flags);

	cuip = xfs_cui_init(tp->t_mountp, count);
	memcpy(cuip->cui_format.cui_extents, pmap, count * sizeof(*pmap));
	atomic_set(&cuip->cui_next_extent, count);
Loading