#define _TRACE_NFS4_H
 
 #include <linux/tracepoint.h>
+#include <trace/events/sunrpc_base.h>
 
 TRACE_DEFINE_ENUM(EPERM);
 TRACE_DEFINE_ENUM(ENOENT);
                        __entry->expected = expected;
                ),
 
-               TP_printk(
-                       "task:%u@%d xid=0x%08x operation=%u, expected=%u",
+               TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
+                         " xid=0x%08x operation=%u, expected=%u",
                        __entry->task_id, __entry->client_id, __entry->xid,
                        __entry->op, __entry->expected
                )
                        __entry->error = error;
                ),
 
-               TP_printk(
-                       "task:%u@%d xid=0x%08x error=%ld (%s) operation=%u",
+               TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
+                         " xid=0x%08x error=%ld (%s) operation=%u",
                        __entry->task_id, __entry->client_id, __entry->xid,
                        -__entry->error, show_nfsv4_errors(__entry->error),
                        __entry->op
 
 #include <linux/tracepoint.h>
 #include <linux/iversion.h>
 
+#include <trace/events/sunrpc_base.h>
+
 #define nfs_show_file_type(ftype) \
        __print_symbolic(ftype, \
                        { DT_UNKNOWN, "UNKNOWN" }, \
                        __assign_str(procedure, task->tk_msg.rpc_proc->p_name);
                ),
 
-               TP_printk(
-                       "task:%u@%d xid=0x%08x %sv%d %s error=%ld (%s)",
+               TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
+                         " xid=0x%08x %sv%d %s error=%ld (%s)",
                        __entry->task_id, __entry->client_id, __entry->xid,
                        __get_str(program), __entry->version,
                        __get_str(procedure), -__entry->error,
 
 
 #include <linux/tracepoint.h>
 
+#include <trace/events/sunrpc_base.h>
+
 /**
  ** GSS-API related trace events
  **/
                __entry->maj_stat = maj_stat;
        ),
 
-       TP_printk("task:%u@%u maj_stat=%s",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " maj_stat=%s",
                __entry->task_id, __entry->client_id,
                __entry->maj_stat == 0 ?
                "GSS_S_COMPLETE" : show_gss_status(__entry->maj_stat))
                __entry->client_id = task->tk_client->cl_clid;
        ),
 
-       TP_printk("task:%u@%u", __entry->task_id, __entry->client_id)
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER,
+               __entry->task_id, __entry->client_id)
 );
 
 TRACE_EVENT(rpcgss_bad_seqno,
                __entry->received = received;
        ),
 
-       TP_printk("task:%u@%u expected seqno %u, received seqno %u",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
+                 " expected seqno %u, received seqno %u",
                __entry->task_id, __entry->client_id,
                __entry->expected, __entry->received)
 );
                __entry->seqno = rqst->rq_seqno;
        ),
 
-       TP_printk("task:%u@%u xid=0x%08x seqno=%u",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " xid=0x%08x seqno=%u",
                __entry->task_id, __entry->client_id,
                __entry->xid, __entry->seqno)
 );
                __entry->ret = ret;
        ),
 
-       TP_printk("task:%u@%u xid=0x%08x rq_seqno=%u seq_xmit=%u reencode %sneeded",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
+                 " xid=0x%08x rq_seqno=%u seq_xmit=%u reencode %sneeded",
                __entry->task_id, __entry->client_id,
                __entry->xid, __entry->seqno, __entry->seq_xmit,
                __entry->ret ? "" : "un")
                __entry->verfsize = auth->au_verfsize;
        ),
 
-       TP_printk("task:%u@%u xid=0x%08x auth=%p rslack=%u ralign=%u verfsize=%u\n",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
+                 " xid=0x%08x auth=%p rslack=%u ralign=%u verfsize=%u\n",
                __entry->task_id, __entry->client_id, __entry->xid,
                __entry->auth, __entry->rslack, __entry->ralign,
                __entry->verfsize)
 
 #include <linux/sunrpc/rpc_rdma_cid.h>
 #include <linux/tracepoint.h>
 #include <rdma/ib_cm.h>
+
 #include <trace/events/rdma.h>
