xfs: factor out a xfs_setup_dax_always helper
Factor out another DAX setup helper to simplify future changes. Also move the experimental warning after the checks to not clutter the log too much if the setup failed. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Dan Williams <dan.j.williams@intel.com> Reviewed-by: Darrick J. Wong <djwong@kernel.org> Link: https://lore.kernel.org/r/20211129102203.2243509-8-hch@lst.de Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
Родитель
0c44587138
Коммит
679a99495b
|
@ -340,6 +340,32 @@ xfs_buftarg_is_dax(
|
|||
bdev_nr_sectors(bt->bt_bdev));
|
||||
}
|
||||
|
||||
static int
|
||||
xfs_setup_dax_always(
|
||||
struct xfs_mount *mp)
|
||||
{
|
||||
struct super_block *sb = mp->m_super;
|
||||
|
||||
if (!xfs_buftarg_is_dax(sb, mp->m_ddev_targp) &&
|
||||
(!mp->m_rtdev_targp || !xfs_buftarg_is_dax(sb, mp->m_rtdev_targp))) {
|
||||
xfs_alert(mp,
|
||||
"DAX unsupported by block device. Turning off DAX.");
|
||||
goto disable_dax;
|
||||
}
|
||||
|
||||
if (xfs_has_reflink(mp)) {
|
||||
xfs_alert(mp, "DAX and reflink cannot be used together!");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
xfs_warn(mp, "DAX enabled. Warning: EXPERIMENTAL, use at your own risk");
|
||||
return 0;
|
||||
|
||||
disable_dax:
|
||||
xfs_mount_set_dax_mode(mp, XFS_DAX_NEVER);
|
||||
return 0;
|
||||
}
|
||||
|
||||
STATIC int
|
||||
xfs_blkdev_get(
|
||||
xfs_mount_t *mp,
|
||||
|
@ -1593,26 +1619,9 @@ xfs_fs_fill_super(
|
|||
sb->s_flags |= SB_I_VERSION;
|
||||
|
||||
if (xfs_has_dax_always(mp)) {
|
||||
bool rtdev_is_dax = false, datadev_is_dax;
|
||||
|
||||
xfs_warn(mp,
|
||||
"DAX enabled. Warning: EXPERIMENTAL, use at your own risk");
|
||||
|
||||
datadev_is_dax = xfs_buftarg_is_dax(sb, mp->m_ddev_targp);
|
||||
if (mp->m_rtdev_targp)
|
||||
rtdev_is_dax = xfs_buftarg_is_dax(sb,
|
||||
mp->m_rtdev_targp);
|
||||
if (!rtdev_is_dax && !datadev_is_dax) {
|
||||
xfs_alert(mp,
|
||||
"DAX unsupported by block device. Turning off DAX.");
|
||||
xfs_mount_set_dax_mode(mp, XFS_DAX_NEVER);
|
||||
}
|
||||
if (xfs_has_reflink(mp)) {
|
||||
xfs_alert(mp,
|
||||
"DAX and reflink cannot be used together!");
|
||||
error = -EINVAL;
|
||||
error = xfs_setup_dax_always(mp);
|
||||
if (error)
|
||||
goto out_filestream_unmount;
|
||||
}
|
||||
}
|
||||
|
||||
if (xfs_has_discard(mp)) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче