Commit b0b7cdc9 authored by Jeff Layton's avatar Jeff Layton Committed by Trond Myklebust
Browse files

nfs: new tracepoint in match_stateid operation



Add new tracepoints in the NFSv4 match_stateid minorversion op that show
the info in both stateids.

Reviewed-by: default avatarBenjamin Coddington <bcodding@redhat.com>
Signed-off-by: default avatarJeff Layton <jlayton@kernel.org>
Link: https://lore.kernel.org/r/20250618-nfs-tracepoints-v2-4-540c9fb48da2@kernel.org


Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
parent 5dd03d14
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -10692,6 +10692,8 @@ nfs41_free_lock_state(struct nfs_server *server, struct nfs4_lock_state *lsp)
static bool nfs41_match_stateid(const nfs4_stateid *s1,
		const nfs4_stateid *s2)
{
	trace_nfs41_match_stateid(s1, s2);

	if (s1->type != s2->type)
		return false;

@@ -10709,6 +10711,8 @@ static bool nfs41_match_stateid(const nfs4_stateid *s1,
static bool nfs4_match_stateid(const nfs4_stateid *s1,
		const nfs4_stateid *s2)
{
	trace_nfs4_match_stateid(s1, s2);

	return nfs4_stateid_match(s1, s2);
}

+57 −0
Original line number Diff line number Diff line
@@ -1524,6 +1524,63 @@ DECLARE_EVENT_CLASS(nfs4_inode_stateid_callback_event,
DEFINE_NFS4_INODE_STATEID_CALLBACK_EVENT(nfs4_cb_recall);
DEFINE_NFS4_INODE_STATEID_CALLBACK_EVENT(nfs4_cb_layoutrecall_file);

#define show_stateid_type(type) \
	__print_symbolic(type, \
		{ NFS4_INVALID_STATEID_TYPE,	"INVALID" }, \
		{ NFS4_SPECIAL_STATEID_TYPE,	"SPECIAL" }, \
		{ NFS4_OPEN_STATEID_TYPE,	"OPEN" }, \
		{ NFS4_LOCK_STATEID_TYPE,	"LOCK" }, \
		{ NFS4_DELEGATION_STATEID_TYPE,	"DELEGATION" }, \
		{ NFS4_LAYOUT_STATEID_TYPE,	"LAYOUT" },	\
		{ NFS4_PNFS_DS_STATEID_TYPE,	"PNFS_DS" }, \
		{ NFS4_REVOKED_STATEID_TYPE,	"REVOKED" }, \
		{ NFS4_FREED_STATEID_TYPE,	"FREED" })

DECLARE_EVENT_CLASS(nfs4_match_stateid_event,
		TP_PROTO(
			const nfs4_stateid *s1,
			const nfs4_stateid *s2
		),

		TP_ARGS(s1, s2),

		TP_STRUCT__entry(
			__field(int, s1_seq)
			__field(int, s2_seq)
			__field(u32, s1_hash)
			__field(u32, s2_hash)
			__field(int, s1_type)
			__field(int, s2_type)
		),

		TP_fast_assign(
			__entry->s1_seq = s1->seqid;
			__entry->s1_hash = nfs_stateid_hash(s1);
			__entry->s1_type = s1->type;
			__entry->s2_seq = s2->seqid;
			__entry->s2_hash = nfs_stateid_hash(s2);
			__entry->s2_type = s2->type;
		),

		TP_printk(
			"s1=%s:%x:%u s2=%s:%x:%u",
			show_stateid_type(__entry->s1_type),
			__entry->s1_hash, __entry->s1_seq,
			show_stateid_type(__entry->s2_type),
			__entry->s2_hash, __entry->s2_seq
		)
);

#define DEFINE_NFS4_MATCH_STATEID_EVENT(name) \
	DEFINE_EVENT(nfs4_match_stateid_event, name, \
			TP_PROTO( \
				const nfs4_stateid *s1, \
				const nfs4_stateid *s2 \
			), \
			TP_ARGS(s1, s2))
DEFINE_NFS4_MATCH_STATEID_EVENT(nfs41_match_stateid);
DEFINE_NFS4_MATCH_STATEID_EVENT(nfs4_match_stateid);

DECLARE_EVENT_CLASS(nfs4_idmap_event,
		TP_PROTO(
			const char *name,