Skip to content

Commit

Permalink
GFS2: Add origin indicator to glock demote tracing
Browse files Browse the repository at this point in the history
This adds the origin indicator to the trace point for glock
demotion, so that it is possible to see where demote requests
have come from.

Note that requests generated from the demote_rq sysfs interface
will show as remote, since they are intended to replicate
exactly the effect of a demote reuqest from a remote node. It
is still possible to tell these apart by looking at the process
which initiated the demote request.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
  • Loading branch information
Steven Whitehouse committed Apr 10, 2013
1 parent 81ffbf6 commit 7bd8b2e
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 5 deletions.
2 changes: 1 addition & 1 deletion fs/gfs2/glock.c
Original file line number Diff line number Diff line change
Expand Up @@ -926,7 +926,7 @@ static void handle_callback(struct gfs2_glock *gl, unsigned int state,
}
if (gl->gl_ops->go_callback)
gl->gl_ops->go_callback(gl, remote);
trace_gfs2_demote_rq(gl);
trace_gfs2_demote_rq(gl, remote);
}

void gfs2_print_dbg(struct seq_file *seq, const char *fmt, ...)
Expand Down
11 changes: 7 additions & 4 deletions fs/gfs2/trace_gfs2.h
Original file line number Diff line number Diff line change
Expand Up @@ -159,9 +159,9 @@ TRACE_EVENT(gfs2_glock_put,
/* Callback (local or remote) requesting lock demotion */
TRACE_EVENT(gfs2_demote_rq,

TP_PROTO(const struct gfs2_glock *gl),
TP_PROTO(const struct gfs2_glock *gl, bool remote),

TP_ARGS(gl),
TP_ARGS(gl, remote),

TP_STRUCT__entry(
__field( dev_t, dev )
Expand All @@ -170,6 +170,7 @@ TRACE_EVENT(gfs2_demote_rq,
__field( u8, cur_state )
__field( u8, dmt_state )
__field( unsigned long, flags )
__field( bool, remote )
),

TP_fast_assign(
Expand All @@ -179,14 +180,16 @@ TRACE_EVENT(gfs2_demote_rq,
__entry->cur_state = glock_trace_state(gl->gl_state);
__entry->dmt_state = glock_trace_state(gl->gl_demote_state);
__entry->flags = gl->gl_flags | (gl->gl_object ? (1UL<<GLF_OBJECT) : 0);
__entry->remote = remote;
),

TP_printk("%u,%u glock %d:%lld demote %s to %s flags:%s",
TP_printk("%u,%u glock %d:%lld demote %s to %s flags:%s %s",
MAJOR(__entry->dev), MINOR(__entry->dev), __entry->gltype,
(unsigned long long)__entry->glnum,
glock_trace_name(__entry->cur_state),
glock_trace_name(__entry->dmt_state),
show_glock_flags(__entry->flags))
show_glock_flags(__entry->flags),
__entry->remote ? "remote" : "local")

);

Expand Down

0 comments on commit 7bd8b2e

Please sign in to comment.