xfs
[Top] [All Lists]

Re: [PATCH 4/4] xfs: XFS_DIFLAG2_DAX limited by PAGE_SIZE

To: Dave Chinner <david@xxxxxxxxxxxxx>
Subject: Re: [PATCH 4/4] xfs: XFS_DIFLAG2_DAX limited by PAGE_SIZE
From: Eric Sandeen <sandeen@xxxxxxxxxxx>
Date: Mon, 15 Feb 2016 18:54:56 -0600
Cc: xfs@xxxxxxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <20160216003923.GL14668@dastard>
References: <1455513734-15192-1-git-send-email-david@xxxxxxxxxxxxx> <1455513734-15192-5-git-send-email-david@xxxxxxxxxxxxx> <56C26954.2010001@xxxxxxxxxxx> <20160216003923.GL14668@dastard>
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:38.0) Gecko/20100101 Thunderbird/38.5.1

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

<Prev in Thread] Current Thread [Next in Thread>