From: Brian Foster <bfoster@redhat.com>
To: Christoph Hellwig <hch@lst.de>
Cc: linux-xfs@vger.kernel.org
Subject: Re: [PATCH 07/11] xfs: turn dfp_intent into a xfs_log_item
Date: Thu, 30 Apr 2020 07:04:17 -0400 [thread overview]
Message-ID: <20200430110417.GG5349@bfoster> (raw)
In-Reply-To: <20200429150511.2191150-8-hch@lst.de>
On Wed, Apr 29, 2020 at 05:05:07PM +0200, Christoph Hellwig wrote:
> All defer op instance place their own extension of the log item into
> the dfp_intent field. Replace that with a xfs_log_item to improve type
> safety and make the code easier to follow.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
Reviewed-by: Brian Foster <bfoster@redhat.com>
> fs/xfs/libxfs/xfs_defer.h | 11 ++++++-----
> fs/xfs/xfs_bmap_item.c | 12 ++++++------
> fs/xfs/xfs_extfree_item.c | 12 ++++++------
> fs/xfs/xfs_refcount_item.c | 12 ++++++------
> fs/xfs/xfs_rmap_item.c | 12 ++++++------
> 5 files changed, 30 insertions(+), 29 deletions(-)
>
> diff --git a/fs/xfs/libxfs/xfs_defer.h b/fs/xfs/libxfs/xfs_defer.h
> index 660f5c3821d6b..7b6cc3808a91b 100644
> --- a/fs/xfs/libxfs/xfs_defer.h
> +++ b/fs/xfs/libxfs/xfs_defer.h
> @@ -28,7 +28,7 @@ enum xfs_defer_ops_type {
> struct xfs_defer_pending {
> struct list_head dfp_list; /* pending items */
> struct list_head dfp_work; /* work items */
> - void *dfp_intent; /* log intent item */
> + struct xfs_log_item *dfp_intent; /* log intent item */
> void *dfp_done; /* log done item */
> unsigned int dfp_count; /* # extent items */
> enum xfs_defer_ops_type dfp_type;
> @@ -43,14 +43,15 @@ void xfs_defer_move(struct xfs_trans *dtp, struct xfs_trans *stp);
>
> /* Description of a deferred type. */
> struct xfs_defer_op_type {
> - void (*abort_intent)(void *);
> - void *(*create_done)(struct xfs_trans *, void *, unsigned int);
> + struct xfs_log_item *(*create_intent)(struct xfs_trans *tp,
> + struct list_head *items, unsigned int count, bool sort);
> + void (*abort_intent)(struct xfs_log_item *intent);
> + void *(*create_done)(struct xfs_trans *tp, struct xfs_log_item *intent,
> + unsigned int count);
> int (*finish_item)(struct xfs_trans *, struct list_head *, void *,
> void **);
> void (*finish_cleanup)(struct xfs_trans *, void *, int);
> void (*cancel_item)(struct list_head *);
> - void *(*create_intent)(struct xfs_trans *tp, struct list_head *items,
> - 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 f9505c5873bd2..7b2153fca2d9e 100644
> --- a/fs/xfs/xfs_bmap_item.c
> +++ b/fs/xfs/xfs_bmap_item.c
> @@ -330,7 +330,7 @@ xfs_bmap_update_log_item(
> bmap->bi_bmap.br_state);
> }
>
> -STATIC void *
> +static struct xfs_log_item *
> xfs_bmap_update_create_intent(
> struct xfs_trans *tp,
> struct list_head *items,
> @@ -348,17 +348,17 @@ xfs_bmap_update_create_intent(
> 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;
> + return &buip->bui_item;
> }
>
> /* Get an BUD so we can process all the deferred rmap updates. */
> STATIC void *
> xfs_bmap_update_create_done(
> struct xfs_trans *tp,
> - void *intent,
> + struct xfs_log_item *intent,
> unsigned int count)
> {
> - return xfs_trans_get_bud(tp, intent);
> + return xfs_trans_get_bud(tp, BUI_ITEM(intent));
> }
>
> /* Process a deferred rmap update. */
> @@ -394,9 +394,9 @@ xfs_bmap_update_finish_item(
> /* Abort all pending BUIs. */
> STATIC void
> xfs_bmap_update_abort_intent(
> - void *intent)
> + struct xfs_log_item *intent)
> {
> - xfs_bui_release(intent);
> + xfs_bui_release(BUI_ITEM(intent));
> }
>
> /* Cancel a deferred rmap update. */
> diff --git a/fs/xfs/xfs_extfree_item.c b/fs/xfs/xfs_extfree_item.c
> index 3e10eba9d22bd..0453b6f2b1d69 100644
> --- a/fs/xfs/xfs_extfree_item.c
> +++ b/fs/xfs/xfs_extfree_item.c
> @@ -437,7 +437,7 @@ xfs_extent_free_log_item(
> extp->ext_len = free->xefi_blockcount;
> }
>
> -STATIC void *
> +static struct xfs_log_item *
> xfs_extent_free_create_intent(
> struct xfs_trans *tp,
> struct list_head *items,
> @@ -455,17 +455,17 @@ xfs_extent_free_create_intent(
> 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;
> + return &efip->efi_item;
> }
>
> /* Get an EFD so we can process all the free extents. */
> STATIC void *
> xfs_extent_free_create_done(
> struct xfs_trans *tp,
> - void *intent,
> + struct xfs_log_item *intent,
> unsigned int count)
> {
> - return xfs_trans_get_efd(tp, intent, count);
> + return xfs_trans_get_efd(tp, EFI_ITEM(intent), count);
> }
>
> /* Process a free extent. */
> @@ -491,9 +491,9 @@ xfs_extent_free_finish_item(
> /* Abort all pending EFIs. */
> STATIC void
> xfs_extent_free_abort_intent(
> - void *intent)
> + struct xfs_log_item *intent)
> {
> - xfs_efi_release(intent);
> + xfs_efi_release(EFI_ITEM(intent));
> }
>
> /* Cancel a free extent. */
> diff --git a/fs/xfs/xfs_refcount_item.c b/fs/xfs/xfs_refcount_item.c
> index efc32ec55afdf..e8d3278e066e3 100644
> --- a/fs/xfs/xfs_refcount_item.c
> +++ b/fs/xfs/xfs_refcount_item.c
> @@ -329,7 +329,7 @@ xfs_refcount_update_log_item(
> xfs_trans_set_refcount_flags(ext, refc->ri_type);
> }
>
> -STATIC void *
> +static struct xfs_log_item *
> xfs_refcount_update_create_intent(
> struct xfs_trans *tp,
> struct list_head *items,
> @@ -347,17 +347,17 @@ xfs_refcount_update_create_intent(
> 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;
> + return &cuip->cui_item;
> }
>
> /* Get an CUD so we can process all the deferred refcount updates. */
> STATIC void *
> xfs_refcount_update_create_done(
> struct xfs_trans *tp,
> - void *intent,
> + struct xfs_log_item *intent,
> unsigned int count)
> {
> - return xfs_trans_get_cud(tp, intent);
> + return xfs_trans_get_cud(tp, CUI_ITEM(intent));
> }
>
> /* Process a deferred refcount update. */
> @@ -407,9 +407,9 @@ xfs_refcount_update_finish_cleanup(
> /* Abort all pending CUIs. */
> STATIC void
> xfs_refcount_update_abort_intent(
> - void *intent)
> + struct xfs_log_item *intent)
> {
> - xfs_cui_release(intent);
> + xfs_cui_release(CUI_ITEM(intent));
> }
>
> /* Cancel a deferred refcount update. */
> diff --git a/fs/xfs/xfs_rmap_item.c b/fs/xfs/xfs_rmap_item.c
> index 40567cf0c216e..a417e15fd0ce4 100644
> --- a/fs/xfs/xfs_rmap_item.c
> +++ b/fs/xfs/xfs_rmap_item.c
> @@ -381,7 +381,7 @@ xfs_rmap_update_log_item(
> rmap->ri_bmap.br_state);
> }
>
> -STATIC void *
> +static struct xfs_log_item *
> xfs_rmap_update_create_intent(
> struct xfs_trans *tp,
> struct list_head *items,
> @@ -399,17 +399,17 @@ xfs_rmap_update_create_intent(
> 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;
> + return &ruip->rui_item;
> }
>
> /* Get an RUD so we can process all the deferred rmap updates. */
> STATIC void *
> xfs_rmap_update_create_done(
> struct xfs_trans *tp,
> - void *intent,
> + struct xfs_log_item *intent,
> unsigned int count)
> {
> - return xfs_trans_get_rud(tp, intent);
> + return xfs_trans_get_rud(tp, RUI_ITEM(intent));
> }
>
> /* Process a deferred rmap update. */
> @@ -451,9 +451,9 @@ xfs_rmap_update_finish_cleanup(
> /* Abort all pending RUIs. */
> STATIC void
> xfs_rmap_update_abort_intent(
> - void *intent)
> + struct xfs_log_item *intent)
> {
> - xfs_rui_release(intent);
> + xfs_rui_release(RUI_ITEM(intent));
> }
>
> /* Cancel a deferred rmap update. */
> --
> 2.26.2
>
next prev parent 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
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 [this message]
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=20200430110417.GG5349@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.