Re: [usb-storage] Re: Make UAS work on HS for devices with and without command tagging support

James Bottomley
2011-12-19T17:14:13Z

On Mon, 2011-12-19 at 11:12 -0500, Matthew Wilcox wrote:
> On Fri, Dec 16, 2011 at 10:47:39PM +0100, James Bottomley wrote:
> > Well, no, what you want to do is use a shared tag map at the block
> > level. That will manage a joint tag space for N queues without your
> > having to partition it arbitrarily. see scsi_host_find_tag() and
> > scsi_init_shared_tag_map().
>
> By the way, the same verbiage about tags being shared across LUNs is also
> present in the SAS spec (and various other specs last time I looked,
> which wasn't recently).

I don't think so: The SAS spec still (as of 2.1) has the nexus being
I_T_L_Q. That means a unique combination of initiator port, target
port, lun and tag identify a nexus. To have the nexus be blind to the
Lun (i.e. tags shared across LUNs) it would have to be identified by
I_T_Q, which I haven't actually seen in any standard.

I'm not even sure a transport would be allowed to override this; SAM is
pretty clear (s 4.12 The Nexus Object) that a nexus is either I_T, I_T_L
or I_T_L_Q. I_T_Q isn't listed as being allowable for a nexus.

James

> We should probably make this the default in
> the SCSI core.
>
> I suspect it hasn't bitten us because there are so few multi-LUN devices
> out there, and it's only a "May" check, not "Must" check. But Linux is
> technically in violation of the SAS spec by sending two commands to the
> same target with the same tag.
> --
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html