From: ira.weiny@intel.com
To: linux-kernel@vger.kernel.org
Cc: Ira Weiny <ira.weiny@intel.com>,
Alexander Viro <viro@zeniv.linux.org.uk>,
"Darrick J. Wong" <darrick.wong@oracle.com>,
Dan Williams <dan.j.williams@intel.com>,
Dave Chinner <david@fromorbit.com>,
Christoph Hellwig <hch@lst.de>,
"Theodore Y. Ts'o" <tytso@mit.edu>, Jan Kara <jack@suse.cz>,
linux-ext4@vger.kernel.org, linux-xfs@vger.kernel.org,
linux-fsdevel@vger.kernel.org
Subject: [PATCH V5 04/12] fs/xfs: Isolate the physical DAX flag from enabled
Date: Wed, 26 Feb 2020 21:24:34 -0800 [thread overview]
Message-ID: <20200227052442.22524-5-ira.weiny@intel.com> (raw)
In-Reply-To: <20200227052442.22524-1-ira.weiny@intel.com>
From: Ira Weiny <ira.weiny@intel.com>
xfs_ioctl_setattr_dax_invalidate() currently checks if the DAX flag is
changing as a quick check.
But the implementation mixes the physical (XFS_DIFLAG2_DAX) and
the enabled (S_DAX) DAX flags.
Remove the use of the enabled flag when determining if a change of the
physical flag is required.
Furthermore, we want the physical flag, XFS_DIFLAG2_DAX, to be changed
regardless of if the underlying storage can support DAX or not.
The enabled flag, IS_DAX(), will be set later IFF the inode supports
dax in a follow on patch.
Signed-off-by: Ira Weiny <ira.weiny@intel.com>
---
Changes from V3:
Remove the underlying storage support check
Rework commit message
Reorder patch
---
fs/xfs/xfs_ioctl.c | 20 ++++----------------
1 file changed, 4 insertions(+), 16 deletions(-)
diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c
index d42de92cb283..25e12ce85075 100644
--- a/fs/xfs/xfs_ioctl.c
+++ b/fs/xfs/xfs_ioctl.c
@@ -1190,28 +1190,16 @@ xfs_ioctl_setattr_dax_invalidate(
int *join_flags)
{
struct inode *inode = VFS_I(ip);
- struct super_block *sb = inode->i_sb;
int error;
*join_flags = 0;
- /*
- * It is only valid to set the DAX flag on regular files and
- * directories on filesystems where the block size is equal to the page
- * size. On directories it serves as an inherited hint so we don't
- * have to check the device for dax support or flush pagecache.
- */
- if (fa->fsx_xflags & FS_XFLAG_DAX) {
- struct xfs_buftarg *target = xfs_inode_buftarg(ip);
-
- if (!bdev_dax_supported(target->bt_bdev, sb->s_blocksize))
- return -EINVAL;
- }
-
/* If the DAX state is not changing, we have nothing to do here. */
- if ((fa->fsx_xflags & FS_XFLAG_DAX) && IS_DAX(inode))
+ if ((fa->fsx_xflags & FS_XFLAG_DAX) &&
+ (ip->i_d.di_flags2 & XFS_DIFLAG2_DAX))
return 0;
- if (!(fa->fsx_xflags & FS_XFLAG_DAX) && !IS_DAX(inode))
+ if (!(fa->fsx_xflags & FS_XFLAG_DAX) &&
+ !(ip->i_d.di_flags2 & XFS_DIFLAG2_DAX))
return 0;
if (S_ISDIR(inode->i_mode))
--
2.21.0
next prev parent reply other threads:[~2020-02-27 5:32 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-27 5:24 [PATCH V5 00/12] Enable per-file/per-directory DAX operations V5 ira.weiny
2020-02-27 5:24 ` [PATCH V5 01/12] fs/xfs: Remove unnecessary initialization of i_rwsem ira.weiny
2020-02-27 17:25 ` Ira Weiny
2020-02-27 5:24 ` [PATCH V5 02/12] fs: Remove unneeded IS_DAX() check ira.weiny
2020-02-27 5:24 ` [PATCH V5 03/12] fs/stat: Define DAX statx attribute ira.weiny
2020-02-27 5:24 ` ira.weiny [this message]
2020-02-27 5:24 ` [PATCH V5 05/12] fs/xfs: Create function xfs_inode_enable_dax() ira.weiny
2020-03-01 22:37 ` Dave Chinner
2020-02-27 5:24 ` [PATCH V5 06/12] fs: Add locking for a dynamic address space operations state ira.weiny
2020-03-02 1:26 ` Dave Chinner
2020-03-02 1:36 ` Dave Chinner
2020-02-27 5:24 ` [PATCH V5 07/12] fs: Prevent DAX state change if file is mmap'ed ira.weiny
2020-02-27 5:24 ` [PATCH V5 08/12] fs/xfs: Hold off aops users while changing DAX state ira.weiny
2020-02-27 5:24 ` [PATCH V5 09/12] fs/xfs: Clean up locking in dax invalidate ira.weiny
2020-02-27 5:24 ` [PATCH V5 10/12] fs/xfs: Allow toggle of effective DAX flag ira.weiny
2020-02-27 5:24 ` [PATCH V5 11/12] fs/xfs: Remove xfs_diflags_to_linux() ira.weiny
2020-02-27 5:24 ` [PATCH V5 12/12] Documentation/dax: Update Usage section ira.weiny
2020-03-05 15:51 ` [PATCH V5 00/12] Enable per-file/per-directory DAX operations V5 Christoph Hellwig
2020-03-09 17:04 ` Ira Weiny
2020-03-11 3:36 ` Darrick J. Wong
2020-03-11 6:29 ` Christoph Hellwig
2020-03-11 17:07 ` Dan Williams
2020-03-16 9:52 ` Jan Kara
2020-03-16 9:55 ` Christoph Hellwig
2020-04-01 4:00 ` Darrick J. Wong
2020-04-01 10:25 ` Jan Kara
2020-04-02 8:53 ` Christoph Hellwig
2020-04-02 20:55 ` Ira Weiny
2020-04-03 7:27 ` Christoph Hellwig
2020-04-03 15:48 ` Ira Weiny
2020-04-03 17:03 ` Jan Kara
2020-04-03 18:18 ` Ira Weiny
2020-04-03 18:21 ` Ira Weiny
2020-04-03 18:37 ` Darrick J. Wong
2020-04-05 6:19 ` Ira Weiny
2020-04-06 10:00 ` Jan Kara
2020-04-03 18:29 ` Darrick J. Wong
2020-04-03 16:05 ` Darrick J. Wong
2020-04-03 4:39 ` Ira Weiny
2020-03-11 6:39 ` Dave Chinner
2020-03-11 6:44 ` Christoph Hellwig
2020-03-11 17:07 ` Dan Williams
2020-03-12 0:49 ` Dave Chinner
2020-03-12 3:00 ` Darrick J. Wong
2020-03-12 7:27 ` Christoph Hellwig
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=20200227052442.22524-5-ira.weiny@intel.com \
--to=ira.weiny@intel.com \
--cc=dan.j.williams@intel.com \
--cc=darrick.wong@oracle.com \
--cc=david@fromorbit.com \
--cc=hch@lst.de \
--cc=jack@suse.cz \
--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.