• Adrian Reber's avatar
    page-pipe: correctly split page-pipe-buffers · c1f0b1f5
    Adrian Reber authored
    Combining pre-copy (pre-dump) and post-copy (lazy-pages) mode showed a
    problem in the function page_pipe_split_ppb(). The function is used to
    split the page-pipe-buffer so that it only contains the IOVs request
    from the restore side during lazy restore.
    
    Unfortunately it only splits the leading IOVs out of the
    page-pipe-buffer and not the trailing:
    
    Before split for requested address 0x7f27284d1000:
    
     page-pipe: ppb->iov 0x7f0f74d93040
     page-pipe: 		0x7f27282bb000 1
     page-pipe: 		0x7f27284d1000 1
     page-pipe: 		0x7f27284dd000 2
    
    After split:
    
     page-pipe: ppb->iov 0x7f0f74d93050
     page-pipe: 		0x7f27284d1000 1
     page-pipe: 		0x7f27284dd000 2
    
    and:
    
     page-pipe: ppb->iov 0x7f0f74d93040
     page-pipe: 		0x7f27282bb000 1
    
    This patch keeps on splitting the page-pipe-buffer until it contains
    only the requested address with the requested length.
    
    After split (still trying to load 0x7f27284d1000):
    
     page-pipe: ppb->iov 0x7f0f74d93050
     page-pipe: 		0x7f27284d1000 1
    
    and:
    
     page-pipe: ppb->iov 0x7f0f74d93040
     page-pipe: 		0x7f27282bb000 1
    
    and:
    
     page-pipe: ppb->iov 0x7f0f74d93060
     page-pipe: 		0x7f27284dd000 2
    
    v2:
     - moved declarations to the declaration block
    Signed-off-by: 's avatarAdrian Reber <areber@redhat.com>
    Acked-by: 's avatarMike Rapoport <rppt@linux.vnet.ibm.com>
    Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
    c1f0b1f5
Name
Last commit
Last update
Documentation Loading commit data...
compel Loading commit data...
contrib Loading commit data...
coredump Loading commit data...
crit Loading commit data...
criu Loading commit data...
images Loading commit data...
include/common Loading commit data...
lib Loading commit data...
scripts Loading commit data...
soccr Loading commit data...
test Loading commit data...
.gitignore Loading commit data...
.mailmap Loading commit data...
.travis.yml Loading commit data...
COPYING Loading commit data...
CREDITS Loading commit data...
INSTALL.md Loading commit data...
Makefile Loading commit data...
Makefile.compel Loading commit data...
Makefile.config Loading commit data...
Makefile.install Loading commit data...
Makefile.versions Loading commit data...
README.md Loading commit data...