From: "Darrick J. Wong" <darrick.wong@oracle.com>
To: Ira Weiny <ira.weiny@intel.com>
Cc: linux-kernel@vger.kernel.org, linux-xfs@vger.kernel.org,
Al Viro <viro@zeniv.linux.org.uk>, Jan Kara <jack@suse.cz>,
Dan Williams <dan.j.williams@intel.com>,
Dave Chinner <david@fromorbit.com>,
Christoph Hellwig <hch@lst.de>,
"Theodore Y. Ts'o" <tytso@mit.edu>,
Jeff Moyer <jmoyer@redhat.com>,
linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org,
linux-api@vger.kernel.org
Subject: Re: [PATCH V11 04/11] Documentation/dax: Update Usage section
Date: Tue, 28 Apr 2020 14:12:32 -0700 [thread overview]
Message-ID: <20200428211232.GI6733@magnolia> (raw)
In-Reply-To: <20200428205309.GA406458@iweiny-DESK2.sc.intel.com>
On Tue, Apr 28, 2020 at 01:53:10PM -0700, Ira Weiny wrote:
> On Tue, Apr 28, 2020 at 01:27:38PM -0700, Darrick J. Wong wrote:
> > On Mon, Apr 27, 2020 at 05:21:35PM -0700, ira.weiny@intel.com wrote:
> > > From: Ira Weiny <ira.weiny@intel.com>
> > >
>
> [snip]
>
> > > +
> > > + 3. If the persistent FS_XFLAG_DAX flag is set on a directory, this flag will
> > > + be inherited by all regular files and sub directories that are subsequently
> >
> > Well, I'm at the level of minor edits: "...and subdirectories that..."
>
> Done.
>
> >
> > > + created in this directory. Files and subdirectories that exist at the time
> > > + this flag is set or cleared on the parent directory are not modified by
> > > + this modification of the parent directory.
> > > +
> > > + 4. There exists dax mount options which can override FS_XFLAG_DAX in the
> > > + setting of the S_DAX flag. Given underlying storage which supports DAX the
> > > + following hold.
> >
> > "hold:"
>
> Dene.
>
> >
> > > +
> > > + "-o dax=inode" means "follow FS_XFLAG_DAX" and is the default.
> > > +
> > > + "-o dax=never" means "never set S_DAX, ignore FS_XFLAG_DAX."
> > > +
> > > + "-o dax=always" means "always set S_DAX ignore FS_XFLAG_DAX."
> > > +
> > > + "-o dax" is a legacy option which is an alias for "dax=always".
> > > + This may be removed in the future so "-o dax=always" is
> > > + the preferred method for specifying this behavior.
> > > +
> > > + NOTE: Setting and inheritance affect FS_XFLAG_DAX at all times even when
> > > + the file system is mounted with a dax option.
> >
> > We can also clear the flag at any time no matter the mount option state.
> > Perhaps:
> >
> > "NOTE: Modifications to and inheritance behavior of FS_XFLAG_DAX remain
> > the same even when the filesystem is mounted with a dax option."
>
> Done.
>
> >
> > > + However, in-core inode state
> > > + (S_DAX) will be overridden until the file system is remounted with
> > > + dax=inode and the inode is evicted from kernel memory.
> > > +
> > > + 5. The DAX policy can be changed via:
> >
> > "The S_DAX policy". I don't want people to get confused.
>
> Done.
>
> >
> > > +
> > > + a) Set the parent directory FS_XFLAG_DAX as needed before files are created
> > > +
> > > + b) Set the appropriate dax="foo" mount option
> > > +
> > > + c) Change the FS_XFLAG_DAX on existing regular files and directories. This
> > > + has runtime constraints and limitations that are described in 6) below.
> >
> > "Setting", and "Changing" at the front of these three bullet points?
> >
> > Were you to put these together as full sentences, you'd want them to
> > read "The DAX policy can be changed via setting the parent directory
> > FS_XFLAG_DAX..."
> >
>
> Done.
>
> > > +
> > > + 6. When changing the DAX policy via toggling the persistent FS_XFLAG_DAX flag,
> >
> > "When changing the S_DAX policy..."
>
> Done.
>
> >
> > > + the change in behaviour for existing regular files may not occur
> > > + immediately. If the change must take effect immediately, the administrator
> > > + needs to:
> > > +
> > > + a) stop the application so there are no active references to the data set
> > > + the policy change will affect
> > > +
> > > + b) evict the data set from kernel caches so it will be re-instantiated when
> > > + the application is restarted. This can be acheived by:
> >
> > "achieved"
>
> Done.
>
> >
> > > +
> > > + i. drop-caches
> > > + ii. a filesystem unmount and mount cycle
> > > + iii. a system reboot
> > > +
> > > +
> > > +Details
> > > +-------
> > > +
> > > +There are 2 per-file dax flags. One is a persistent inode setting (FS_XFLAG_DAX)
> > > +and the other is a volatile flag indicating the active state of the feature
> > > +(S_DAX).
> > > +
> > > +FS_XFLAG_DAX is preserved within the file system. This persistent config
> > > +setting can be set, cleared and/or queried using the FS_IOC_FS[GS]ETXATTR ioctl
> > > +(see ioctl_xfs_fsgetxattr(2)) or an utility such as 'xfs_io'.
> > > +
> > > +New files and directories automatically inherit FS_XFLAG_DAX from
> > > +their parent directory _when_ _created_. Therefore, setting FS_XFLAG_DAX at
> > > +directory creation time can be used to set a default behavior for an entire
> > > +sub-tree.
> > > +
> > > +To clarify inheritance here are 3 examples:
> >
> > "...inheritance, here are..."
>
> Done.
>
> >
> > > +
> > > +Example A:
> > > +
> > > +mkdir -p a/b/c
> > > +xfs_io -c 'chattr +x' a
> > > +mkdir a/b/c/d
> > > +mkdir a/e
> > > +
> > > + dax: a,e
> > > + no dax: b,c,d
> > > +
> > > +Example B:
> > > +
> > > +mkdir a
> > > +xfs_io -c 'chattr +x' a
> > > +mkdir -p a/b/c/d
> > > +
> > > + dax: a,b,c,d
> > > + no dax:
> > > +
> > > +Example C:
> > > +
> > > +mkdir -p a/b/c
> > > +xfs_io -c 'chattr +x' c
> > > +mkdir a/b/c/d
> > > +
> > > + dax: c,d
> > > + no dax: a,b
> > > +
> > > +
> > > +The current enabled state (S_DAX) is set when a file inode is instantiated in
> > > +memory by the kernel. It is set based on the underlying media support, the
> > > +value of FS_XFLAG_DAX and the file systems dax mount option setting.
> >
> > "...and the file system's dax mount option string."
>
> No. I don't think string is the right word here. It is the setting not the
> string which is controlling the behavior. How about:
>
> "...and the file system's dax mount option."
Oops. I miscopied that; all I really wanted was the apostrophe-s after
"file system".
"...and the file system's dax mount option setting."
would have been fine.
--D
>
> >
> > > +
> > > +statx can be used to query S_DAX. NOTE that a directory will never have S_DAX
> >
> > "Note that only regular files will ever have S_DAX set..."?
>
> Done.
>
> Ira
>
> >
> > --D
> >
> > > +set and therefore statx will never indicate that S_DAX is set on directories.
> > > +
> > > +Setting the FS_XFLAG_DAX (specifically or through inheritance) occurs even if
> > > +the underlying media does not support dax and/or the file system is overridden
> > > +with a mount option.
> > > +
> > >
> > >
> > > Implementation Tips for Block Driver Writers
> > > --
> > > 2.25.1
> > >
next prev parent reply other threads:[~2020-04-28 21:12 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-28 0:21 [PATCH V11 00/11] XFS - Enable per-file/per-directory DAX operations V11 ira.weiny
2020-04-28 0:21 ` [PATCH V11 01/11] fs/xfs: Remove unnecessary initialization of i_rwsem ira.weiny
2020-04-28 0:21 ` [PATCH V11 02/11] fs: Remove unneeded IS_DAX() check in io_is_direct() ira.weiny
2020-04-28 0:21 ` [PATCH V11 03/11] fs/stat: Define DAX statx attribute ira.weiny
2020-04-28 0:21 ` [PATCH V11 04/11] Documentation/dax: Update Usage section ira.weiny
2020-04-28 20:27 ` Darrick J. Wong
2020-04-28 20:53 ` Ira Weiny
2020-04-28 21:12 ` Darrick J. Wong [this message]
2020-04-28 22:21 ` [PATCH V11.1] " ira.weiny
2020-04-29 2:21 ` Randy Dunlap
2020-04-29 4:30 ` Ira Weiny
2020-04-29 4:33 ` [PATCH V11.2] " ira.weiny
2020-04-29 5:47 ` Randy Dunlap
2020-04-28 0:21 ` [PATCH V11 05/11] fs/xfs: Change XFS_MOUNT_DAX to XFS_MOUNT_DAX_ALWAYS ira.weiny
2020-04-28 0:21 ` [PATCH V11 06/11] fs/xfs: Make DAX mount option a tri-state ira.weiny
2020-04-28 20:08 ` Darrick J. Wong
2020-04-28 0:21 ` [PATCH V11 07/11] fs/xfs: Create function xfs_inode_should_enable_dax() ira.weiny
2020-04-28 0:21 ` [PATCH V11 08/11] fs/xfs: Combine xfs_diflags_to_linux() and xfs_diflags_to_iflags() ira.weiny
2020-04-28 0:21 ` [PATCH V11 09/11] fs: Lift XFS_IDONTCACHE to the VFS layer ira.weiny
2020-04-28 20:06 ` Darrick J. Wong
2020-04-28 0:21 ` [PATCH V11 10/11] fs: Introduce DCACHE_DONTCACHE ira.weiny
2020-04-28 13:04 ` Jan Kara
2020-04-28 20:09 ` Darrick J. Wong
2020-04-28 0:21 ` [PATCH V11 11/11] fs/xfs: Update xfs_ioctl_setattr_dax_invalidate() ira.weiny
2020-04-28 20:11 ` Darrick J. Wong
2020-06-02 17:23 ` Darrick J. Wong
2020-06-02 23:15 ` Ira Weiny
2020-06-03 10:10 ` Jan Kara
2020-06-03 17:03 ` Darrick J. Wong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200428211232.GI6733@magnolia \
--to=darrick.wong@oracle.com \
--cc=dan.j.williams@intel.com \
--cc=david@fromorbit.com \
--cc=hch@lst.de \
--cc=ira.weiny@intel.com \
--cc=jack@suse.cz \
--cc=jmoyer@redhat.com \
--cc=linux-api@vger.kernel.org \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-xfs@vger.kernel.org \
--cc=tytso@mit.edu \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.