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

Adrian Reber adrian at lisas.de
Fri Mar 11 07:03:58 PST 2016


On Fri, Mar 11, 2016 at 04:08:10PM +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.

I had a quick look, but need to look a bit in more detail.

If I leave away all those lines I get a segfault, I haven't checked yet
but I think when accessing root_item->pid.virt.

I tried a few combinations and it seems I can leave away:

prepare_remaps();

Leaving check_img_inventory() away I get:

(02.714381) Error (pstree.c:711): No kIDs provided, image corruption

without collect_remaps_and_regfiles() and/or prepare_shared_reg_files()
I get:

(02.706343) Error (files-reg.c:1616): No entry for reg-file-ID 0x2

Leaving away the line prepare_mm_pid(); it seems to be working but
the loop to detect which pages should be handled by userfaultfd does not
work correctly. So it is needed somehow.

Only leaving the last three lines

prepare_shared_reg_files();
prepare_remaps();
prepare_mm_pid(root_item);

I also get a segfault accessing root_item->pid.virt. So I am not sure
what and why is needed. I will look more in the next few days, but if
you have an idea, that would be great. Thanks.

		Adrian


More information about the CRIU mailing list