Il 18/10/2012 15:56, Kevin Wolf ha scritto:
> Am 18.10.2012 15:10, schrieb Paolo Bonzini:
>> Il 18/10/2012 15:07, Kevin Wolf ha scritto:
>>>>> +    s->synced = false;
>>>>> +    if (read) {
>>>>> +        return block_job_error_action(&s->common, s->common.bs,
>>>>> +                                      s->on_source_error, true, error);
>>>>> +    } else {
>>>>> +        return block_job_error_action(&s->common, s->target,
>>>>> +                                      s->on_target_error, false, error);
>>> Here we produce an event that reports an error on s->bs, i.e. on the
>>> source, even though the error was on the target.
>>
>> More precisely, this is an event that reports an error on s->bs's job.
>> In principle there is no reason why asynchronous long-running operations
>> are tied to a block device (in fact migration fits the definition quite
>> well, with the only twist that the VM is stopped at the end), but that's
>> the API we're stuck with.
> 
> Yes, I think I mentioned already more than once that it shouldn't be
> block job, but background job without a reference to a (single)
> BlockDriverState. What we have just doesn't make any sense - even for
> block jobs, because block jobs working on a single BDS are the
> exception, not the rule.

I'm quite at a loss with how to change this without breaking the API. :/

Unfortunately this came up after the first release with streaming.

Paolo


Reply via email to