As explained in the TODO, complete the function by checking that the node is also drained.
In this way, we can ensure that modify the bs is thread safe, as the drain makes sure that no I/O concurrently reads the field, and all writes are under BQL. Signed-off-by: Emanuele Giuseppe Esposito <eespo...@redhat.com> --- block/io.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/block/io.c b/block/io.c index 9d5167f64a..d7b0707662 100644 --- a/block/io.c +++ b/block/io.c @@ -765,12 +765,7 @@ void bdrv_drain_all(void) void assert_bdrv_graph_writable(BlockDriverState *bs) { - /* - * TODO: this function is incomplete. Because the users of this - * assert lack the necessary drains, check only for BQL. - * Once the necessary drains are added, - * assert also for qatomic_read(&bs->quiesce_counter) > 0 - */ + assert(qatomic_read(&bs->quiesce_counter) > 0); assert(qemu_in_main_thread()); } -- 2.31.1