All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ross Zwisler <ross.zwisler@linux.intel.com>
To: linux-kernel@vger.kernel.org
Cc: Jan Kara <jack@suse.cz>,
	"Darrick J. Wong" <darrick.wong@oracle.com>,
	linux-nvdimm@lists.01.org, Dave Chinner <david@fromorbit.com>,
	stable@vger.kernel.org, Christoph Hellwig <hch@lst.de>,
	linux-xfs@vger.kernel.org
Subject: [PATCH 2/2] xfs: validate bdev support for DAX inode flag
Date: Thu,  7 Sep 2017 15:08:32 -0600	[thread overview]
Message-ID: <20170907210832.17969-3-ross.zwisler@linux.intel.com> (raw)
In-Reply-To: <20170907210832.17969-1-ross.zwisler@linux.intel.com>

Currently only the blocksize is checked, but we should really be calling
bdev_dax_supported() which also tests to make sure we can get a
struct dax_device and that the dax_direct_access() path is working.

This is the same check that we do for the "-o dax" mount option in
xfs_fs_fill_super().

This does not fix the race issues that caused the XFS DAX inode option to
be disabled, so that option will still be disabled.  If/when we re-enable
it, though, I think we will want this issue to have been fixed.  I also do
think that we want to fix this in stable kernels.

Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com>
CC: stable@vger.kernel.org
---
 fs/xfs/xfs_ioctl.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c
index 26faeb9..0433aef 100644
--- a/fs/xfs/xfs_ioctl.c
+++ b/fs/xfs/xfs_ioctl.c
@@ -1088,6 +1088,7 @@ 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;
@@ -1100,7 +1101,7 @@ xfs_ioctl_setattr_dax_invalidate(
 	if (fa->fsx_xflags & FS_XFLAG_DAX) {
 		if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode)))
 			return -EINVAL;
-		if (ip->i_mount->m_sb.sb_blocksize != PAGE_SIZE)
+		if (bdev_dax_supported(sb, sb->s_blocksize) < 0)
 			return -EINVAL;
 	}
 
-- 
2.9.5

_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm

WARNING: multiple messages have this Message-ID (diff)
From: Ross Zwisler <ross.zwisler@linux.intel.com>
To: linux-kernel@vger.kernel.org
Cc: Ross Zwisler <ross.zwisler@linux.intel.com>,
	"Darrick J. Wong" <darrick.wong@oracle.com>,
	Christoph Hellwig <hch@lst.de>,
	Dan Williams <dan.j.williams@intel.com>,
	Dave Chinner <david@fromorbit.com>, Jan Kara <jack@suse.cz>,
	linux-nvdimm@lists.01.org, linux-xfs@vger.kernel.org,
	stable@vger.kernel.org
Subject: [PATCH 2/2] xfs: validate bdev support for DAX inode flag
Date: Thu,  7 Sep 2017 15:08:32 -0600	[thread overview]
Message-ID: <20170907210832.17969-3-ross.zwisler@linux.intel.com> (raw)
In-Reply-To: <20170907210832.17969-1-ross.zwisler@linux.intel.com>

Currently only the blocksize is checked, but we should really be calling
bdev_dax_supported() which also tests to make sure we can get a
struct dax_device and that the dax_direct_access() path is working.

This is the same check that we do for the "-o dax" mount option in
xfs_fs_fill_super().

This does not fix the race issues that caused the XFS DAX inode option to
be disabled, so that option will still be disabled.  If/when we re-enable
it, though, I think we will want this issue to have been fixed.  I also do
think that we want to fix this in stable kernels.

Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com>
CC: stable@vger.kernel.org
---
 fs/xfs/xfs_ioctl.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c
index 26faeb9..0433aef 100644
--- a/fs/xfs/xfs_ioctl.c
+++ b/fs/xfs/xfs_ioctl.c
@@ -1088,6 +1088,7 @@ 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;
@@ -1100,7 +1101,7 @@ xfs_ioctl_setattr_dax_invalidate(
 	if (fa->fsx_xflags & FS_XFLAG_DAX) {
 		if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode)))
 			return -EINVAL;
