Commit f4754023 authored by Andrei Vagin's avatar Andrei Vagin Committed by Pavel Emelyanov

shmem: skip zero pages

page_in_parent() returns true for all not dirty pages,
probably it should not be executed for zero pages.

------------------------ grep Error ------------------------
(00.115327) Error (criu/pagemap.c:191): Missing 8000 in parent pagemap, current iov: base=9000,len=32768
(00.115329) Error (criu/page-xfer.c:237): Hole 0x8000/4096 not found in parent
(00.160222) Error (criu/cr-dump.c:1636): Dumping FAILED.
------------------------ ERROR OVER ------------------------
Signed-off-by: 's avatarAndrei Vagin <avagin@virtuozzo.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
parent 7227e2ec
......@@ -709,12 +709,12 @@ static int dump_one_shmem(struct shmem_info *si)
pgaddr = (unsigned long)addr + pfn * PAGE_SIZE;
again:
if (xfer.parent && page_in_parent(pgstate == PST_DIRTY))
if (pgstate == PST_ZERO)
ret = 0;
else if (xfer.parent && page_in_parent(pgstate == PST_DIRTY))
ret = page_pipe_add_hole(pp, pgaddr);
else if (pgstate != PST_ZERO)
ret = page_pipe_add_page(pp, pgaddr);
else
ret = 0;
ret = page_pipe_add_page(pp, pgaddr);
if (ret == -EAGAIN) {
ret = dump_pages(pp, &xfer, addr);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment