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;
next prev parent 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