Re: [PATCH V5 00/12] Enable per-file/per-directory DAX operations V5

Ira Weiny
2020-04-02T20:55:30Z

On Thu, Apr 02, 2020 at 10:53:27AM +0200, Christoph Hellwig wrote:
> On Wed, Apr 01, 2020 at 12:25:11PM +0200, Jan Kara wrote:
> > > - Applications must call statx to discover the current S_DAX state.
> > >
> > > - There exists an advisory file inode flag FS_XFLAG_DAX that can be
> > > changed on files that have no blocks allocated to them. Changing
> > > this flag does not necessarily change the S_DAX state immediately
> > > but programs can query the S_DAX state via statx.
> >
> > I generally like the proposal but I think the fact that toggling
> > FS_XFLAG_DAX will not have immediate effect on S_DAX will cause quite some
> > confusion and ultimately bug reports. I'm thinking whether we could somehow
> > improve this... For example an ioctl that would try to make set inode flags
> > effective by evicting the inode (and returning EBUSY if the eviction is
> > impossible for some reason)?
>
> I'd just return an error for that case, don't play silly games like
> evicting the inode.

I think I agree with Christoph here. But I want to clarify. I was heading in
a direction of failing the ioctl completely. But we could have the flag change
with an appropriate error which could let the user know the change has been
delayed.

But I don't immediately see what error code is appropriate for such an
indication. Candidates I can envision:

EAGAIN
ERESTART
EUSERS
EINPROGRESS

None are perfect but I'm leaning toward EINPROGRESS.

Ira