+#include <trace/events/sunrpc_base.h>
 
 /**
  ** Event classes
                __entry->nsegs = nsegs;
        ),
 
-       TP_printk("task:%u@%u pos=%u %u@0x%016llx:0x%08x (%s)",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
+                 " pos=%u %u@0x%016llx:0x%08x (%s)",
                __entry->task_id, __entry->client_id,
                __entry->pos, __entry->length,
                (unsigned long long)__entry->offset, __entry->handle,
                __entry->nsegs = nsegs;
        ),
 
-       TP_printk("task:%u@%u %u@0x%016llx:0x%08x (%s)",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
+                 " %u@0x%016llx:0x%08x (%s)",
                __entry->task_id, __entry->client_id,
                __entry->length, (unsigned long long)__entry->offset,
                __entry->handle,
                __entry->dir    = mr->mr_dir;
        ),
 
-       TP_printk("task:%u@%u mr.id=%u nents=%d %u@0x%016llx:0x%08x (%s)",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
+                 " mr.id=%u nents=%d %u@0x%016llx:0x%08x (%s)",
                __entry->task_id, __entry->client_id,
                __entry->mr_id, __entry->nents, __entry->length,
                (unsigned long long)__entry->offset, __entry->handle,
                __assign_str(port, rpcrdma_portstr(r_xprt));
        ),
 
-       TP_printk("peer=[%s]:%s task:%u@%u",
-               __get_str(addr), __get_str(port),
-               __entry->task_id, __entry->client_id
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " peer=[%s]:%s",
+               __entry->task_id, __entry->client_id,
+               __get_str(addr), __get_str(port)
        )
 );
 
                __entry->wtype = wtype;
        ),
 
-       TP_printk("task:%u@%u xid=0x%08x: hdr=%u xdr=%u/%u/%u %s/%s",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
+                 " xid=0x%08x hdr=%u xdr=%u/%u/%u %s/%s",
                __entry->task_id, __entry->client_id, __entry->xid,
                __entry->hdrlen,
                __entry->headlen, __entry->pagelen, __entry->taillen,
                __entry->ret = ret;
        ),
 
-       TP_printk("task:%u@%u xid=0x%08x: ret=%d",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " xid=0x%08x ret=%d",
                __entry->task_id, __entry->client_id, __entry->xid,
                __entry->ret
        )
                __entry->ret = ret;
        ),
 
-       TP_printk("task:%u@%u xid=0x%08x: ret=%d",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " xid=0x%08x ret=%d",
                __entry->task_id, __entry->client_id, __entry->xid,
                __entry->ret
        )
                __entry->signaled = req->rl_wr.send_flags & IB_SEND_SIGNALED;
        ),
 
-       TP_printk("task:%u@%u cq.id=%u cid=%d (%d SGE%s) %s",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " cq.id=%u cid=%d (%d SGE%s) %s",
                __entry->task_id, __entry->client_id,
                __entry->cq_id, __entry->completion_id,
                __entry->num_sge, (__entry->num_sge == 1 ? "" : "s"),
                __entry->rc = rc;
        ),
 
-       TP_printk("task:%u@%u cq.id=%u rc=%d",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " cq.id=%u rc=%d",
                __entry->task_id, __entry->client_id,
                __entry->cq_id, __entry->rc
        )
                __entry->status = status;
        ),
 
-       TP_printk("task:%u@%u status=%d",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " status=%d",
                __entry->task_id, __entry->client_id, __entry->status
        )
 );
                __entry->credits = credits;
        ),
 
-       TP_printk("task:%u@%u xid=0x%08x credits=%u",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " xid=0x%08x credits=%u",
                __entry->task_id, __entry->client_id, __entry->xid,
                __entry->credits
        )
                __entry->max = be32_to_cpup(max);
        ),
 
-       TP_printk("task:%u@%u xid=0x%08x versions=[%u, %u]",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " xid=0x%08x versions=[%u, %u]",
                __entry->task_id, __entry->client_id, __entry->xid,
                __entry->min, __entry->max
        )
                __entry->xid = be32_to_cpu(rqst->rq_xid);
        ),
 
-       TP_printk("task:%u@%u xid=0x%08x",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " xid=0x%08x",
                __entry->task_id, __entry->client_id, __entry->xid
        )
 );
                __entry->procedure = be32_to_cpup(procedure);
        ),
 
-       TP_printk("task:%u@%u xid=0x%08x procedure=%u",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " xid=0x%08x procedure=%u",
                __entry->task_id, __entry->client_id, __entry->xid,
                __entry->procedure
        )
                __entry->taillen = rqst->rq_rcv_buf.tail[0].iov_len;
        ),
 
-       TP_printk("task:%u@%u fixup=%lu xdr=%zu/%u/%zu",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " fixup=%lu xdr=%zu/%u/%zu",
                __entry->task_id, __entry->client_id, __entry->fixup,
                __entry->headlen, __entry->pagelen, __entry->taillen
        )
                __entry->client_id = task->tk_client->cl_clid;
        ),
 
-       TP_printk("task:%u@%u",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER,
                __entry->task_id, __entry->client_id
        )
 );
 
 #include <linux/net.h>
 #include <linux/tracepoint.h>
 
+#include <trace/events/sunrpc_base.h>
+
 TRACE_DEFINE_ENUM(SOCK_STREAM);
 TRACE_DEFINE_ENUM(SOCK_DGRAM);
 TRACE_DEFINE_ENUM(SOCK_RAW);
                __entry->msg_len = xdr->len;
        ),
 
-       TP_printk("task:%u@%u head=[%p,%zu] page=%u tail=[%p,%zu] len=%u",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
+                 " head=[%p,%zu] page=%u tail=[%p,%zu] len=%u",
                __entry->task_id, __entry->client_id,
                __entry->head_base, __entry->head_len, __entry->page_len,
                __entry->tail_base, __entry->tail_len, __entry->msg_len
                __entry->client_id = clnt->cl_clid;
        ),
 
-       TP_printk("clid=%u", __entry->client_id)
+       TP_printk("client=" SUNRPC_TRACE_CLID_SPECIFIER, __entry->client_id)
 );
 
 #define DEFINE_RPC_CLNT_EVENT(name)                                    \
                __assign_str(server, server);
        ),
 
-       TP_printk("client=%u peer=[%s]:%s program=%s server=%s",
+       TP_printk("client=" SUNRPC_TRACE_CLID_SPECIFIER
+                 " peer=[%s]:%s program=%s server=%s",
                __entry->client_id, __get_str(addr), __get_str(port),
                __get_str(program), __get_str(server))
 );
                __entry->error = error;
        ),
 
-       TP_printk("client=%u error=%d", __entry->client_id, __entry->error)
+       TP_printk("client=" SUNRPC_TRACE_CLID_SPECIFIER " error=%d",
+               __entry->client_id, __entry->error)
 );
 
 
                __entry->status = task->tk_status;
        ),
 
-       TP_printk("task:%u@%u status=%d",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " status=%d",
                __entry->task_id, __entry->client_id,
                __entry->status)
 );
                __assign_str(procname, rpc_proc_name(task));
        ),
 
-       TP_printk("task:%u@%u %sv%d %s (%ssync)",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " %sv%d %s (%ssync)",
                __entry->task_id, __entry->client_id,
                __get_str(progname), __entry->version,
                __get_str(procname), __entry->async ? "a": ""
                __entry->flags = task->tk_flags;
                ),
 
-       TP_printk("task:%u@%d flags=%s runstate=%s status=%d action=%ps",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
+                 " flags=%s runstate=%s status=%d action=%ps",
                __entry->task_id, __entry->client_id,
                rpc_show_task_flags(__entry->flags),
                rpc_show_runstate(__entry->runstate),
                __assign_str(q_name, rpc_qname(q));
                ),
 
-       TP_printk("task:%u@%d flags=%s runstate=%s status=%d timeout=%lu queue=%s",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
+                 " flags=%s runstate=%s status=%d timeout=%lu queue=%s",
                __entry->task_id, __entry->client_id,
                rpc_show_task_flags(__entry->flags),
                rpc_show_runstate(__entry->runstate),
                __entry->client_id = task->tk_client->cl_clid;
        ),
 
-       TP_printk("task:%u@%u",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER,
                __entry->task_id, __entry->client_id)
 );
 
                __assign_str(servername, task->tk_xprt->servername);
        ),
 
-       TP_printk("task:%u@%d server=%s xid=0x%08x %sv%d %s",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
+                 " server=%s xid=0x%08x %sv%d %s",
                __entry->task_id, __entry->client_id, __get_str(servername),
                __entry->xid, __get_str(progname), __entry->version,
                __get_str(procname))
                __entry->status = status;
        ),
 
-       TP_printk("task:%u@%u callsize=%zu recvsize=%zu status=%d",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
+                 " callsize=%zu recvsize=%zu status=%d",
                __entry->task_id, __entry->client_id,
                __entry->callsize, __entry->recvsize, __entry->status
        )
                __entry->rpc_status = rpc_status;
        ),
 
-       TP_printk("task:%u@%u tk_status=%d rpc_status=%d",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
+                 " tk_status=%d rpc_status=%d",
                __entry->task_id, __entry->client_id,
                __entry->tk_status, __entry->rpc_status)
 );
                __entry->execute = ktime_to_us(execute);
        ),
 
-       TP_printk("task:%u@%d xid=0x%08x %sv%d %s backlog=%lu rtt=%lu execute=%lu",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
+                 " xid=0x%08x %sv%d %s backlog=%lu rtt=%lu execute=%lu",
                __entry->task_id, __entry->client_id, __entry->xid,
                __get_str(progname), __entry->version, __get_str(procname),
                __entry->backlog, __entry->rtt, __entry->execute)
                        __entry->version = task->tk_client->cl_vers;
                        __assign_str(procedure, task->tk_msg.rpc_proc->p_name);
                } else {
-                       __entry->task_id = 0;
-                       __entry->client_id = 0;
+                       __entry->task_id = -1;
+                       __entry->client_id = -1;
                        __assign_str(progname, "unknown");
                        __entry->version = 0;
                        __assign_str(procedure, "unknown");
                __entry->len = xdr->buf->len;
        ),
 
-       TP_printk(
-               "task:%u@%u %sv%d %s requested=%zu p=%p end=%p xdr=[%p,%zu]/%u/[%p,%zu]/%u\n",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
+                 " %sv%d %s requested=%zu p=%p end=%p xdr=[%p,%zu]/%u/[%p,%zu]/%u\n",
                __entry->task_id, __entry->client_id,
                __get_str(progname), __entry->version, __get_str(procedure),
                __entry->requested, __entry->p, __entry->end,
                __entry->len = xdr->buf->len;
        ),
 
-       TP_printk(
-               "task:%u@%u %sv%d %s offset=%zu copied=%u xdr=[%p,%zu]/%u/[%p,%zu]/%u\n",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
+                 " %sv%d %s offset=%zu copied=%u xdr=[%p,%zu]/%u/[%p,%zu]/%u\n",
                __entry->task_id, __entry->client_id,
                __get_str(progname), __entry->version, __get_str(procedure),
                __entry->offset, __entry->copied,
                __entry->remaining = rqst->rq_slen - transport->xmit.offset;
        ),
 
-       TP_printk("task:%u@%u total=%u remaining=%u",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
+                 " total=%u remaining=%u",
                __entry->task_id, __entry->client_id,
                __entry->total, __entry->remaining
        )
                __entry->status = status;
        ),
 
-       TP_printk(
-               "task:%u@%u xid=0x%08x seqno=%u status=%d",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
+                 " xid=0x%08x seqno=%u status=%d",
                __entry->task_id, __entry->client_id, __entry->xid,
                __entry->seqno, __entry->status)
 );
                __assign_str(procname, rpc_proc_name(task));
        ),
 
-       TP_printk(
-               "task:%u@%u xid=0x%08x %sv%d %s ntrans=%d timeout=%lu",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
+                 " xid=0x%08x %sv%d %s ntrans=%d timeout=%lu",
                __entry->task_id, __entry->client_id, __entry->xid,
                __get_str(progname), __entry->version, __get_str(procname),
                __entry->ntrans, __entry->timeout
                                        xprt->snd_task->tk_pid : -1;
        ),
 
-       TP_printk("task:%u@%u snd_task:%u",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
+                 " snd_task:" SUNRPC_TRACE_PID_SPECIFIER,
                        __entry->task_id, __entry->client_id,
                        __entry->snd_task_id)
 );
                __entry->wait = test_bit(XPRT_CWND_WAIT, &xprt->state);
        ),
 
-       TP_printk("task:%u@%u snd_task:%u cong=%lu cwnd=%lu%s",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
+                 " snd_task:" SUNRPC_TRACE_PID_SPECIFIER
+                 " cong=%lu cwnd=%lu%s",
                        __entry->task_id, __entry->client_id,
                        __entry->snd_task_id, __entry->cong, __entry->cwnd,
                        __entry->wait ? " (wait)" : "")
                __entry->xid = be32_to_cpu(rqst->rq_xid);
        ),
 
-       TP_printk("task:%u@%u xid=0x%08x",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " xid=0x%08x",
                __entry->task_id, __entry->client_id, __entry->xid
        )
 );
                __assign_str(servername, task->tk_xprt->servername);
        ),
 
-       TP_printk("task:%u@%u server=%s program=%u version=%u protocol=%d bind_version=%u",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
+                 " server=%s program=%u version=%u protocol=%d bind_version=%u",
                __entry->task_id, __entry->client_id, __get_str(servername),
                __entry->program, __entry->version, __entry->protocol,
                __entry->bind_version
                __entry->port = port;
        ),
 
-       TP_printk("task:%u@%u status=%d port=%u",
+       TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " status=%d port=%u",
                __entry->task_id, __entry->client_id,
                __entry->status, __entry->port
        )
 
--- /dev/null
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (c) 2021 Oracle and/or its affiliates.
+ *
+ * Common types and format specifiers for sunrpc.
+ */
+
+#if !defined(_TRACE_SUNRPC_BASE_H)
+#define _TRACE_SUNRPC_BASE_H
+
+#include <linux/tracepoint.h>
+
+#define SUNRPC_TRACE_PID_SPECIFIER     "%08x"
+#define SUNRPC_TRACE_CLID_SPECIFIER    "%08x"
+#define SUNRPC_TRACE_TASK_SPECIFIER \
+       "task:" SUNRPC_TRACE_PID_SPECIFIER "@" SUNRPC_TRACE_CLID_SPECIFIER
+
+#endif /* _TRACE_SUNRPC_BASE_H */