Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-07-13 Thread Markus Armbruster
Peter Crosthwaite writes: > Hi Markus, > > I consolidated this discussion into a new RFC which proposes a few > solutions the the bdrv_read() from init() problem. > > http://lists.gnu.org/archive/html/qemu-devel/2012-07/msg00237.html > > Are you able to comment on those ideas WRT your latest thou

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-07-12 Thread Peter Crosthwaite
On Thu, Jul 12, 2012 at 11:42 PM, Markus Armbruster wrote: > Kevin Wolf writes: > >> Am 02.07.2012 11:42, schrieb Peter Crosthwaite: >>> On Mon, Jul 2, 2012 at 7:04 PM, Kevin Wolf wrote: Am 02.07.2012 10:57, schrieb Peter Crosthwaite: > No conditional on the qemu_coroutine_create. So it

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-07-12 Thread Markus Armbruster
Kevin Wolf writes: > Am 02.07.2012 11:42, schrieb Peter Crosthwaite: >> On Mon, Jul 2, 2012 at 7:04 PM, Kevin Wolf wrote: >>> Am 02.07.2012 10:57, schrieb Peter Crosthwaite: No conditional on the qemu_coroutine_create. So it will always create a new coroutine for its work which will so

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-07-02 Thread Peter Crosthwaite
On Mon, Jul 2, 2012 at 9:19 PM, Kevin Wolf wrote: > Am 02.07.2012 13:12, schrieb Peter Crosthwaite: >> On Mon, Jul 2, 2012 at 8:44 PM, Kevin Wolf wrote: >>> Am 02.07.2012 12:18, schrieb Peter Maydell: On 2 July 2012 11:01, Kevin Wolf wrote: > Reading from block devices during device ini

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-07-02 Thread Kevin Wolf
Am 02.07.2012 13:12, schrieb Peter Crosthwaite: > On Mon, Jul 2, 2012 at 8:44 PM, Kevin Wolf wrote: >> Am 02.07.2012 12:18, schrieb Peter Maydell: >>> On 2 July 2012 11:01, Kevin Wolf wrote: Reading from block devices during device initialisation breaks migration, so I'd like to see it

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-07-02 Thread Peter Crosthwaite
On Mon, Jul 2, 2012 at 8:44 PM, Kevin Wolf wrote: > Am 02.07.2012 12:18, schrieb Peter Maydell: >> On 2 July 2012 11:01, Kevin Wolf wrote: >>> Reading from block devices during device initialisation breaks >>> migration, so I'd like to see it go away wherever possible. Reading in >>> the whole im

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-07-02 Thread Kevin Wolf
Am 02.07.2012 12:57, schrieb Peter Crosthwaite: > On Mon, Jul 2, 2012 at 8:52 PM, Kevin Wolf wrote: >> Am 02.07.2012 12:18, schrieb Peter Crosthwaite: >>> On Mon, Jul 2, 2012 at 8:01 PM, Kevin Wolf wrote: Am 02.07.2012 11:42, schrieb Peter Crosthwaite: > On Mon, Jul 2, 2012 at 7:04 PM, K

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-07-02 Thread Peter Crosthwaite
On Mon, Jul 2, 2012 at 8:59 PM, Peter Maydell wrote: > On 2 July 2012 11:44, Kevin Wolf wrote: >> Am 02.07.2012 12:18, schrieb Peter Maydell: >>> Why complicate things by adding code for "if this is the first >>> access then read in the file"? >> >> Because then it works. :-) >> >> Migration work

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-07-02 Thread Peter Maydell
On 2 July 2012 11:44, Kevin Wolf wrote: > Am 02.07.2012 12:18, schrieb Peter Maydell: >> Why complicate things by adding code for "if this is the first >> access then read in the file"? > > Because then it works. :-) > > Migration works more or less like this: > > 1. Destination creates device mod

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-07-02 Thread Peter Crosthwaite
On Mon, Jul 2, 2012 at 8:52 PM, Kevin Wolf wrote: > Am 02.07.2012 12:18, schrieb Peter Crosthwaite: >> On Mon, Jul 2, 2012 at 8:01 PM, Kevin Wolf wrote: >>> Am 02.07.2012 11:42, schrieb Peter Crosthwaite: On Mon, Jul 2, 2012 at 7:04 PM, Kevin Wolf wrote: > Am 02.07.2012 10:57, schrieb P

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-07-02 Thread Kevin Wolf
Am 02.07.2012 12:18, schrieb Peter Crosthwaite: > On Mon, Jul 2, 2012 at 8:01 PM, Kevin Wolf wrote: >> Am 02.07.2012 11:42, schrieb Peter Crosthwaite: >>> On Mon, Jul 2, 2012 at 7:04 PM, Kevin Wolf wrote: Am 02.07.2012 10:57, schrieb Peter Crosthwaite: > No conditional on the qemu_corout

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-07-02 Thread Kevin Wolf
Am 02.07.2012 12:18, schrieb Peter Maydell: > On 2 July 2012 11:01, Kevin Wolf wrote: >> Reading from block devices during device initialisation breaks >> migration, so I'd like to see it go away wherever possible. Reading in >> the whole image file doesn't sound like something for which a good >>

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-07-02 Thread Peter Crosthwaite
On Mon, Jul 2, 2012 at 8:01 PM, Kevin Wolf wrote: > Am 02.07.2012 11:42, schrieb Peter Crosthwaite: >> On Mon, Jul 2, 2012 at 7:04 PM, Kevin Wolf wrote: >>> Am 02.07.2012 10:57, schrieb Peter Crosthwaite: No conditional on the qemu_coroutine_create. So it will always create a new corout

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-07-02 Thread Peter Maydell
On 2 July 2012 11:01, Kevin Wolf wrote: > Reading from block devices during device initialisation breaks > migration, so I'd like to see it go away wherever possible. Reading in > the whole image file doesn't sound like something for which a good > excuse exists, you can do that as well during the

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-07-02 Thread Kevin Wolf
Am 02.07.2012 11:42, schrieb Peter Crosthwaite: > On Mon, Jul 2, 2012 at 7:04 PM, Kevin Wolf wrote: >> Am 02.07.2012 10:57, schrieb Peter Crosthwaite: >>> No conditional on the qemu_coroutine_create. So it will always create >>> a new coroutine for its work which will solve my problem. All I need

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-07-02 Thread Peter Crosthwaite
On Mon, Jul 2, 2012 at 7:04 PM, Kevin Wolf wrote: > Am 02.07.2012 10:57, schrieb Peter Crosthwaite: >> On Mon, Jul 2, 2012 at 6:50 PM, Stefan Hajnoczi wrote: >>> On Fri, Jun 29, 2012 at 12:51 PM, Peter Crosthwaite >>> wrote: BTW Yielding is one thing, but the elephant in the room here is >>

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-07-02 Thread Kevin Wolf
Am 02.07.2012 10:57, schrieb Peter Crosthwaite: > On Mon, Jul 2, 2012 at 6:50 PM, Stefan Hajnoczi wrote: >> On Fri, Jun 29, 2012 at 12:51 PM, Peter Crosthwaite >> wrote: >>> BTW Yielding is one thing, but the elephant in the room here is >>> resumption of the coroutine. When AIO yields my corouti

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-07-02 Thread Peter Crosthwaite
On Mon, Jul 2, 2012 at 6:50 PM, Stefan Hajnoczi wrote: > On Fri, Jun 29, 2012 at 12:51 PM, Peter Crosthwaite > wrote: >> BTW Yielding is one thing, but the elephant in the room here is >> resumption of the coroutine. When AIO yields my coroutine I i need to >> talk to AIO to get it unyielded (Ste

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-07-02 Thread Stefan Hajnoczi
On Fri, Jun 29, 2012 at 12:51 PM, Peter Crosthwaite wrote: > BTW Yielding is one thing, but the elephant in the room here is > resumption of the coroutine. When AIO yields my coroutine I i need to > talk to AIO to get it unyielded (Stefans propsoed edit to my code). > What happens when tommorow so

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-29 Thread Peter Crosthwaite
Can anoyne explain to me the consequences of my patch btw? I am struggling to see how co-routines actually call into the block layer API (without already being there) such that these fast paths are even activated? >>> >>> No, the assumption is a completely different one and it has nothing to >>> d

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-29 Thread Markus Armbruster
Peter Crosthwaite writes: > On Jun 29, 2012 6:24 PM, "Kevin Wolf" wrote: >> >> Am 29.06.2012 02:50, schrieb Peter Crosthwaite: >> >> >> >> The problem I see is: >> >> >> >> FDTMachineInfo *fdt_generic_create_machine() >> >> { >> >>... >> >>while (qemu_co_queue_enter_next(fdti->cq)); >> >

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-29 Thread Peter Crosthwaite
On Jun 29, 2012 6:24 PM, "Kevin Wolf" wrote: > > Am 29.06.2012 02:50, schrieb Peter Crosthwaite: > >> > >> The problem I see is: > >> > >> FDTMachineInfo *fdt_generic_create_machine() > >> { > >>... > >>while (qemu_co_queue_enter_next(fdti->cq)); > >> } > >> > >> The problem you have is no

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-29 Thread Kevin Wolf
Am 29.06.2012 02:50, schrieb Peter Crosthwaite: >> >> The problem I see is: >> >> FDTMachineInfo *fdt_generic_create_machine() >> { >>... >>while (qemu_co_queue_enter_next(fdti->cq)); >> } >> >> The problem you have is not that the block layer is yielding. The >> problem is that you need t

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-28 Thread Peter Crosthwaite
Hi Stefan. On Thu, Jun 28, 2012 at 11:03 PM, Stefan Hajnoczi wrote: > On Thu, Jun 28, 2012 at 4:17 AM, Peter Crosthwaite > wrote: not at a valid yield point. But whats really wrong here is the block layer will be making assumption on re-entry of the coroutine, so I cant re-enter i

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-28 Thread Stefan Hajnoczi
On Thu, Jun 28, 2012 at 4:17 AM, Peter Crosthwaite wrote: >>> not at a valid yield point. But whats really wrong here is the block >>> layer will be making assumption on re-entry of the coroutine, so I >>> cant re-enter it witout wildly changing the behaviour of the block >>> layer. If you adopt t

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-27 Thread Peter Crosthwaite
>> not at a valid yield point. But whats really wrong here is the block >> layer will be making assumption on re-entry of the coroutine, so I >> cant re-enter it witout wildly changing the behaviour of the block >> layer. If you adopt this "mark it as coroutine" poilcy, you end up >> with a system

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-27 Thread Stefan Hajnoczi
On Wed, Jun 27, 2012 at 10:25 AM, Peter Crosthwaite wrote: > On Wed, Jun 27, 2012 at 6:33 PM, Markus Armbruster wrote: >> Stefan Hajnoczi writes: >> >>> On Wed, Jun 27, 2012 at 8:59 AM, Peter Maydell >>> wrote: On 27 June 2012 08:48, Stefan Hajnoczi wrote: > I'd like to see your code

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-27 Thread Peter Crosthwaite
On Wed, Jun 27, 2012 at 6:33 PM, Markus Armbruster wrote: > Stefan Hajnoczi writes: > >> On Wed, Jun 27, 2012 at 8:59 AM, Peter Maydell >> wrote: >>> On 27 June 2012 08:48, Stefan Hajnoczi wrote: I'd like to see your code though because I still don't understand why it relies on the e

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-27 Thread Peter Maydell
On 27 June 2012 10:10, Andreas Färber wrote: > Maybe I'm misunderstanding the discussion, but there's three coroutine > implementations, including one based on GThread. So in that case any > coroutine can be preempted anywhere and there are no such guarantees as > discussed here, are there? No, b

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-27 Thread Andreas Färber
Am 22.06.2012 12:59, schrieb Peter Crosthwaite: > On Fri, Jun 22, 2012 at 6:53 PM, Kevin Wolf wrote: >> Am 22.06.2012 10:20, schrieb Peter Crosthwaite: >>> [...] I thought that was the point of coroutines vs >>> threads? coroutines you control yield behaviour explicitly whearas >>> thread you cant

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-27 Thread Markus Armbruster
Stefan Hajnoczi writes: > On Wed, Jun 27, 2012 at 8:59 AM, Peter Maydell > wrote: >> On 27 June 2012 08:48, Stefan Hajnoczi wrote: >>> I'd like to see your code though because I still don't understand why >>> it relies on the exact yield behavior.  Have you pushed it to a public >>> git repo?

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-27 Thread Stefan Hajnoczi
On Wed, Jun 27, 2012 at 8:59 AM, Peter Maydell wrote: > On 27 June 2012 08:48, Stefan Hajnoczi wrote: >> I'd like to see your code though because I still don't understand why >> it relies on the exact yield behavior.  Have you pushed it to a public >> git repo? > > I haven't seen Peter's code eit

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-27 Thread Peter Maydell
On 27 June 2012 08:48, Stefan Hajnoczi wrote: > I'd like to see your code though because I still don't understand why > it relies on the exact yield behavior.  Have you pushed it to a public > git repo? I haven't seen Peter's code either, but his complaint makes sense to me -- the whole point of

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-27 Thread Stefan Hajnoczi
On Wed, Jun 27, 2012 at 4:05 AM, Peter Crosthwaite wrote: > I still think this thread points out a major flaw in block+coroutines, > regardless of the fact im using it from a machine model. This bug is > going to happen in any coroutine code that touches the block layer > (E.G. what happens if the

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-26 Thread Peter Crosthwaite
Ping! Any Further thoughts Kevin? This thread flew off on a tangent over whether or not coroutines should be depracated. Seems to be the answer there was no on that front - coroutines are here to stay. I still think this thread points out a major flaw in block+coroutines, regardless of the fact

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-22 Thread Markus Armbruster
Peter Maydell writes: > On 22 June 2012 13:04, Markus Armbruster wrote: >> Peter Maydell writes: >> >>> On 22 June 2012 09:48, Markus Armbruster wrote: In my opinion, coroutines have been useful for us so far.  Whether they remain useful, or serve us just as a stepping stone towards

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-22 Thread Peter Maydell
On 22 June 2012 13:04, Markus Armbruster wrote: > Peter Maydell writes: > >> On 22 June 2012 09:48, Markus Armbruster wrote: >>> In my opinion, coroutines have been useful for us so far.  Whether they >>> remain useful, or serve us just as a stepping stone towards general >>> threads remains to

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-22 Thread Markus Armbruster
Peter Maydell writes: > On 22 June 2012 09:48, Markus Armbruster wrote: >> In my opinion, coroutines have been useful for us so far.  Whether they >> remain useful, or serve us just as a stepping stone towards general >> threads remains to be seen. > >>From my point of view I've seen a whole pil

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-22 Thread Peter Crosthwaite
On Fri, Jun 22, 2012 at 6:53 PM, Kevin Wolf wrote: > Am 22.06.2012 10:20, schrieb Peter Crosthwaite: >> On Fri, Jun 22, 2012 at 5:49 PM, Kevin Wolf wrote: >>> Am 22.06.2012 08:44, schrieb Peter A. G. Crosthwaite: The block layer assumes that it is the only user of coroutines - The qemu_

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-22 Thread Peter Maydell
On 22 June 2012 09:48, Markus Armbruster wrote: > In my opinion, coroutines have been useful for us so far.  Whether they > remain useful, or serve us just as a stepping stone towards general > threads remains to be seen. >From my point of view I've seen a whole pile of problems and not really an

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-22 Thread Kevin Wolf
Am 22.06.2012 10:20, schrieb Peter Crosthwaite: > On Fri, Jun 22, 2012 at 5:49 PM, Kevin Wolf wrote: >> Am 22.06.2012 08:44, schrieb Peter A. G. Crosthwaite: >>> The block layer assumes that it is the only user of coroutines - >>> The qemu_in_coroutine() is used to determine if a function is in on

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-22 Thread Markus Armbruster
Peter Maydell writes: > On 22 June 2012 09:00, Peter Crosthwaite > wrote: >> On Fri, Jun 22, 2012 at 5:50 PM, Jan Kiszka wrote: >>> Not sure if I understood the intention yet: Is this supposed to fix an >>> issue with the current usage of coroutines or to extend their usage >>> beyond that? In

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-22 Thread Kevin Wolf
Am 22.06.2012 10:16, schrieb Peter Maydell: > On 22 June 2012 09:00, Peter Crosthwaite > wrote: >> On Fri, Jun 22, 2012 at 5:50 PM, Jan Kiszka wrote: >>> Not sure if I understood the intention yet: Is this supposed to fix an >>> issue with the current usage of coroutines or to extend their usage

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-22 Thread Stefan Hajnoczi
On Fri, Jun 22, 2012 at 9:31 AM, Peter Maydell wrote: > On 22 June 2012 09:20, Peter Crosthwaite > wrote: >> Its a machine model that instantiated some block devices concurrently. >> Theres some chicken-and-egg issues with the instantiation such that >> they have the happen concurrently. One devi

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-22 Thread Stefan Hajnoczi
On Fri, Jun 22, 2012 at 9:16 AM, Peter Maydell wrote: > On 22 June 2012 09:00, Peter Crosthwaite > wrote: >> On Fri, Jun 22, 2012 at 5:50 PM, Jan Kiszka wrote: >>> Not sure if I understood the intention yet: Is this supposed to fix an >>> issue with the current usage of coroutines or to extend t

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-22 Thread Peter Maydell
On 22 June 2012 09:20, Peter Crosthwaite wrote: > Its a machine model that instantiated some block devices concurrently. > Theres some chicken-and-egg issues with the instantiation such that > they have the happen concurrently. One device instantiates a block > device (pflash_cfi_01) from coroutin

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-22 Thread Peter Crosthwaite
On Fri, Jun 22, 2012 at 6:16 PM, Peter Maydell wrote: > On 22 June 2012 09:00, Peter Crosthwaite > wrote: >> On Fri, Jun 22, 2012 at 5:50 PM, Jan Kiszka wrote: >>> Not sure if I understood the intention yet: Is this supposed to fix an >>> issue with the current usage of coroutines or to extend t

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-22 Thread Peter Crosthwaite
On Fri, Jun 22, 2012 at 5:49 PM, Kevin Wolf wrote: > Am 22.06.2012 08:44, schrieb Peter A. G. Crosthwaite: >> The block layer assumes that it is the only user of coroutines - >> The qemu_in_coroutine() is used to determine if a function is in one of the >> block layers coroutines, which is flawed.

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-22 Thread Peter Maydell
On 22 June 2012 09:00, Peter Crosthwaite wrote: > On Fri, Jun 22, 2012 at 5:50 PM, Jan Kiszka wrote: >> Not sure if I understood the intention yet: Is this supposed to fix an >> issue with the current usage of coroutines or to extend their usage >> beyond that? In the latter case, please don't do

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-22 Thread Kevin Wolf
Am 22.06.2012 10:00, schrieb Peter Crosthwaite: > On Fri, Jun 22, 2012 at 5:50 PM, Jan Kiszka wrote: >> On 2012-06-22 08:44, Peter A. G. Crosthwaite wrote: >>> The block layer assumes that it is the only user of coroutines - >>> The qemu_in_coroutine() is used to determine if a function is in one

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-22 Thread Peter Crosthwaite
On Fri, Jun 22, 2012 at 5:50 PM, Jan Kiszka wrote: > On 2012-06-22 08:44, Peter A. G. Crosthwaite wrote: >> The block layer assumes that it is the only user of coroutines - >> The qemu_in_coroutine() is used to determine if a function is in one of the >> block layers coroutines, which is flawed. I

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-22 Thread Jan Kiszka
On 2012-06-22 08:44, Peter A. G. Crosthwaite wrote: > The block layer assumes that it is the only user of coroutines - > The qemu_in_coroutine() is used to determine if a function is in one of the > block layers coroutines, which is flawed. I.E. If a client (e.g. a device or > a machine model) of t

Re: [Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-22 Thread Kevin Wolf
Am 22.06.2012 08:44, schrieb Peter A. G. Crosthwaite: > The block layer assumes that it is the only user of coroutines - > The qemu_in_coroutine() is used to determine if a function is in one of the > block layers coroutines, which is flawed. I.E. If a client (e.g. a device or > a machine model) of

[Qemu-devel] [RFC] block: Removed coroutine ownership assumption

2012-06-21 Thread Peter A. G. Crosthwaite
The block layer assumes that it is the only user of coroutines - The qemu_in_coroutine() is used to determine if a function is in one of the block layers coroutines, which is flawed. I.E. If a client (e.g. a device or a machine model) of the block layer uses couroutine itself, the block layer will