mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-01 14:53:54 -06:00
block: Take graph rdlock in parts of reopen
Reopen isn't easy with respect to locking because many of its functions need to iterate the graph, some change it, and then you get some drains in the middle where you can't hold any locks. Therefore just documents most of the functions to be unlocked, and take locks internally before accessing the graph. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Message-ID: <20230929145157.45443-9-kwolf@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
a32e781838
commit
ce433d2942
2 changed files with 43 additions and 27 deletions
|
@ -235,11 +235,14 @@ struct BlockDriver {
|
|||
Error **errp);
|
||||
|
||||
/* For handling image reopen for split or non-split files. */
|
||||
int (*bdrv_reopen_prepare)(BDRVReopenState *reopen_state,
|
||||
BlockReopenQueue *queue, Error **errp);
|
||||
void (*bdrv_reopen_commit)(BDRVReopenState *reopen_state);
|
||||
void (*bdrv_reopen_commit_post)(BDRVReopenState *reopen_state);
|
||||
void (*bdrv_reopen_abort)(BDRVReopenState *reopen_state);
|
||||
int GRAPH_UNLOCKED_PTR (*bdrv_reopen_prepare)(
|
||||
BDRVReopenState *reopen_state, BlockReopenQueue *queue, Error **errp);
|
||||
void GRAPH_UNLOCKED_PTR (*bdrv_reopen_commit)(
|
||||
BDRVReopenState *reopen_state);
|
||||
void GRAPH_UNLOCKED_PTR (*bdrv_reopen_commit_post)(
|
||||
BDRVReopenState *reopen_state);
|
||||
void GRAPH_UNLOCKED_PTR (*bdrv_reopen_abort)(
|
||||
BDRVReopenState *reopen_state);
|
||||
void (*bdrv_join_options)(QDict *options, QDict *old_options);
|
||||
|
||||
int GRAPH_UNLOCKED_PTR (*bdrv_open)(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue