2016-04-29 20:48:30

by Kani, Toshimitsu

[permalink] [raw]
Subject: [PATCH 0/3] Add alignment check for DAX mount

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(+)


2016-04-29 20:48:32

by Kani, Toshimitsu

[permalink] [raw]
Subject: [PATCH 3/3] xfs: Add alignment check for DAX mount

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.");

2016-04-29 20:48:54

by Kani, Toshimitsu

[permalink] [raw]
Subject: [PATCH 2/3] ext2: Add alignment check for DAX mount

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");

2016-04-29 20:48:28

by Kani, Toshimitsu

[permalink] [raw]
Subject: [PATCH 1/3] ext4: Add alignment check for DAX mount

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");

2016-04-29 23:12:24

by Ross Zwisler

[permalink] [raw]
Subject: Re: [PATCH 0/3] Add alignment check for DAX mount

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]>