vfio: disable filesystem-dax page pinning
authorDan Williams <[email protected]>
Sun, 4 Feb 2018 18:34:02 +0000 (10:34 -0800)
committerDan Williams <[email protected]>
Sat, 3 Mar 2018 02:00:04 +0000 (18:00 -0800)
commit94db151dc89262bfa82922c44e8320cea2334667
treee7127df00533f4fcead7c879e897fba33838740e
parent230f5a8969d8345fc9bbe3683f068246cf1be4b8
vfio: disable filesystem-dax page pinning

Filesystem-DAX is incompatible with 'longterm' page pinning. Without
page cache indirection a DAX mapping maps filesystem blocks directly.
This means that the filesystem must not modify a file's block map while
any page in a mapping is pinned. In order to prevent the situation of
userspace holding of filesystem operations indefinitely, disallow
'longterm' Filesystem-DAX mappings.

RDMA has the same conflict and the plan there is to add a 'with lease'
mechanism to allow the kernel to notify userspace that the mapping is
being torn down for block-map maintenance. Perhaps something similar can
be put in place for vfio.

Note that xfs and ext4 still report:

   "DAX enabled. Warning: EXPERIMENTAL, use at your own risk"

...at mount time, and resolving the dax-dma-vs-truncate problem is one
of the last hurdles to remove that designation.

Acked-by: Alex Williamson <[email protected]>
Cc: Michal Hocko <[email protected]>
Cc: [email protected]
Cc: <[email protected]>
Reported-by: Haozhong Zhang <[email protected]>
Tested-by: Haozhong Zhang <[email protected]>
Fixes: d475c6346a38 ("dax,ext2: replace XIP read and write with DAX I/O")
Reviewed-by: Christoph Hellwig <[email protected]>
Signed-off-by: Dan Williams <[email protected]>
drivers/vfio/vfio_iommu_type1.c