[PATCH 4/4] xfs: XFS_DIFLAG2_DAX limited by PAGE_SIZE
Eric Sandeen
sandeen at sandeen.net
Mon Feb 15 18:54:56 CST 2016
On 2/15/16 6:39 PM, Dave Chinner wrote:
> On Mon, Feb 15, 2016 at 06:12:04PM -0600, Eric Sandeen wrote:
...
>> So which is it, at least PAGE_SIZE or == PAGE_SIZE?
>
> Linux does not support filesystems where the block size is larger
> than the page size, so the supported set of "block size at least as
> large as PAGE_SIZE" is only block size == PAGE_SIZE.
Um, ok. Comment is still confusing. ;)
>>> /* If the DAX state is not changing, we have nothing to do here. */
>>> if ((fa->fsx_xflags & FS_XFLAG_DAX) && IS_DAX(inode))
>>> diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c
>>> index 9c984a0..fb7dc61 100644
>>> --- a/fs/xfs/xfs_iops.c
>>> +++ b/fs/xfs/xfs_iops.c
>>> @@ -1186,6 +1186,7 @@ xfs_diflags_to_iflags(
>>> if (flags & XFS_DIFLAG_NOATIME)
>>> inode->i_flags |= S_NOATIME;
>>> if (S_ISREG(inode->i_mode) &&
>>> + ip->i_mount->m_sb.sb_blocksize == PAGE_SIZE &&
>>> (ip->i_mount->m_flags & XFS_MOUNT_DAX ||
>>> ip->i_d.di_flags2 & XFS_DIFLAG2_DAX))
>>> inode->i_flags |= S_DAX;
>>
>> Is it possible to get mounted with XFS_MOUNT_DAX if blocksize != PAGE_SIZE?
>
> No, It's checked at mount time.
>
>> If so, should it be? This seems like a strange place to catch this mismatch.
>
> It's not for catching a bad mount option (which will go away,
> anyway). it's for catching an "in-pmem" inode flag that can't be
> applied because, e.g, the kernel was rebuilt with a different base
> page size and now the extents won't align correctly for DAX to work.
Oh, with the di_flags2 already set on disk, and now encountering a
new page size. Right, ok.
-Eric
More information about the xfs
mailing list