static void drive_backup_prepare(BlkActionState *common, Error **errp)

{

    DriveBackupState *state = DO_UPCAST(DriveBackupState, common, common);

    BlockDriverState *bs;

    DriveBackup *backup;

    Error *local_err = NULL;



    assert(common->action->type == TRANSACTION_ACTION_KIND_DRIVE_BACKUP);

    backup = common->action->u.drive_backup.data;



    bs = qmp_get_root_bs(backup->device, errp);

    if (!bs) {

        return;

    }



    /* AioContext is released in .clean() */

    state->aio_context = bdrv_get_aio_context(bs);

    aio_context_acquire(state->aio_context);

    bdrv_drained_begin(bs);

    state->bs = bs;



    do_drive_backup(backup, common->block_job_txn, &local_err);

    if (local_err) {

        error_propagate(errp, local_err);

        return;

    }



    state->job = state->bs->job;

}

static void drive_backup_prepare(BlkActionState *common, Error **errp)

{

    DriveBackupState *state = DO_UPCAST(DriveBackupState, common, common);

    BlockDriverState *bs;

    DriveBackup *backup;

    Error *local_err = NULL;



    assert(common->action->type == TRANSACTION_ACTION_KIND_DRIVE_BACKUP);

    backup = common->action->u.drive_backup.data;



    bs = qmp_get_root_bs(backup->device, errp);

    if (!bs) {

        return;

    }



    

    state->aio_context = bdrv_get_aio_context(bs);

    aio_context_acquire(state->aio_context);

    bdrv_drained_begin(bs);

    state->bs = bs;



    do_drive_backup(backup, common->block_job_txn, &local_err);

    if (local_err) {

        error_propagate(errp, local_err);

        return;

    }



    state->job = state->bs->job;

}

    do_drive_backup(backup, common->block_job_txn, &local_err);     state->job = state->bs->job;     state->job = state->bs->job;
static void FUNC_0(BlkActionState *VAR_0, Error **VAR_1)

{

    DriveBackupState *state = DO_UPCAST(DriveBackupState, VAR_0, VAR_0);

    BlockDriverState *bs;

    DriveBackup *backup;

    Error *local_err = NULL;



    assert(VAR_0->action->type == TRANSACTION_ACTION_KIND_DRIVE_BACKUP);

    backup = VAR_0->action->u.drive_backup.data;



    bs = qmp_get_root_bs(backup->device, VAR_1);

    if (!bs) {

        return;

    }



    

    state->aio_context = bdrv_get_aio_context(bs);

    aio_context_acquire(state->aio_context);

    bdrv_drained_begin(bs);

    state->bs = bs;



    do_drive_backup(backup, VAR_0->block_job_txn, &local_err);

    if (local_err) {

        error_propagate(VAR_1, local_err);

        return;

    }



    state->job = state->bs->job;

}

static void FUNC_0(BlkActionState *VAR_0, Error **VAR_1)
{ DriveBackupState *state = DO_UPCAST(DriveBackupState, VAR_0, VAR_0); BlockDriverState *bs; DriveBackup *backup; Error *local_err = NULL; assert(VAR_0->action->type == TRANSACTION_ACTION_KIND_DRIVE_BACKUP); backup = VAR_0->action->u.drive_backup.data; bs = qmp_get_root_bs(backup->device, VAR_1); if (!bs) { return; } state->aio_context = bdrv_get_aio_context(bs); aio_context_acquire(state->aio_context); bdrv_drained_begin(bs); state->bs = bs; do_drive_backup(backup, VAR_0->block_job_txn, &local_err); if (local_err) { error_propagate(VAR_1, local_err); return; } state->job = state->bs->job; }