* [PATCH v4 00/12] vfio, dax: prevent long term filesystem-dax pins and other fixes
@ 2018-02-27 4:19 Dan Williams
2018-02-27 4:20 ` [PATCH v4 02/12] dax: introduce IS_DEVDAX() and IS_FSDAX() Dan Williams
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Dan Williams @ 2018-02-27 4:19 UTC (permalink / raw)
To: linux-nvdimm
Cc: Jane Chu, Haozhong Zhang, Michal Hocko, Jan Kara, kvm,
Matthew Wilcox, Darrick J. Wong, linux-kernel, stable,
supporter:XFS FILESYSTEM, linux-mm, Alex Williamson, Gerd Rausch,
Andreas Dilger, Alexander Viro, Jan Kara, linux-fsdevel,
Theodore Ts'o, Ross Zwisler, Christoph Hellwig
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(-)
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH v4 02/12] dax: introduce IS_DEVDAX() and IS_FSDAX() 2018-02-27 4:19 [PATCH v4 00/12] vfio, dax: prevent long term filesystem-dax pins and other fixes Dan Williams @ 2018-02-27 4:20 ` Dan Williams 2018-02-27 16:54 ` Jan Kara 2018-02-27 4:20 ` [PATCH v4 08/12] xfs, dax: replace IS_DAX() with IS_FSDAX() Dan Williams 2018-02-27 22:23 ` [PATCH v4 00/12] vfio, dax: prevent long term filesystem-dax pins and other fixes Dave Chinner 2 siblings, 1 reply; 6+ messages in thread From: Dan Williams @ 2018-02-27 4:20 UTC (permalink / raw) To: linux-nvdimm Cc: Theodore Ts'o, Darrick J. Wong, Matthew Wilcox, linux-kernel, stable, supporter:XFS FILESYSTEM, linux-mm, Andreas Dilger, Alexander Viro, linux-fsdevel, Jan Kara, Ross Zwisler The current IS_DAX() helper that checks the S_DAX inode flag is ambiguous, and currently has the broken assumption that the S_DAX flag is only non-zero in the CONFIG_FS_DAX=y case. In preparation for defining S_DAX to non-zero in the CONFIG_FS_DAX=n + CONFIG_DEV_DAX=y case, introduce two explicit helpers to replace IS_DAX(). Cc: "Theodore Ts'o" <tytso@mit.edu> Cc: Andreas Dilger <adilger.kernel@dilger.ca> Cc: Alexander Viro <viro@zeniv.linux.org.uk> Cc: "Darrick J. Wong" <darrick.wong@oracle.com> Cc: linux-xfs@vger.kernel.org (supporter:XFS FILESYSTEM) Cc: Matthew Wilcox <mawilcox@microsoft.com> Cc: Ross Zwisler <ross.zwisler@linux.intel.com> Cc: <stable@vger.kernel.org> Fixes: dee410792419 ("/dev/dax, core: file operations and dax-mmap") Reported-by: Jan Kara <jack@suse.cz> Signed-off-by: Dan Williams <dan.j.williams@intel.com> --- include/linux/fs.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/include/linux/fs.h b/include/linux/fs.h index 79c413985305..bd0c46880572 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -1909,6 +1909,28 @@ static inline bool sb_rdonly(const struct super_block *sb) { return sb->s_flags #define IS_WHITEOUT(inode) (S_ISCHR(inode->i_mode) && \ (inode)->i_rdev == WHITEOUT_DEV) +static inline bool IS_DEVDAX(struct inode *inode) +{ + if (!IS_ENABLED(CONFIG_DEV_DAX)) + return false; + if ((inode->i_flags & S_DAX) == 0) + return false; + if (!S_ISCHR(inode->i_mode)) + return false; + return true; +} + +static inline bool IS_FSDAX(struct inode *inode) +{ + if (!IS_ENABLED(CONFIG_FS_DAX)) + return false; + if ((inode->i_flags & S_DAX) == 0) + return false; + if (S_ISCHR(inode->i_mode)) + return false; + return true; +} + static inline bool HAS_UNMAPPED_ID(struct inode *inode) { return !uid_valid(inode->i_uid) || !gid_valid(inode->i_gid); ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v4 02/12] dax: introduce IS_DEVDAX() and IS_FSDAX() 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 0 siblings, 0 replies; 6+ messages in thread From: Jan Kara @ 2018-02-27 16:54 UTC (permalink / raw) To: Dan Williams Cc: linux-nvdimm, Theodore Ts'o, Darrick J. Wong, Matthew Wilcox, linux-kernel, stable, supporter:XFS FILESYSTEM, linux-mm, Andreas Dilger, Alexander Viro, linux-fsdevel, Jan Kara, Ross Zwisler On Mon 26-02-18 20:20:05, Dan Williams wrote: > The current IS_DAX() helper that checks the S_DAX inode flag is > ambiguous, and currently has the broken assumption that the S_DAX flag I don't think S_DAX flag is really ambiguous. It is just that in CONFIG_FS_DAX=n + CONFIG_DEV_DAX=y case, the compiler is not able to figure out some calls behind IS_DAX() are dead code and so the kernel won't compile / link. Or is there any other problem I'm missing? If I'm indeed right, then please tell this in the changelog and don't talk about abstract ambiguity of S_DAX flag. As much as I'd prefer to solve link-time problems with stubs instead of relying on dead-code elimination, I can live with split macros so once the changelog is settled, feel free to add: Reviewed-by: Jan Kara <jack@suse.cz> Honza > is only non-zero in the CONFIG_FS_DAX=y case. In preparation for > defining S_DAX to non-zero in the CONFIG_FS_DAX=n + CONFIG_DEV_DAX=y > case, introduce two explicit helpers to replace IS_DAX(). > > Cc: "Theodore Ts'o" <tytso@mit.edu> > Cc: Andreas Dilger <adilger.kernel@dilger.ca> > Cc: Alexander Viro <viro@zeniv.linux.org.uk> > Cc: "Darrick J. Wong" <darrick.wong@oracle.com> > Cc: linux-xfs@vger.kernel.org (supporter:XFS FILESYSTEM) > Cc: Matthew Wilcox <mawilcox@microsoft.com> > Cc: Ross Zwisler <ross.zwisler@linux.intel.com> > Cc: <stable@vger.kernel.org> > Fixes: dee410792419 ("/dev/dax, core: file operations and dax-mmap") > Reported-by: Jan Kara <jack@suse.cz> > Signed-off-by: Dan Williams <dan.j.williams@intel.com> > --- > include/linux/fs.h | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/include/linux/fs.h b/include/linux/fs.h > index 79c413985305..bd0c46880572 100644 > --- a/include/linux/fs.h > +++ b/include/linux/fs.h > @@ -1909,6 +1909,28 @@ static inline bool sb_rdonly(const struct super_block *sb) { return sb->s_flags > #define IS_WHITEOUT(inode) (S_ISCHR(inode->i_mode) && \ > (inode)->i_rdev == WHITEOUT_DEV) > > +static inline bool IS_DEVDAX(struct inode *inode) > +{ > + if (!IS_ENABLED(CONFIG_DEV_DAX)) > + return false; > + if ((inode->i_flags & S_DAX) == 0) > + return false; > + if (!S_ISCHR(inode->i_mode)) > + return false; > + return true; > +} > + > +static inline bool IS_FSDAX(struct inode *inode) > +{ > + if (!IS_ENABLED(CONFIG_FS_DAX)) > + return false; > + if ((inode->i_flags & S_DAX) == 0) > + return false; > + if (S_ISCHR(inode->i_mode)) > + return false; > + return true; > +} > + > static inline bool HAS_UNMAPPED_ID(struct inode *inode) > { > return !uid_valid(inode->i_uid) || !gid_valid(inode->i_gid); > -- Jan Kara <jack@suse.com> SUSE Labs, CR ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v4 08/12] xfs, dax: replace IS_DAX() with IS_FSDAX() 2018-02-27 4:19 [PATCH v4 00/12] vfio, dax: prevent long term filesystem-dax pins and other fixes Dan Williams 2018-02-27 4:20 ` [PATCH v4 02/12] dax: introduce IS_DEVDAX() and IS_FSDAX() Dan Williams @ 2018-02-27 4:20 ` Dan Williams 2018-02-27 17:03 ` Jan Kara 2018-02-27 22:23 ` [PATCH v4 00/12] vfio, dax: prevent long term filesystem-dax pins and other fixes Dave Chinner 2 siblings, 1 reply; 6+ messages in thread From: Dan Williams @ 2018-02-27 4:20 UTC (permalink / raw) To: linux-nvdimm Cc: Matthew Wilcox, Darrick J. Wong, linux-kernel, stable, linux-xfs, linux-mm, Jan Kara, linux-fsdevel, Ross Zwisler In preparation for fixing the broken definition of S_DAX in the CONFIG_FS_DAX=n + CONFIG_DEV_DAX=y case, convert all IS_DAX() usages to use explicit tests for FSDAX since DAX is ambiguous. Cc: Jan Kara <jack@suse.com> Cc: "Darrick J. Wong" <darrick.wong@oracle.com> Cc: linux-xfs@vger.kernel.org Cc: Matthew Wilcox <mawilcox@microsoft.com> Cc: Ross Zwisler <ross.zwisler@linux.intel.com> Cc: <stable@vger.kernel.org> Fixes: dee410792419 ("/dev/dax, core: file operations and dax-mmap") Signed-off-by: Dan Williams <dan.j.williams@intel.com> --- fs/xfs/xfs_file.c | 14 +++++++------- fs/xfs/xfs_ioctl.c | 4 ++-- fs/xfs/xfs_iomap.c | 6 +++--- fs/xfs/xfs_reflink.c | 2 +- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 9ea08326f876..46a098b90fd0 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -288,7 +288,7 @@ xfs_file_read_iter( if (XFS_FORCED_SHUTDOWN(mp)) return -EIO; - if (IS_DAX(inode)) + if (IS_FSDAX(inode)) ret = xfs_file_dax_read(iocb, to); else if (iocb->ki_flags & IOCB_DIRECT) ret = xfs_file_dio_aio_read(iocb, to); @@ -726,7 +726,7 @@ xfs_file_write_iter( if (XFS_FORCED_SHUTDOWN(ip->i_mount)) return -EIO; - if (IS_DAX(inode)) + if (IS_FSDAX(inode)) ret = xfs_file_dax_write(iocb, from); else if (iocb->ki_flags & IOCB_DIRECT) { /* @@ -1045,7 +1045,7 @@ __xfs_filemap_fault( } xfs_ilock(XFS_I(inode), XFS_MMAPLOCK_SHARED); - if (IS_DAX(inode)) { + if (IS_FSDAX(inode)) { pfn_t pfn; ret = dax_iomap_fault(vmf, pe_size, &pfn, NULL, &xfs_iomap_ops); @@ -1070,7 +1070,7 @@ xfs_filemap_fault( { /* DAX can shortcut the normal fault path on write faults! */ return __xfs_filemap_fault(vmf, PE_SIZE_PTE, - IS_DAX(file_inode(vmf->vma->vm_file)) && + IS_FSDAX(file_inode(vmf->vma->vm_file)) && (vmf->flags & FAULT_FLAG_WRITE)); } @@ -1079,7 +1079,7 @@ xfs_filemap_huge_fault( struct vm_fault *vmf, enum page_entry_size pe_size) { - if (!IS_DAX(file_inode(vmf->vma->vm_file))) + if (!IS_FSDAX(file_inode(vmf->vma->vm_file))) return VM_FAULT_FALLBACK; /* DAX can shortcut the normal fault path on write faults! */ @@ -1124,12 +1124,12 @@ xfs_file_mmap( * We don't support synchronous mappings for non-DAX files. At least * until someone comes with a sensible use case. */ - if (!IS_DAX(file_inode(filp)) && (vma->vm_flags & VM_SYNC)) + if (!IS_FSDAX(file_inode(filp)) && (vma->vm_flags & VM_SYNC)) return -EOPNOTSUPP; file_accessed(filp); vma->vm_ops = &xfs_file_vm_ops; - if (IS_DAX(file_inode(filp))) + if (IS_FSDAX(file_inode(filp))) vma->vm_flags |= VM_MIXEDMAP | VM_HUGEPAGE; return 0; } diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c index 89fb1eb80aae..234279ff66ce 100644 --- a/fs/xfs/xfs_ioctl.c +++ b/fs/xfs/xfs_ioctl.c @@ -1108,9 +1108,9 @@ xfs_ioctl_setattr_dax_invalidate( } /* If the DAX state is not changing, we have nothing to do here. */ - if ((fa->fsx_xflags & FS_XFLAG_DAX) && IS_DAX(inode)) + if ((fa->fsx_xflags & FS_XFLAG_DAX) && IS_FSDAX(inode)) return 0; - if (!(fa->fsx_xflags & FS_XFLAG_DAX) && !IS_DAX(inode)) + if (!(fa->fsx_xflags & FS_XFLAG_DAX) && !IS_FSDAX(inode)) return 0; /* lock, flush and invalidate mapping in preparation for flag change */ diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c index 66e1edbfb2b2..cf794d429aec 100644 --- a/fs/xfs/xfs_iomap.c +++ b/fs/xfs/xfs_iomap.c @@ -241,7 +241,7 @@ xfs_iomap_write_direct( * the reserve block pool for bmbt block allocation if there is no space * left but we need to do unwritten extent conversion. */ - if (IS_DAX(VFS_I(ip))) { + if (IS_FSDAX(VFS_I(ip))) { bmapi_flags = XFS_BMAPI_CONVERT | XFS_BMAPI_ZERO; if (imap->br_state == XFS_EXT_UNWRITTEN) { tflags |= XFS_TRANS_RESERVE; @@ -952,7 +952,7 @@ static inline bool imap_needs_alloc(struct inode *inode, return !nimaps || imap->br_startblock == HOLESTARTBLOCK || imap->br_startblock == DELAYSTARTBLOCK || - (IS_DAX(inode) && imap->br_state == XFS_EXT_UNWRITTEN); + (IS_FSDAX(inode) && imap->br_state == XFS_EXT_UNWRITTEN); } static inline bool need_excl_ilock(struct xfs_inode *ip, unsigned flags) @@ -988,7 +988,7 @@ xfs_file_iomap_begin( return -EIO; if (((flags & (IOMAP_WRITE | IOMAP_DIRECT)) == IOMAP_WRITE) && - !IS_DAX(inode) && !xfs_get_extsz_hint(ip)) { + !IS_FSDAX(inode) && !xfs_get_extsz_hint(ip)) { /* Reserve delalloc blocks for regular writeback. */ return xfs_file_iomap_begin_delay(inode, offset, length, iomap); } diff --git a/fs/xfs/xfs_reflink.c b/fs/xfs/xfs_reflink.c index 270246943a06..a126e00e05e3 100644 --- a/fs/xfs/xfs_reflink.c +++ b/fs/xfs/xfs_reflink.c @@ -1351,7 +1351,7 @@ xfs_reflink_remap_range( goto out_unlock; /* Don't share DAX file data for now. */ - if (IS_DAX(inode_in) || IS_DAX(inode_out)) + if (IS_FSDAX(inode_in) || IS_FSDAX(inode_out)) goto out_unlock; ret = vfs_clone_file_prep_inodes(inode_in, pos_in, inode_out, pos_out, ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v4 08/12] xfs, dax: replace IS_DAX() with IS_FSDAX() 2018-02-27 4:20 ` [PATCH v4 08/12] xfs, dax: replace IS_DAX() with IS_FSDAX() Dan Williams @ 2018-02-27 17:03 ` Jan Kara 0 siblings, 0 replies; 6+ messages in thread From: Jan Kara @ 2018-02-27 17:03 UTC (permalink / raw) To: Dan Williams Cc: linux-nvdimm, Matthew Wilcox, Darrick J. Wong, linux-kernel, stable, linux-xfs, linux-mm, Jan Kara, linux-fsdevel, Ross Zwisler On Mon 26-02-18 20:20:37, Dan Williams wrote: > In preparation for fixing the broken definition of S_DAX in the > CONFIG_FS_DAX=n + CONFIG_DEV_DAX=y case, convert all IS_DAX() usages to > use explicit tests for FSDAX since DAX is ambiguous. > > Cc: Jan Kara <jack@suse.com> > Cc: "Darrick J. Wong" <darrick.wong@oracle.com> > Cc: linux-xfs@vger.kernel.org > Cc: Matthew Wilcox <mawilcox@microsoft.com> > Cc: Ross Zwisler <ross.zwisler@linux.intel.com> > Cc: <stable@vger.kernel.org> > Fixes: dee410792419 ("/dev/dax, core: file operations and dax-mmap") > Signed-off-by: Dan Williams <dan.j.williams@intel.com> Looks good. You can add: Reviewed-by: Jan Kara <jack@suse.cz> Honza > --- > fs/xfs/xfs_file.c | 14 +++++++------- > fs/xfs/xfs_ioctl.c | 4 ++-- > fs/xfs/xfs_iomap.c | 6 +++--- > fs/xfs/xfs_reflink.c | 2 +- > 4 files changed, 13 insertions(+), 13 deletions(-) > > diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c > index 9ea08326f876..46a098b90fd0 100644 > --- a/fs/xfs/xfs_file.c > +++ b/fs/xfs/xfs_file.c > @@ -288,7 +288,7 @@ xfs_file_read_iter( > if (XFS_FORCED_SHUTDOWN(mp)) > return -EIO; > > - if (IS_DAX(inode)) > + if (IS_FSDAX(inode)) > ret = xfs_file_dax_read(iocb, to); > else if (iocb->ki_flags & IOCB_DIRECT) > ret = xfs_file_dio_aio_read(iocb, to); > @@ -726,7 +726,7 @@ xfs_file_write_iter( > if (XFS_FORCED_SHUTDOWN(ip->i_mount)) > return -EIO; > > - if (IS_DAX(inode)) > + if (IS_FSDAX(inode)) > ret = xfs_file_dax_write(iocb, from); > else if (iocb->ki_flags & IOCB_DIRECT) { > /* > @@ -1045,7 +1045,7 @@ __xfs_filemap_fault( > } > > xfs_ilock(XFS_I(inode), XFS_MMAPLOCK_SHARED); > - if (IS_DAX(inode)) { > + if (IS_FSDAX(inode)) { > pfn_t pfn; > > ret = dax_iomap_fault(vmf, pe_size, &pfn, NULL, &xfs_iomap_ops); > @@ -1070,7 +1070,7 @@ xfs_filemap_fault( > { > /* DAX can shortcut the normal fault path on write faults! */ > return __xfs_filemap_fault(vmf, PE_SIZE_PTE, > - IS_DAX(file_inode(vmf->vma->vm_file)) && > + IS_FSDAX(file_inode(vmf->vma->vm_file)) && > (vmf->flags & FAULT_FLAG_WRITE)); > } > > @@ -1079,7 +1079,7 @@ xfs_filemap_huge_fault( > struct vm_fault *vmf, > enum page_entry_size pe_size) > { > - if (!IS_DAX(file_inode(vmf->vma->vm_file))) > + if (!IS_FSDAX(file_inode(vmf->vma->vm_file))) > return VM_FAULT_FALLBACK; > > /* DAX can shortcut the normal fault path on write faults! */ > @@ -1124,12 +1124,12 @@ xfs_file_mmap( > * We don't support synchronous mappings for non-DAX files. At least > * until someone comes with a sensible use case. > */ > - if (!IS_DAX(file_inode(filp)) && (vma->vm_flags & VM_SYNC)) > + if (!IS_FSDAX(file_inode(filp)) && (vma->vm_flags & VM_SYNC)) > return -EOPNOTSUPP; > > file_accessed(filp); > vma->vm_ops = &xfs_file_vm_ops; > - if (IS_DAX(file_inode(filp))) > + if (IS_FSDAX(file_inode(filp))) > vma->vm_flags |= VM_MIXEDMAP | VM_HUGEPAGE; > return 0; > } > diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c > index 89fb1eb80aae..234279ff66ce 100644 > --- a/fs/xfs/xfs_ioctl.c > +++ b/fs/xfs/xfs_ioctl.c > @@ -1108,9 +1108,9 @@ xfs_ioctl_setattr_dax_invalidate( > } > > /* If the DAX state is not changing, we have nothing to do here. */ > - if ((fa->fsx_xflags & FS_XFLAG_DAX) && IS_DAX(inode)) > + if ((fa->fsx_xflags & FS_XFLAG_DAX) && IS_FSDAX(inode)) > return 0; > - if (!(fa->fsx_xflags & FS_XFLAG_DAX) && !IS_DAX(inode)) > + if (!(fa->fsx_xflags & FS_XFLAG_DAX) && !IS_FSDAX(inode)) > return 0; > > /* lock, flush and invalidate mapping in preparation for flag change */ > diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c > index 66e1edbfb2b2..cf794d429aec 100644 > --- a/fs/xfs/xfs_iomap.c > +++ b/fs/xfs/xfs_iomap.c > @@ -241,7 +241,7 @@ xfs_iomap_write_direct( > * the reserve block pool for bmbt block allocation if there is no space > * left but we need to do unwritten extent conversion. > */ > - if (IS_DAX(VFS_I(ip))) { > + if (IS_FSDAX(VFS_I(ip))) { > bmapi_flags = XFS_BMAPI_CONVERT | XFS_BMAPI_ZERO; > if (imap->br_state == XFS_EXT_UNWRITTEN) { > tflags |= XFS_TRANS_RESERVE; > @@ -952,7 +952,7 @@ static inline bool imap_needs_alloc(struct inode *inode, > return !nimaps || > imap->br_startblock == HOLESTARTBLOCK || > imap->br_startblock == DELAYSTARTBLOCK || > - (IS_DAX(inode) && imap->br_state == XFS_EXT_UNWRITTEN); > + (IS_FSDAX(inode) && imap->br_state == XFS_EXT_UNWRITTEN); > } > > static inline bool need_excl_ilock(struct xfs_inode *ip, unsigned flags) > @@ -988,7 +988,7 @@ xfs_file_iomap_begin( > return -EIO; > > if (((flags & (IOMAP_WRITE | IOMAP_DIRECT)) == IOMAP_WRITE) && > - !IS_DAX(inode) && !xfs_get_extsz_hint(ip)) { > + !IS_FSDAX(inode) && !xfs_get_extsz_hint(ip)) { > /* Reserve delalloc blocks for regular writeback. */ > return xfs_file_iomap_begin_delay(inode, offset, length, iomap); > } > diff --git a/fs/xfs/xfs_reflink.c b/fs/xfs/xfs_reflink.c > index 270246943a06..a126e00e05e3 100644 > --- a/fs/xfs/xfs_reflink.c > +++ b/fs/xfs/xfs_reflink.c > @@ -1351,7 +1351,7 @@ xfs_reflink_remap_range( > goto out_unlock; > > /* Don't share DAX file data for now. */ > - if (IS_DAX(inode_in) || IS_DAX(inode_out)) > + if (IS_FSDAX(inode_in) || IS_FSDAX(inode_out)) > goto out_unlock; > > ret = vfs_clone_file_prep_inodes(inode_in, pos_in, inode_out, pos_out, > > -- Jan Kara <jack@suse.com> SUSE Labs, CR ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v4 00/12] vfio, dax: prevent long term filesystem-dax pins and other fixes 2018-02-27 4:19 [PATCH v4 00/12] vfio, dax: prevent long term filesystem-dax pins and other fixes Dan Williams 2018-02-27 4:20 ` [PATCH v4 02/12] dax: introduce IS_DEVDAX() and IS_FSDAX() Dan Williams 2018-02-27 4:20 ` [PATCH v4 08/12] xfs, dax: replace IS_DAX() with IS_FSDAX() Dan Williams @ 2018-02-27 22:23 ` Dave Chinner 2 siblings, 0 replies; 6+ messages in thread From: Dave Chinner @ 2018-02-27 22:23 UTC (permalink / raw) To: Dan Williams Cc: linux-nvdimm, Jane Chu, Haozhong Zhang, Michal Hocko, Jan Kara, kvm, Matthew Wilcox, Darrick J. Wong, linux-kernel, stable, supporter:XFS FILESYSTEM, linux-mm, Alex Williamson, Gerd Rausch, Andreas Dilger, Alexander Viro, Jan Kara, linux-fsdevel, Theodore Ts'o, Ross Zwisler, Christoph Hellwig On Mon, Feb 26, 2018 at 08:19:54PM -0800, Dan Williams wrote: > 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) Dan, can you please stop sending random patches in a patch set to random lists? Your patchsets are hitting 4 or 5 different procmail filters here and so it gets split across several different mailing list buckets. It's really annoying to have to go reconstruct every patch set you send back into a single series in a single bucket.... Can you please fix up your patch set sending again? -Dave. -- Dave Chinner david@fromorbit.com ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2018-02-27 22:23 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-02-27 4:19 [PATCH v4 00/12] vfio, dax: prevent long term filesystem-dax pins and other fixes 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 08/12] xfs, dax: replace IS_DAX() with IS_FSDAX() Dan Williams 2018-02-27 17:03 ` Jan Kara 2018-02-27 22:23 ` [PATCH v4 00/12] vfio, dax: prevent long term filesystem-dax pins and other fixes Dave Chinner
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).