Message ID | 1462214578-27122-4-git-send-email-toshi.kani@hpe.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, May 02, 2016 at 12:42:58PM -0600, Toshi Kani wrote: > When a partition is not aligned by 4KB, mount -o dax succeeds, > but any read/write access to the filesystem fails, except for > metadata update. > > Call bdev_direct_access to check the alignment when -o dax is > specified. > > Signed-off-by: Toshi Kani <toshi.kani@hpe.com> > Cc: Dave Chinner <david@fromorbit.com> > Cc: Dan Williams <dan.j.williams@intel.com> > Cc: Ross Zwisler <ross.zwisler@linux.intel.com> > Cc: Christoph Hellwig <hch@infradead.org> > Cc: Boaz Harrosh <boaz@plexistor.com> > --- > fs/xfs/xfs_super.c | 23 +++++++++++++++++++---- > 1 file changed, 19 insertions(+), 4 deletions(-) > > diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c > index 187e14b..b7ee323 100644 > --- a/fs/xfs/xfs_super.c > +++ b/fs/xfs/xfs_super.c > @@ -1557,15 +1557,30 @@ xfs_fs_fill_super( > sb->s_flags |= MS_I_VERSION; > > if (mp->m_flags & XFS_MOUNT_DAX) { > + struct blk_dax_ctl dax = { > + .sector = 0, > + .size = PAGE_SIZE, > + }; > xfs_warn(mp, > - "DAX enabled. Warning: EXPERIMENTAL, use at your own risk"); > + "DAX enabled. Warning: EXPERIMENTAL, use at your own risk"); > if (sb->s_blocksize != PAGE_SIZE) { > xfs_alert(mp, > "Filesystem block size invalid for DAX Turning DAX off."); > mp->m_flags &= ~XFS_MOUNT_DAX; > - } else if (!sb->s_bdev->bd_disk->fops->direct_access) { > - xfs_alert(mp, > - "Block device does not support DAX Turning DAX off."); > + } else if ((error = bdev_direct_access(sb->s_bdev, &dax)) < 0) { > + switch (error) { > + case -EOPNOTSUPP: > + xfs_alert(mp, > + "Block device does not support DAX Turning DAX off."); Since you're already in here editing all the strings, can you add a period to make it more readable? Applies to all strings. > + "Block device does not support DAX. Turning DAX off."); ^ > + break; > + case -EINVAL: > + xfs_alert(mp, > + "Partition alignment invalid for DAX Turning DAX off."); > + break; > + default: > + xfs_alert(mp, > + "DAX access failed (%d) DAX Turning DAX off.", error); I DAX think you might DAX have too many DAXes in here. :) > + } > mp->m_flags &= ~XFS_MOUNT_DAX; > } > } Other than the nit-picking about the strings, this seems fine. You can add this for the series: Reviewed-by: Ross Zwisler <ross.zwisler@linux.intel.com> -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, 2016-05-02 at 13:50 -0600, Ross Zwisler wrote: > On Mon, May 02, 2016 at 12:42:58PM -0600, Toshi Kani wrote: : > > xfs_warn(mp, > > - "DAX enabled. Warning: EXPERIMENTAL, use at your own risk"); > > + "DAX enabled. Warning: EXPERIMENTAL, use at your own > > risk"); > > if (sb->s_blocksize != PAGE_SIZE) { > > xfs_alert(mp, > > "Filesystem block size invalid for DAX Turning DAX > > off."); > > mp->m_flags &= ~XFS_MOUNT_DAX; > > - } else if (!sb->s_bdev->bd_disk->fops->direct_access) > > { > > - xfs_alert(mp, > > - "Block device does not support DAX Turning DAX off."); > > + } else if ((error = bdev_direct_access(sb->s_bdev, > > &dax)) < 0) { > > + switch (error) { > > + case -EOPNOTSUPP: > > + xfs_alert(mp, > > + "Block device does not support DAX Turning DAX > > off."); > > Since you're already in here editing all the strings, can you add a > period to make it more readable? Applies to all strings. Right. Will do. > > > > + "Block device does not support DAX. Turning > > DAX off."); > ^ > > > > > + break; > > + case -EINVAL: > > + xfs_alert(mp, > > + "Partition alignment invalid for DAX Turning > > DAX off."); > > + break; > > + default: > > + xfs_alert(mp, > > + "DAX access failed (%d) DAX Turning DAX off.", > > error); > > I DAX think you might DAX have too many DAXes in here. :) Oops! :) > > > > + } > > mp->m_flags &= ~XFS_MOUNT_DAX; > > } > > } > > Other than the nit-picking about the strings, this seems fine. > > You can add this for the series: > Reviewed-by: Ross Zwisler <ross.zwisler@linux.intel.com> Thanks! -Toshi -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, May 02, 2016 at 12:42:58PM -0600, Toshi Kani wrote: > When a partition is not aligned by 4KB, mount -o dax succeeds, > but any read/write access to the filesystem fails, except for > metadata update. > > Call bdev_direct_access to check the alignment when -o dax is > specified. > > Signed-off-by: Toshi Kani <toshi.kani@hpe.com> > Cc: Dave Chinner <david@fromorbit.com> > Cc: Dan Williams <dan.j.williams@intel.com> > Cc: Ross Zwisler <ross.zwisler@linux.intel.com> > Cc: Christoph Hellwig <hch@infradead.org> > Cc: Boaz Harrosh <boaz@plexistor.com> > --- > fs/xfs/xfs_super.c | 23 +++++++++++++++++++---- > 1 file changed, 19 insertions(+), 4 deletions(-) > > diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c > index 187e14b..b7ee323 100644 > --- a/fs/xfs/xfs_super.c > +++ b/fs/xfs/xfs_super.c > @@ -1557,15 +1557,30 @@ xfs_fs_fill_super( > sb->s_flags |= MS_I_VERSION; > > if (mp->m_flags & XFS_MOUNT_DAX) { > + struct blk_dax_ctl dax = { > + .sector = 0, > + .size = PAGE_SIZE, > + }; > xfs_warn(mp, > - "DAX enabled. Warning: EXPERIMENTAL, use at your own risk"); > + "DAX enabled. Warning: EXPERIMENTAL, use at your own risk"); > if (sb->s_blocksize != PAGE_SIZE) { > xfs_alert(mp, > "Filesystem block size invalid for DAX Turning DAX off."); > mp->m_flags &= ~XFS_MOUNT_DAX; > - } else if (!sb->s_bdev->bd_disk->fops->direct_access) { > - xfs_alert(mp, > - "Block device does not support DAX Turning DAX off."); > + } else if ((error = bdev_direct_access(sb->s_bdev, &dax)) < 0) { > + switch (error) { > + case -EOPNOTSUPP: > + xfs_alert(mp, > + "Block device does not support DAX Turning DAX off."); > + break; > + case -EINVAL: > + xfs_alert(mp, > + "Partition alignment invalid for DAX Turning DAX off."); > + break; > + default: > + xfs_alert(mp, > + "DAX access failed (%d) DAX Turning DAX off.", error); > + } Please write a helper along the lines of: error = blkdev_supports_dax(sb->s_bdev, sb->s_blocksize); and encapsulate all this, including the specific error messages in the helper (i.e. "Block device %s does not support DAX."). Then the rest of the filesystem code looks something like this: if (mp->m_flags & XFS_MOUNT_DAX) { error = blkdev_supports_dax(sb->s_bdev, sb->s_blocksize); if (error) { xfs_alert(mp, "DAX unsupported by block device. Turning off DAX."); mp->m_flags &= ~XFS_MOUNT_DAX; } } And each filesystem can choose to do what it wants with the error without having to care exactly why DAX is not supported. Cheers, Dave.
On Thu, 2016-05-05 at 09:18 +1000, Dave Chinner wrote: > On Mon, May 02, 2016 at 12:42:58PM -0600, Toshi Kani wrote: > > : > Please write a helper along the lines of: > > error = blkdev_supports_dax(sb->s_bdev, sb->s_blocksize); > > and encapsulate all this, including the specific error messages in the > helper (i.e. "Block device %s does not support DAX."). Then the rest > of the filesystem code looks something like this: > > if (mp->m_flags & XFS_MOUNT_DAX) { > error = blkdev_supports_dax(sb->s_bdev, sb->s_blocksize); > if (error) { > xfs_alert(mp, > "DAX unsupported by block device. Turning off DAX."); > mp->m_flags &= ~XFS_MOUNT_DAX; > } > } > > And each filesystem can choose to do what it wants with the error > without having to care exactly why DAX is not supported. Yes, I had this change in mind and was wondering if you are OK with it since I am incline to keep the ext2/4 message style as majority rule. :) https://lkml.org/lkml/2016/5/3/543 Assuming that's OK, I will make this change. Thanks! -Toshi -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wed 04-05-16 17:41:26, Toshi Kani wrote: > On Thu, 2016-05-05 at 09:18 +1000, Dave Chinner wrote: > > On Mon, May 02, 2016 at 12:42:58PM -0600, Toshi Kani wrote: > > > > : > > Please write a helper along the lines of: > > > > error = blkdev_supports_dax(sb->s_bdev, sb->s_blocksize); > > > > and encapsulate all this, including the specific error messages in the > > helper (i.e. "Block device %s does not support DAX."). Then the rest > > of the filesystem code looks something like this: > > > > if (mp->m_flags & XFS_MOUNT_DAX) { > > error = blkdev_supports_dax(sb->s_bdev, sb->s_blocksize); > > if (error) { > > xfs_alert(mp, > > "DAX unsupported by block device. Turning off DAX."); > > mp->m_flags &= ~XFS_MOUNT_DAX; > > } > > } > > > > And each filesystem can choose to do what it wants with the error > > without having to care exactly why DAX is not supported. > > Yes, I had this change in mind and was wondering if you are OK with it > since I am incline to keep the ext2/4 message style as majority rule. :) > https://lkml.org/lkml/2016/5/3/543 > > Assuming that's OK, I will make this change. Yeah, just send me ext2 changes on top of your v2 and I can pull it to my tree. Honza
diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index 187e14b..b7ee323 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c @@ -1557,15 +1557,30 @@ xfs_fs_fill_super( sb->s_flags |= MS_I_VERSION; if (mp->m_flags & XFS_MOUNT_DAX) { + struct blk_dax_ctl dax = { + .sector = 0, + .size = PAGE_SIZE, + }; xfs_warn(mp, - "DAX enabled. Warning: EXPERIMENTAL, use at your own risk"); + "DAX enabled. Warning: EXPERIMENTAL, use at your own risk"); if (sb->s_blocksize != PAGE_SIZE) { xfs_alert(mp, "Filesystem block size invalid for DAX Turning DAX off."); mp->m_flags &= ~XFS_MOUNT_DAX; - } else if (!sb->s_bdev->bd_disk->fops->direct_access) { - xfs_alert(mp, - "Block device does not support DAX Turning DAX off."); + } else if ((error = bdev_direct_access(sb->s_bdev, &dax)) < 0) { + switch (error) { + case -EOPNOTSUPP: + xfs_alert(mp, + "Block device does not support DAX Turning DAX off."); + break; + case -EINVAL: + xfs_alert(mp, + "Partition alignment invalid for DAX Turning DAX off."); + break; + default: + xfs_alert(mp, + "DAX access failed (%d) DAX Turning DAX off.", error); + } mp->m_flags &= ~XFS_MOUNT_DAX; } }
When a partition is not aligned by 4KB, mount -o dax succeeds, but any read/write access to the filesystem fails, except for metadata update. Call bdev_direct_access to check the alignment when -o dax is specified. Signed-off-by: Toshi Kani <toshi.kani@hpe.com> Cc: Dave Chinner <david@fromorbit.com> Cc: Dan Williams <dan.j.williams@intel.com> Cc: Ross Zwisler <ross.zwisler@linux.intel.com> Cc: Christoph Hellwig <hch@infradead.org> Cc: Boaz Harrosh <boaz@plexistor.com> --- fs/xfs/xfs_super.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html