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

criu: page-read: make seek_pagemap_page a method of page_read

Signed-off-by: 's avatarMike Rapoport <rppt@linux.vnet.ibm.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
parent 51970afa
...@@ -154,7 +154,7 @@ int dedup_one_iovec(struct page_read *pr, struct iovec *iov) ...@@ -154,7 +154,7 @@ int dedup_one_iovec(struct page_read *pr, struct iovec *iov)
struct iovec tiov; struct iovec tiov;
struct page_read * prp; struct page_read * prp;
ret = seek_pagemap_page(pr, off, false); ret = pr->seek_page(pr, off, false);
if (ret == -1) if (ret == -1)
return -1; return -1;
......
...@@ -51,6 +51,7 @@ struct page_read { ...@@ -51,6 +51,7 @@ struct page_read {
/* stop working on current pagemap */ /* stop working on current pagemap */
void (*put_pagemap)(struct page_read *); void (*put_pagemap)(struct page_read *);
void (*close)(struct page_read *); void (*close)(struct page_read *);
int (*seek_page)(struct page_read *pr, unsigned long vaddr, bool warn);
/* Private data of reader */ /* Private data of reader */
struct cr_img *pmi; struct cr_img *pmi;
...@@ -83,7 +84,6 @@ extern int open_page_read(int pid, struct page_read *, int pr_flags); ...@@ -83,7 +84,6 @@ extern int open_page_read(int pid, struct page_read *, int pr_flags);
extern int open_page_read_at(int dfd, int pid, struct page_read *pr, int pr_flags); extern int open_page_read_at(int dfd, int pid, struct page_read *pr, int pr_flags);
extern void pagemap2iovec(PagemapEntry *pe, struct iovec *iov); extern void pagemap2iovec(PagemapEntry *pe, struct iovec *iov);
extern void iovec2pagemap(struct iovec *iov, PagemapEntry *pe); extern void iovec2pagemap(struct iovec *iov, PagemapEntry *pe);
extern int seek_pagemap_page(struct page_read *pr, unsigned long vaddr, bool warn);
extern int dedup_one_iovec(struct page_read *pr, struct iovec *iov); extern int dedup_one_iovec(struct page_read *pr, struct iovec *iov);
extern int punch_hole(struct page_read *pr, unsigned long off, unsigned long len, bool cleanup); extern int punch_hole(struct page_read *pr, unsigned long off, unsigned long len, bool cleanup);
......
...@@ -97,7 +97,8 @@ static void skip_pagemap_pages(struct page_read *pr, unsigned long len) ...@@ -97,7 +97,8 @@ static void skip_pagemap_pages(struct page_read *pr, unsigned long len)
pr->cvaddr += len; pr->cvaddr += len;
} }
int seek_pagemap_page(struct page_read *pr, unsigned long vaddr, bool warn) static int seek_pagemap_page(struct page_read *pr, unsigned long vaddr,
bool warn)
{ {
int ret; int ret;
struct iovec iov; struct iovec iov;
...@@ -328,6 +329,7 @@ int open_page_read_at(int dfd, int pid, struct page_read *pr, int pr_flags) ...@@ -328,6 +329,7 @@ int open_page_read_at(int dfd, int pid, struct page_read *pr, int pr_flags)
pr->put_pagemap = put_pagemap; pr->put_pagemap = put_pagemap;
pr->read_pages = read_pagemap_page; pr->read_pages = read_pagemap_page;
pr->close = close_page_read; pr->close = close_page_read;
pr->seek_page = seek_pagemap_page;
pr->id = ids++; pr->id = ids++;
pr_debug("Opened page read %u (parent %u)\n", pr_debug("Opened page read %u (parent %u)\n",
...@@ -350,6 +352,7 @@ open_old: ...@@ -350,6 +352,7 @@ open_old:
pr->read_pages = read_page; pr->read_pages = read_page;
pr->pi = NULL; pr->pi = NULL;
pr->close = close_page_read; pr->close = close_page_read;
pr->seek_page = NULL;
return 1; return 1;
} }
......
...@@ -528,7 +528,7 @@ static int check_pagehole_in_parent(struct page_read *p, struct iovec *iov) ...@@ -528,7 +528,7 @@ static int check_pagehole_in_parent(struct page_read *p, struct iovec *iov)
struct iovec piov; struct iovec piov;
unsigned long pend; unsigned long pend;
ret = seek_pagemap_page(p, off, true); ret = p->seek_page(p, off, true);
if (ret <= 0 || !p->pe) if (ret <= 0 || !p->pe)
return -1; return -1;
......
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