On 05/18/2015 11:35 AM, Stefan Hajnoczi wrote:
> On Mon, May 11, 2015 at 07:04:24PM -0400, John Snow wrote:
>> +static void drive_backup_cb(BlkActionState *common) +{ +
>> BlkActionCallbackData *cb_data = common->cb_data; +
>> BlockDriverState *bs = cb_data->opaque; +DriveBackupState
>> *stat
On Mon, May 11, 2015 at 07:04:24PM -0400, John Snow wrote:
> @@ -1825,6 +1827,19 @@ static void drive_backup_prepare(BlkActionState
> *common, Error **errp)
> }
> bs = blk_bs(blk);
>
> +/* BackupBlockJob is opaque to us, so look up the bitmap ourselves */
> +if (backup->has_bit
On Mon, May 11, 2015 at 07:04:24PM -0400, John Snow wrote:
> +static void drive_backup_cb(BlkActionState *common)
> +{
> +BlkActionCallbackData *cb_data = common->cb_data;
> +BlockDriverState *bs = cb_data->opaque;
> +DriveBackupState *state = DO_UPCAST(DriveBackupState, common, common)
This patch actually implements the transactional callback system
for the drive_backup action.
(1) We manually pick up a reference to the bitmap if present to allow
its cleanup to be delayed until after all drive_backup jobs launched
by the transaction have fully completed.
(2) We create a