From patchwork Wed Sep 28 07:42:10 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [4/7] mem: Add pstree_item arg to dump_pages calls From: Pavel Emelyanov X-Patchwork-Id: 1780 Message-Id: <57EB7452.9050102@virtuozzo.com> To: CRIU Date: Wed, 28 Sep 2016 10:42:10 +0300 Signed-off-by: Pavel Emelyanov --- criu/cr-dump.c | 4 ++-- criu/include/mem.h | 5 +++-- criu/mem.c | 12 +++++++----- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/criu/cr-dump.c b/criu/cr-dump.c index 2b4e680..a2611ee 100644 --- a/criu/cr-dump.c +++ b/criu/cr-dump.c @@ -1179,7 +1179,7 @@ static int pre_dump_one_task(struct pstree_item *item) mdc.pre_dump = true; mdc.lazy = false; - ret = parasite_dump_pages_seized(parasite_ctl, &vmas, &mdc); + ret = parasite_dump_pages_seized(item, &vmas, &mdc, parasite_ctl); if (ret) goto err_cure; @@ -1339,7 +1339,7 @@ static int dump_one_task(struct pstree_item *item) mdc.pre_dump = false; mdc.lazy = opts.lazy_pages; - ret = parasite_dump_pages_seized(parasite_ctl, &vmas, &mdc); + ret = parasite_dump_pages_seized(item, &vmas, &mdc, parasite_ctl); if (ret) goto err_cure; diff --git a/criu/include/mem.h b/criu/include/mem.h index f1e6b78..f89947b 100644 --- a/criu/include/mem.h +++ b/criu/include/mem.h @@ -20,9 +20,10 @@ extern bool page_in_parent(bool dirty); extern int prepare_mm_pid(struct pstree_item *i); extern int do_task_reset_dirty_track(int pid); extern unsigned int dump_pages_args_size(struct vm_area_list *vmas); -extern int parasite_dump_pages_seized(struct parasite_ctl *ctl, +extern int parasite_dump_pages_seized(struct pstree_item *item, struct vm_area_list *vma_area_list, - struct mem_dump_ctl *mdc); + struct mem_dump_ctl *mdc, + struct parasite_ctl *ctl); #define PME_PRESENT (1ULL << 63) #define PME_SWAP (1ULL << 62) diff --git a/criu/mem.c b/criu/mem.c index 183245e..ddcd55e 100644 --- a/criu/mem.c +++ b/criu/mem.c @@ -280,10 +280,11 @@ static int xfer_pages(struct page_pipe *pp, struct page_xfer *xfer, bool lazy) return ret; } -static int __parasite_dump_pages_seized(struct parasite_ctl *ctl, +static int __parasite_dump_pages_seized(struct pstree_item *item, struct parasite_dump_pages_args *args, struct vm_area_list *vma_area_list, - struct mem_dump_ctl *mdc) + struct mem_dump_ctl *mdc, + struct parasite_ctl *ctl) { pmc_t pmc = PMC_INIT; struct page_pipe *pp; @@ -419,9 +420,10 @@ out: return ret; } -int parasite_dump_pages_seized(struct parasite_ctl *ctl, +int parasite_dump_pages_seized(struct pstree_item *item, struct vm_area_list *vma_area_list, - struct mem_dump_ctl *mdc) + struct mem_dump_ctl *mdc, + struct parasite_ctl *ctl) { int ret; struct parasite_dump_pages_args *pargs; @@ -448,7 +450,7 @@ int parasite_dump_pages_seized(struct parasite_ctl *ctl, return -1; } - ret = __parasite_dump_pages_seized(ctl, pargs, vma_area_list, mdc); + ret = __parasite_dump_pages_seized(item, pargs, vma_area_list, mdc, ctl); if (ret) { pr_err("Can't dump page with parasite\n"); /* Parasite will unprotect VMAs after fail in fini() */