[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 08/10] migration: handle the error condition
Dr. David Alan Gilbert
Re: [Qemu-devel] [PATCH v3 08/10] migration: handle the error condition properly
Wed, 8 Aug 2018 15:11:13 +0100
* Xiao Guangrong (address@hidden) wrote:
> On 08/08/2018 01:08 PM, Peter Xu wrote:
> > On Tue, Aug 07, 2018 at 05:12:07PM +0800, address@hidden wrote:
> > > From: Xiao Guangrong <address@hidden>
> > >
> > > ram_find_and_save_block() can return negative if any error hanppens,
> > > however, it is completely ignored in current code
> > Could you hint me where we'll return an error?
> I think control_save_page() may return a error condition but i am not
> good at it ... Other places look safe _currently_. These functions were
> designed to have error returned anyway.
ram_control_save_page's return is checked by control_save_page which
returns true/false but sets *pages to a return value.
What I'd need to follow closely is the case where ram_control_save_page
returns RAM_SAVE_CONTROL_DELAYED, in that case control_save_page I think
returns with *pages=-1 and returns true.
And I think in that case ram_save_target_page can leak that -1 - hmm.
Now, ram_save_host_page already checks for <0 and will return that,
but I think that would potentially loop in ram_find_and_save_block; I'm
not sure we want to change that or not!
> > (Anyway I agree that the error handling is not that good, mostly
> > because the QEMUFile APIs does not provide proper return code, e.g.,
> > qemu_put_be64 returns void)
> Yes, it is, the returned error condition is mixed in file's API and
> function's return value... :(
Dr. David Alan Gilbert / address@hidden / Manchester, UK
[Qemu-devel] [PATCH v3 09/10] migration: fix calculating xbzrle_counters.cache_miss_rate, guangrong . xiao, 2018/08/07
[Qemu-devel] [PATCH v3 10/10] migration: show the statistics of compression, guangrong . xiao, 2018/08/07
- [Qemu-devel] [PATCH v3 06/10] migration: hold the lock only if it is really needed, (continued)