From 6c8a1c22f088e2f193f89114b117fcc52d397cb1 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Wed, 20 May 2009 09:44:39 +0200 Subject: [PATCH] --- yaml --- r: 147098 b: refs/heads/master c: 437681800bdaa9feb58cf943dfbbd239c21d3705 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/ata/libata-core.c | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 19b783386543..3760dcbaa67d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 31f80112cc7e7ea4c220d6f62b0a7052754befb3 +refs/heads/master: 437681800bdaa9feb58cf943dfbbd239c21d3705 diff --git a/trunk/drivers/ata/libata-core.c b/trunk/drivers/ata/libata-core.c index c9242301cfa1..ca4d208ddf3b 100644 --- a/trunk/drivers/ata/libata-core.c +++ b/trunk/drivers/ata/libata-core.c @@ -5031,7 +5031,6 @@ int ata_qc_complete_multiple(struct ata_port *ap, u32 qc_active) { int nr_done = 0; u32 done_mask; - int i; done_mask = ap->qc_active ^ qc_active; @@ -5041,16 +5040,16 @@ int ata_qc_complete_multiple(struct ata_port *ap, u32 qc_active) return -EINVAL; } - for (i = 0; i < ATA_MAX_QUEUE; i++) { + while (done_mask) { struct ata_queued_cmd *qc; + unsigned int tag = __ffs(done_mask); - if (!(done_mask & (1 << i))) - continue; - - if ((qc = ata_qc_from_tag(ap, i))) { + qc = ata_qc_from_tag(ap, tag); + if (qc) { ata_qc_complete(qc); nr_done++; } + done_mask &= ~(1 << tag); } return nr_done;