[CRIU] [PATCH] vmsplice user-buffer(grabbed by process_vm_readv) to page-pipe

Andrei Vagin avagin at gmail.com
Tue Jul 9 19:08:39 MSK 2019


On Tue, Jul 09, 2019 at 01:50:57AM +0530, abhishek dubey wrote:
> Hi Andrei,
> 
> Please find inline replies.
> 
> On 08/07/19 9:35 AM, Andrei Vagin wrote:
> > On Fri, Jul 05, 2019 at 05:34:26PM +0530, Abhishek Dubey wrote:
> > > This patch implements usage of process_vm_readv
> > > syscall to collect memory pages from target process during
> > > pre-dump. process_vm_readv collects pages in user-buffer,
> > > which is later vmspliced to page-pipes.
> > You have to be more detailed in the commit message.
> > 
> > Frist of all, you have to explain why we need this patch.
> I will take care of same from next time.
> > 
> > If you improve performance, you need to give some numbers.
> Still I am handling issue of "missing entry in parent pagemap". Next patch
> will have comparative figures included.
> > 
> > If you implement a new feature, you need to provide tests for it.
> > 
> > If I understand this patch right, criu freezes all processes, collects
> > page maps, unfreezes process, dump pages? If this is right,
> Yes, this is right.
> > you need to
> > explain how it handles in this case:
> > 
> > addr = map(NULL, 4 * PAGE_SIZE)	|
> > addr[0] = 1			|
> > addr[PAGE_SIZE]  = 2		|
> > addr[2 * PAGE_SIZE] = 3		|
> > addr[3 * PAGE_SIZE] = 4		|
> > 				| criu freezes the process
> > 				| criu collects page maps
> > 				| criu unfreezes the process
> > unmap(addr, PAGE_SIZE * 2)	|
> > 				| criu dumps pages
> Need to explain this example somewhere along with code(as in page-pipe.h) or
> some other place?

here :)

I think this can be non-trivial case. process_vm_readv will return
ENOMEM for this segment, but a part of it still exists and we need to
find what part is here and dump it.


More information about the CRIU mailing list