On Fri, Sep 25, 2015 at 02:17:36PM +0800, Wen Congyang wrote:
> +static void backup_job_completed(void *opaque, int ret)
> +{
> + BDRVReplicationState *s = opaque;
> +
> + if (s->replication_state != BLOCK_REPLICATION_DONE) {
> + /* The backup job is cancelled unexpectedly */
> + s->error = -EIO;
> + }
> +
> + bdrv_op_block(s->hidden_disk, BLOCK_OP_TYPE_BACKUP_TARGET,
> + s->active_disk->backing_blocker);
> + bdrv_op_block(s->secondary_disk, BLOCK_OP_TYPE_BACKUP_SOURCE,
> + s->hidden_disk->backing_blocker);
> +
> + bdrv_put_ref_bh_schedule(s->secondary_disk);
Why is bdrv_put_ref_bh_schedule() necessary?