Commit fb3520a8 authored by zhanghailiang's avatar zhanghailiang Committed by Amit Shah
Browse files

savevm: Split load vm state function qemu_loadvm_state



qemu_loadvm_state is too long, and we can simplify it by splitting up
with three helper functions.

Signed-off-by: default avatarzhanghailiang <zhang.zhanghailiang@huawei.com>
Reviewed-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: default avatarAmit Shah <amit.shah@redhat.com>
Message-Id: <1452829066-9764-4-git-send-email-zhang.zhanghailiang@huawei.com>
Signed-off-by: default avatarAmit Shah <amit.shah@redhat.com>
parent 89a02a9f
Loading
Loading
Loading
Loading
+92 −64
Original line number Diff line number Diff line
@@ -1718,21 +1718,15 @@ void loadvm_free_handlers(MigrationIncomingState *mis)
    }
}

static int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis)
static int
qemu_loadvm_section_start_full(QEMUFile *f, MigrationIncomingState *mis)
{
    uint8_t section_type;
    int ret;

    while ((section_type = qemu_get_byte(f)) != QEMU_VM_EOF) {
    uint32_t instance_id, version_id, section_id;
    SaveStateEntry *se;
    LoadStateEntry *le;
    char idstr[256];
    int ret;

        trace_qemu_loadvm_state_section(section_type);
        switch (section_type) {
        case QEMU_VM_SECTION_START:
        case QEMU_VM_SECTION_FULL:
    /* Read section start */
    section_id = qemu_get_be32(f);
    if (!qemu_get_counted_string(f, idstr)) {
@@ -1777,9 +1771,17 @@ static int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis)
    if (!check_section_footer(f, le)) {
        return -EINVAL;
    }
            break;
        case QEMU_VM_SECTION_PART:
        case QEMU_VM_SECTION_END:

    return 0;
}

static int
qemu_loadvm_section_part_end(QEMUFile *f, MigrationIncomingState *mis)
{
    uint32_t section_id;
    LoadStateEntry *le;
    int ret;

    section_id = qemu_get_be32(f);

    trace_qemu_loadvm_state_section_partend(section_id);
@@ -1802,6 +1804,32 @@ static int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis)
    if (!check_section_footer(f, le)) {
        return -EINVAL;
    }

    return 0;
}

static int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis)
{
    uint8_t section_type;
    int ret;

    while ((section_type = qemu_get_byte(f)) != QEMU_VM_EOF) {

        trace_qemu_loadvm_state_section(section_type);
        switch (section_type) {
        case QEMU_VM_SECTION_START:
        case QEMU_VM_SECTION_FULL:
            ret = qemu_loadvm_section_start_full(f, mis);
            if (ret < 0) {
                return ret;
            }
            break;
        case QEMU_VM_SECTION_PART:
        case QEMU_VM_SECTION_END:
            ret = qemu_loadvm_section_part_end(f, mis);
            if (ret < 0) {
                return ret;
            }
            break;
        case QEMU_VM_COMMAND:
            ret = loadvm_process_command(f);