On 02/07/14 20:30, Nicholas A. Bellinger wrote: > All that scsi_debug with NOP'ed REQ_TYPE_FS commands is doing is calling > scsi_cmd->done() as soon as the descriptor has been dispatched into LLD > ->queuecommand() code. > > It's useful for determining an absolute performance ceiling between > scsi_mq vs. scsi_request_fn() based codepaths without involving any > other LLD specific overheads. Sorry but I'm not convinced that the scsi_debug driver is well suited for testing scsi-mq. In source file drivers/scsi/scsi_debug.c of kernel 3.14-rc1 I found the following: static DEF_SCSI_QCMD(scsi_debug_queuecommand) >From include/scsi/scsi_host.h: /* * Temporary #define for host lock push down. Can be removed when all * drivers have been updated to take advantage of unlocked * queuecommand. * */ #define DEF_SCSI_QCMD(func_name) \ int func_name(struct Scsi_Host *shost, struct scsi_cmnd *cmd) \ { \ unsigned long irq_flags; \ int rc; \ spin_lock_irqsave(shost->host_lock, irq_flags); \ scsi_cmd_get_serial(shost, cmd); \ rc = func_name##_lck (cmd, cmd->scsi_done); \ spin_unlock_irqrestore(shost->host_lock, irq_flags); \ return rc; \ } In other words, all scsi_debug_queuecommand() are serialized. I think for testing the scsi-mq code properly a SCSI LLD driver is needed that allows concurrent queuecommand() calls. Bart. -- 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