Re: [SCSI] Add support for braindead Cypress USB ATA passthrough CDBs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 12/23/05 14:34:30 -0600 James Bottomley wrote:

On Fri, 2005-12-23 at 11:12 -0800, David Caldwell wrote:
> I think this approach is too invasive to the stack.  When this was
> discussed in november, there wasn't much enthusiasm for resurrecting
> the long dead LUN_INHIBIT flag.  The two suggested mechanisms are

Invasive because of the extra flag in the request structure?

Yes. But also having users determine this is wrong when it's a device
feature.

I see. I can agree with that. It certainly would be better if it was somehow automatic.

> 2) If 1) doesn't work, then use a blacklist entry which the subsystems
> would also have access to.

I think this might not be optimal. The problem is that it's impossible
to  tell that it's a Cypress part from the USB side of things (or the
SCSI side  for that matter), so there would have to be an entry for each
of the 50,000  vendors of USB bridges.

I meant use it in the way usb uses other blacklist flags: set them from
slave_configure.

Hmm. I don't understand this yet, I'll have to read more, but a cursory glance looks like this is a kernel interface. I'd really like things to flexible enough to be able to do this sort of one off random device stuff from user space. Or is the idea that the [generic] usb_storage driver would set a flag that says "I don't do LUNs"?

What about the patch's cdb length additions in sg and scsi_lib.c? It
seems  like half the code guesses CDB length and the other half passes
it around.  Clearly, given devices like this, guessing isn't going to
work 100% of the  time. So either eveyone needs to pass around lengths,
or there needs to be  another flag somewhere. The code should at least
be consistent though.

I don't think they're necessary, are they?  Zero in cmnd_len means
mid-layer determines size.

I think it's fine for zero length to mean mid_layer figures out the size, but right now SG is throwing away the user passed in length (since scsi_execute_async() doesn't have a cdb_length parameter) and then guessing at it later regardless of whether it's zero or non-zero. blkdev/scsi_ioctl.c doesn't do this, but sg.c does which is at least inconsistent.

What it prevents is the issuing of vendor specific commands via the API,
which is arguably a good thing.

Hmmm, isn't this the point of the ioctl API? How else do you get vendor unique things to a device?

-David

-
: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux