[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 3/8] migration: support to detectcompression and
From: |
Peter Xu |
Subject: |
Re: [Qemu-devel] [PATCH 3/8] migration: support to detectcompression and decompression errors |
Date: |
Wed, 28 Mar 2018 11:03:51 +0800 |
User-agent: |
Mutt/1.9.1 (2017-09-22) |
On Tue, Mar 27, 2018 at 10:35:29PM +0800, Xiao Guangrong wrote:
>
>
> On 03/28/2018 08:43 AM, address@hidden wrote:
> > > On 03/27/2018 07:17 PM, Peter Xu wrote:
> > > > On Tue, Mar 27, 2018 at 03:42:32AM +0800, Xiao Guangrong wrote:
> > > >
> > > > [...]
> > > >
> > > > > > It'll be understandable to me if the problem is that the compress()
> > > > > > API does not allow the input buffer to be changed during the whole
> > > > > > period of the call. If that is a must, this patch for sure helps.
> > > > >
> > > > > Yes, that is exactly what i want to say. :)
> > > >
> > > > So I think now I know what this patch is for. :) And yeah, it makes
> > > > sense.
> > > >
> > > > Though another question would be: if the buffer is updated during
> > > > compress() and compress() returned error, would that pollute the whole
> > > > z_stream or it only fails the compress() call?
> > > >
> > >
> > > I guess deflateReset() can recover everything, i.e, keep z_stream as
> > > it is init'ed by deflate_init().
> > >
> > > > (Same question applies to decompress().)
> > > >
> > > > If it's only a compress() error and it won't pollute z_stream (or say,
> > > > it can be recovered after a deflateReset() and then we can continue to
> > > > call deflate() without problem), then we'll actually have two
> > > > alternatives to solve this "buffer update" issue:
> > > >
> > > > 1. Use the approach of current patch: we copy the page every time, so
> > > > deflate() never fails because update never happens. But it's slow
> > > > since we copy the pages every time.
> > > >
> > > > 2. Use the old approach, and when compress() fail, we just ignore that
> > > > page (since now we know that error _must_ be caused by page update,
> > > > then we are 100% sure that we'll send that page again so it'll be
> > > > perfectly fine).
> > > >
> > >
> > > No, we can't make the assumption that "error _must_ be caused by page
> > > update".
> > > No document/ABI about compress/decompress promised it. :)
Indeed, I found no good documents about below errors that jiang.biao
pointed out.
> > So, as I metioned before, can we just distingush the decompress/compress
> > errors
> > from errors caused by page update by the return code of inflate/deflate?
> > According to the zlib manual, there seems to be several error codes for
> > different
> > cases,
> > #define Z_ERRNO (-1)
> > #define Z_STREAM_ERROR (-2)
> > #define Z_DATA_ERROR (-3)
> > #define Z_MEM_ERROR (-4)
> > #define Z_BUF_ERROR (-5)
> > #define Z_VERSION_ERROR (-6)
> > Did you check the return code when silent failure(not caused by page update)
> > happened before? :)
>
> I am afraid there is no such error code and i guess zlib is not designed to
> compress the data which is being modified.
So I agree with you, maybe the only right way to do now is copy the
page, until we know better about zlib and find something useful.
Thanks!
--
Peter Xu
- Re: [Qemu-devel] [PATCH 3/8] migration: support to detect compressionand decompression errors, (continued)
- Re: [Qemu-devel] [PATCH 3/8] migration: support to detect compressionand decompression errors, jiang.biao2, 2018/03/19
- Re: [Qemu-devel] [PATCH 3/8] migration: support to detect compression and decompression errors, Peter Xu, 2018/03/21
- Re: [Qemu-devel] [PATCH 3/8] migration: support to detect compression and decompression errors, Xiao Guangrong, 2018/03/22
- Re: [Qemu-devel] [PATCH 3/8] migration: support to detect compression and decompression errors, Peter Xu, 2018/03/27
- Re: [Qemu-devel] [PATCH 3/8] migration: support to detect compression and decompression errors, Xiao Guangrong, 2018/03/27
- Re: [Qemu-devel] [PATCH 3/8] migration: support to detect compression and decompression errors, Peter Xu, 2018/03/27
- Re: [Qemu-devel] [PATCH 3/8] migration: support to detect compression and decompression errors, Xiao Guangrong, 2018/03/27
- Re: [Qemu-devel] [PATCH 3/8] migration: support to detectcompression and decompression errors, jiang.biao2, 2018/03/27
- Re: [Qemu-devel] [PATCH 3/8] migration: support to detectcompression and decompression errors, Xiao Guangrong, 2018/03/27
- Re: [Qemu-devel] [PATCH 3/8] migration: support to detectcompression and decompression errors,
Peter Xu <=
- Re: [Qemu-devel] [PATCH 3/8] migration: support todetectcompression and decompression errors, jiang.biao2, 2018/03/28
- Re: [Qemu-devel] [PATCH 3/8] migration: support todetectcompression and decompression errors, Peter Xu, 2018/03/28
- Re: [Qemu-devel] [PATCH 3/8] migration: support todetectcompression and decompression errors, Xiao Guangrong, 2018/03/28
- Re: [Qemu-devel] [PATCH 3/8] migration: support todetectcompressionand decompression errors, jiang.biao2, 2018/03/28
[Qemu-devel] [PATCH 4/8] migration: introduce control_save_page(), guangrong . xiao, 2018/03/13
[Qemu-devel] [PATCH 5/8] migration: move calling control_save_page to the common place, guangrong . xiao, 2018/03/13