void hmp_info_snapshots(Monitor *mon, const QDict *qdict)

{

    BlockDriverState *bs, *bs1;

    QEMUSnapshotInfo *sn_tab, *sn, s, *sn_info = &s;

    int nb_sns, i, ret, available;

    int total;

    int *available_snapshots;



    bs = find_vmstate_bs();

    if (!bs) {

        monitor_printf(mon, "No available block device supports snapshots\n");

        return;

    }



    nb_sns = bdrv_snapshot_list(bs, &sn_tab);

    if (nb_sns < 0) {

        monitor_printf(mon, "bdrv_snapshot_list: error %d\n", nb_sns);

        return;

    }



    if (nb_sns == 0) {

        monitor_printf(mon, "There is no snapshot available.\n");

        return;

    }



    available_snapshots = g_new0(int, nb_sns);

    total = 0;

    for (i = 0; i < nb_sns; i++) {

        sn = &sn_tab[i];

        available = 1;

        bs1 = NULL;



        while ((bs1 = bdrv_next(bs1))) {

            if (bdrv_can_snapshot(bs1) && bs1 != bs) {

                ret = bdrv_snapshot_find(bs1, sn_info, sn->id_str);

                if (ret < 0) {

                    available = 0;

                    break;

                }

            }

        }



        if (available) {

            available_snapshots[total] = i;

            total++;

        }

    }



    if (total > 0) {

        bdrv_snapshot_dump((fprintf_function)monitor_printf, mon, NULL);

        monitor_printf(mon, "\n");

        for (i = 0; i < total; i++) {

            sn = &sn_tab[available_snapshots[i]];

            bdrv_snapshot_dump((fprintf_function)monitor_printf, mon, sn);

            monitor_printf(mon, "\n");

        }

    } else {

        monitor_printf(mon, "There is no suitable snapshot available\n");

    }



    g_free(sn_tab);

    g_free(available_snapshots);



}

void hmp_info_snapshots(Monitor *mon, const QDict *qdict)

{

    BlockDriverState *bs, *bs1;

    QEMUSnapshotInfo *sn_tab, *sn, s, *sn_info = &s;

    int nb_sns, i, ret, available;

    int total;

    int *available_snapshots;



    bs = find_vmstate_bs();

    if (!bs) {

        monitor_printf(mon, "No available block device supports snapshots\n");

        return;

    }



    nb_sns = bdrv_snapshot_list(bs, &sn_tab);

    if (nb_sns < 0) {

        monitor_printf(mon, "bdrv_snapshot_list: error %d\n", nb_sns);

        return;

    }



    if (nb_sns == 0) {

        monitor_printf(mon, "There is no snapshot available.\n");

        return;

    }



    available_snapshots = g_new0(int, nb_sns);

    total = 0;

    for (i = 0; i < nb_sns; i++) {

        sn = &sn_tab[i];

        available = 1;

        bs1 = NULL;



        while ((bs1 = bdrv_next(bs1))) {

            if (bdrv_can_snapshot(bs1) && bs1 != bs) {

                ret = bdrv_snapshot_find(bs1, sn_info, sn->id_str);

                if (ret < 0) {

                    available = 0;

                    break;

                }

            }

        }



        if (available) {

            available_snapshots[total] = i;

            total++;

        }

    }



    if (total > 0) {

        bdrv_snapshot_dump((fprintf_function)monitor_printf, mon, NULL);

        monitor_printf(mon, "\n");

        for (i = 0; i < total; i++) {

            sn = &sn_tab[available_snapshots[i]];

            bdrv_snapshot_dump((fprintf_function)monitor_printf, mon, sn);

            monitor_printf(mon, "\n");

        }

    } else {

        monitor_printf(mon, "There is no suitable snapshot available\n");

    }



    g_free(sn_tab);

    g_free(available_snapshots);



}

void FUNC_0(Monitor *VAR_0, const QDict *VAR_1)

