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.
Add alignment check to ext4, ext2, and xfs.
---
Toshi Kani (3):
1/3 ext4: Add alignment check for DAX mount
2/3 ext2: Add alignment check for DAX mount
3/3 xfs: Add alignment check for DAX mount
---
fs/ext2/super.c | 6 ++++++
fs/ext4/super.c | 6 ++++++
fs/xfs/xfs_super.c | 6 ++++++
3 files changed, 18 insertions(+)
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.
Add alignment check to xfs_fs_fill_super() when -o dax is
specified.
Signed-off-by: Toshi Kani <[email protected]>
Cc: Dave Chinner <[email protected]> (supporter:XFS FILESYSTEM)
Cc: Dan Williams <[email protected]>
Cc: Ross Zwisler <[email protected]>
---
fs/xfs/xfs_super.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
index 187e14b..a17aebc 100644
--- a/fs/xfs/xfs_super.c
+++ b/fs/xfs/xfs_super.c
@@ -1563,6 +1563,11 @@ xfs_fs_fill_super(
xfs_alert(mp,
"Filesystem block size invalid for DAX Turning DAX off.");
mp->m_flags &= ~XFS_MOUNT_DAX;
+ } else if (sb->s_bdev->bd_part->start_sect % (PAGE_SIZE / 512)
+ || sb->s_bdev->bd_part->nr_sects % (PAGE_SIZE / 512)) {
+ xfs_alert(mp,
+ "Partition alignment 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.");
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.
Add alignment check to ext2_fill_super() when -o dax is specified.
Signed-off-by: Toshi Kani <[email protected]>
Cc: Jan Kara <[email protected]>
Cc: Dan Williams <[email protected]>
Cc: Ross Zwisler <[email protected]>
---
fs/ext2/super.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/fs/ext2/super.c b/fs/ext2/super.c
index b78caf2..34e32d9 100644
--- a/fs/ext2/super.c
+++ b/fs/ext2/super.c
@@ -927,6 +927,12 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
"error: unsupported blocksize for dax");
goto failed_mount;
}
+ if (sb->s_bdev->bd_part->start_sect % (PAGE_SIZE / 512) ||
+ sb->s_bdev->bd_part->nr_sects % (PAGE_SIZE / 512)) {
+ ext2_msg(sb, KERN_ERR,
+ "error: unaligned partition for dax");
+ goto failed_mount;
+ }
if (!sb->s_bdev->bd_disk->fops->direct_access) {
ext2_msg(sb, KERN_ERR,
"error: device does not support 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.
Add alignment check to ext4_fill_super() when -o dax is specified.
Reported-by: Micah Parrish <[email protected]>
Signed-off-by: Toshi Kani <[email protected]>
Cc: "Theodore Ts'o" <[email protected]>
Cc: Andreas Dilger <[email protected]>
Cc: Jan Kara <[email protected]>
Cc: Dan Williams <[email protected]>
Cc: Ross Zwisler <[email protected]>
---
fs/ext4/super.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 304c712..90a8670 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -3421,6 +3421,12 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
"error: unsupported blocksize for dax");
goto failed_mount;
}
+ if (sb->s_bdev->bd_part->start_sect % (PAGE_SIZE / 512) ||
+ sb->s_bdev->bd_part->nr_sects % (PAGE_SIZE / 512)) {
+ ext4_msg(sb, KERN_ERR,
+ "error: unaligned partition for dax");
+ goto failed_mount;
+ }
if (!sb->s_bdev->bd_disk->fops->direct_access) {
ext4_msg(sb, KERN_ERR,
"error: device does not support dax");
On Fri, Apr 29, 2016 at 02:39:32PM -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.
>
> Add alignment check to ext4, ext2, and xfs.
>
> ---
> Toshi Kani (3):
> 1/3 ext4: Add alignment check for DAX mount
> 2/3 ext2: Add alignment check for DAX mount
> 3/3 xfs: Add alignment check for DAX mount
>
> ---
> fs/ext2/super.c | 6 ++++++
> fs/ext4/super.c | 6 ++++++
> fs/xfs/xfs_super.c | 6 ++++++
> 3 files changed, 18 insertions(+)
For the series:
Reviewed-by: Ross Zwisler <[email protected]>