include/block/block-io.h | 1 - block/io.c | 15 --------------- 2 files changed, 16 deletions(-)
bdrv_co_drain() has not been used since commit 9a0cec664eef ("mirror:
use bdrv_drained_begin/bdrv_drained_end") in 2016. Remove it so there
are fewer drain scenarios to worry about.
Use bdrv_drained_begin()/bdrv_drained_end() instead. They are "mixed"
functions that can be called from coroutine context. Unlike
bdrv_co_drain(), these functions provide control of the length of the
drained section, which is usually the right thing.
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
include/block/block-io.h | 1 -
block/io.c | 15 ---------------
2 files changed, 16 deletions(-)
diff --git a/include/block/block-io.h b/include/block/block-io.h
index 62c84f0519..053a27141a 100644
--- a/include/block/block-io.h
+++ b/include/block/block-io.h
@@ -270,7 +270,6 @@ void bdrv_drained_end_no_poll(BlockDriverState *bs, int *drained_end_counter);
cond); })
void bdrv_drain(BlockDriverState *bs);
-void coroutine_fn bdrv_co_drain(BlockDriverState *bs);
int generated_co_wrapper
bdrv_truncate(BdrvChild *child, int64_t offset, bool exact,
diff --git a/block/io.c b/block/io.c
index 789e6373d5..1e9bf09a49 100644
--- a/block/io.c
+++ b/block/io.c
@@ -588,21 +588,6 @@ void bdrv_unapply_subtree_drain(BdrvChild *child, BlockDriverState *old_parent)
BDRV_POLL_WHILE(child->bs, qatomic_read(&drained_end_counter) > 0);
}
-/*
- * Wait for pending requests to complete on a single BlockDriverState subtree,
- * and suspend block driver's internal I/O until next request arrives.
- *
- * Note that unlike bdrv_drain_all(), the caller must hold the BlockDriverState
- * AioContext.
- */
-void coroutine_fn bdrv_co_drain(BlockDriverState *bs)
-{
- IO_OR_GS_CODE();
- assert(qemu_in_coroutine());
- bdrv_drained_begin(bs);
- bdrv_drained_end(bs);
-}
-
void bdrv_drain(BlockDriverState *bs)
{
IO_OR_GS_CODE();
--
2.36.1
Am 21.05.2022 um 14:27 hat Stefan Hajnoczi geschrieben: > bdrv_co_drain() has not been used since commit 9a0cec664eef ("mirror: > use bdrv_drained_begin/bdrv_drained_end") in 2016. Remove it so there > are fewer drain scenarios to worry about. > > Use bdrv_drained_begin()/bdrv_drained_end() instead. They are "mixed" > functions that can be called from coroutine context. Unlike > bdrv_co_drain(), these functions provide control of the length of the > drained section, which is usually the right thing. > > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Thanks, applied to the block branch. Kevin
On Sat, May 21, 2022 at 1:27 PM Stefan Hajnoczi <stefanha@redhat.com> wrote: > bdrv_co_drain() has not been used since commit 9a0cec664eef ("mirror: > use bdrv_drained_begin/bdrv_drained_end") in 2016. Remove it so there > are fewer drain scenarios to worry about. > > Use bdrv_drained_begin()/bdrv_drained_end() instead. They are "mixed" > functions that can be called from coroutine context. Unlike > bdrv_co_drain(), these functions provide control of the length of the > drained section, which is usually the right thing. > > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Alberto Faria <afaria@redhat.com>
Am 21/05/2022 um 14:27 schrieb Stefan Hajnoczi: > bdrv_co_drain() has not been used since commit 9a0cec664eef ("mirror: > use bdrv_drained_begin/bdrv_drained_end") in 2016. Remove it so there > are fewer drain scenarios to worry about. > > Use bdrv_drained_begin()/bdrv_drained_end() instead. They are "mixed" > functions that can be called from coroutine context. Unlike > bdrv_co_drain(), these functions provide control of the length of the > drained section, which is usually the right thing. > > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Thank you, Emanuele > --- > include/block/block-io.h | 1 - > block/io.c | 15 --------------- > 2 files changed, 16 deletions(-) > > diff --git a/include/block/block-io.h b/include/block/block-io.h > index 62c84f0519..053a27141a 100644 > --- a/include/block/block-io.h > +++ b/include/block/block-io.h > @@ -270,7 +270,6 @@ void bdrv_drained_end_no_poll(BlockDriverState *bs, int *drained_end_counter); > cond); }) > > void bdrv_drain(BlockDriverState *bs); > -void coroutine_fn bdrv_co_drain(BlockDriverState *bs); > > int generated_co_wrapper > bdrv_truncate(BdrvChild *child, int64_t offset, bool exact, > diff --git a/block/io.c b/block/io.c > index 789e6373d5..1e9bf09a49 100644 > --- a/block/io.c > +++ b/block/io.c > @@ -588,21 +588,6 @@ void bdrv_unapply_subtree_drain(BdrvChild *child, BlockDriverState *old_parent) > BDRV_POLL_WHILE(child->bs, qatomic_read(&drained_end_counter) > 0); > } > > -/* > - * Wait for pending requests to complete on a single BlockDriverState subtree, > - * and suspend block driver's internal I/O until next request arrives. > - * > - * Note that unlike bdrv_drain_all(), the caller must hold the BlockDriverState > - * AioContext. > - */ > -void coroutine_fn bdrv_co_drain(BlockDriverState *bs) > -{ > - IO_OR_GS_CODE(); > - assert(qemu_in_coroutine()); > - bdrv_drained_begin(bs); > - bdrv_drained_end(bs); > -} > - > void bdrv_drain(BlockDriverState *bs) > { > IO_OR_GS_CODE(); >
© 2016 - 2024 Red Hat, Inc.