public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
From: "Martin K. Petersen" <martin.petersen@ORACLE.COM>
To: Boaz Harrosh <bharrosh@panasas.com>
Cc: "Martin K. Petersen" <martin.petersen@ORACLE.COM>,
	linux-scsi@vger.kernel.org, James.Bottomley@suse.de
Subject: Re: [PATCH] scsi: Fix printing of variable length commands
Date: Wed, 20 Jan 2010 02:17:40 -0500	[thread overview]
Message-ID: <yq1wrzdkzxn.fsf@sermon.lab.mkp.net> (raw)
In-Reply-To: <4B558030.90006@panasas.com> (Boaz Harrosh's message of "Tue, 19 Jan 2010 11:49:36 +0200")

>>>>> "Boaz" == Boaz Harrosh <bharrosh@panasas.com> writes:

Boaz> If you are already at it could you also add the things that
Boaz> bothered me? I did stare at this function before, but did not see
Boaz> the bug you are fixing, thanks.  (Did see other less important
Boaz> stuff)

I'm ok with cleaning up the redundant statements even though it's a bit
of churn in what's otherwise a pure bug fix patch.  Simply on the
grounds that it's silly code.


> - sa = (cdbp[8] << 8) + cdbp[9];
> + sa = be16_to_cpu(((struct scsi_varlen_cdb_hdr *)cdbp)->service_action);

Here, however, I find the original code far superior.  I know what
you're doing and why but I find the old code a bazillion times easier to
read.  Short and to the point.  No complex typecasts and I don't have to
go hunting for varlen_cdb_hdr struct definitions.  I dive straight into
SBC and see that bytes 8 and 9 in the CDB constitute the service action.
Done!

I know that the header looks the same for all variable length commands.
But we don't have a struct scsi_cdb_header with an "operation code"
entry pointing to cmnd[0] either.  Nor do we have headers for the
MAINTENANCE and SERVICE ACTION commands.  To me a CDB is a byte stream
and not a bunch of structs.

Anyway.  I know where you stand on this :)


scsi: Fix printing of variable length commands

We dereferenced the MAINTENANCE IN array when decoding variable length
commands.  Use the right array.  Also consolidate identical if
statements below.

Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

diff --git a/drivers/scsi/constants.c b/drivers/scsi/constants.c
index 9129bcf..7092ff6 100644
--- a/drivers/scsi/constants.c
+++ b/drivers/scsi/constants.c
@@ -219,18 +219,15 @@ static void print_opcode_name(unsigned char * cdbp, int cdb_len)
 			break;
 		}
 		sa = (cdbp[8] << 8) + cdbp[9];
-		name = get_sa_name(maint_in_arr, MAINT_IN_SZ, sa);
-		if (name) {
+		name = get_sa_name(variable_length_arr, VARIABLE_LENGTH_SZ, sa);
+		if (name)
 			printk("%s", name);
-			if ((cdb_len > 0) && (len != cdb_len))
-				printk(", in_cdb_len=%d, ext_len=%d",
-				       len, cdb_len);
-		} else {
+		else
 			printk("cdb[0]=0x%x, sa=0x%x", cdb0, sa);
-			if ((cdb_len > 0) && (len != cdb_len))
-				printk(", in_cdb_len=%d, ext_len=%d",
-				       len, cdb_len);
-		}
+
+		if ((cdb_len > 0) && (len != cdb_len))
+			printk(", in_cdb_len=%d, ext_len=%d", len, cdb_len);
+
 		break;
 	case MAINTENANCE_IN:
 		sa = cdbp[1] & 0x1f;


  reply	other threads:[~2010-01-20  7:18 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-18 23:03 [PATCH] scsi: Fix printing of variable length commands Martin K. Petersen
2010-01-19  9:49 ` Boaz Harrosh
2010-01-20  7:17   ` Martin K. Petersen [this message]
2010-01-20  9:20     ` Boaz Harrosh

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=yq1wrzdkzxn.fsf@sermon.lab.mkp.net \
    --to=martin.petersen@oracle.com \
    --cc=James.Bottomley@suse.de \
    --cc=bharrosh@panasas.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox