mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 09:13:55 -06:00
block: Protect bs->file with graph_lock
Almost all functions that access bs->file already take the graph lock now. Add locking to the remaining users and finally annotate the struct field itself as protected by the graph lock. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Message-ID: <20231027155333.420094-25-kwolf@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
a4b740db5e
commit
1f051dcbdf
15 changed files with 97 additions and 41 deletions
|
@ -200,7 +200,7 @@ static int mark_used(BlockDriverState *bs, unsigned long *bitmap,
|
|||
* bitmap anyway, as much as we can. This information will be used for
|
||||
* error resolution.
|
||||
*/
|
||||
static int parallels_fill_used_bitmap(BlockDriverState *bs)
|
||||
static int GRAPH_RDLOCK parallels_fill_used_bitmap(BlockDriverState *bs)
|
||||
{
|
||||
BDRVParallelsState *s = bs->opaque;
|
||||
int64_t payload_bytes;
|
||||
|
@ -1185,7 +1185,7 @@ static int parallels_probe(const uint8_t *buf, int buf_size,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int parallels_update_header(BlockDriverState *bs)
|
||||
static int GRAPH_RDLOCK parallels_update_header(BlockDriverState *bs)
|
||||
{
|
||||
BDRVParallelsState *s = bs->opaque;
|
||||
unsigned size = MAX(bdrv_opt_mem_align(bs->file->bs),
|
||||
|
@ -1428,6 +1428,8 @@ static void parallels_close(BlockDriverState *bs)
|
|||
{
|
||||
BDRVParallelsState *s = bs->opaque;
|
||||
|
||||
GRAPH_RDLOCK_GUARD_MAINLOOP();
|
||||
|
||||
if ((bs->open_flags & BDRV_O_RDWR) && !(bs->open_flags & BDRV_O_INACTIVE)) {
|
||||
s->header->inuse = 0;
|
||||
parallels_update_header(bs);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue