Commit 422e0501 authored by Markus Armbruster's avatar Markus Armbruster
Browse files

balloon: Factor out common "is balloon active" test

parent 6502a147
Loading
Loading
Loading
Loading
+15 −14
Original line number Diff line number Diff line
@@ -36,6 +36,19 @@ static QEMUBalloonEvent *balloon_event_fn;
static QEMUBalloonStatus *balloon_stat_fn;
static void *balloon_opaque;

static bool have_ballon(Error **errp)
{
    if (kvm_enabled() && !kvm_has_sync_mmu()) {
        error_set(errp, QERR_KVM_MISSING_CAP, "synchronous MMU", "balloon");
        return false;
    }
    if (!balloon_event_fn) {
        error_set(errp, QERR_DEVICE_NOT_ACTIVE, "balloon");
        return false;
    }
    return true;
}

int qemu_add_balloon_handler(QEMUBalloonEvent *event_func,
                             QEMUBalloonStatus *stat_func, void *opaque)
{
@@ -66,13 +79,7 @@ BalloonInfo *qmp_query_balloon(Error **errp)
{
    BalloonInfo *info;

    if (kvm_enabled() && !kvm_has_sync_mmu()) {
        error_set(errp, QERR_KVM_MISSING_CAP, "synchronous MMU", "balloon");
        return NULL;
    }

    if (!balloon_stat_fn) {
        error_set(errp, QERR_DEVICE_NOT_ACTIVE, "balloon");
    if (!have_ballon(errp)) {
        return NULL;
    }

@@ -83,8 +90,7 @@ BalloonInfo *qmp_query_balloon(Error **errp)

void qmp_balloon(int64_t target, Error **errp)
{
    if (kvm_enabled() && !kvm_has_sync_mmu()) {
        error_set(errp, QERR_KVM_MISSING_CAP, "synchronous MMU", "balloon");
    if (!have_ballon(errp)) {
        return;
    }

@@ -93,11 +99,6 @@ void qmp_balloon(int64_t target, Error **errp)
        return;
    }

    if (!balloon_event_fn) {
        error_set(errp, QERR_DEVICE_NOT_ACTIVE, "balloon");
        return;
    }

    trace_balloon_event(balloon_opaque, target);
    balloon_event_fn(balloon_opaque, target);
}