Linux XFS filesystem development
 help / color / mirror / Atom feed
From: Allison Henderson <allison.henderson@oracle.com>
To: linux-xfs@vger.kernel.org
Subject: [PATCH v22 17/27] xfsprogs: Add state machine tracepoints
Date: Mon, 26 Jul 2021 23:18:54 -0700	[thread overview]
Message-ID: <20210727061904.11084-18-allison.henderson@oracle.com> (raw)
In-Reply-To: <20210727061904.11084-1-allison.henderson@oracle.com>

Source kernel commit: fbc8d6bb875915e0afd8ff6cd4364b368a6f894f

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>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
---
 include/xfs_trace.h      |  6 ++++++
 libxfs/xfs_attr.c        | 28 ++++++++++++++++++++++++++--
 libxfs/xfs_attr_remote.c |  1 +
 3 files changed, 33 insertions(+), 2 deletions(-)

diff --git a/include/xfs_trace.h b/include/xfs_trace.h
index a847b50..2169c27 100644
--- a/include/xfs_trace.h
+++ b/include/xfs_trace.h
@@ -312,4 +312,10 @@
 #define trace_xfs_perag_get_tag(a,b,c,d)	((c) = (c))
 #define trace_xfs_perag_put(a,b,c,d)		((c) = (c))
 
+#define trace_xfs_attr_sf_addname_return(a,b)	((void) 0)
+#define trace_xfs_attr_set_iter_return(a,b)	((void) 0)
+#define trace_xfs_attr_node_addname_return(a,b)	((void) 0)
+#define trace_xfs_attr_remove_iter_return(a,b)	((void) 0)
+#define trace_xfs_attr_rmtval_remove_return(a,b)	((void) 0)
+
 #endif /* __TRACE_H__ */
diff --git a/libxfs/xfs_attr.c b/libxfs/xfs_attr.c
index 84b88f9..6380cae 100644
--- a/libxfs/xfs_attr.c
+++ b/libxfs/xfs_attr.c
@@ -335,6 +335,7 @@ xfs_attr_sf_addname(
 	 * the attr fork to leaf format and will restart with the leaf
 	 * add.
 	 */
+	trace_xfs_attr_sf_addname_return(XFS_DAS_UNINIT, args->dp);
 	dac->flags |= XFS_DAC_DEFER_FINISH;
 	return -EAGAIN;
 }
