From: Allison Henderson <allison.henderson@oracle.com>
To: linux-xfs@vger.kernel.org
Subject: [PATCH v15 13/22] xfs: Add state machine tracepoints
Date: Thu, 18 Feb 2021 09:53:39 -0700 [thread overview]
Message-ID: <20210218165348.4754-14-allison.henderson@oracle.com> (raw)
In-Reply-To: <20210218165348.4754-1-allison.henderson@oracle.com>
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>
---
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-18 18:48 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 ` Allison Henderson [this message]
2021-02-26 5:06 ` [PATCH v15 13/22] xfs: Add state machine tracepoints Darrick J. Wong
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=20210218165348.4754-14-allison.henderson@oracle.com \
--to=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).