Re: iov_iter_pipe warning.

From: Al Viro
Date: Sun Sep 10 2017 - 16:06:06 EST


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...