blkdebug: do not suspend in the middle of QLIST_FOREACH_SAFE
commit2196c341f7d0df161d412d3d7ea81545ab60ea2b
authorEmanuele Giuseppe Esposito <eesposit@redhat.com>
Mon, 14 Jun 2021 08:29:29 +0000 (14 10:29 +0200)
committerMax Reitz <mreitz@redhat.com>
Mon, 19 Jul 2021 15:38:38 +0000 (19 17:38 +0200)
treee4fe190b8c73ac419cd58660744f28d868bea1f3
parent51a463680d5620c15b8e88e73c75e4692553c3b5
blkdebug: do not suspend in the middle of QLIST_FOREACH_SAFE

That would be unsafe in case a rule other than the current one
is removed while the coroutine has yielded.
Keep FOREACH_SAFE because suspend_request deletes the current rule.

After this patch, *all* matching rules are deleted before suspending
the coroutine, rather than just one.
This doesn't affect the existing testcases.

Use actions_count to see how many yield to issue.

Co-developed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Message-Id: <20210614082931.24925-5-eesposit@redhat.com>
Signed-off-by: Max Reitz <mreitz@redhat.com>
block/blkdebug.c