diff options
| author | Stefan Hajnoczi | 2017-08-23 15:42:42 +0200 |
|---|---|---|
| committer | Eric Blake | 2017-08-23 17:21:55 +0200 |
| commit | 7d5b5261104235cd6cc86930ab0d0a7372bfe04b (patch) | |
| tree | 37971b3c72b983c6981805c44d676557adb37b4d /include/exec/exec-all.h | |
| parent | mirror: Mark target BB as "force allow inactivate" (diff) | |
| download | qemu-7d5b5261104235cd6cc86930ab0d0a7372bfe04b.tar.gz qemu-7d5b5261104235cd6cc86930ab0d0a7372bfe04b.tar.xz qemu-7d5b5261104235cd6cc86930ab0d0a7372bfe04b.zip | |
block: Update open_flags after ->inactivate() callback
In the ->inactivate() callbacks, permissions are updated, which
typically involves a recursive check of the whole graph. Setting
BDRV_O_INACTIVE right before doing that creates a state that
bdrv_is_writable() returns false, which causes permission update
failure.
Reorder them so the flag is updated after calling the function. Note
that this doesn't break the assert in bdrv_child_cb_inactivate() because
for any specific BDS, we still update its flags first before calling
->inactivate() on it one level deeper in the recursion.
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Fam Zheng <famz@redhat.com>
Message-Id: <20170823134242.12080-5-famz@redhat.com>
Tested-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
Diffstat (limited to 'include/exec/exec-all.h')
0 files changed, 0 insertions, 0 deletions
