[CRIU] crtools error: "can't splice to pipe"

Cyrill Gorcunov gorcunov at gmail.com
Wed Apr 30 04:21:47 PDT 2014


On Wed, Apr 30, 2014 at 03:17:03PM +0400, Pavel Emelyanov wrote:
> On 04/30/2014 02:28 PM, Cyrill Gorcunov wrote:
> > 
> > Could you please try the patch attached? Need to figure out why access on
> > some pages are failing. The dump log will be big so don't get surprised.
> 
> > @@ -68,6 +85,19 @@ static int dump_pages(struct parasite_dump_pages_args *args)
> >  		return -1;
> >  
> >  	iovs = pargs_iovs(args);
> > +
> > +	{
> > +		struct iovec *v = &iovs[args->off];
> > +		size_t i, j;
> > +
> > +		for (i = 0, v = &iovs[args->off]; i < args->nr_segs; i++, v++) {
> > +			for (j = 0; j < v->iov_len; j += PAGE_SIZE) {
> > +				pr_msg("dump_pages %lx\n", (unsigned long)v->iov_base + j);
> > +				builtin_memcpy(____data, v->iov_base + j, PAGE_SIZE);
> > +			}
> > +		}
> > +	}
> > +
> >  	ret = sys_vmsplice(p, &iovs[args->off], args->nr_segs,
> >  				SPLICE_F_GIFT | SPLICE_F_NONBLOCK);
> >  	if (ret != PAGE_SIZE * args->nr_pages) {
> > 
> 
> The ____data thing is write-only. What is it for?

I need to read every page we're going to dump. The problem is that the kernel
fails to fetch page's data and I wanna test it.


More information about the CRIU mailing list