[CRIU] [PATCH v5 3/5] Try to include userfaultfd with criu (part 1)

Adrian Reber adrian at lisas.de
Tue Mar 15 09:22:53 PDT 2016


On Tue, Mar 15, 2016 at 12:03:07PM +0300, Pavel Emelyanov wrote:
> >>>>>>>>> +static void criu_init()
> >>>>>>>>> +{
> >>>>>>>>> +	/* TODO: return code checking */
> >>>>>>>>> +	check_img_inventory();
> >>>>>>>>> +	prepare_task_entries();
> >>>>>>>>> +	prepare_pstree();
> >>>>>>>>> +	collect_remaps_and_regfiles();
> >>>>>>>>> +	prepare_shared_reg_files();
> >>>>>>>>> +	prepare_remaps();
> >>>>>>>>> +	prepare_mm_pid(root_item);
> >>>>>>>>> +
> >>>>>>>>> +	/* We found a PID */
> >>>>>>>>> +	pr_debug("root_item->pid.virt %d\n", root_item->pid.virt);
> >>>>>>>>> +	pr_debug("root_item->pid.real %d\n", root_item->pid.real);
> >>>>>>>>> +}
> >>>>>>>>
> >>>>>>>> This portion should be really resolved before merging. All of the above
> >>>>>>>> has nothing to do with the page_read, so please, find the reason for
> >>>>>>>> page read engine non working due to absence of this. If you need help
> >>>>>>>> with the code, just drop me an e-mail, I'll help.
[...]
> The second suggestion is to just open the mm.img file and pull the vma entries
> into the lazy daemon. There's no such helper in criu code yet, so introducing
> one would be required.

I tried to re-implement prepare_mm_pid() (which basically parses the
mm.img file).What I currently have is

check_img_inventory();
prepare_task_entries();
prepare_pstree();
collect_remaps_and_regfiles();
ri = rsti(root_item);

and then parts of prepare_mm_pid() re-implemented manually to get the
VMA entries. So most of the code is still there and it seems difficult
to reduce the amount of common code used. The common code already has
all the knowledge to correctly handle the files and read the protocol
buffers with all necessary sanity checks.

It would probably help me to understand the situation if I knew why this
common code should not be used. With the implementation in my latest
patch I am re-using the existing the CRIU infrastructure to access the
mm.img correctly as a normal restore would do? It is not clear to me why
I rather shouldn't use the existing code. Some clarification would be
nice, thanks.

		Adrian


More information about the CRIU mailing list