From: James Bottomley <jbottomley@parallels.com>
To: "hare@suse.de" <hare@suse.de>
Cc: "hch@lst.de" <hch@lst.de>,
"linux-scsi@vger.kernel.org" <linux-scsi@vger.kernel.org>
Subject: Re: [PATCH 3/9] scsi: use external buffer for command logging
Date: Tue, 13 Jan 2015 18:56:17 +0000 [thread overview]
Message-ID: <1421175409.2076.17.camel@parallels.com> (raw)
In-Reply-To: <1420699430-9492-4-git-send-email-hare@suse.de>
On Thu, 2015-01-08 at 07:43 +0100, Hannes Reinecke wrote:
> Use an external buffer for __scsi_print_command() and
> move command logging over to use the per-cpu logging
> buffer. With that we can guarantee the command always
> will always be formatted in one line.
> So we can even print out a variable length command
> correctly across several lines.
> Finally rename __scsi_print_command() to
> __scsi_format_comment() to better reflect the
> functionality.
>
> Tested-by: Robert Elliott <elliott@hp.com>
> Reviewed-by: Robert Elliott <elliott@hp.com>
> Reviewed-by: Christoph Hellwig <hch@lst.de>
> Signed-off-by: Hannes Reinecke <hare@suse.de>
> ---
> drivers/scsi/ch.c | 6 +-
> drivers/scsi/constants.c | 74 +-----------------
> drivers/scsi/scsi_logging.c | 182 ++++++++++++++++++++++++++++++++++++++++----
> drivers/scsi/sr_ioctl.c | 13 +++-
> include/scsi/scsi.h | 3 +
> include/scsi/scsi_dbg.h | 6 +-
> 6 files changed, 192 insertions(+), 92 deletions(-)
>
> diff --git a/drivers/scsi/ch.c b/drivers/scsi/ch.c
> index 6bac8a7..79e462f 100644
> --- a/drivers/scsi/ch.c
> +++ b/drivers/scsi/ch.c
> @@ -195,8 +195,10 @@ ch_do_scsi(scsi_changer *ch, unsigned char *cmd, int cmd_len,
> retry:
> errno = 0;
> if (debug) {
> - DPRINTK("command: ");
> - __scsi_print_command(cmd, cmd_len);
> + char logbuf[SCSI_LOG_BUFSIZE];
> +
> + __scsi_format_command(logbuf, sizeof(logbuf), cmd, cmd_len);
> + DPRINTK("command: %s", logbuf);
I really hate using an on-stack buffer here ... we're pretty deep in the
call chain already.
Since it's just required for printing a "command: " prefix, why not just
use scsi_print_command()?
> diff --git a/drivers/scsi/sr_ioctl.c b/drivers/scsi/sr_ioctl.c
> index fb929fa..e8deb9c 100644
> --- a/drivers/scsi/sr_ioctl.c
> +++ b/drivers/scsi/sr_ioctl.c
> @@ -188,6 +188,7 @@ int sr_do_ioctl(Scsi_CD *cd, struct packet_command *cgc)
> struct scsi_sense_hdr sshdr;
> int result, err = 0, retries = 0;
> struct request_sense *sense = cgc->sense;
> + char logbuf[SCSI_LOG_BUFSIZE];
Same issue here.
> SDev = cd->device;
>
> @@ -257,14 +258,20 @@ int sr_do_ioctl(Scsi_CD *cd, struct packet_command *cgc)
> /* sense: Invalid command operation code */
> err = -EDRIVE_CANT_DO_THIS;
> #ifdef DEBUG
> - __scsi_print_command(cgc->cmd, CDROM_PACKET_SIZE);
> + __scsi_format_command(logbuf, sizeof(logbuf),
> + cgc->cmd, CDROM_PACKET_SIZE);
> + sr_printk(KERN_INFO, cd,
> + "CDROM (ioctl) invalid command: %s\n",
> + logbuf);
Looks like scsi_print_command() will work here too.
> scsi_print_sense_hdr(cd->device, cd->cdi.name, &sshdr);
> #endif
> break;
> default:
> + __scsi_format_command(logbuf, sizeof(logbuf),
> + cgc->cmd, CDROM_PACKET_SIZE);
> sr_printk(KERN_ERR, cd,
> - "CDROM (ioctl) error, command: ");
> - __scsi_print_command(cgc->cmd, CDROM_PACKET_SIZE);
> + "CDROM (ioctl) error, command: %s\n",
> + logbuf);
And realistically here (with the appropriate sdev_print()'s preceding).
> scsi_print_sense_hdr(cd->device, cd->cdi.name, &sshdr);
> err = -EIO;
> }
James
next prev parent reply other threads:[~2015-01-13 18:56 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-08 6:43 [PATCHv4 0/9] scsi logging update: the real thing Hannes Reinecke
2015-01-08 6:43 ` [PATCH 1/9] scsi: Implement per-cpu logging buffer Hannes Reinecke
2015-01-13 18:41 ` James Bottomley
2015-01-08 6:43 ` [PATCH 2/9] scsi: log request tag for scmd_printk() Hannes Reinecke
2015-01-08 6:43 ` [PATCH 3/9] scsi: use external buffer for command logging Hannes Reinecke
2015-01-13 18:56 ` James Bottomley [this message]
2015-01-14 9:36 ` hch
2015-01-14 15:24 ` James Bottomley
2015-01-08 6:43 ` [PATCH 4/9] libata: use __scsi_format_command() Hannes Reinecke
2015-01-08 6:43 ` [PATCH 5/9] scsi: use per-cpu buffer for formatting sense Hannes Reinecke
2015-01-08 6:43 ` [PATCH 6/9] scsi: use per-cpu buffer for formatting scsi_print_result() Hannes Reinecke
2015-01-08 6:43 ` [PATCH 7/9] scsi: Conditionally compile in constants.c Hannes Reinecke
2015-01-08 6:43 ` [PATCH 8/9] scsi: Do not display buffer pointers in scsi_log_send() Hannes Reinecke
2015-01-08 6:43 ` [PATCH 9/9] scsi_error: do not display kernel pointer in message logs Hannes Reinecke
2015-01-10 19:17 ` Elliott, Robert (Server Storage)
2015-01-11 18:39 ` Douglas Gilbert
2015-01-12 13:12 ` Ewan Milne
2015-01-12 13:29 ` Hannes Reinecke
2015-01-12 14:57 ` Ewan Milne
2015-01-12 15:18 ` Ewan Milne
2015-01-10 18:01 ` [PATCHv4 0/9] scsi logging update: the real thing Christoph Hellwig
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=1421175409.2076.17.camel@parallels.com \
--to=jbottomley@parallels.com \
--cc=hare@suse.de \
--cc=hch@lst.de \
--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.