|
From: | Paolo Bonzini |
Subject: | Re: [Qemu-devel] [PATCH for-2.1? 2/2] thread-pool: avoid deadlock in nested aio_poll() calls |
Date: | Mon, 14 Jul 2014 12:49:38 +0200 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 |
Il 14/07/2014 10:36, Paolo Bonzini ha scritto:
to /* In case elem->common.cb() makes a nested aio_poll() call, * next may become invalid as well. Instead of just * restarting the QLIST_FOREACH_SAFE, go through the BH * once more, which also avoids deadlock if element A's * callback waits for element B and both completed at the * same time. */ qemu_bh_schedule(pool->completion_bh); elem->common.cb(elem->common.opaque, elem->ret); qemu_aio_release(elem);
This is of course missing here: break; Paolo
There is no change in logic, it's just that the goto is switched to a BH representing a continuation. I am then not sure why pool->completion_token is necessary?
[Prev in Thread] | Current Thread | [Next in Thread] |