All of lore.kernel.org
 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
  0 siblings, 0 replies; 90+ messages in thread
From: Dan Williams @ 2018-03-02  3:53 UTC (permalink / raw)
  To: linux-nvdimm
  Cc: Jane Chu, Michal Hocko, Jan Kara, kvm, Darrick J. Wong,
	Matthew Wilcox, linux-kernel, stable, linux-xfs, linux-mm,
	Alex Williamson, Gerd Rausch, Andreas Dilger, Alexander Viro,
	linux-fsdevel, Theodore Ts'o, Christoph Hellwig

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(-)
_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm

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

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

Thread overview: 90+ 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 ` Dan Williams
2018-03-02  3:53 ` Dan Williams
2018-03-02  3:53 ` Dan Williams
2018-03-02  3:53 ` Dan Williams
2018-03-02  3:53 ` Dan Williams
2018-03-02  3:53 ` [PATCH v5 01/12] dax: fix vma_is_fsdax() helper Dan Williams
2018-03-02  3:53   ` Dan Williams
2018-03-02  3:53   ` Dan Williams
2018-03-02 22:52   ` Christoph Hellwig
2018-03-02 22:52     ` Christoph Hellwig
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  3:53   ` Dan Williams
2018-03-02  3:53   ` Dan Williams
2018-03-02  3:53   ` Dan Williams
2018-03-02  3:53   ` Dan Williams
2018-03-02 17:45   ` Darrick J. Wong
2018-03-02 17:45     ` Darrick J. Wong
2018-03-02 18:37     ` Dan Williams
2018-03-02 18:37       ` Dan Williams
2018-03-02 18:37       ` Dan Williams
2018-03-02 19:06       ` [PATCH v6] " Dan Williams
2018-03-02 19:06         ` Dan Williams
2018-03-02 19:06         ` Dan Williams
2018-03-02 19:06         ` Dan Williams
2018-03-02 19:06         ` Dan Williams
2018-03-02 19:58         ` Darrick J. Wong
2018-03-02 19:58           ` Darrick J. Wong
2018-03-02 22:53   ` [PATCH v5 02/12] " Christoph Hellwig
2018-03-02 22:53     ` Christoph Hellwig
2018-03-02 22:53     ` 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   ` Dan Williams
2018-03-02  3:53   ` 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:53   ` Dan Williams
2018-03-02  3:53   ` Dan Williams
2018-03-02  3:54 ` [PATCH v5 05/12] ext4, dax: define ext4_dax_*() " Dan Williams
2018-03-02  3:54   ` Dan Williams
2018-03-02  3:54   ` 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   ` Dan Williams
2018-03-02  3:54   ` Dan Williams
2018-03-02  3:54 ` [PATCH v5 07/12] ext4, " Dan Williams
2018-03-02  3:54   ` Dan Williams
2018-03-02  3:54   ` Dan Williams
2018-03-02  3:54 ` [PATCH v5 08/12] xfs, " Dan Williams
2018-03-02  3:54   ` Dan Williams
2018-03-02  3:54   ` Dan Williams
2018-03-02 17:46   ` Darrick J. Wong
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  3:54   ` Dan Williams
2018-03-02  3:54   ` Dan Williams
2018-03-02 22:54   ` Christoph Hellwig
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   ` Dan Williams
2018-03-02  3:54   ` Dan Williams
2018-03-02  3:54 ` [PATCH v5 11/12] dax: fix S_DAX definition Dan Williams
2018-03-02  3:54   ` Dan Williams
2018-03-02  3:54   ` Dan Williams
2018-03-02  3:54   ` Dan Williams
2018-03-02  3:54   ` Dan Williams
2018-03-02  3:54 ` [PATCH v5 12/12] vfio: disable filesystem-dax page pinning Dan Williams
2018-03-02  3:54   ` Dan Williams
2018-03-02  3:54   ` Dan Williams
2018-03-02  3:54   ` Dan Williams
2018-03-02  3:54   ` Dan Williams
2018-03-02  3:54   ` 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:10   ` Christoph Hellwig
2018-03-02 22:10   ` Christoph Hellwig
2018-03-02 22:21   ` Dan Williams
2018-03-02 22:21     ` Dan Williams
2018-03-02 22:21     ` Dan Williams
2018-03-02 22:21     ` Dan Williams
2018-03-02 22:57     ` Christoph Hellwig
2018-03-02 22:57       ` Christoph Hellwig
2018-03-02 22:57       ` Christoph Hellwig
2018-03-02 22:57       ` Christoph Hellwig
2018-03-02 23:49       ` Dan Williams
2018-03-02 23:49         ` Dan Williams
2018-03-02 23:49         ` Dan Williams
2018-03-02 23:49         ` Dan Williams
2018-03-03  2:19         ` Dan Williams
2018-03-03  2:19           ` Dan Williams
2018-03-03  2:19           ` Dan Williams
2018-03-03  2:19           ` Dan Williams

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.