Re: [PATCH 2/3] xfs: introduce per-inode DAX enablement

Eric Sandeen
2016-02-15T23:44:16Z

On 2/14/16 11:32 PM, Dave Chinner wrote:
> From: Dave Chinner <dchinner@redhat.com>
>
> Source kernel commit 58f88ca2df7270881de2034c8286233a89efe71c
>
> Rather than just being able to turn DAX on and off via a mount
> option, some applications may only want to enable DAX for certain
> performance critical files in a filesystem.
>
> This patch introduces a new inode flag to enable DAX in the v3 inode
> di_flags2 field. It adds support for setting and clearing flags in
> the di_flags2 field via the XFS_IOC_FSSETXATTR ioctl, and sets the
> S_DAX inode flag appropriately when it is seen.
>
> When this flag is set on a directory, it acts as an "inherit flag".
> That is, inodes created in the directory will automatically inherit
> the on-disk inode DAX flag, enabling administrators to set up
> directory heirarchies that automatically use DAX. Setting this flag
> on an empty root directory will make the entire filesystem use DAX
> by default.
>
> Signed-off-by: Dave Chinner <dchinner@redhat.com>
> Signed-off-by: Dave Chinner <david@fromorbit.com>

Reviewed-by: Eric Sandeen <sandeen@redhat.com>

> ---
> libxfs/xfs_format.h | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/libxfs/xfs_format.h b/libxfs/xfs_format.h
> index 967b1ef..7eae0a5 100644
> --- a/libxfs/xfs_format.h
> +++ b/libxfs/xfs_format.h
> @@ -1024,6 +1024,15 @@ static inline void xfs_dinode_put_rdev(struct xfs_dinode *dip, xfs_dev_t rdev)
> XFS_DIFLAG_EXTSZINHERIT | XFS_DIFLAG_NODEFRAG | XFS_DIFLAG_FILESTREAM)
>
> /*
> + * Values for di_flags2 These start by being exposed to userspace in the upper
> + * 16 bits of the XFS_XFLAG_s range.
> + */
> +#define XFS_DIFLAG2_DAX_BIT 0 /* use DAX for this inode */
> +#define XFS_DIFLAG2_DAX (1 << XFS_DIFLAG2_DAX_BIT)
> +
> +#define XFS_DIFLAG2_ANY (XFS_DIFLAG2_DAX)
> +
> +/*
> * Inode number format:
> * low inopblog bits - offset in block
> * next agblklog bits - block number in ag