mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-11 03:24:58 -06:00
file-posix: Store BDRVRawState.reopen_state during reopen
We'll want to access the file descriptor in the reopen_state while processing permission changes in the context of the repoen. Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
5cec287025
commit
e0c9cf3a48
1 changed files with 10 additions and 0 deletions
|
@ -144,6 +144,8 @@ typedef struct BDRVRawState {
|
||||||
uint64_t locked_perm;
|
uint64_t locked_perm;
|
||||||
uint64_t locked_shared_perm;
|
uint64_t locked_shared_perm;
|
||||||
|
|
||||||
|
BDRVReopenState *reopen_state;
|
||||||
|
|
||||||
#ifdef CONFIG_XFS
|
#ifdef CONFIG_XFS
|
||||||
bool is_xfs:1;
|
bool is_xfs:1;
|
||||||
#endif
|
#endif
|
||||||
|
@ -952,6 +954,7 @@ static int raw_reopen_prepare(BDRVReopenState *state,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
s->reopen_state = state;
|
||||||
out:
|
out:
|
||||||
qemu_opts_del(opts);
|
qemu_opts_del(opts);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -978,12 +981,16 @@ static void raw_reopen_commit(BDRVReopenState *state)
|
||||||
|
|
||||||
g_free(state->opaque);
|
g_free(state->opaque);
|
||||||
state->opaque = NULL;
|
state->opaque = NULL;
|
||||||
|
|
||||||
|
assert(s->reopen_state == state);
|
||||||
|
s->reopen_state = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void raw_reopen_abort(BDRVReopenState *state)
|
static void raw_reopen_abort(BDRVReopenState *state)
|
||||||
{
|
{
|
||||||
BDRVRawReopenState *rs = state->opaque;
|
BDRVRawReopenState *rs = state->opaque;
|
||||||
|
BDRVRawState *s = state->bs->opaque;
|
||||||
|
|
||||||
/* nothing to do if NULL, we didn't get far enough */
|
/* nothing to do if NULL, we didn't get far enough */
|
||||||
if (rs == NULL) {
|
if (rs == NULL) {
|
||||||
|
@ -996,6 +1003,9 @@ static void raw_reopen_abort(BDRVReopenState *state)
|
||||||
}
|
}
|
||||||
g_free(state->opaque);
|
g_free(state->opaque);
|
||||||
state->opaque = NULL;
|
state->opaque = NULL;
|
||||||
|
|
||||||
|
assert(s->reopen_state == state);
|
||||||
|
s->reopen_state = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int hdev_get_max_transfer_length(BlockDriverState *bs, int fd)
|
static int hdev_get_max_transfer_length(BlockDriverState *bs, int fd)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue