#undef TRACE_SYSTEM
#define TRACE_SYSTEM ceph
#if !defined(_TRACE_CEPH_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_CEPH_H
#include <linux/tracepoint.h>
#define ceph_mdsc_suspend_reasons \
EM(ceph_mdsc_suspend_reason_no_mdsmap, "no-mdsmap") \
EM(ceph_mdsc_suspend_reason_no_active_mds, "no-active-mds") \
EM(ceph_mdsc_suspend_reason_rejected, "rejected") \
E_(ceph_mdsc_suspend_reason_session, "session")
#ifndef __NETFS_DECLARE_TRACE_ENUMS_ONCE_ONLY
#define __NETFS_DECLARE_TRACE_ENUMS_ONCE_ONLY
#undef EM
#undef E_
#define EM(a, b) a,
#define E_(a, b) a
enum ceph_mdsc_suspend_reason { ceph_mdsc_suspend_reasons } __mode(byte);
#endif
#undef EM
#undef E_
#define EM(a, b) TRACE_DEFINE_ENUM(a);
#define E_(a, b) TRACE_DEFINE_ENUM(a);
ceph_mdsc_suspend_reasons;
#undef EM
#undef E_
#define EM(a, b) { a, b },
#define E_(a, b) { a, b }
TRACE_EVENT(ceph_mdsc_submit_request,
TP_PROTO(struct ceph_mds_client *mdsc,
struct ceph_mds_request *req),
TP_ARGS(mdsc, req),
TP_STRUCT__entry(
__field(u64, tid)
__field(int, op)
__field(u64, ino)
__field(u64, snap)
),
TP_fast_assign(
struct inode *inode;
__entry->tid = req->r_tid;
__entry->op = req->r_op;
inode = req->r_inode;
if (inode == NULL && req->r_dentry)
inode = d_inode(req->r_dentry);
if (inode) {
__entry->ino = ceph_ino(inode);
__entry->snap = ceph_snap(inode);
} else {
__entry->ino = __entry->snap = 0;
}
),
TP_printk("R=%llu op=%s ino=%llx,%llx",
__entry->tid,
ceph_mds_op_name(__entry->op),
__entry->ino, __entry->snap)
);
TRACE_EVENT(ceph_mdsc_suspend_request,
TP_PROTO(struct ceph_mds_client *mdsc,
struct ceph_mds_session *session,
struct ceph_mds_request *req,
enum ceph_mdsc_suspend_reason reason),
TP_ARGS(mdsc, session, req, reason),
TP_STRUCT__entry(
__field(u64, tid)
__field(int, op)
__field(int, mds)
__field(enum ceph_mdsc_suspend_reason, reason)
),
TP_fast_assign(
__entry->tid = req->r_tid;
__entry->op = req->r_op;
__entry->mds = session ? session->s_mds : -1;
__entry->reason = reason;
),
TP_printk("R=%llu op=%s reason=%s",
__entry->tid,
ceph_mds_op_name(__entry->op),
__print_symbolic(__entry->reason, ceph_mdsc_suspend_reasons))
);
TRACE_EVENT(ceph_mdsc_resume_request,
TP_PROTO(struct ceph_mds_client *mdsc,
struct ceph_mds_request *req),
TP_ARGS(mdsc, req),
TP_STRUCT__entry(
__field(u64, tid)
__field(int, op)
),
TP_fast_assign(
__entry->tid = req->r_tid;
__entry->op = req->r_op;
),
TP_printk("R=%llu op=%s",
__entry->tid,
ceph_mds_op_name(__entry->op))
);
TRACE_EVENT(ceph_mdsc_send_request,
TP_PROTO(struct ceph_mds_session *session,
struct ceph_mds_request *req),
TP_ARGS(session, req),
TP_STRUCT__entry(
__field(u64, tid)
__field(int, op)
__field(int, mds)
),
TP_fast_assign(
__entry->tid = req->r_tid;
__entry->op = req->r_op;
__entry->mds = session->s_mds;
),
TP_printk("R=%llu op=%s mds=%d",
__entry->tid,
ceph_mds_op_name(__entry->op),
__entry->mds)
);
TRACE_EVENT(ceph_mdsc_complete_request,
TP_PROTO(struct ceph_mds_client *mdsc,
struct ceph_mds_request *req),
TP_ARGS(mdsc, req),
TP_STRUCT__entry(
__field(u64, tid)
__field(int, op)
__field(int, err)
__field(unsigned long, latency_ns)
),
TP_fast_assign(
__entry->tid = req->r_tid;
__entry->op = req->r_op;
__entry->err = req->r_err;
__entry->latency_ns = req->r_end_latency - req->r_start_latency;
),
TP_printk("R=%llu op=%s err=%d latency_ns=%lu",
__entry->tid,
ceph_mds_op_name(__entry->op),
__entry->err,
__entry->latency_ns)
);
TRACE_EVENT(ceph_handle_caps,
TP_PROTO(struct ceph_mds_client *mdsc,
struct ceph_mds_session *session,
int op,
const struct ceph_vino *vino,
struct ceph_inode_info *inode,
u32 seq, u32 mseq, u32 issue_seq),
TP_ARGS(mdsc, session, op, vino, inode, seq, mseq, issue_seq),
TP_STRUCT__entry(
__field(int, mds)
__field(int, op)
__field(u64, ino)
__field(u64, snap)
__field(u32, seq)
__field(u32, mseq)
__field(u32, issue_seq)
),
TP_fast_assign(
__entry->mds = session->s_mds;
__entry->op = op;
__entry->ino = vino->ino;
__entry->snap = vino->snap;
__entry->seq = seq;
__entry->mseq = mseq;
__entry->issue_seq = issue_seq;
),
TP_printk("mds=%d op=%s vino=%llx.%llx seq=%u iseq=%u mseq=%u",
__entry->mds,
ceph_cap_op_name(__entry->op),
__entry->ino,
__entry->snap,
__entry->seq,
__entry->issue_seq,
__entry->mseq)
);
#undef EM
#undef E_
#endif
#include <trace/define_trace.h>