linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v5 00/12] vfio, dax: prevent long term filesystem-dax pins and other fixes
@ 2018-03-02  3:53 Dan Williams
  2018-03-02  3:53 ` [PATCH v5 01/12] dax: fix vma_is_fsdax() helper Dan Williams
                   ` (12 more replies)
  0 siblings, 13 replies; 26+ messages in thread
From: Dan Williams @ 2018-03-02  3:53 UTC (permalink / raw)
  To: linux-nvdimm
  Cc: linux-xfs, Darrick J. Wong, kvm, Haozhong Zhang, Jane Chu,
	Alexander Viro, Gerd Rausch, stable, Jan Kara, Michal Hocko,
	Andreas Dilger, Christoph Hellwig, Ross Zwisler, Matthew Wilcox,
	linux-fsdevel, Alex Williamson, Theodore Ts'o, linux-fsdevel,
	linux-mm, linux-kernel

Changes since v4 [1]:
* Fix the changelog of "dax: introduce IS_DEVDAX() and IS_FSDAX()" to
  better clarify the need for new helpers (Jan)
* Replace dax_sem_is_locked() with dax_sem_assert_held() (Jan)
* Use file_inode() in vma_is_dax() (Jan)
* Resend the full series to linux-xfs@ (Dave)
* Collect Jan's Reviewed-by

[1]: https://lists.01.org/pipermail/linux-nvdimm/2018-February/014271.html
---

The vfio interface, like RDMA, wants to setup long term (indefinite)
pins of the pages backing an address range so that a guest or userspace
driver can perform DMA to the with physical address. Given that this
pinning may lead to filesystem operations deadlocking in the
filesystem-dax case, the pinning request needs to be rejected.

The longer term fix for vfio, RDMA, and any other long term pin user, is
to provide a 'pin with lease' mechanism. Similar to the leases that are
hold for pNFS RDMA layouts, this userspace lease gives the kernel a way
to notify userspace that the block layout of the file is changing and
the kernel is revoking access to pinned pages.

Related to this change is the discovery that vma_is_fsdax() was causing
device-dax inode detection to fail. That lead to series of fixes and
cleanups to make sure that S_DAX is defined correctly in the
CONFIG_FS_DAX=n + CONFIG_DEV_DAX=y case.

---

Dan Williams (12):
      dax: fix vma_is_fsdax() helper
      dax: introduce IS_DEVDAX() and IS_FSDAX()
      ext2, dax: finish implementing dax_sem helpers
      ext2, dax: define ext2_dax_*() infrastructure in all cases
      ext4, dax: define ext4_dax_*() infrastructure in all cases
      ext2, dax: replace IS_DAX() with IS_FSDAX()
      ext4, dax: replace IS_DAX() with IS_FSDAX()
      xfs, dax: replace IS_DAX() with IS_FSDAX()
      mm, dax: replace IS_DAX() with IS_DEVDAX() or IS_FSDAX()
      fs, dax: kill IS_DAX()
      dax: fix S_DAX definition
      vfio: disable filesystem-dax page pinning


 drivers/vfio/vfio_iommu_type1.c |   18 ++++++++++++++--
 fs/ext2/ext2.h                  |    6 +++++
 fs/ext2/file.c                  |   19 +++++------------
 fs/ext2/inode.c                 |   10 ++++-----
 fs/ext4/file.c                  |   18 +++++-----------
 fs/ext4/inode.c                 |    4 ++--
 fs/ext4/ioctl.c                 |    2 +-
 fs/ext4/super.c                 |    2 +-
 fs/iomap.c                      |    2 +-
 fs/xfs/xfs_file.c               |   14 ++++++-------
 fs/xfs/xfs_ioctl.c              |    4 ++--
 fs/xfs/xfs_iomap.c              |    6 +++--
 fs/xfs/xfs_reflink.c            |    2 +-
 include/linux/dax.h             |   12 ++++++++---
 include/linux/fs.h              |   43 ++++++++++++++++++++++++++++-----------
 mm/fadvise.c                    |    3 ++-
 mm/filemap.c                    |    4 ++--
 mm/huge_memory.c                |    4 +++-
 mm/madvise.c                    |    3 ++-
 19 files changed, 102 insertions(+), 74 deletions(-)

^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2018-03-03  2:19 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-02  3:53 [PATCH v5 00/12] vfio, dax: prevent long term filesystem-dax pins and other fixes Dan Williams
2018-03-02  3:53 ` [PATCH v5 01/12] dax: fix vma_is_fsdax() helper Dan Williams
2018-03-02 22:52   ` Christoph Hellwig
2018-03-02  3:53 ` [PATCH v5 02/12] dax: introduce IS_DEVDAX() and IS_FSDAX() Dan Williams
2018-03-02 17:45   ` Darrick J. Wong
2018-03-02 18:37     ` Dan Williams
2018-03-02 19:06       ` [PATCH v6] " Dan Williams
2018-03-02 19:58         ` Darrick J. Wong
2018-03-02 22:53   ` [PATCH v5 02/12] " Christoph Hellwig
2018-03-02  3:53 ` [PATCH v5 03/12] ext2, dax: finish implementing dax_sem helpers Dan Williams
2018-03-02  3:53 ` [PATCH v5 04/12] ext2, dax: define ext2_dax_*() infrastructure in all cases Dan Williams
2018-03-02  3:54 ` [PATCH v5 05/12] ext4, dax: define ext4_dax_*() " Dan Williams
2018-03-02  3:54 ` [PATCH v5 06/12] ext2, dax: replace IS_DAX() with IS_FSDAX() Dan Williams
2018-03-02  3:54 ` [PATCH v5 07/12] ext4, " Dan Williams
2018-03-02  3:54 ` [PATCH v5 08/12] xfs, " Dan Williams
2018-03-02 17:46   ` Darrick J. Wong
2018-03-02  3:54 ` [PATCH v5 09/12] mm, dax: replace IS_DAX() with IS_DEVDAX() or IS_FSDAX() Dan Williams
2018-03-02 22:54   ` Christoph Hellwig
2018-03-02  3:54 ` [PATCH v5 10/12] fs, dax: kill IS_DAX() Dan Williams
2018-03-02  3:54 ` [PATCH v5 11/12] dax: fix S_DAX definition Dan Williams
2018-03-02  3:54 ` [PATCH v5 12/12] vfio: disable filesystem-dax page pinning Dan Williams
2018-03-02 22:10 ` [PATCH v5 00/12] vfio, dax: prevent long term filesystem-dax pins and other fixes Christoph Hellwig
2018-03-02 22:21   ` Dan Williams
2018-03-02 22:57     ` Christoph Hellwig
2018-03-02 23:49       ` Dan Williams
2018-03-03  2:19         ` Dan Williams

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).