[CRIU] [PATCH 2/3] criu: pagemap: add reset method
Pavel Emelyanov
xemul at virtuozzo.com
Tue Jun 28 06:05:58 PDT 2016
On 06/27/2016 07:53 AM, Mike Rapoport wrote:
> Rather than do open/close to reset pagemap, just update it's state.
>
> Signed-off-by: Mike Rapoport <rppt at linux.vnet.ibm.com>
> ---
> criu/include/pagemap.h | 1 +
> criu/pagemap.c | 14 ++++++++++++++
> 2 files changed, 15 insertions(+)
>
> diff --git a/criu/include/pagemap.h b/criu/include/pagemap.h
> index 5e6c4b2..b973caf 100644
> --- a/criu/include/pagemap.h
> +++ b/criu/include/pagemap.h
> @@ -53,6 +53,7 @@ struct page_read {
> void (*close)(struct page_read *);
> void (*skip_pages)(struct page_read *, unsigned long len);
> int (*seek_page)(struct page_read *pr, unsigned long vaddr, bool warn);
> + void (*reset)(struct page_read *pr);
>
> /* Private data of reader */
> struct cr_img *pmi;
> diff --git a/criu/pagemap.c b/criu/pagemap.c
> index 7babca3..0118bad 100644
> --- a/criu/pagemap.c
> +++ b/criu/pagemap.c
> @@ -317,6 +317,19 @@ static void close_page_read(struct page_read *pr)
> free_pagemaps(pr);
> }
>
> +static void reset_pagemap(struct page_read *pr)
> +{
> + pr->cvaddr = 0;
> + pr->pi_off = 0;
> + pr->curr_pme = 0;
> + pr->pe = NULL;
> +
> + /* FIXME: take care of bunch */
Of what?!
> +
> + if (pr->parent)
> + reset_pagemap(pr->parent);
> +}
> +
> static int try_open_parent(int dfd, int pid, struct page_read *pr, int pr_flags)
> {
> int pfd, ret;
> @@ -467,6 +480,7 @@ int open_page_read_at(int dfd, int pid, struct page_read *pr, int pr_flags)
> pr->close = close_page_read;
> pr->skip_pages = skip_pagemap_pages;
> pr->seek_page = seek_pagemap_page;
> + pr->reset = reset_pagemap;
> pr->id = ids++;
>
> pr_debug("Opened page read %u (parent %u)\n",
>
More information about the CRIU
mailing list