public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: "Jörn Engel" <joern@logfs.org>
Cc: linux-scsi@vger.kernel.org
Subject: Re: [RFC][PATCH] Add a flight data recorder for scsi commands
Date: Tue, 27 Aug 2013 20:34:43 -0400	[thread overview]
Message-ID: <20130827203443.52cfee8c@gandalf.local.home> (raw)
In-Reply-To: <20130827224147.GD7293@logfs.org>

On Tue, 27 Aug 2013 18:41:47 -0400
Jörn Engel <joern@logfs.org> wrote:

> On Tue, 27 August 2013 19:54:22 -0400, Steven Rostedt wrote:
> > On Tue, 27 Aug 2013 18:03:25 -0400
> > Jörn Engel <joern@logfs.org> wrote:
> > 
> > > Here is a fun patch in an early state.  Essentially I want to trace
> > > scsi commands, which has already been done long ago.  The problem I
> > > have is that I care about all the scsi commands for one particular
> > > device - without knowing in advance which device it will be.  Once I
> > > know the device in question, I want to dump the last X commands.
> > 
> > Is the device passed to the trace point? If so, you can add a filter on
> > that device. You can even create a separate buffer to just trace that
> > device.
> 
> "without knowing in advance which device it will be"
> 
> I have to trace all devices, because I don't know the interesting one
> ahead of time.  And after the fact, I only care about one device.  So
> having per-device trace buffers seems to be The Right Approach(tm).
> 
> And having multiple trace buffers is where I cannot easily make my
> problem fit your infrastructure.  

Are you sure about that? Note, I'm not sure you want this as something
in production systems to always have on boot, for that, we can modify
things a little to help you there. But other than that you can do:

for each device d
  mkdir /sys/kernel/debug/tracing/instances/scsi-$d
  cd /sys/kernel/debug/tracing/instances/scsi-$d
  echo $filter > events/scsi/*/filter
  echo 1 > events/scsi/*/enable
done

The above is a script like pseudo code, just to convey the idea, not
something to put in verbatim.

Basically, on boot, you can make a separate buffer for each device, and
have a different filter for those events to save to each specific
buffer.


Now, this may still not be what you want, but at a minimum, I would not
add another hook like you did with the fdr_scsi_cmd(cmd). You know you
can hook to the tracepoint directly.


	register_trace_scsi_dispatch_cmd_start(fdr_scsi_cmd, NULL);

static void fdr_scsi_cmd(void *data, struct scsi_cmnd *cmd)
{
	[...]
}

Once you call that register function, the tracepoint will call the
function you registered when the tracepoint is hit.

You can also create your own ring buffer with ring_buffer_alloc(), and
get a lockless ring buffer as well. All of ftrace is built with lego
blocks, so the infrastructure is there even if the general utility
isn't exactly what you are looking for.

-- Steve
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2013-08-28  0:34 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20130827220325.GB7293@logfs.org>
2013-08-27 22:17 ` [RFC][PATCH] Add a flight data recorder for scsi commands Jörn Engel
2013-08-28  5:09   ` Nicholas A. Bellinger
2013-08-28 14:28     ` Jörn Engel
2013-08-28 12:45   ` Bart Van Assche
2013-08-28 14:32     ` Jörn Engel
2013-08-27 23:54 ` Steven Rostedt
2013-08-27 22:41   ` Jörn Engel
2013-08-28  0:34     ` Steven Rostedt [this message]
2013-08-28 14:19       ` Jörn Engel

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=20130827203443.52cfee8c@gandalf.local.home \
    --to=rostedt@goodmis.org \
    --cc=joern@logfs.org \
    --cc=linux-scsi@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