Re: [PATCH V6 7/8] fs/xfs: Change xfs_ioctl_setattr_dax_invalidate() to xfs_ioctl_dax_check()

Jan Kara
2020-04-08T09:58:07Z

On Wed 08-04-20 12:23:18, Dave Chinner wrote:
> On Tue, Apr 07, 2020 at 11:29:57AM -0700, ira.weiny@intel.com wrote:
> > From: Ira Weiny <ira.weiny@intel.com>
> >
> > We only support changing FS_XFLAG_DAX on directories. Files get their
> > flag from the parent directory on creation only. So no data
> > invalidation needs to happen.
>
> Which leads me to ask: how are users and/or admins supposed to
> remove the flag from regular files once it is set in the filesystem?
>
> Only being able to override the flag via the "dax=never" mount
> option means that once the flag is set, nobody can ever remove it
> and they can only globally turn off dax if it gets set incorrectly.
> It also means a global interrupt because all apps on the filesystem
> need to be stopped so the filesystem can be unmounted and mounted
> again with dax=never. This is highly unfriendly to admins and users.
>
> IOWs, we _must_ be able to clear this inode flag on regular inodes
> in some way. I don't care if it doesn't change the current in-memory
> state, but we must be able to clear the flags so that the next time
> the inodes are instantiated DAX is not enabled for those files...

Well, there's one way to clear the flag: delete the file. If you still care
about the data, you can copy the data first. It isn't very convenient, I
agree, and effectively means restarting whatever application that is using
the file. But it seems like more understandable API than letting user clear
the on-disk flag but the inode will still use DAX until kernel decides to
evict the inode - because that often means you need to restart the
application using the file anyway for the flag change to have any effect.

Honza
--
Jan Kara <jack@suse.com>
SUSE Labs, CR