Commit 5d128a49 authored by Fyodor Bocharov's avatar Fyodor Bocharov Committed by Pavel Emelyanov

mem: generalize page_in_parent function and make it extern

If we want to dedup anon shared memory we need to call page_in_parent.
So we need to make it extern.
Also in case of anon shared mem we have only 1 bit per page so we have to
change page_in_parent signature.
Signed-off-by: 's avatarFyodor Bocharov <fbocharov@yandex.ru>
Signed-off-by: 's avatarEugene Batalov <eabatalov89@gmail.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
parent ea8b5dab
#ifndef __CR_MEM_H__
#define __CR_MEM_H__
#include <stdbool.h>
struct parasite_ctl;
struct vm_area_list;
struct page_pipe;
struct pstree_item;
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);
......
......@@ -113,14 +113,14 @@ static inline bool should_dump_page(VmaEntry *vmae, u64 pme)
return false;
}
static inline bool page_in_parent(u64 pme)
bool page_in_parent(bool dirty)
{
/*
* If we do memory tracking, but w/o parent images,
* then we have to dump all memory
*/
return opts.track_mem && opts.img_parent && !(pme & PME_SOFT_DIRTY);
return opts.track_mem && opts.img_parent && !dirty;
}
/*
......@@ -156,7 +156,7 @@ static int generate_iovs(struct vma_area *vma, struct page_pipe *pp, u64 *map, u
* page. The latter would be checked in page-xfer.
*/
if (has_parent && page_in_parent(at[pfn])) {
if (has_parent && page_in_parent(at[pfn] & PME_SOFT_DIRTY)) {
ret = page_pipe_add_hole(pp, vaddr);
pages[0]++;
} else {
......
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