From: Matthew Wilcox <matthew@wil.cx>
To: James Bottomley <James.Bottomley@HansenPartnership.com>
Cc: Matthew Wilcox <willy@linux.intel.com>,
linux-scsi@vger.kernel.org, Martin Petersen <mkp@mkp.net>
Subject: Re: [PATCH 2/2] sd: Try READ CAPACITY 16 first for SBC-2 devices
Date: Sat, 14 Mar 2009 16:48:44 -0600 [thread overview]
Message-ID: <20090314224843.GE14127@parisc-linux.org> (raw)
In-Reply-To: <1237063291.3907.64.camel@localhost.localdomain>
On Sat, Mar 14, 2009 at 03:41:31PM -0500, James Bottomley wrote:
> We're going to have to do something about the scary error messages on
> SBC-2 supporting drives, this is what mine say (and this is after mkp's
> chat reduction):
>
> sd 1:0:1:0: [sdc] READ CAPACITY(16) failed
> sd 1:0:1:0: [sdc] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
> sd 1:0:1:0: [sdc] Sense Key : Illegal Request [current]
> sd 1:0:1:0: [sdc] Add. Sense: Invalid command operation code
> sd 1:0:1:0: [sdc] 71096640 512-byte hardware sectors: (36.4 GB/33.9 GiB)
OK, that's relatively easy to fix. Simply return early if the drive
claims not to understand the command, and it'll try rc10 without printing
the scary messages. Like this, perhaps (note cunning factoring of code):
(compile tested only, and I'll do you a nice changelog and sign-off for
it if it fixes the problem and you approve of this approach).
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index f8260c0..60b31ea 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -1139,6 +1139,14 @@ static int media_not_present(struct scsi_disk *sdkp,
return 1;
}
+static int invalid_field_in_cdb(struct scsi_sense_hdr *sshdr)
+{
+ if (!scsi_sense_valid(sshdr))
+ return 0;
+ return sshdr->sense_key == ILLEGAL_REQUEST &&
+ sshdr->asc == 0x24 && sshdr->ascq == 0x0;
+}
+
/*
* spinup disk - called only in sd_revalidate_disk()
*/
@@ -1362,6 +1370,8 @@ static int read_capacity_16(struct scsi_disk *sdkp, struct scsi_device *sdp,
if (media_not_present(sdkp, &sshdr))
return -ENODEV;
+ if (invalid_field_in_cdb(&sshdr))
+ return -EINVAL;
if (the_result)
sense_valid = scsi_sense_valid(&sshdr);
@@ -1739,10 +1749,7 @@ sd_read_cache_type(struct scsi_disk *sdkp, unsigned char *buffer)
}
bad_sense:
- if (scsi_sense_valid(&sshdr) &&
- sshdr.sense_key == ILLEGAL_REQUEST &&
- sshdr.asc == 0x24 && sshdr.ascq == 0x0)
- /* Invalid field in CDB */
+ if (invalid_field_in_cdb(&sshdr))
sd_printk(KERN_NOTICE, sdkp, "Cache data unavailable\n");
else
sd_printk(KERN_ERR, sdkp, "Asking for cache data failed\n");
--
Matthew Wilcox Intel Open Source Technology Centre
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours. We can't possibly take such
a retrograde step."
next prev parent reply other threads:[~2009-03-14 22:49 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-12 18:20 Support READ CAPACITY 16 on more drives Matthew Wilcox
2009-03-12 18:20 ` [PATCH 1/2] sd: Refactor sd_read_capacity() Matthew Wilcox
2009-03-12 18:35 ` Martin K. Petersen
2009-03-13 21:29 ` James Bottomley
2009-03-13 21:45 ` Martin K. Petersen
2009-03-14 1:19 ` Matthew Wilcox
2009-03-14 13:40 ` James Bottomley
2009-03-12 18:20 ` [PATCH 2/2] sd: Try READ CAPACITY 16 first for SBC-2 devices Matthew Wilcox
2009-03-14 20:41 ` James Bottomley
2009-03-14 22:48 ` Matthew Wilcox [this message]
2009-03-14 23:34 ` James Bottomley
2009-03-14 23:47 ` Matthew Wilcox
2009-03-15 2:36 ` Douglas Gilbert
2009-03-15 3:30 ` James Bottomley
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=20090314224843.GE14127@parisc-linux.org \
--to=matthew@wil.cx \
--cc=James.Bottomley@HansenPartnership.com \
--cc=linux-scsi@vger.kernel.org \
--cc=mkp@mkp.net \
--cc=willy@linux.intel.com \
/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