On Wed, May 20 2009, Jeff Garzik wrote: > Jens Axboe wrote: >> We very rarely (if ever) complete more than one command in the >> sactive mask at the time, even for extremely high IO rates. So >> looping over the entire range of possible tags is pointless, >> instead use __ffs() to just find the completed tags directly. >> >> Updated to clear the tag from the done_mask instead of shifting >> done_mask down as suggested by From: Tejun Heo <htejun@xxxxxxxxx> >> Verified with a user space tester to produce the same results. >> >> Signed-off-by: Jens Axboe <jens.axboe@xxxxxxxxxx> >> --- >> drivers/ata/libata-core.c | 11 +++++------ >> 1 files changed, 5 insertions(+), 6 deletions(-) > > Much cleaner. Queued... Thanks! > Separately, I wonder if we shouldn't add code to report when the > hardware gives us an unknown tag. > > The code always correctly handles invalid tags passed to us from > hardware "if (qc)", but we should probably squawk when that happens, I > suspect. Probably a good idea, it is a sign of bigger problems if the hardware completes tags that we don't know about. -- Jens Axboe -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html