Commit e0c9cf3a authored by Kevin Wolf's avatar Kevin Wolf
Browse files

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: default avatarKevin Wolf <kwolf@redhat.com>
parent 5cec2870
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -144,6 +144,8 @@ typedef struct BDRVRawState {
    uint64_t locked_perm;
    uint64_t locked_shared_perm;

    BDRVReopenState *reopen_state;

#ifdef CONFIG_XFS
    bool is_xfs:1;
#endif
@@ -952,6 +954,7 @@ static int raw_reopen_prepare(BDRVReopenState *state,
        }
    }

    s->reopen_state = state;
out:
    qemu_opts_del(opts);
    return ret;
@@ -978,12 +981,16 @@ static void raw_reopen_commit(BDRVReopenState *state)

    g_free(state->opaque);
    state->opaque = NULL;

    assert(s->reopen_state == state);
    s->reopen_state = NULL;
}


static void raw_reopen_abort(BDRVReopenState *state)
{
    BDRVRawReopenState *rs = state->opaque;
    BDRVRawState *s = state->bs->opaque;

     /* nothing to do if NULL, we didn't get far enough */
    if (rs == NULL) {
@@ -996,6 +1003,9 @@ static void raw_reopen_abort(BDRVReopenState *state)
    }
    g_free(state->opaque);
    state->opaque = NULL;

    assert(s->reopen_state == state);
    s->reopen_state = NULL;
}

static int hdev_get_max_transfer_length(BlockDriverState *bs, int fd)