On Tue, Oct 26, 2010 at 3:14 PM, Arun R Bharadwaj <a...@linux.vnet.ibm.com> wrote: > @@ -536,14 +442,15 @@ static void paio_cancel(BlockDriverAIOCB *blockacb) > struct qemu_paiocb *acb = (struct qemu_paiocb *)blockacb; > int active = 0; > > - mutex_lock(&lock); > if (!acb->active) { > - QTAILQ_REMOVE(&request_list, acb, node); > - acb->ret = -ECANCELED; > + if (!deque_threadletwork(&acb->work)) { > + acb->ret = -ECANCELED; > + } else { > + active = 1; > + } > } else if (acb->ret == -EINPROGRESS) { > active = 1; > } > - mutex_unlock(&lock); > > if (active) { > /* fail safe: if the aio could not be canceled, we wait for
The paio_cancel() infinite loop is still there in this patch. http://www.mail-archive.com/qemu-devel@nongnu.org/msg44766.html Stefan