Re: iov_iter_pipe warning.

From: Dave Jones
Date: Sun Sep 10 2017 - 16:07:33 EST


On Sun, Sep 10, 2017 at 09:05:48PM +0100, Al Viro wrote:
> On Sun, Sep 10, 2017 at 12:07:10PM -0400, Dave Jones wrote:
> > On Sun, Sep 10, 2017 at 03:57:21AM +0100, Al Viro wrote:
> > > On Sat, Sep 09, 2017 at 09:07:56PM -0400, Dave Jones wrote:
> > >
> > > > With this in place, I'm still seeing -EBUSY from invalidate_inode_pages2_range
> > > > which doesn't end well...
> > >
> > > Different issue, and I'm not sure why that WARN_ON() is there in the
> > > first place. Note that in a similar situation generic_file_direct_write()
> > > simply buggers off and lets the caller do buffered write...
> > >
> > > iov_iter_pipe() warning is a sign of ->read_iter() on pipe-backed iov_iter
> > > putting into the pipe more than it claims to have done.
> >
> > (from a rerun after hitting that EBUSY warn; hence the taint)
> >
> > WARNING: CPU: 0 PID: 14154 at fs/iomap.c:1055 iomap_dio_rw+0x78e/0x840
>
> ... and that's another invalidate_inode_pages2_range() in the same
> sucker. Again, compare with generic_file_direct_write()...
>
> I don't believe that this one has anything splice-specific to do with it.
> And its only relation to iov_iter_pipe() splat is that it's in the same
> fs/iomap.c...

The interesting part is that I'm hitting these two over and over now
rather than the iov_iter_pipe warning. Could just be unlucky
randomness though..

Dave