@@ -394,6 +395,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) {
 				return error;
@@ -418,6 +421,7 @@ xfs_attr_set_iter(
 
 			dac->dela_state = XFS_DAS_FOUND_NBLK;
 		}
+		trace_xfs_attr_set_iter_return(dac->dela_state, args->dp);
 		return -EAGAIN;
 	case XFS_DAS_FOUND_LBLK:
 		/*
@@ -445,6 +449,8 @@ xfs_attr_set_iter(
 			error = xfs_attr_rmtval_set_blk(dac);
 			if (error)
 				return error;
+			trace_xfs_attr_set_iter_return(dac->dela_state,
+						       args->dp);
 			return -EAGAIN;
 		}
 
@@ -479,6 +485,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:
 		/*
@@ -496,6 +503,9 @@ xfs_attr_set_iter(
 		dac->dela_state = 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;
 
@@ -549,6 +559,8 @@ xfs_attr_set_iter(
 				error = xfs_attr_rmtval_set_blk(dac);
 				if (error)
 					return error;
+				trace_xfs_attr_set_iter_return(
+					dac->dela_state, args->dp);
 				return -EAGAIN;
 			}
 
@@ -584,6 +596,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:
@@ -603,6 +616,10 @@ xfs_attr_set_iter(
 		dac->dela_state = 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;
 
@@ -1183,6 +1200,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;
 		}
 
@@ -1429,10 +1448,13 @@ xfs_attr_remove_iter(
 			 * blocks are removed.
 			 */
 			error = __xfs_attr_rmtval_remove(dac);
-			if (error == -EAGAIN)
+			if (error == -EAGAIN) {
+				trace_xfs_attr_remove_iter_return(
+						dac->dela_state, args->dp);
 				return error;
-			else if (error)
+			} else if (error) {
 				goto out;
+			}
 
 			/*
 			 * Refill the state structure with buffers (the prior
@@ -1473,6 +1495,8 @@ xfs_attr_remove_iter(
 
 			dac->flags |= XFS_DAC_DEFER_FINISH;
 			dac->dela_state = XFS_DAS_RM_SHRINK;
+			trace_xfs_attr_remove_iter_return(
+					dac->dela_state, args->dp);
 			return -EAGAIN;
 		}
 
diff --git a/libxfs/xfs_attr_remote.c b/libxfs/xfs_attr_remote.c
index d474ad7..137e569 100644
--- a/libxfs/xfs_attr_remote.c
+++ b/libxfs/xfs_attr_remote.c
@@ -695,6 +695,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;
 	}
 
-- 
2.7.4


  parent reply	other threads:[~2021-07-27  6:19 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-27  6:18 [PATCH v22 00/27] Delayed Attributes Allison Henderson
2021-07-27  6:18 ` [PATCH v22 01/27] xfsprogs: Reverse apply 72b97ea40d Allison Henderson
2021-07-27  6:18 ` [PATCH v22 02/27] xfsprogs: Add xfs_attr_node_remove_name Allison Henderson
2021-07-27  6:18 ` [PATCH v22 03/27] xfsprogs: Refactor xfs_attr_set_shortform Allison Henderson
2021-07-27  6:18 ` [PATCH v22 04/27] xfsprogs: Separate xfs_attr_node_addname and xfs_attr_node_addname_clear_incomplete Allison Henderson
2021-07-27  6:18 ` [PATCH v22 05/27] xfsprogs: Add helper xfs_attr_node_addname_find_attr Allison Henderson
2021-07-27  6:18 ` [PATCH v22 06/27] xfsprogs: Hoist xfs_attr_node_addname Allison Henderson
2021-07-27  6:18 ` [PATCH v22 07/27] xfsprogs: Hoist xfs_attr_leaf_addname Allison Henderson
2021-07-27  6:18 ` [PATCH v22 08/27] xfsprogs: Hoist node transaction handling Allison Henderson
2021-07-27  6:18 ` [PATCH v22 09/27] xfsprogs: Add delay ready attr remove routines Allison Henderson
2021-07-27  6:18 ` [PATCH v22 10/27] xfsprogs: Add delay ready attr set routines Allison Henderson
2021-07-27  6:18 ` [PATCH v22 11/27] xfsprogs: Remove xfs_attr_rmtval_set Allison Henderson
2021-07-27  6:18 ` [PATCH v22 12/27] xfsprogs: Clean up xfs_attr_node_addname_clear_incomplete Allison Henderson
2021-07-27  6:18 ` [PATCH v22 13/27] xfsprogs: Fix default ASSERT in xfs_attr_set_iter Allison Henderson
2021-07-27  6:18 ` [PATCH v22 14/27] xfsprogs: Make attr name schemes consistent Allison Henderson
2021-07-27  6:18 ` [PATCH v22 15/27] xfs: allow setting and clearing of log incompat feature flags Allison Henderson
2021-07-27  6:18 ` [PATCH v22 16/27] xfsprogs: Return from xfs_attr_set_iter if there are no more rmtblks to process Allison Henderson
2021-07-27  6:18 ` Allison Henderson [this message]
2021-07-27  6:18 ` [PATCH v22 18/27] xfsprogs: Rename __xfs_attr_rmtval_remove Allison Henderson
2021-07-27  6:18 ` [PATCH v22 19/27] xfsprogs: Set up infrastructure for deferred attribute operations Allison Henderson
2021-07-27  6:18 ` [PATCH v22 20/27] xfsprogs: Implement attr logging and replay Allison Henderson
2021-07-27  6:18 ` [PATCH v22 21/27] RFC xfsprogs: Skip flip flags for delayed attrs Allison Henderson
2021-07-27  6:18 ` [PATCH v22 22/27] xfsprogs: Add xfs_attr_set_deferred and xfs_attr_remove_deferred Allison Henderson
2021-07-27  6:19 ` [PATCH v22 23/27] xfsprogs: Remove unused xfs_attr_*_args Allison Henderson
2021-07-27  6:19 ` [PATCH v22 24/27] xfsprogs: Add delayed attributes error tag Allison Henderson
2021-07-27  6:19 ` [PATCH v22 25/27] xfsprogs: Merge xfs_delattr_context into xfs_attr_item Allison Henderson
2021-07-27  6:19 ` [PATCH v22 26/27] xfsprogs: Add helper function xfs_attr_leaf_addname Allison Henderson
2021-07-27  6:19 ` [PATCH v22 27/27] xfsprogs: Add log item printing for ATTRI and ATTRD Allison Henderson
2021-07-28 19:41   ` 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=20210727061904.11084-18-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