-		if (ip->i_mount->m_sb.sb_blocksize != PAGE_SIZE)
+		if (bdev_dax_supported(sb, sb->s_blocksize) < 0)
 			return -EINVAL;
 	}
 
-- 
2.9.5

  parent reply	other threads:[~2017-09-07 21:06 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-07 21:08 [PATCH 0/2] xfs: some DAX fixes Ross Zwisler
2017-09-07 21:08 ` Ross Zwisler
2017-09-07 21:08 ` [PATCH 1/2] xfs: always use DAX if mount option is used Ross Zwisler
2017-09-07 21:08   ` Ross Zwisler
2017-09-08  7:20   ` Christoph Hellwig
2017-09-08  7:20     ` Christoph Hellwig
2017-09-08 15:28     ` Ross Zwisler
2017-09-08 15:28       ` Ross Zwisler
2017-09-08 21:21       ` [PATCH] xfs: add regression test for DAX mount option usage Ross Zwisler
2017-09-08 21:21         ` Ross Zwisler
2017-09-11 15:16         ` Ross Zwisler
2017-09-11 15:16           ` Ross Zwisler
2017-09-11 15:37           ` Dan Williams
2017-09-11 15:37             ` Dan Williams
2017-09-11 20:01             ` [fstests PATCH v2] " Ross Zwisler
2017-09-11 20:01               ` Ross Zwisler
2017-09-14  6:57               ` Eryu Guan
2017-09-14  6:57                 ` Eryu Guan
2017-09-15 22:42                 ` Ross Zwisler
2017-09-15 22:42                   ` Ross Zwisler
2017-09-16 22:26                   ` Dave Chinner
2017-09-16 22:26                     ` Dave Chinner
2017-09-12  6:44         ` [PATCH] " Dave Chinner
2017-09-12  6:44           ` Dave Chinner
2017-09-12 15:38           ` Ross Zwisler
2017-09-12 15:38             ` Ross Zwisler
2017-09-12 23:47             ` Dave Chinner
2017-09-12 23:47               ` Dave Chinner
2017-09-13 14:42               ` Ross Zwisler
2017-09-13 14:42                 ` Ross Zwisler
2017-09-13 22:01                 ` Dave Chinner
2017-09-13 22:01                   ` Dave Chinner
2017-09-13 22:23                   ` Dan Williams
2017-09-13 22:23                     ` Dan Williams
2017-09-13 23:34                     ` Dave Chinner
2017-09-13 23:34                       ` Dave Chinner
2017-09-14  0:28                       ` Dan Williams
2017-09-14  0:28                         ` Dan Williams
2017-09-14  0:40                         ` Dave Chinner
2017-09-14  0:40                           ` Dave Chinner
2017-09-14  1:24                           ` Dan Williams
2017-09-14  1:24                             ` Dan Williams
2017-09-14 12:19                             ` Jeff Moyer
2017-09-14 12:19                               ` Jeff Moyer
2017-09-14 13:16                               ` Johannes Thumshirn
2017-09-14 13:16                                 ` Johannes Thumshirn
2017-09-14 14:10                                 ` Dan Williams
2017-09-14 14:10                                   ` Dan Williams
2017-09-15  9:18                                   ` Johannes Thumshirn
2017-09-15  9:18                                     ` Johannes Thumshirn
2017-09-15 17:39                                     ` Dan Williams
2017-09-15 17:39                                       ` Dan Williams
2017-09-18  7:47                                       ` Johannes Thumshirn
2017-09-18  7:47                                         ` Johannes Thumshirn
2017-09-07 21:08 ` Ross Zwisler [this message]
2017-09-07 21:08   ` [PATCH 2/2] xfs: validate bdev support for DAX inode flag Ross Zwisler
2017-09-08  7:21   ` Christoph Hellwig
2017-09-08  7:21     ` 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=20170907210832.17969-3-ross.zwisler@linux.intel.com \
    --to=ross.zwisler@linux.intel.com \
    --cc=darrick.wong@oracle.com \
    --cc=david@fromorbit.com \
    --cc=hch@lst.de \
    --cc=jack@suse.cz \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nvdimm@lists.01.org \
    --cc=linux-xfs@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /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.