Re: [RFC] xfs: reduce sub-block DIO serialisation

Dave Chinner
2021-01-12T22:36:43Z

On Tue, Jan 12, 2021 at 10:01:35AM +0200, Avi Kivity wrote:
> On 1/12/21 3:07 AM, Dave Chinner wrote:
> > Hi folks,
> >
> > This is the XFS implementation on the sub-block DIO optimisations
> > for written extents that I've mentioned on #xfs and a couple of
> > times now on the XFS mailing list.
> >
> > It takes the approach of using the IOMAP_NOWAIT non-blocking
> > IO submission infrastructure to optimistically dispatch sub-block
> > DIO without exclusive locking. If the extent mapping callback
> > decides that it can't do the unaligned IO without extent
> > manipulation, sub-block zeroing, blocking or splitting the IO into
> > multiple parts, it aborts the IO with -EAGAIN. This allows the high
> > level filesystem code to then take exclusive locks and resubmit the
> > IO once it has guaranteed no other IO is in progress on the inode
> > (the current implementation).
>
>
> Can you expand on the no-splitting requirement? Does it involve only
> splitting by XFS (IO spans >1 extents) or lower layers (RAID)?

XFS only.

> The reason I'm concerned is that it's the constraint that the application
> has least control over. I guess I could use RWF_NOWAIT to avoid blocking my
> main thread (but last time I tried I'd get occasional EIOs that frightened
> me off that).

Spurious EIO from RWF_NOWAIT is a bug that needs to be fixed. DO you
have any details?

Cheers,

Dave.
--
Dave Chinner
david@fromorbit.com