Il 06/08/2012 12:45, Kevin Wolf ha scritto:
>> In the long term
>> we will add the failing blockdev name to the blockjob iostatus.
> I think you misunderstood. What I was trying to say is that with the
> same reasoning we'd need a field that doesn't automatically reset its
> status on 'cont' not only for block jobs, but also for regular guest disks.
I'm not sure why. There cannot be changes to the guest-triggered
iostatus after you do a stop.
On the other hand, a block job still runs while the guest is stopped
(and we cannot change this because it'd be backwards-incompatible), so
you can have the following (> means command, < means event):
> stop (no iostatus)
< BLOCK_JOB_ERROR (iostatus=failed on source)
> cont (no iostatus)
libvirtd restarts
> query-block (no iostatus)
Compare this with guest-initiated I/O:
> stop (no iostatus)
< BLOCK_IO_ERROR (iostatus=failed)
> cont (no iostatus)
libvirtd restarts
QEMU retries I/O, fails
< BLOCK_IO_ERROR (iostatus=failed)
> query-block (iostatus=failed)
> If you try fixing the problem by adding a field in BlockJob, it may well
> be fixed for block jobs, but you still need to add it in the generic
> place later so that regular disks are covered as well.
Regular disks are covered because each entry in query-block has its own
iostatus. The only problematic case is now if two different backing
files fail for unrelated reasons.
Paolo