Commit e7089bc3 authored by Mike Rapoport's avatar Mike Rapoport Committed by Pavel Emelyanov

criu: pagemap: drop put_pagemap

With in-memory pagemap put_pagemap is not required because it does not
frees any resources. Minor modifications to get_pagemap and init_pagemaps
allow proper bookkeeping without put_pagemap.
Signed-off-by: 's avatarMike Rapoport <rppt@linux.vnet.ibm.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
parent b89ee40b
......@@ -83,22 +83,17 @@ static int cr_dedup_one_pagemap(int id, int flags)
if (!prp)
goto exit;
ret = pr.get_pagemap(&pr, &iov);
if (ret <= 0)
goto exit;
while (1) {
ret = pr.get_pagemap(&pr, &iov);
if (ret <= 0)
goto exit;
pr_debug("dedup iovec base=%p, len=%zu\n", iov.iov_base, iov.iov_len);
if (!pr.pe->in_parent) {
ret = dedup_one_iovec(prp, &iov);
if (ret)
goto exit;
}
pr.put_pagemap(&pr);
ret = pr.get_pagemap(&pr, &iov);
if (ret <= 0)
goto exit;
}
exit:
pr.close(&pr);
......
......@@ -48,8 +48,6 @@ struct page_read {
int (*get_pagemap)(struct page_read *, struct iovec *iov);
/* reads page from current pagemap */
int (*read_pages)(struct page_read *, unsigned long vaddr, int nr, void *);
/* stop working on current pagemap */
void (*put_pagemap)(struct page_read *);
void (*close)(struct page_read *);
int (*seek_page)(struct page_read *pr, unsigned long vaddr, bool warn);
......
......@@ -788,9 +788,6 @@ static int restore_priv_vma_content(struct pstree_item *t)
}
}
if (pr.put_pagemap)
pr.put_pagemap(&pr);
}
err_read:
......
......@@ -127,6 +127,7 @@ static int get_pagemap(struct page_read *pr, struct iovec *iov)
{
PagemapEntry *pe;
pr->curr_pme++;
if (pr->curr_pme >= pr->nr_pmes)
return 0;
......@@ -145,11 +146,6 @@ static int get_pagemap(struct page_read *pr, struct iovec *iov)
return 1;
}
static void put_pagemap(struct page_read *pr)
{
pr->curr_pme++;
}
static void skip_pagemap_pages(struct page_read *pr, unsigned long len)
{
if (!len)
......@@ -185,7 +181,6 @@ static int seek_pagemap_page(struct page_read *pr, unsigned long vaddr,
if (iov_end <= vaddr) {
skip_pagemap_pages(pr, iov_end - pr->cvaddr);
put_pagemap(pr);
new_pagemap:
ret = get_pagemap(pr, &iov);
if (ret <= 0)
......@@ -397,7 +392,8 @@ static int init_pagemaps(struct page_read *pr)
if (!pr->pmes)
return -1;
pr->nr_pmes = pr->curr_pme = 0;
pr->nr_pmes = 0;
pr->curr_pme = -1;
while (1) {
int ret = pb_read_one_eof(pr->pmi, &pr->pmes[pr->nr_pmes],
......@@ -485,7 +481,6 @@ int open_page_read_at(int dfd, int pid, struct page_read *pr, int pr_flags)
}
pr->get_pagemap = get_pagemap;
pr->put_pagemap = put_pagemap;
pr->read_pages = read_pagemap_page;
pr->close = close_page_read;
pr->seek_page = seek_pagemap_page;
......
......@@ -481,9 +481,6 @@ static int restore_shmem_content(void *addr, struct shmem_info *si)
break;
pr.read_pages(&pr, vaddr, nr_pages, addr + vaddr);
if (pr.put_pagemap)
pr.put_pagemap(&pr);
}
pr.close(&pr);
......
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