Skip to content

Commit

Permalink
block: replace bdrv_states iteration with bdrv_next()
Browse files Browse the repository at this point in the history
The bdrv_states list is a static variable in block.c.

bdrv_drain_all() and bdrv_flush_all() use this variable to iterate over
all drives.

The next patch will move bdrv_drain_all() and bdrv_flush_all() out of
block.c so it's necessary to switch to the public bdrv_next() interface.

Reviewed-by: Alberto Garcia <berto@igalia.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  • Loading branch information
stefanhaRH authored and kevmw committed Apr 28, 2015
1 parent 7237aec commit 4f5472c
Showing 1 changed file with 8 additions and 6 deletions.
14 changes: 8 additions & 6 deletions block.c
Expand Up @@ -2051,9 +2051,9 @@ void bdrv_drain_all(void)
{
/* Always run first iteration so any pending completion BHs run */
bool busy = true;
BlockDriverState *bs;
BlockDriverState *bs = NULL;

QTAILQ_FOREACH(bs, &bdrv_states, device_list) {
while ((bs = bdrv_next(bs))) {
AioContext *aio_context = bdrv_get_aio_context(bs);

aio_context_acquire(aio_context);
Expand All @@ -2065,8 +2065,9 @@ void bdrv_drain_all(void)

while (busy) {
busy = false;
bs = NULL;

QTAILQ_FOREACH(bs, &bdrv_states, device_list) {
while ((bs = bdrv_next(bs))) {
AioContext *aio_context = bdrv_get_aio_context(bs);

aio_context_acquire(aio_context);
Expand All @@ -2075,7 +2076,8 @@ void bdrv_drain_all(void)
}
}

QTAILQ_FOREACH(bs, &bdrv_states, device_list) {
bs = NULL;
while ((bs = bdrv_next(bs))) {
AioContext *aio_context = bdrv_get_aio_context(bs);

aio_context_acquire(aio_context);
Expand Down Expand Up @@ -4015,10 +4017,10 @@ int bdrv_get_flags(BlockDriverState *bs)

int bdrv_flush_all(void)
{
BlockDriverState *bs;
BlockDriverState *bs = NULL;
int result = 0;

QTAILQ_FOREACH(bs, &bdrv_states, device_list) {
while ((bs = bdrv_next(bs))) {
AioContext *aio_context = bdrv_get_aio_context(bs);
int ret;

Expand Down

0 comments on commit 4f5472c

Please sign in to comment.