From: Chandan Babu R <chandanrlinux@gmail.com>
To: Brian Foster <bfoster@redhat.com>
Cc: linux-xfs@vger.kernel.org
Subject: Re: [PATCH 1/2] xfs: rename xfs_wait_buftarg() to xfs_buftarg_drain()
Date: Fri, 11 Dec 2020 14:52:39 +0530 [thread overview]
Message-ID: <1854967.ZGscP5OW6Q@garuda> (raw)
In-Reply-To: <20201210144607.1922026-2-bfoster@redhat.com>
On Thu, 10 Dec 2020 09:46:06 -0500, Brian Foster wrote:
> xfs_wait_buftarg() is vaguely named and somewhat overloaded. Its
> primary purpose is to reclaim all buffers from the provided buffer
> target LRU. In preparation to refactor xfs_wait_buftarg() into
> serialization and LRU draining components, rename the function and
> associated helpers to something more descriptive. This patch has no
> functional changes with the minor exception of renaming a
> tracepoint.
>
The changes look good to me.
Reviewed-by: Chandan Babu R <chandanrlinux@gmail.com>
> Signed-off-by: Brian Foster <bfoster@redhat.com>
> ---
> fs/xfs/xfs_buf.c | 12 ++++++------
> fs/xfs/xfs_buf.h | 10 +++++-----
> fs/xfs/xfs_log.c | 6 +++---
> fs/xfs/xfs_mount.c | 4 ++--
> fs/xfs/xfs_trace.h | 2 +-
> 5 files changed, 17 insertions(+), 17 deletions(-)
>
> diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c
> index 4e4cf91f4f9f..db918ed20c40 100644
> --- a/fs/xfs/xfs_buf.c
> +++ b/fs/xfs/xfs_buf.c
> @@ -43,7 +43,7 @@ static kmem_zone_t *xfs_buf_zone;
> * pag_buf_lock
> * lru_lock
> *
> - * xfs_buftarg_wait_rele
> + * xfs_buftarg_drain_rele
> * lru_lock
> * b_lock (trylock due to inversion)
> *
> @@ -88,7 +88,7 @@ xfs_buf_vmap_len(
> * because the corresponding decrement is deferred to buffer release. Buffers
> * can undergo I/O multiple times in a hold-release cycle and per buffer I/O
> * tracking adds unnecessary overhead. This is used for sychronization purposes
> - * with unmount (see xfs_wait_buftarg()), so all we really need is a count of
> + * with unmount (see xfs_buftarg_drain()), so all we really need is a count of
> * in-flight buffers.
> *
> * Buffers that are never released (e.g., superblock, iclog buffers) must set
> @@ -1786,7 +1786,7 @@ __xfs_buf_mark_corrupt(
> * while freeing all the buffers only held by the LRU.
> */
> static enum lru_status
> -xfs_buftarg_wait_rele(
> +xfs_buftarg_drain_rele(
> struct list_head *item,
> struct list_lru_one *lru,
> spinlock_t *lru_lock,
> @@ -1798,7 +1798,7 @@ xfs_buftarg_wait_rele(
>
> if (atomic_read(&bp->b_hold) > 1) {
> /* need to wait, so skip it this pass */
> - trace_xfs_buf_wait_buftarg(bp, _RET_IP_);
> + trace_xfs_buf_drain_buftarg(bp, _RET_IP_);
> return LRU_SKIP;
> }
> if (!spin_trylock(&bp->b_lock))
> @@ -1816,7 +1816,7 @@ xfs_buftarg_wait_rele(
> }
>
> void
> -xfs_wait_buftarg(
> +xfs_buftarg_drain(
> struct xfs_buftarg *btp)
> {
> LIST_HEAD(dispose);
> @@ -1841,7 +1841,7 @@ xfs_wait_buftarg(
>
> /* loop until there is nothing left on the lru list. */
> while (list_lru_count(&btp->bt_lru)) {
> - list_lru_walk(&btp->bt_lru, xfs_buftarg_wait_rele,
> + list_lru_walk(&btp->bt_lru, xfs_buftarg_drain_rele,
> &dispose, LONG_MAX);
>
> while (!list_empty(&dispose)) {
> diff --git a/fs/xfs/xfs_buf.h b/fs/xfs/xfs_buf.h
> index bfd2907e7bc4..ea32369f8f77 100644
> --- a/fs/xfs/xfs_buf.h
> +++ b/fs/xfs/xfs_buf.h
> @@ -152,7 +152,7 @@ typedef struct xfs_buf {
> struct list_head b_list;
> struct xfs_perag *b_pag; /* contains rbtree root */
> struct xfs_mount *b_mount;
> - xfs_buftarg_t *b_target; /* buffer target (device) */
> + struct xfs_buftarg *b_target; /* buffer target (device) */
> void *b_addr; /* virtual address of buffer */
> struct work_struct b_ioend_work;
> struct completion b_iowait; /* queue for I/O waiters */
> @@ -344,11 +344,11 @@ xfs_buf_update_cksum(struct xfs_buf *bp, unsigned long cksum_offset)
> /*
> * Handling of buftargs.
> */
> -extern xfs_buftarg_t *xfs_alloc_buftarg(struct xfs_mount *,
> - struct block_device *, struct dax_device *);
> +extern struct xfs_buftarg *xfs_alloc_buftarg(struct xfs_mount *,
> + struct block_device *, struct dax_device *);
> extern void xfs_free_buftarg(struct xfs_buftarg *);
> -extern void xfs_wait_buftarg(xfs_buftarg_t *);
> -extern int xfs_setsize_buftarg(xfs_buftarg_t *, unsigned int);
> +extern void xfs_buftarg_drain(struct xfs_buftarg *);
> +extern int xfs_setsize_buftarg(struct xfs_buftarg *, unsigned int);
>
> #define xfs_getsize_buftarg(buftarg) block_size((buftarg)->bt_bdev)
> #define xfs_readonly_buftarg(buftarg) bdev_read_only((buftarg)->bt_bdev)
> diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c
> index fa2d05e65ff1..5ad4d5e78019 100644
> --- a/fs/xfs/xfs_log.c
> +++ b/fs/xfs/xfs_log.c
> @@ -741,7 +741,7 @@ xfs_log_mount_finish(
> xfs_log_force(mp, XFS_LOG_SYNC);
> xfs_ail_push_all_sync(mp->m_ail);
> }
> - xfs_wait_buftarg(mp->m_ddev_targp);
> + xfs_buftarg_drain(mp->m_ddev_targp);
>
> if (readonly)
> mp->m_flags |= XFS_MOUNT_RDONLY;
> @@ -936,13 +936,13 @@ xfs_log_quiesce(
>
> /*
> * The superblock buffer is uncached and while xfs_ail_push_all_sync()
> - * will push it, xfs_wait_buftarg() will not wait for it. Further,
> + * will push it, xfs_buftarg_drain() will not wait for it. Further,
> * xfs_buf_iowait() cannot be used because it was pushed with the
> * XBF_ASYNC flag set, so we need to use a lock/unlock pair to wait for
> * the IO to complete.
> */
> xfs_ail_push_all_sync(mp->m_ail);
> - xfs_wait_buftarg(mp->m_ddev_targp);
> + xfs_buftarg_drain(mp->m_ddev_targp);
> xfs_buf_lock(mp->m_sb_bp);
> xfs_buf_unlock(mp->m_sb_bp);
>
> diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
> index 7110507a2b6b..29a553f0877d 100644
> --- a/fs/xfs/xfs_mount.c
> +++ b/fs/xfs/xfs_mount.c
> @@ -1023,8 +1023,8 @@ xfs_mountfs(
> xfs_log_mount_cancel(mp);
> out_fail_wait:
> if (mp->m_logdev_targp && mp->m_logdev_targp != mp->m_ddev_targp)
> - xfs_wait_buftarg(mp->m_logdev_targp);
> - xfs_wait_buftarg(mp->m_ddev_targp);
> + xfs_buftarg_drain(mp->m_logdev_targp);
> + xfs_buftarg_drain(mp->m_ddev_targp);
> out_free_perag:
> xfs_free_perag(mp);
> out_free_dir:
> diff --git a/fs/xfs/xfs_trace.h b/fs/xfs/xfs_trace.h
> index 86951652d3ed..7b4d8a5f2a49 100644
> --- a/fs/xfs/xfs_trace.h
> +++ b/fs/xfs/xfs_trace.h
> @@ -340,7 +340,7 @@ DEFINE_BUF_EVENT(xfs_buf_get_uncached);
> DEFINE_BUF_EVENT(xfs_buf_item_relse);
> DEFINE_BUF_EVENT(xfs_buf_iodone_async);
> DEFINE_BUF_EVENT(xfs_buf_error_relse);
> -DEFINE_BUF_EVENT(xfs_buf_wait_buftarg);
> +DEFINE_BUF_EVENT(xfs_buf_drain_buftarg);
> DEFINE_BUF_EVENT(xfs_trans_read_buf_shut);
>
> /* not really buffer traces, but the buf provides useful information */
>
--
chandan
next prev parent reply other threads:[~2020-12-11 9:24 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-10 14:46 [PATCH 0/2] xfs: don't drain buffer lru on freeze Brian Foster
2020-12-10 14:46 ` [PATCH 1/2] xfs: rename xfs_wait_buftarg() to xfs_buftarg_drain() Brian Foster
2020-12-11 9:22 ` Chandan Babu R [this message]
2021-02-02 20:23 ` Darrick J. Wong
2020-12-10 14:46 ` [PATCH 2/2] xfs: don't drain buffer lru on freeze and read-only remount Brian Foster
2020-12-11 9:28 ` Chandan Babu R
2020-12-11 13:42 ` Brian Foster
2021-02-02 20:24 ` 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=1854967.ZGscP5OW6Q@garuda \
--to=chandanrlinux@gmail.com \
--cc=bfoster@redhat.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox