Re: [RFC PATCH v2 08/19] fs/xfs: Fail truncate if page lease can't be broken

From: Dave Chinner
Date: Fri Aug 09 2019 - 19:23:30 EST


On Fri, Aug 09, 2019 at 03:58:22PM -0700, ira.weiny@xxxxxxxxx wrote:
> From: Ira Weiny <ira.weiny@xxxxxxxxx>
>
> If pages are under a lease fail the truncate operation. We change the order of
> lease breaks to directly fail the operation if the lease exists.
>
> Select EXPORT_BLOCK_OPS for FS_DAX to ensure that xfs_break_lease_layouts() is
> defined for FS_DAX as well as pNFS.
>
> Signed-off-by: Ira Weiny <ira.weiny@xxxxxxxxx>
> ---
> fs/Kconfig | 1 +
> fs/xfs/xfs_file.c | 5 +++--
> 2 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/fs/Kconfig b/fs/Kconfig
> index 14cd4abdc143..c10b91f92528 100644
> --- a/fs/Kconfig
> +++ b/fs/Kconfig
> @@ -48,6 +48,7 @@ config FS_DAX
> select DEV_PAGEMAP_OPS if (ZONE_DEVICE && !FS_DAX_LIMITED)
> select FS_IOMAP
> select DAX
> + select EXPORTFS_BLOCK_OPS
> help
> Direct Access (DAX) can be used on memory-backed block devices.
> If the block device supports DAX and the filesystem supports DAX,

That looks wrong. If you require xfs_break_lease_layouts() outside
of pnfs context, then move the function in the XFS code base to a
file that is built in. It's only external dependency is on the
break_layout() function, and XFS already has other unconditional
direct calls to break_layout()...

Cheers,

Dave.
--
Dave Chinner
david@xxxxxxxxxxxxx