On 10/02/2014 01:36 PM, Christoph Hellwig wrote: > On Thu, Oct 02, 2014 at 11:50:42AM +0200, Hannes Reinecke wrote: >> NCR5380 (and derived LLDDs) and fnic. > > fnic needs a tag for a device reset, which we don't provide if it > is issue by ioctl. This is also showed up during the blk-mq work. > Actually, I've hit a similar issue for megaraid_sas (and I guess others which implement a host-wide tag map might suffer here, too): tags need to be used even for internal commands. But tag allocation is done exclusively in the block layer, so one cannot readily influence this. (Or, if you do, you'll end up with code duplication like the fnic driver). Thing is, for internal commands we typically do not _need_ a fully formed request, we just need to tag number. So we could try to implement a function like 'blk_tag_reserve' to return the next free tag. But even with that we'd be hitting a tag starvation issue; when all command tags are in use we cannot send internal commands. And if the command abort happens to be modelled with an internal command, we cannot even abort commands anymore. Which is probably _not_ what we want. (And I think fnic will suffer from this, too ...) So I guess we need to set aside a reserved tag pool from which the internal commands will be allocated. (Bit like the emergency network skb pool). With that the tag starvation issue will be resolved, and we should be able to remove the custom code in fnic. Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage hare@xxxxxxx +49 911 74053 688 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: J. Hawn, J. Guild, F. Imendörffer, HRB 16746 (AG Nürnberg) -- To unsubscribe from this list: 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