int do_snapshot_blkdev(Monitor *mon, const QDict *qdict, QObject **ret_data)

{

    const char *device = qdict_get_str(qdict, "device");

    const char *filename = qdict_get_try_str(qdict, "snapshot_file");

    const char *format = qdict_get_try_str(qdict, "format");

    BlockDriverState *bs;

    BlockDriver *drv, *proto_drv;

    int ret = 0;

    int flags;



    if (!filename) {

        qerror_report(QERR_MISSING_PARAMETER, "snapshot_file");

        ret = -1;

        goto out;

    }



    bs = bdrv_find(device);

    if (!bs) {

        qerror_report(QERR_DEVICE_NOT_FOUND, device);

        ret = -1;

        goto out;

    }



    if (!format) {

        format = "qcow2";

    }



    drv = bdrv_find_format(format);

    if (!drv) {

        qerror_report(QERR_INVALID_BLOCK_FORMAT, format);

        ret = -1;

        goto out;

    }



    proto_drv = bdrv_find_protocol(filename);

    if (!proto_drv) {

        qerror_report(QERR_INVALID_BLOCK_FORMAT, format);

        ret = -1;

        goto out;

    }



    ret = bdrv_img_create(filename, format, bs->filename,

                          bs->drv->format_name, NULL, -1, bs->open_flags);

    if (ret) {

        goto out;

    }



    qemu_aio_flush();

    bdrv_flush(bs);



    flags = bs->open_flags;

    bdrv_close(bs);

    ret = bdrv_open(bs, filename, flags, drv);

    /*

     * If reopening the image file we just created fails, we really

     * are in trouble :(

     */

    if (ret != 0) {

        abort();

    }

out:

    if (ret) {

        ret = -1;

    }



    return ret;

}

int do_snapshot_blkdev(Monitor *mon, const QDict *qdict, QObject **ret_data)

{

    const char *device = qdict_get_str(qdict, "device");

    const char *filename = qdict_get_try_str(qdict, "snapshot_file");

    const char *format = qdict_get_try_str(qdict, "format");

    BlockDriverState *bs;

    BlockDriver *drv, *proto_drv;

    int ret = 0;

    int flags;



    if (!filename) {

        qerror_report(QERR_MISSING_PARAMETER, "snapshot_file");

        ret = -1;

        goto out;

    }



    bs = bdrv_find(device);

    if (!bs) {

        qerror_report(QERR_DEVICE_NOT_FOUND, device);

        ret = -1;

        goto out;

    }



    if (!format) {

        format = "qcow2";

    }



    drv = bdrv_find_format(format);

    if (!drv) {

        qerror_report(QERR_INVALID_BLOCK_FORMAT, format);

        ret = -1;

        goto out;

    }



    proto_drv = bdrv_find_protocol(filename);

    if (!proto_drv) {

        qerror_report(QERR_INVALID_BLOCK_FORMAT, format);

        ret = -1;

        goto out;

    }



    ret = bdrv_img_create(filename, format, bs->filename,

                          bs->drv->format_name, NULL, -1, bs->open_flags);

    if (ret) {

        goto out;

    }



    qemu_aio_flush();

    bdrv_flush(bs);



    flags = bs->open_flags;

    bdrv_close(bs);

    ret = bdrv_open(bs, filename, flags, drv);

    







    if (ret != 0) {

        abort();

    }

out:

    if (ret) {

        ret = -1;

    }



    return ret;

}

    BlockDriver *drv, *proto_drv;                           bs->drv->format_name, NULL, -1, bs->open_flags);     flags = bs->open_flags;         abort();
int FUNC_0(Monitor *VAR_0, const QDict *VAR_1, QObject **VAR_2)

{

    const char *VAR_3 = qdict_get_str(VAR_1, "VAR_3");

    const char *VAR_4 = qdict_get_try_str(VAR_1, "snapshot_file");

    const char *VAR_5 = qdict_get_try_str(VAR_1, "VAR_5");

    BlockDriverState *bs;

    BlockDriver *drv, *proto_drv;

    int VAR_6 = 0;

    int VAR_7;



    if (!VAR_4) {

        qerror_report(QERR_MISSING_PARAMETER, "snapshot_file");

        VAR_6 = -1;

        goto out;

    }



    bs = bdrv_find(VAR_3);

    if (!bs) {

        qerror_report(QERR_DEVICE_NOT_FOUND, VAR_3);

        VAR_6 = -1;

        goto out;

    }



    if (!VAR_5) {

        VAR_5 = "qcow2";

    }



    drv = bdrv_find_format(VAR_5);

    if (!drv) {

        qerror_report(QERR_INVALID_BLOCK_FORMAT, VAR_5);

        VAR_6 = -1;

        goto out;

    }



    proto_drv = bdrv_find_protocol(VAR_4);

    if (!proto_drv) {

        qerror_report(QERR_INVALID_BLOCK_FORMAT, VAR_5);

        VAR_6 = -1;

        goto out;

    }



    VAR_6 = bdrv_img_create(VAR_4, VAR_5, bs->VAR_4,

                          bs->drv->format_name, NULL, -1, bs->open_flags);

    if (VAR_6) {

        goto out;

    }



    qemu_aio_flush();

    bdrv_flush(bs);



    VAR_7 = bs->open_flags;

    bdrv_close(bs);

    VAR_6 = bdrv_open(bs, VAR_4, VAR_7, drv);

    







    if (VAR_6 != 0) {

        abort();

    }

out:

    if (VAR_6) {

        VAR_6 = -1;

    }



    return VAR_6;

}

int FUNC_0(Monitor *VAR_0, const QDict *VAR_1, QObject **VAR_2)
{ const char *VAR_3 = qdict_get_str(VAR_1, "VAR_3"); const char *VAR_4 = qdict_get_try_str(VAR_1, "snapshot_file"); const char *VAR_5 = qdict_get_try_str(VAR_1, "VAR_5"); BlockDriverState *bs; BlockDriver *drv, *proto_drv; int VAR_6 = 0; int VAR_7; if (!VAR_4) { qerror_report(QERR_MISSING_PARAMETER, "snapshot_file"); VAR_6 = -1; goto out; } bs = bdrv_find(VAR_3); if (!bs) { qerror_report(QERR_DEVICE_NOT_FOUND, VAR_3); VAR_6 = -1; goto out; } if (!VAR_5) { VAR_5 = "qcow2"; } drv = bdrv_find_format(VAR_5); if (!drv) { qerror_report(QERR_INVALID_BLOCK_FORMAT, VAR_5); VAR_6 = -1; goto out; } proto_drv = bdrv_find_protocol(VAR_4); if (!proto_drv) { qerror_report(QERR_INVALID_BLOCK_FORMAT, VAR_5); VAR_6 = -1; goto out; } VAR_6 = bdrv_img_create(VAR_4, VAR_5, bs->VAR_4,
bs->drv->format_name, NULL, -1, bs->open_flags); if (VAR_6) { goto out; } qemu_aio_flush(); bdrv_flush(bs); VAR_7 = bs->open_flags; bdrv_close(bs); VAR_6 = bdrv_open(bs, VAR_4, VAR_7, drv); if (VAR_6 != 0) { abort(); } out:
if (VAR_6) { VAR_6 = -1; } return VAR_6; }