All of lore.kernel.org
 help / color / mirror / Atom feed
From: Brian Foster <bfoster@redhat.com>
To: Christoph Hellwig <hch@lst.de>
Cc: linux-xfs@vger.kernel.org
Subject: Re: [PATCH 06/11] xfs: merge the ->diff_items defer op into ->create_intent
Date: Thu, 30 Apr 2020 07:04:10 -0400	[thread overview]
Message-ID: <20200430110410.GF5349@bfoster> (raw)
In-Reply-To: <20200429150511.2191150-7-hch@lst.de>

On Wed, Apr 29, 2020 at 05:05:06PM +0200, Christoph Hellwig wrote:
> This avoids a per-item indirect call, and also simplifies the interface
> a bit.
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---

Reviewed-by: Brian Foster <bfoster@redhat.com>

>  fs/xfs/libxfs/xfs_defer.c  | 5 +----
>  fs/xfs/libxfs/xfs_defer.h  | 3 +--
>  fs/xfs/xfs_bmap_item.c     | 9 ++++++---
>  fs/xfs/xfs_extfree_item.c  | 7 ++++---
>  fs/xfs/xfs_refcount_item.c | 6 ++++--
>  fs/xfs/xfs_rmap_item.c     | 6 ++++--
>  6 files changed, 20 insertions(+), 16 deletions(-)
> 
> diff --git a/fs/xfs/libxfs/xfs_defer.c b/fs/xfs/libxfs/xfs_defer.c
> index 56d1357f9d137..5402a7bf31108 100644
> --- a/fs/xfs/libxfs/xfs_defer.c
> +++ b/fs/xfs/libxfs/xfs_defer.c
> @@ -186,11 +186,8 @@ xfs_defer_create_intent(
>  {
>  	const struct xfs_defer_op_type	*ops = defer_op_types[dfp->dfp_type];
>  
> -	if (sort)
> -		list_sort(tp->t_mountp, &dfp->dfp_work, ops->diff_items);
> -
>  	dfp->dfp_intent = ops->create_intent(tp, &dfp->dfp_work,
> -			dfp->dfp_count);
> +			dfp->dfp_count, sort);
>  }
>  
>  /*
> diff --git a/fs/xfs/libxfs/xfs_defer.h b/fs/xfs/libxfs/xfs_defer.h
> index d6a4577c25b05..660f5c3821d6b 100644
> --- a/fs/xfs/libxfs/xfs_defer.h
> +++ b/fs/xfs/libxfs/xfs_defer.h
> @@ -49,9 +49,8 @@ struct xfs_defer_op_type {
>  			void **);
>  	void (*finish_cleanup)(struct xfs_trans *, void *, int);
>  	void (*cancel_item)(struct list_head *);
> -	int (*diff_items)(void *, struct list_head *, struct list_head *);
>  	void *(*create_intent)(struct xfs_trans *tp, struct list_head *items,
> -			unsigned int count);
> +			unsigned int count, bool sort);
>  	unsigned int		max_items;
>  };
>  
> diff --git a/fs/xfs/xfs_bmap_item.c b/fs/xfs/xfs_bmap_item.c
> index dea97956d78d6..f9505c5873bd2 100644
> --- a/fs/xfs/xfs_bmap_item.c
> +++ b/fs/xfs/xfs_bmap_item.c
> @@ -334,14 +334,18 @@ STATIC void *
>  xfs_bmap_update_create_intent(
>  	struct xfs_trans		*tp,
>  	struct list_head		*items,
> -	unsigned int			count)
> +	unsigned int			count,
> +	bool				sort)
>  {
> -	struct xfs_bui_log_item		*buip = xfs_bui_init(tp->t_mountp);
> +	struct xfs_mount		*mp = tp->t_mountp;
> +	struct xfs_bui_log_item		*buip = xfs_bui_init(mp);
>  	struct xfs_bmap_intent		*bmap;
>  
>  	ASSERT(count == XFS_BUI_MAX_FAST_EXTENTS);
>  
>  	xfs_trans_add_item(tp, &buip->bui_item);
> +	if (sort)
> +		list_sort(mp, items, xfs_bmap_update_diff_items);
>  	list_for_each_entry(bmap, items, bi_list)
>  		xfs_bmap_update_log_item(tp, buip, bmap);
>  	return buip;
> @@ -408,7 +412,6 @@ xfs_bmap_update_cancel_item(
>  
>  const struct xfs_defer_op_type xfs_bmap_update_defer_type = {
>  	.max_items	= XFS_BUI_MAX_FAST_EXTENTS,
> -	.diff_items	= xfs_bmap_update_diff_items,
>  	.create_intent	= xfs_bmap_update_create_intent,
>  	.abort_intent	= xfs_bmap_update_abort_intent,
>  	.create_done	= xfs_bmap_update_create_done,
> diff --git a/fs/xfs/xfs_extfree_item.c b/fs/xfs/xfs_extfree_item.c
> index cb22c7ad31817..3e10eba9d22bd 100644
> --- a/fs/xfs/xfs_extfree_item.c
> +++ b/fs/xfs/xfs_extfree_item.c
> @@ -441,7 +441,8 @@ STATIC void *
>  xfs_extent_free_create_intent(
>  	struct xfs_trans		*tp,
>  	struct list_head		*items,
> -	unsigned int			count)
> +	unsigned int			count,
> +	bool				sort)
>  {
>  	struct xfs_mount		*mp = tp->t_mountp;
>  	struct xfs_efi_log_item		*efip = xfs_efi_init(mp, count);
> @@ -450,6 +451,8 @@ xfs_extent_free_create_intent(
>  	ASSERT(count > 0);
>  
>  	xfs_trans_add_item(tp, &efip->efi_item);
> +	if (sort)
> +		list_sort(mp, items, xfs_extent_free_diff_items);
>  	list_for_each_entry(free, items, xefi_list)
>  		xfs_extent_free_log_item(tp, efip, free);
>  	return efip;
> @@ -506,7 +509,6 @@ xfs_extent_free_cancel_item(
>  
>  const struct xfs_defer_op_type xfs_extent_free_defer_type = {
>  	.max_items	= XFS_EFI_MAX_FAST_EXTENTS,
> -	.diff_items	= xfs_extent_free_diff_items,
>  	.create_intent	= xfs_extent_free_create_intent,
>  	.abort_intent	= xfs_extent_free_abort_intent,
>  	.create_done	= xfs_extent_free_create_done,
> @@ -571,7 +573,6 @@ xfs_agfl_free_finish_item(
>  /* sub-type with special handling for AGFL deferred frees */
>  const struct xfs_defer_op_type xfs_agfl_free_defer_type = {
>  	.max_items	= XFS_EFI_MAX_FAST_EXTENTS,
> -	.diff_items	= xfs_extent_free_diff_items,
>  	.create_intent	= xfs_extent_free_create_intent,
>  	.abort_intent	= xfs_extent_free_abort_intent,
>  	.create_done	= xfs_extent_free_create_done,
> diff --git a/fs/xfs/xfs_refcount_item.c b/fs/xfs/xfs_refcount_item.c
> index 325d49fc0406c..efc32ec55afdf 100644
> --- a/fs/xfs/xfs_refcount_item.c
> +++ b/fs/xfs/xfs_refcount_item.c
> @@ -333,7 +333,8 @@ STATIC void *
>  xfs_refcount_update_create_intent(
>  	struct xfs_trans		*tp,
>  	struct list_head		*items,
> -	unsigned int			count)
> +	unsigned int			count,
> +	bool				sort)
>  {
>  	struct xfs_mount		*mp = tp->t_mountp;
>  	struct xfs_cui_log_item		*cuip = xfs_cui_init(mp, count);
> @@ -342,6 +343,8 @@ xfs_refcount_update_create_intent(
>  	ASSERT(count > 0);
>  
>  	xfs_trans_add_item(tp, &cuip->cui_item);
> +	if (sort)
> +		list_sort(mp, items, xfs_refcount_update_diff_items);
>  	list_for_each_entry(refc, items, ri_list)
>  		xfs_refcount_update_log_item(tp, cuip, refc);
>  	return cuip;
> @@ -422,7 +425,6 @@ xfs_refcount_update_cancel_item(
>  
>  const struct xfs_defer_op_type xfs_refcount_update_defer_type = {
>  	.max_items	= XFS_CUI_MAX_FAST_EXTENTS,
> -	.diff_items	= xfs_refcount_update_diff_items,
>  	.create_intent	= xfs_refcount_update_create_intent,
>  	.abort_intent	= xfs_refcount_update_abort_intent,
>  	.create_done	= xfs_refcount_update_create_done,
> diff --git a/fs/xfs/xfs_rmap_item.c b/fs/xfs/xfs_rmap_item.c
> index 842d817f5168c..40567cf0c216e 100644
> --- a/fs/xfs/xfs_rmap_item.c
> +++ b/fs/xfs/xfs_rmap_item.c
> @@ -385,7 +385,8 @@ STATIC void *
>  xfs_rmap_update_create_intent(
>  	struct xfs_trans		*tp,
>  	struct list_head		*items,
> -	unsigned int			count)
> +	unsigned int			count,
> +	bool				sort)
>  {
>  	struct xfs_mount		*mp = tp->t_mountp;
>  	struct xfs_rui_log_item		*ruip = xfs_rui_init(mp, count);
> @@ -394,6 +395,8 @@ xfs_rmap_update_create_intent(
>  	ASSERT(count > 0);
>  
>  	xfs_trans_add_item(tp, &ruip->rui_item);
> +	if (sort)
> +		list_sort(mp, items, xfs_rmap_update_diff_items);
>  	list_for_each_entry(rmap, items, ri_list)
>  		xfs_rmap_update_log_item(tp, ruip, rmap);
>  	return ruip;
> @@ -466,7 +469,6 @@ xfs_rmap_update_cancel_item(
>  
>  const struct xfs_defer_op_type xfs_rmap_update_defer_type = {
>  	.max_items	= XFS_RUI_MAX_FAST_EXTENTS,
> -	.diff_items	= xfs_rmap_update_diff_items,
>  	.create_intent	= xfs_rmap_update_create_intent,
>  	.abort_intent	= xfs_rmap_update_abort_intent,
>  	.create_done	= xfs_rmap_update_create_done,
> -- 
> 2.26.2
> 


  reply	other threads:[~2020-04-30 11:04 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-29 15:05 deferred operations cleanup Christoph Hellwig
2020-04-29 15:05 ` [PATCH 01/11] xfs: remove the xfs_efi_log_item_t typedef Christoph Hellwig
2020-04-30 11:02   ` Brian Foster
2020-04-29 15:05 ` [PATCH 02/11] xfs: remove the xfs_efd_log_item_t typedef Christoph Hellwig
2020-04-30 11:03   ` Brian Foster
2020-04-29 15:05 ` [PATCH 03/11] xfs: remove the xfs_inode_log_item_t typedef Christoph Hellwig
2020-04-30 11:03   ` Brian Foster
2020-04-29 15:05 ` [PATCH 04/11] xfs: factor out a xfs_defer_create_intent helper Christoph Hellwig
2020-04-30 11:03   ` Brian Foster
2020-04-29 15:05 ` [PATCH 05/11] xfs: merge the ->log_item defer op into ->create_intent Christoph Hellwig
2020-04-30 11:04   ` Brian Foster
2020-04-29 15:05 ` [PATCH 06/11] xfs: merge the ->diff_items " Christoph Hellwig
2020-04-30 11:04   ` Brian Foster [this message]
2020-04-29 15:05 ` [PATCH 07/11] xfs: turn dfp_intent into a xfs_log_item Christoph Hellwig
2020-04-30 11:04   ` Brian Foster
2020-04-29 15:05 ` [PATCH 08/11] xfs: refactor xfs_defer_finish_noroll Christoph Hellwig
2020-04-30 11:04   ` Brian Foster
2020-04-29 15:05 ` [PATCH 09/11] xfs: turn dfp_done into a xfs_log_item Christoph Hellwig
2020-04-30 11:04   ` Brian Foster
2020-04-29 15:05 ` [PATCH 10/11] xfs: use a xfs_btree_cur for the ->finish_cleanup state Christoph Hellwig
2020-04-30 11:04   ` Brian Foster
2020-04-29 15:05 ` [PATCH 11/11] xfs: spell out the parameter name for ->cancel_item Christoph Hellwig
2020-04-30 11:04   ` Brian Foster
2020-04-30 15:35 ` deferred operations cleanup Darrick J. Wong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200430110410.GF5349@bfoster \
    --to=bfoster@redhat.com \
    --cc=hch@lst.de \
    --cc=linux-xfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.