{

    BlockDriverState *bs, *bs1;

    QEMUSnapshotInfo *sn_tab, *sn, s, *sn_info = &s;

    int VAR_2, VAR_3, VAR_4, VAR_5;

    int VAR_6;

    int *VAR_7;



    bs = find_vmstate_bs();

    if (!bs) {

        monitor_printf(VAR_0, "No VAR_5 block device supports snapshots\n");

        return;

    }



    VAR_2 = bdrv_snapshot_list(bs, &sn_tab);

    if (VAR_2 < 0) {

        monitor_printf(VAR_0, "bdrv_snapshot_list: error %d\n", VAR_2);

        return;

    }



    if (VAR_2 == 0) {

        monitor_printf(VAR_0, "There is no snapshot VAR_5.\n");

        return;

    }



    VAR_7 = g_new0(int, VAR_2);

    VAR_6 = 0;

    for (VAR_3 = 0; VAR_3 < VAR_2; VAR_3++) {

        sn = &sn_tab[VAR_3];

        VAR_5 = 1;

        bs1 = NULL;



        while ((bs1 = bdrv_next(bs1))) {

            if (bdrv_can_snapshot(bs1) && bs1 != bs) {

                VAR_4 = bdrv_snapshot_find(bs1, sn_info, sn->id_str);

                if (VAR_4 < 0) {

                    VAR_5 = 0;

                    break;

                }

            }

        }



        if (VAR_5) {

            VAR_7[VAR_6] = VAR_3;

            VAR_6++;

        }

    }



    if (VAR_6 > 0) {

        bdrv_snapshot_dump((fprintf_function)monitor_printf, VAR_0, NULL);

        monitor_printf(VAR_0, "\n");

        for (VAR_3 = 0; VAR_3 < VAR_6; VAR_3++) {

            sn = &sn_tab[VAR_7[VAR_3]];

            bdrv_snapshot_dump((fprintf_function)monitor_printf, VAR_0, sn);

            monitor_printf(VAR_0, "\n");

        }

    } else {

        monitor_printf(VAR_0, "There is no suitable snapshot VAR_5\n");

    }



    g_free(sn_tab);

    g_free(VAR_7);



}

void FUNC_0(Monitor *VAR_0, const QDict *VAR_1)
{ BlockDriverState *bs, *bs1; QEMUSnapshotInfo *sn_tab, *sn, s, *sn_info = &s; int VAR_2, VAR_3, VAR_4, VAR_5; int VAR_6; int *VAR_7; bs = find_vmstate_bs(); if (!bs) { monitor_printf(VAR_0, "No VAR_5 block device supports snapshots\n"); return; } VAR_2 = bdrv_snapshot_list(bs, &sn_tab); if (VAR_2 < 0) { monitor_printf(VAR_0, "bdrv_snapshot_list: error %d\n", VAR_2); return; } if (VAR_2 == 0) { monitor_printf(VAR_0, "There is no snapshot VAR_5.\n"); return; } VAR_7 = g_new0(int, VAR_2); VAR_6 = 0; for (VAR_3 = 0; VAR_3 < VAR_2; VAR_3++) { sn = &sn_tab[VAR_3]; VAR_5 = 1; bs1 = NULL; while ((bs1 = bdrv_next(bs1))) { if (bdrv_can_snapshot(bs1) && bs1 != bs) { VAR_4 = bdrv_snapshot_find(bs1, sn_info, sn->id_str); if (VAR_4 < 0) { VAR_5 = 0; break; } } } if (VAR_5) { VAR_7[VAR_6] = VAR_3; VAR_6++; } } if (VAR_6 > 0) { bdrv_snapshot_dump((fprintf_function)monitor_printf, VAR_0, NULL); monitor_printf(VAR_0, "\n"); for (VAR_3 = 0; VAR_3 < VAR_6; VAR_3++) { sn = &sn_tab[VAR_7[VAR_3]]; bdrv_snapshot_dump((fprintf_function)monitor_printf, VAR_0, sn); monitor_printf(VAR_0, "\n"); } } else { monitor_printf(VAR_0, "There is no suitable snapshot VAR_5\n"); } g_free(sn_tab); g_free(VAR_7); }