[SCSI] TYPE_RBC cache fixes (sbp2.c affected)
authorAl Viro <viro@parcelfarce.linux.theplanet.co.uk>
Mon, 16 May 2005 00:59:55 +0000 (01:59 +0100)
committerJames Bottomley <jejb@mulgrave.(none)>
Thu, 26 May 2005 13:41:15 +0000 (08:41 -0500)
commit631e8a1398ce4cfef8b30678d51daf0c64313a09
tree14d3b601b4a7160568c58d53a94a0a4711094588
parent53222b906903fd861dc24ebccfa07ee125941313
[SCSI] TYPE_RBC cache fixes (sbp2.c affected)

a) TYPE_SDAD renamed to TYPE_RBC and taken to scsi.h
b) in sbp2.c remapping of TYPE_RPB to TYPE_DISK turned off
c) relevant places in midlayer and sd.c taught to accept TYPE_RBC
d) sd.c::sd_read_cache_type() looks into page 6 when dealing with
TYPE_RBC - these guys have writeback cache flag there and are not guaranteed
to have page 8 at all.
e) sd_read_cache_type() got an extra sanity check - it checks that
it got the page it asked for before using its contents.  And screams if
mismatch had happened.  Rationale: there are broken devices out there that
are "helpful" enough to go for "I don't have a page you've asked for, here,
have another one".  For example, PL3507 had been caught doing just that...
f) sbp2 sets sdev->use_10_for_rw and sdev->use_10_for_ms instead
of bothering to remap READ6/WRITE6/MOD_SENSE, so most of the conversions
in there are gone now.

Incidentally, I wonder if USB storage devices that have no
mode page 8 are simply RBC ones.  I haven't touched that, but it might
be interesting to check...

Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/ieee1394/sbp2.c
drivers/ieee1394/sbp2.h
drivers/scsi/scsi_scan.c
drivers/scsi/sd.c
include/scsi/scsi.h