[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH 3/5] coroutines: abort if we try to enter a stil
From: |
Jeff Cody |
Subject: |
Re: [Qemu-block] [PATCH 3/5] coroutines: abort if we try to enter a still-sleeping coroutine |
Date: |
Mon, 20 Nov 2017 08:45:21 -0500 |
User-agent: |
Mutt/1.5.24 (2015-08-30) |
On Mon, Nov 20, 2017 at 11:43:34AM +0000, Stefan Hajnoczi wrote:
> On Sun, Nov 19, 2017 at 09:46:44PM -0500, Jeff Cody wrote:
> > diff --git a/include/qemu/coroutine_int.h b/include/qemu/coroutine_int.h
> > index 931cdc9..b071217 100644
> > --- a/include/qemu/coroutine_int.h
> > +++ b/include/qemu/coroutine_int.h
> > @@ -56,6 +56,8 @@ struct Coroutine {
> >
> > int scheduled;
> >
> > + int sleeping;
>
> s/int/bool/
>
OK.
> BTW an alternative to adding individual bools is to implement a finite
> state machine for the entire coroutine lifecycle. A single function can
> validate all state transitions:
>
> void check_state_transition(CoState old, CoState new,
> const char *action)
> {
> const char *errmsg = fsm[old][new];
> if (!errmsg) {
> return; /* valid transition! */
> }
>
> fprintf(stderr, "Cannot %s coroutine from %s state\n",
> action, state_name[old]);
> abort();
> }
>
> Specifying fsm[][] forces us to think through all possible state
> transitions. This approach is proactive whereas adding bool flags is
> reactive since it only covers a subset of states that were encountered
> after crashes. I'm not sure if it's worth it though :).
Interesting idea; maybe more for 2.12 instead of 2.11, though?
Jeff
- Re: [Qemu-block] [PATCH 1/5] blockjob: do not allow coroutine double entry or entry-after-completion, (continued)
[Qemu-block] [PATCH 2/5] coroutine: abort if we try to enter coroutine scheduled for another ctx, Jeff Cody, 2017/11/19
[Qemu-block] [PATCH 3/5] coroutines: abort if we try to enter a still-sleeping coroutine, Jeff Cody, 2017/11/19
Re: [Qemu-block] [PATCH 3/5] coroutines: abort if we try to enter a still-sleeping coroutine, Paolo Bonzini, 2017/11/20
- Re: [Qemu-block] [PATCH 3/5] coroutines: abort if we try to enter a still-sleeping coroutine, Jeff Cody, 2017/11/20
- Re: [Qemu-block] [PATCH 3/5] coroutines: abort if we try to enter a still-sleeping coroutine, Paolo Bonzini, 2017/11/20
- Re: [Qemu-block] [PATCH 3/5] coroutines: abort if we try to enter a still-sleeping coroutine, Jeff Cody, 2017/11/20
- Re: [Qemu-block] [PATCH 3/5] coroutines: abort if we try to enter a still-sleeping coroutine, Paolo Bonzini, 2017/11/20
- Re: [Qemu-block] [PATCH 3/5] coroutines: abort if we try to enter a still-sleeping coroutine, Jeff Cody, 2017/11/20
[Qemu-block] [PATCH 4/5] qemu-iotests: add option in common.qemu for mismatch only, Jeff Cody, 2017/11/19
[Qemu-block] [PATCH 5/5] qemu-iotest: add test for blockjob coroutine race condition, Jeff Cody, 2017/11/19