Messages in this thread | | | Date | Mon, 10 Aug 2009 11:15:23 -0600 | From | Jonathan Corbet <> | Subject | Re: [PATCH 2/3] libata: add support for blk-iopoll |
| |
Hey, Jens,
I'm a little slow in looking at this, hopefully it's not completely noise...
> @@ -2157,7 +2194,12 @@ static irqreturn_t ahci_interrupt(int irq, void *dev_instance) > > ap = host->ports[i]; > if (ap) { > - ahci_port_intr(ap); > + if (!blk_iopoll_enabled) > + ahci_port_intr(ap); > + else if (blk_iopoll_sched_prep(&ap->iopoll)) { > + ap_irq_disable(ap); > + blk_iopoll_sched(&ap->iopoll); > + } > VPRINTK("port %u\n", i); > } else { > VPRINTK("port %u (no irq)\n", i);
It seems to me that, if blk_iopoll_sched_prep() fails, the interrupt will be dropped on the floor; would you not need an explicit ahci_port_intr() call in that case too? Unless I've misunderstood as usual...
Documenting the "zero means failure" nature of blk_iopoll_sched_prep() might also be a good idea; I predict confusion otherwise.
jon
| |