From: "Darrick J. Wong" <djwong@kernel.org>
To: Allison Henderson <allison.henderson@oracle.com>
Cc: linux-xfs@vger.kernel.org
Subject: Re: [PATCH v15 13/22] xfs: Add state machine tracepoints
Date: Thu, 25 Feb 2021 21:06:52 -0800 [thread overview]
Message-ID: <20210226050652.GB7272@magnolia> (raw)
In-Reply-To: <20210218165348.4754-14-allison.henderson@oracle.com>
On Thu, Feb 18, 2021 at 09:53:39AM -0700, Allison Henderson wrote:
> This is a quick patch to add a new tracepoint: xfs_das_state_return. We
> use this to track when ever a new state is set or -EAGAIN is returned
>
> Signed-off-by: Allison Henderson <allison.henderson@oracle.com>
Looks good!
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
--D
> ---
> fs/xfs/libxfs/xfs_attr.c | 31 ++++++++++++++++++++++++++++++-
> fs/xfs/libxfs/xfs_attr_remote.c | 1 +
> fs/xfs/xfs_trace.h | 25 +++++++++++++++++++++++++
> 3 files changed, 56 insertions(+), 1 deletion(-)
>
> diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c
> index c7b86d5..ba21475 100644
> --- a/fs/xfs/libxfs/xfs_attr.c
> +++ b/fs/xfs/libxfs/xfs_attr.c
> @@ -313,6 +313,7 @@ xfs_attr_set_fmt(
> * the attr fork to leaf format and will restart with the leaf
> * add.
> */
> + trace_xfs_attr_set_fmt_return(XFS_DAS_UNINIT, args->dp);
> dac->flags |= XFS_DAC_DEFER_FINISH;
> return -EAGAIN;
> }
> @@ -378,6 +379,8 @@ xfs_attr_set_iter(
> * handling code below
> */
> dac->flags |= XFS_DAC_DEFER_FINISH;
> + trace_xfs_attr_set_iter_return(
> + dac->dela_state, args->dp);
> return -EAGAIN;
> }
> else if (error)
> @@ -400,10 +403,13 @@ xfs_attr_set_iter(
> return error;
>
> dac->dela_state = XFS_DAS_FOUND_NBLK;
> + trace_xfs_attr_set_iter_return(dac->dela_state,
> + args->dp);
> return -EAGAIN;
> }
>
> dac->dela_state = XFS_DAS_FOUND_LBLK;
> + trace_xfs_attr_set_iter_return(dac->dela_state, args->dp);
> return -EAGAIN;
>
> case XFS_DAS_FOUND_LBLK:
> @@ -433,6 +439,8 @@ xfs_attr_set_iter(
> if (error)
> return error;
>
> + trace_xfs_attr_set_iter_return(dac->dela_state,
> + args->dp);
> return -EAGAIN;
> }
>
> @@ -469,6 +477,7 @@ xfs_attr_set_iter(
> * series.
> */
> dac->dela_state = XFS_DAS_FLIP_LFLAG;
> + trace_xfs_attr_set_iter_return(dac->dela_state, args->dp);
> return -EAGAIN;
> case XFS_DAS_FLIP_LFLAG:
> /*
> @@ -488,6 +497,9 @@ xfs_attr_set_iter(
> case XFS_DAS_RM_LBLK:
> if (args->rmtblkno) {
> error = __xfs_attr_rmtval_remove(dac);
> + if (error == -EAGAIN)
> + trace_xfs_attr_set_iter_return(
> + dac->dela_state, args->dp);
> if (error)
> return error;
> }
> @@ -545,6 +557,8 @@ xfs_attr_set_iter(
> if (error)
> return error;
>
> + trace_xfs_attr_set_iter_return(
> + dac->dela_state, args->dp);
> return -EAGAIN;
> }
>
> @@ -581,6 +595,7 @@ xfs_attr_set_iter(
> * series
> */
> dac->dela_state = XFS_DAS_FLIP_NFLAG;
> + trace_xfs_attr_set_iter_return(dac->dela_state, args->dp);
> return -EAGAIN;
>
> case XFS_DAS_FLIP_NFLAG:
> @@ -601,6 +616,10 @@ xfs_attr_set_iter(
> case XFS_DAS_RM_NBLK:
> if (args->rmtblkno) {
> error = __xfs_attr_rmtval_remove(dac);
> + if (error == -EAGAIN)
> + trace_xfs_attr_set_iter_return(
> + dac->dela_state, args->dp);
> +
> if (error)
> return error;
> }
> @@ -1214,6 +1233,8 @@ xfs_attr_node_addname(
> * this point.
> */
> dac->flags |= XFS_DAC_DEFER_FINISH;
> + trace_xfs_attr_node_addname_return(
> + dac->dela_state, args->dp);
> return -EAGAIN;
> }
>
> @@ -1394,6 +1415,9 @@ xfs_attr_node_remove_rmt (
> * May return -EAGAIN to request that the caller recall this function
> */
> error = __xfs_attr_rmtval_remove(dac);
> + if (error == -EAGAIN)
> + trace_xfs_attr_node_remove_rmt_return(dac->dela_state,
> + dac->da_args->dp);
> if (error)
> return error;
>
> @@ -1513,6 +1537,8 @@ xfs_attr_node_removename_iter(
>
> dac->flags |= XFS_DAC_DEFER_FINISH;
> dac->dela_state = XFS_DAS_RM_SHRINK;
> + trace_xfs_attr_node_removename_iter_return(
> + dac->dela_state, args->dp);
> return -EAGAIN;
> }
>
> @@ -1531,8 +1557,11 @@ xfs_attr_node_removename_iter(
> goto out;
> }
>
> - if (error == -EAGAIN)
> + if (error == -EAGAIN) {
> + trace_xfs_attr_node_removename_iter_return(
> + dac->dela_state, args->dp);
> return error;
> + }
> out:
> if (state)
> xfs_da_state_free(state);
> diff --git a/fs/xfs/libxfs/xfs_attr_remote.c b/fs/xfs/libxfs/xfs_attr_remote.c
> index 6af86bf..b242e1a 100644
> --- a/fs/xfs/libxfs/xfs_attr_remote.c
> +++ b/fs/xfs/libxfs/xfs_attr_remote.c
> @@ -763,6 +763,7 @@ __xfs_attr_rmtval_remove(
> */
> if (!done) {
> dac->flags |= XFS_DAC_DEFER_FINISH;
> + trace_xfs_attr_rmtval_remove_return(dac->dela_state, args->dp);
> return -EAGAIN;
> }
>
> diff --git a/fs/xfs/xfs_trace.h b/fs/xfs/xfs_trace.h
> index 363e1bf..7993f55 100644
> --- a/fs/xfs/xfs_trace.h
> +++ b/fs/xfs/xfs_trace.h
> @@ -3927,6 +3927,31 @@ DEFINE_EVENT(xfs_eofblocks_class, name, \
> DEFINE_EOFBLOCKS_EVENT(xfs_ioc_free_eofblocks);
> DEFINE_EOFBLOCKS_EVENT(xfs_blockgc_free_space);
>
> +DECLARE_EVENT_CLASS(xfs_das_state_class,
> + TP_PROTO(int das, struct xfs_inode *ip),
> + TP_ARGS(das, ip),
> + TP_STRUCT__entry(
> + __field(int, das)
> + __field(xfs_ino_t, ino)
> + ),
> + TP_fast_assign(
> + __entry->das = das;
> + __entry->ino = ip->i_ino;
> + ),
> + TP_printk("state change %d ino 0x%llx",
> + __entry->das, __entry->ino)
> +)
> +
> +#define DEFINE_DAS_STATE_EVENT(name) \
> +DEFINE_EVENT(xfs_das_state_class, name, \
> + TP_PROTO(int das, struct xfs_inode *ip), \
> + TP_ARGS(das, ip))
> +DEFINE_DAS_STATE_EVENT(xfs_attr_set_fmt_return);
> +DEFINE_DAS_STATE_EVENT(xfs_attr_set_iter_return);
> +DEFINE_DAS_STATE_EVENT(xfs_attr_node_addname_return);
> +DEFINE_DAS_STATE_EVENT(xfs_attr_node_removename_iter_return);
> +DEFINE_DAS_STATE_EVENT(xfs_attr_node_remove_rmt_return);
> +DEFINE_DAS_STATE_EVENT(xfs_attr_rmtval_remove_return);
> #endif /* _TRACE_XFS_H */
>
> #undef TRACE_INCLUDE_PATH
> --
> 2.7.4
>
next prev parent reply other threads:[~2021-02-26 5:07 UTC|newest]
Thread overview: 87+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-18 16:53 [PATCH v15 00/22] xfs: Delayed Attributes Allison Henderson
2021-02-18 16:53 ` [PATCH v15 01/22] xfs: Add helper xfs_attr_node_remove_step Allison Henderson
2021-02-24 15:03 ` Brian Foster
2021-02-25 6:17 ` Allison Henderson
2021-02-18 16:53 ` [PATCH v15 02/22] xfs: Add xfs_attr_node_remove_cleanup Allison Henderson
2021-02-24 15:03 ` Brian Foster
2021-02-25 6:17 ` Allison Henderson
2021-02-26 3:00 ` Darrick J. Wong
2021-02-27 0:48 ` Allison Henderson
2021-02-18 16:53 ` [PATCH v15 03/22] xfs: Hoist transaction handling in xfs_attr_node_remove_step Allison Henderson
2021-02-24 15:04 ` Brian Foster
2021-02-25 6:18 ` Allison Henderson
2021-02-26 3:02 ` Darrick J. Wong
2021-02-27 0:48 ` Allison Henderson
2021-02-18 16:53 ` [PATCH v15 04/22] xfs: Hoist xfs_attr_set_shortform Allison Henderson
2021-02-24 15:04 ` Brian Foster
2021-02-25 6:18 ` Allison Henderson
2021-02-26 3:03 ` Darrick J. Wong
2021-02-27 0:48 ` Allison Henderson
2021-02-18 16:53 ` [PATCH v15 05/22] xfs: Add helper xfs_attr_set_fmt Allison Henderson
2021-02-24 15:04 ` Brian Foster
2021-02-25 6:18 ` Allison Henderson
2021-02-26 3:07 ` Darrick J. Wong
2021-02-27 0:49 ` Allison Henderson
2021-02-18 16:53 ` [PATCH v15 06/22] xfs: Separate xfs_attr_node_addname and xfs_attr_node_addname_work Allison Henderson
2021-02-24 15:04 ` Brian Foster
2021-02-25 6:18 ` Allison Henderson
2021-02-26 4:02 ` Darrick J. Wong
2021-02-27 0:54 ` Allison Henderson
2021-03-01 18:00 ` Darrick J. Wong
2021-03-02 8:26 ` Allison Henderson
2021-02-18 16:53 ` [PATCH v15 07/22] xfs: Add helper xfs_attr_node_addname_find_attr Allison Henderson
2021-02-24 15:04 ` Brian Foster
2021-02-25 6:18 ` Allison Henderson
2021-02-26 4:06 ` Darrick J. Wong
2021-02-27 0:54 ` Allison Henderson
2021-02-18 16:53 ` [PATCH v15 08/22] xfs: Hoist xfs_attr_node_addname Allison Henderson
2021-02-24 18:42 ` Brian Foster
2021-02-25 6:19 ` Allison Henderson
2021-03-01 18:05 ` Darrick J. Wong
2021-03-02 8:26 ` Allison Henderson
2021-02-18 16:53 ` [PATCH v15 09/22] xfs: Hoist xfs_attr_leaf_addname Allison Henderson
2021-02-24 18:42 ` Brian Foster
2021-02-25 6:19 ` Allison Henderson
2021-02-25 14:20 ` Brian Foster
2021-03-01 18:19 ` Darrick J. Wong
2021-03-02 8:26 ` Allison Henderson
2021-02-18 16:53 ` [PATCH v15 10/22] xfs: Hoist node transaction handling Allison Henderson
2021-02-24 18:43 ` Brian Foster
2021-02-25 6:20 ` Allison Henderson
2021-03-01 18:20 ` Darrick J. Wong
2021-03-02 8:26 ` Allison Henderson
2021-02-18 16:53 ` [PATCH v15 11/22] xfs: Add delay ready attr remove routines Allison Henderson
2021-02-24 18:45 ` Brian Foster
2021-02-25 7:01 ` Allison Henderson
2021-02-25 14:22 ` Brian Foster
2021-02-25 22:28 ` Allison Henderson
2021-02-28 15:39 ` Brian Foster
2021-03-02 8:26 ` Allison Henderson
2021-02-18 16:53 ` [PATCH v15 12/22] xfs: Add delay ready attr set routines Allison Henderson
2021-03-02 1:39 ` Darrick J. Wong
2021-02-18 16:53 ` [PATCH v15 13/22] xfs: Add state machine tracepoints Allison Henderson
2021-02-26 5:06 ` Darrick J. Wong [this message]
2021-02-27 0:57 ` Allison Henderson
2021-02-18 16:53 ` [PATCH v15 14/22] xfs: Rename __xfs_attr_rmtval_remove Allison Henderson
2021-02-18 16:53 ` [PATCH v15 15/22] xfs: Handle krealloc errors in xlog_recover_add_to_cont_trans Allison Henderson
2021-02-26 5:06 ` Darrick J. Wong
2021-02-27 0:57 ` Allison Henderson
2021-02-18 16:53 ` [PATCH v15 16/22] xfs: Set up infastructure for deferred attribute operations Allison Henderson
2021-02-26 4:58 ` Darrick J. Wong
2021-02-27 0:56 ` Allison Henderson
2021-03-02 7:13 ` Allison Henderson
2021-03-03 11:50 ` Brian Foster
2021-02-18 16:53 ` [PATCH v15 17/22] xfs: Skip flip flags for delayed attrs Allison Henderson
2021-02-26 5:02 ` Darrick J. Wong
2021-02-27 0:56 ` Allison Henderson
2021-02-18 16:53 ` [PATCH v15 18/22] xfs: Add xfs_attr_set_deferred and xfs_attr_remove_deferred Allison Henderson
2021-02-26 5:00 ` Darrick J. Wong
2021-02-27 0:57 ` Allison Henderson
2021-02-18 16:53 ` [PATCH v15 19/22] xfs: Remove unused xfs_attr_*_args Allison Henderson
2021-02-26 4:58 ` Darrick J. Wong
2021-02-27 0:57 ` Allison Henderson
2021-02-18 16:53 ` [PATCH v15 20/22] xfs: Add delayed attributes error tag Allison Henderson
2021-02-18 16:53 ` [PATCH v15 21/22] xfs: Add delattr mount option Allison Henderson
2021-02-26 4:29 ` Darrick J. Wong
2021-02-27 0:55 ` Allison Henderson
2021-02-18 16:53 ` [PATCH v15 22/22] xfs: Merge xfs_delattr_context into xfs_attr_item Allison Henderson
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=20210226050652.GB7272@magnolia \
--to=djwong@kernel.org \
--cc=allison.henderson@oracle.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;
as well as URLs for NNTP newsgroup(s).