mirror of https://github.com/xemu-project/xemu.git
block: access quiesce_counter with atomic ops
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Alberto Garcia <berto@igalia.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Message-Id: <20170605123908.18777-3-pbonzini@redhat.com> Signed-off-by: Fam Zheng <famz@redhat.com>
This commit is contained in:
parent
d3faa13e5f
commit
414c2ec358
|
@ -241,7 +241,7 @@ void bdrv_drained_begin(BlockDriverState *bs)
|
|||
return;
|
||||
}
|
||||
|
||||
if (!bs->quiesce_counter++) {
|
||||
if (atomic_fetch_inc(&bs->quiesce_counter) == 0) {
|
||||
aio_disable_external(bdrv_get_aio_context(bs));
|
||||
bdrv_parent_drained_begin(bs);
|
||||
}
|
||||
|
@ -252,7 +252,7 @@ void bdrv_drained_begin(BlockDriverState *bs)
|
|||
void bdrv_drained_end(BlockDriverState *bs)
|
||||
{
|
||||
assert(bs->quiesce_counter > 0);
|
||||
if (--bs->quiesce_counter > 0) {
|
||||
if (atomic_fetch_dec(&bs->quiesce_counter) > 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -637,6 +637,7 @@ struct BlockDriverState {
|
|||
/* do we need to tell the quest if we have a volatile write cache? */
|
||||
int enable_write_cache;
|
||||
|
||||
/* Accessed with atomic ops. */
|
||||
int quiesce_counter;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue