[Resending with proper header, thx jthumshirn]
Hi all,
blk-mq has the concept of 'private' tags to handle driver-internal commands.
Also quite some SCSI HBAs use internal commands for configuration, event
handling etc.
But sadly no interface to use the 'private' tags from the block layer
exists, so quite some drivers like megaraid_sas, aacraid, or hpsa have
to implement their own management of internal commands.
I have made several prototypes on how private tags could be used in the
SCSI context, but neither attempts turned out to be utterly convincing:
a) create an abstraction in the block layer to get private tags directly
from the tag map. Problem is that the tag allocation mechanism is
deeply intertwined with request queues, so desegregating them would
involve quite some churn in the block layer.
b) create a separate admin queue for private commands. Problem is that
then we always will have a SCSI command as the first payload, which
in most cases isn't required as most of the internal commands are
transport or HBA specific, not SCSI CDBs. Also for some drivers we
need to send commands to figure out the configuration, which then
influences the size of the tag space, leaving us with a catch-22
situation.
I would like to discuss at LSF/MM if using private tags in the SCSI
layer is something to be attempted, and if so what would be the best
direction to take.
Cheers,
Hannes
--
Dr. Hannes Reinecke Teamlead Storage & Networking
hare@xxxxxxx +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)