linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dan Williams <dan.j.williams@intel.com>
To: linux-nvdimm@lists.01.org
Cc: Jane Chu <jane.chu@oracle.com>,
	Haozhong Zhang <haozhong.zhang@intel.com>,
	Michal Hocko <mhocko@suse.com>, Jan Kara <jack@suse.cz>,
	kvm@vger.kernel.org, Matthew Wilcox <mawilcox@microsoft.com>,
	"Darrick J. Wong" <darrick.wong@oracle.com>,
	linux-kernel@vger.kernel.org, stable@vger.kernel.org,
	"supporter:XFS FILESYSTEM" <linux-xfs@vger.kernel.org>,
	linux-mm@kvack.org, Alex Williamson <alex.williamson@redhat.com>,
	Gerd Rausch <gerd.rausch@oracle.com>,
	Andreas Dilger <adilger.kernel@dilger.ca>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Jan Kara <jack@suse.com>,
	linux-fsdevel@vger.kernel.org, Theodore Ts'o <tytso@mit.edu>,
	Ross Zwisler <ross.zwisler@linux.intel.com>,
	Christoph Hellwig <hch@lst.de>
Subject: [PATCH v4 00/12] vfio, dax: prevent long term filesystem-dax pins and other fixes
Date: Mon, 26 Feb 2018 20:19:54 -0800	[thread overview]
Message-ID: <151970519370.26729.1011551137381425076.stgit@dwillia2-desk3.amr.corp.intel.com> (raw)

The following series implements...
Changes since v3 [1]:

* Kill IS_DAX() in favor of explicit IS_FSDAX() and IS_DEVDAX() helpers.
  Jan noted, "having IS_DAX() and IS_FSDAX() doing almost the same, just
  not exactly the same, is IMHO a recipe for confusion", and I agree. A
  nice side effect of this elimination is a cleanup to remove occasions of
  "#ifdef CONFIG_FS_DAX" in C files, it is all moved to header files
  now. (Jan)

---

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(-)

             reply	other threads:[~2018-02-27  4:29 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-27  4:19 Dan Williams [this message]
2018-02-27  4:20 ` [PATCH v4 01/12] dax: fix vma_is_fsdax() helper Dan Williams
2018-02-27  4:20 ` [PATCH v4 02/12] dax: introduce IS_DEVDAX() and IS_FSDAX() Dan Williams
2018-02-27 16:54   ` Jan Kara
2018-02-27  4:20 ` [PATCH v4 03/12] ext2, dax: finish implementing dax_sem helpers Dan Williams
2018-02-27 17:00   ` Jan Kara
2018-02-27  4:20 ` [PATCH v4 04/12] ext2, dax: define ext2_dax_*() infrastructure in all cases Dan Williams
2018-02-27 17:01   ` Jan Kara
2018-02-27  4:20 ` [PATCH v4 05/12] ext4, dax: define ext4_dax_*() " Dan Williams
2018-02-27 17:01   ` Jan Kara
2018-02-27  4:20 ` [PATCH v4 06/12] ext2, dax: replace IS_DAX() with IS_FSDAX() Dan Williams
2018-02-27 17:02   ` Jan Kara
2018-02-27  4:20 ` [PATCH v4 07/12] ext4, " Dan Williams
2018-02-27 17:02   ` Jan Kara
2018-02-27  4:20 ` [PATCH v4 08/12] xfs, " Dan Williams
2018-02-27 17:03   ` Jan Kara
2018-02-27  4:20 ` [PATCH v4 09/12] mm, dax: replace IS_DAX() with IS_DEVDAX() or IS_FSDAX() Dan Williams
2018-02-27 17:05   ` Jan Kara
2018-02-27  4:20 ` [PATCH v4 10/12] fs, dax: kill IS_DAX() Dan Williams
2018-02-27 17:06   ` Jan Kara
2018-02-27  4:20 ` [PATCH v4 11/12] dax: fix S_DAX definition Dan Williams
2018-02-27  4:20 ` [PATCH v4 12/12] vfio: disable filesystem-dax page pinning Dan Williams
2018-02-27 22:23 ` [PATCH v4 00/12] vfio, dax: prevent long term filesystem-dax pins and other fixes Dave Chinner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=151970519370.26729.1011551137381425076.stgit@dwillia2-desk3.amr.corp.intel.com \
    --to=dan.j.williams@intel.com \
    --cc=adilger.kernel@dilger.ca \
    --cc=alex.williamson@redhat.com \
    --cc=darrick.wong@oracle.com \
    --cc=gerd.rausch@oracle.com \
    --cc=haozhong.zhang@intel.com \
    --cc=hch@lst.de \
    --cc=jack@suse.com \
    --cc=jack@suse.cz \
    --cc=jane.chu@oracle.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-nvdimm@lists.01.org \
    --cc=linux-xfs@vger.kernel.org \
    --cc=mawilcox@microsoft.com \
    --cc=mhocko@suse.com \
    --cc=ross.zwisler@linux.intel.com \
    --cc=stable@vger.kernel.org \
    --cc=tytso@mit.edu \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).