block: disable I/O limits at the beginning of bdrv_close()
Disabling I/O limits from a BDS also drains all pending throttled requests, so it should be done at the beginning of bdrv_close() with the rest of the bdrv_drain() calls before the BlockDriver is closed. Signed-off-by: Alberto Garcia <berto@igalia.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
bb3c801df7
commit
99b7e77567
11
block.c
11
block.c
@ -1907,6 +1907,12 @@ void bdrv_close(BlockDriverState *bs)
|
||||
if (bs->job) {
|
||||
block_job_cancel_sync(bs->job);
|
||||
}
|
||||
|
||||
/* Disable I/O limits and drain all pending throttled requests */
|
||||
if (bs->io_limits_enabled) {
|
||||
bdrv_io_limits_disable(bs);
|
||||
}
|
||||
|
||||
bdrv_drain(bs); /* complete I/O */
|
||||
bdrv_flush(bs);
|
||||
bdrv_drain(bs); /* in case flush left pending I/O */
|
||||
@ -1958,11 +1964,6 @@ void bdrv_close(BlockDriverState *bs)
|
||||
blk_dev_change_media_cb(bs->blk, false);
|
||||
}
|
||||
|
||||
/*throttling disk I/O limits*/
|
||||
if (bs->io_limits_enabled) {
|
||||
bdrv_io_limits_disable(bs);
|
||||
}
|
||||
|
||||
QLIST_FOREACH_SAFE(ban, &bs->aio_notifiers, list, ban_next) {
|
||||
g_free(ban);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user