Messages in this thread | | | Date | Fri, 27 May 2005 09:47:13 +0200 | From | Jens Axboe <> | Subject | Re: [PATCH] SATA NCQ support |
| |
On Fri, May 27 2005, Jeff Garzik wrote: > Jens Axboe wrote: > >That is the typical case, ata_qc_new() succeeds but we cannot issue the > >command yet. So where do you want this logic placed? You cannot drop the > >host_lock in-between, as that could potentially change the situation. > > ata_scsi_translate() in libata-scsi.c, in between the call to > ata_scsi_qc_new() and ata_qc_issue(). > > something like: > > if (ata_scsi_qc_new() fails || > (depth > 0 && ata_check_non_ncq_cmd())) > complete SCSI command with 'queue full'
That is an improvement for SCSI originated commands, I can drop ATA_QCFLAG_DEFER then. Will make that change. But what about ata_qc_issue() from other places? That is the ugly code, which will hit the waiting currently.
> NOTE! > > I just noticed a bug -- When ata_scsi_qc_new() fails, the code should > complete the command with queue-full, but does not. > > qc = ata_scsi_qc_new(ap, dev, cmd, done); > if (!qc) > return;
Indeed, looks like an old bug.
-- Jens Axboe
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |