All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hannes Reinecke <hare@suse.de>
To: Christoph Hellwig <hch@infradead.org>
Cc: James Bottomley <jbottomley@parallels.com>,
	Ewan Milne <emilne@redhat.com>, Robert Elliott <elliott@hp.com>,
	linux-scsi@vger.kernel.org
Subject: Re: [PATCH 01/10] scsi: Use real functions for logging
Date: Tue, 04 Nov 2014 15:22:25 +0100	[thread overview]
Message-ID: <5458E121.3060505@suse.de> (raw)
In-Reply-To: <20141104135845.GA3531@infradead.org>

On 11/04/2014 02:58 PM, Christoph Hellwig wrote:
> On Tue, Nov 04, 2014 at 09:06:40AM +0100, Hannes Reinecke wrote:
>> Implement a per-cpu buffer for formatting messages,
>> and add real functions for scmd_printk and sdev_prefix_printk
>> using that buffer and use dev_printk() to print out things.
>> And make sdev_printk() a wrapper for sdev_prefix_printk().
> 
> The "real functions" mostly seem to be a side effect of the
> implementation, how about a more descriptive subject line?
> 
> Also adding a sentence or two why this is done to the patch description
> would be very helpful.
> 
Ok.

>> +/*
>> + * scsi_logging.c
> 
> Please don't mention the file name in top of file comments, it's bound
> to get out of date.
> 
Ok.

>> +#define SCSI_LOG_SPOOLSIZE 4096
>> +#define SCSI_LOG_BUFSIZE 128
>> +
>> +struct scsi_log_buf {
>> +	char buffer[SCSI_LOG_SPOOLSIZE];
>> +	unsigned long map;
>> +};
>> +
>> +static DEFINE_PER_CPU(struct scsi_log_buf, scsi_format_log);
> 
> Some sort of comment explaining why we need the per-cpu buffers also
> would be very useful.  To me this seems like a little bit too much
> duplication of the tracing code.
> 
Hehe. It is _not_.
(Not now, anyway).

The problem with the current tracing code is that it's split in two,
a writing side and a reading side.
So you cannot write to it and have it read back in the same function
without using really heavy locking.
But as we _do_ want to have the message printed out as soon as it's
being written we cannot use the tracing code as-is.

_And_ the current tracing infrastructure is using a single buffer,
so if we were to use it our messages would be interspersed with
other, unrelated, tracing messages.

So we'd need to implement our own buffer anyway, which is what
I did. And it was actually suggested by Stephen Rostedt at LPC :-)
Stephen is working on abstracting away some parts of the
tracing infrastructure for general consumption, but until
that's done one has to do it manually.

(The whole issue is just because printk() is so damn stupid.
If we had a printk() workqueue for printing out messages we could
separate the submission side from the logging side. Then
we could expose the internal functions which adds items
to the internal printk buffer, and we could work on those items
directly. But we haven't, and I don't think it's going to
change anytime soon.
Hmm. Would be fit topic for KS. For which I won't be invited.
So there.)

But yeah, I can update the description here.

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		      zSeries & Storage
hare@suse.de			      +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: J. Hawn, J. Guild, F. Imendörffer, HRB 21284 (AG Nürnberg)
--
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:[~2014-11-04 14:22 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-04  8:06 [PATCH 00/10] scsi logging update: the real thing Hannes Reinecke
2014-11-04  8:06 ` [PATCH 01/10] scsi: Use real functions for logging Hannes Reinecke
2014-11-04 13:58   ` Christoph Hellwig
2014-11-04 14:22     ` Hannes Reinecke [this message]
2014-11-11 17:38   ` Elliott, Robert (Server Storage)
2014-11-11 19:07     ` Hannes Reinecke
2014-11-04  8:06 ` [PATCH 02/10] scsi: log request tag for scmd_printk() Hannes Reinecke
2014-11-06  6:40   ` Christoph Hellwig
2014-11-04  8:06 ` [PATCH 03/10] scsi: use external buffer for command logging Hannes Reinecke
2014-11-06  6:52   ` Christoph Hellwig
2014-11-04  8:06 ` [PATCH 04/10] libata: use __scsi_format_command() Hannes Reinecke
2014-11-06  7:02   ` Christoph Hellwig
2014-11-04  8:06 ` [PATCH 05/10] scsi: use per-cpu buffer for formatting sense Hannes Reinecke
2014-11-06  7:33   ` Christoph Hellwig
2014-11-06  7:37     ` Hannes Reinecke
2014-11-04  8:06 ` [PATCH 06/10] scsi: use per-cpu buffer for formatting scsi_print_result() Hannes Reinecke
2014-11-04  8:06 ` [PATCH 07/10] scsi: Rename SERVICE_ACTION_IN to SERVICE_ACTION_IN_16 Hannes Reinecke
2014-11-06  7:07   ` Christoph Hellwig
2014-11-04  8:06 ` [PATCH 08/10] scsi: Add SPC-3 command definitions Hannes Reinecke
2014-11-06  7:07   ` Christoph Hellwig
2014-11-04  8:06 ` [PATCH 09/10] scsi: Conditionally compile in constants.c Hannes Reinecke
2014-11-06  7:19   ` Christoph Hellwig
2014-11-04  8:06 ` [PATCH 10/10] scsi: Move remaining printk() statement to scmd_printk() Hannes Reinecke
2014-11-06  7:20   ` Christoph Hellwig
2014-11-06  7:37     ` Hannes Reinecke

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=5458E121.3060505@suse.de \
    --to=hare@suse.de \
    --cc=elliott@hp.com \
    --cc=emilne@redhat.com \
    --cc=hch@infradead.org \
    --cc=jbottomley@parallels.com \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.