On 03/11/2014 06:53 AM, arei.gonglei@huawei.com wrote: > From: ChenLiang s/migraion/migration/ in the subject (here and in 7/10) s/optimiztion/optimize/ in the subject > +++ b/arch_init.c > @@ -381,11 +381,8 @@ static int save_xbzrle_page(QEMUFile *f, uint8_t **current_data, > > prev_cached_page = get_cached_data(XBZRLE.cache, current_addr); > > - /* save current buffer into memory */ > - memcpy(XBZRLE.current_buf, *current_data, TARGET_PAGE_SIZE); > - > /* XBZRLE encoding (if there is no overflow) */ > - encoded_len = xbzrle_encode_buffer(prev_cached_page, XBZRLE.current_buf, > + encoded_len = xbzrle_encode_buffer(prev_cached_page, *current_data, > TARGET_PAGE_SIZE, XBZRLE.encoded_buf, > TARGET_PAGE_SIZE); > if (encoded_len == 0) { > @@ -404,7 +401,8 @@ static int save_xbzrle_page(QEMUFile *f, uint8_t **current_data, > > /* we need to update the data in the cache, in order to get the same data */ > if (!last_stage) { > - memcpy(prev_cached_page, XBZRLE.current_buf, TARGET_PAGE_SIZE); > + xbzrle_decode_buffer(XBZRLE.encoded_buf, encoded_len, prev_cached_page, > + TARGET_PAGE_SIZE); So, is XBZRLE.current_buf even needed after this patch? Oh, patch 7 kills it. I guess splitting in two patches is okay, although I personally would have squashed them into one. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org