Message ID | 20211109083309.584081-23-hch@lst.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [01/29] nvdimm/pmem: move dax_attribute_group from dax to pmem | expand |
On Tue, Nov 09, 2021 at 09:33:02AM +0100, Christoph Hellwig wrote: > Add a flag so that the file system can easily detect DAX operations. > > Signed-off-by: Christoph Hellwig <hch@lst.de> > --- > fs/dax.c | 7 ++++--- > include/linux/iomap.h | 1 + > 2 files changed, 5 insertions(+), 3 deletions(-) > > diff --git a/fs/dax.c b/fs/dax.c > index 5b52b878124ac..0bd6cdcbacfc4 100644 > --- a/fs/dax.c > +++ b/fs/dax.c > @@ -1180,7 +1180,7 @@ int dax_zero_range(struct inode *inode, loff_t pos, loff_t len, bool *did_zero, > .inode = inode, > .pos = pos, > .len = len, > - .flags = IOMAP_ZERO, > + .flags = IOMAP_DAX | IOMAP_ZERO, > }; > int ret; > > @@ -1308,6 +1308,7 @@ dax_iomap_rw(struct kiocb *iocb, struct iov_iter *iter, > .inode = iocb->ki_filp->f_mapping->host, > .pos = iocb->ki_pos, > .len = iov_iter_count(iter), > + .flags = IOMAP_DAX, > }; > loff_t done = 0; > int ret; > @@ -1461,7 +1462,7 @@ static vm_fault_t dax_iomap_pte_fault(struct vm_fault *vmf, pfn_t *pfnp, > .inode = mapping->host, > .pos = (loff_t)vmf->pgoff << PAGE_SHIFT, > .len = PAGE_SIZE, > - .flags = IOMAP_FAULT, > + .flags = IOMAP_DAX | IOMAP_FAULT, > }; > vm_fault_t ret = 0; > void *entry; > @@ -1570,7 +1571,7 @@ static vm_fault_t dax_iomap_pmd_fault(struct vm_fault *vmf, pfn_t *pfnp, > struct iomap_iter iter = { > .inode = mapping->host, > .len = PMD_SIZE, > - .flags = IOMAP_FAULT, > + .flags = IOMAP_DAX | IOMAP_FAULT, > }; > vm_fault_t ret = VM_FAULT_FALLBACK; > pgoff_t max_pgoff; > diff --git a/include/linux/iomap.h b/include/linux/iomap.h > index 6d1b08d0ae930..146a7e3e3ea11 100644 > --- a/include/linux/iomap.h > +++ b/include/linux/iomap.h > @@ -141,6 +141,7 @@ struct iomap_page_ops { > #define IOMAP_NOWAIT (1 << 5) /* do not block */ > #define IOMAP_OVERWRITE_ONLY (1 << 6) /* only pure overwrites allowed */ > #define IOMAP_UNSHARE (1 << 7) /* unshare_file_range */ > +#define IOMAP_DAX (1 << 8) /* DAX mapping */ Should this be #define'd to 0 ifndef CONFIG_FS_DAX so that the compiler will optimize out all the IOMAP_DAX bits if dax isn't enabled in Kconfig? Kind of like what we do for S_DAX? --D > > struct iomap_ops { > /* > -- > 2.30.2 >
On Tue, Nov 9, 2021 at 12:34 AM Christoph Hellwig <hch@lst.de> wrote: > > Add a flag so that the file system can easily detect DAX operations. Looks ok, but I would have preferred a quick note about the rationale here before needing to read other patches to figure that out. If you add that you can add: Reviewed-by: Dan Williams <dan.j.williams@intel.com> > > Signed-off-by: Christoph Hellwig <hch@lst.de> > --- > fs/dax.c | 7 ++++--- > include/linux/iomap.h | 1 + > 2 files changed, 5 insertions(+), 3 deletions(-) > > diff --git a/fs/dax.c b/fs/dax.c > index 5b52b878124ac..0bd6cdcbacfc4 100644 > --- a/fs/dax.c > +++ b/fs/dax.c > @@ -1180,7 +1180,7 @@ int dax_zero_range(struct inode *inode, loff_t pos, loff_t len, bool *did_zero, > .inode = inode, > .pos = pos, > .len = len, > - .flags = IOMAP_ZERO, > + .flags = IOMAP_DAX | IOMAP_ZERO, > }; > int ret; > > @@ -1308,6 +1308,7 @@ dax_iomap_rw(struct kiocb *iocb, struct iov_iter *iter, > .inode = iocb->ki_filp->f_mapping->host, > .pos = iocb->ki_pos, > .len = iov_iter_count(iter), > + .flags = IOMAP_DAX, > }; > loff_t done = 0; > int ret; > @@ -1461,7 +1462,7 @@ static vm_fault_t dax_iomap_pte_fault(struct vm_fault *vmf, pfn_t *pfnp, > .inode = mapping->host, > .pos = (loff_t)vmf->pgoff << PAGE_SHIFT, > .len = PAGE_SIZE, > - .flags = IOMAP_FAULT, > + .flags = IOMAP_DAX | IOMAP_FAULT, > }; > vm_fault_t ret = 0; > void *entry; > @@ -1570,7 +1571,7 @@ static vm_fault_t dax_iomap_pmd_fault(struct vm_fault *vmf, pfn_t *pfnp, > struct iomap_iter iter = { > .inode = mapping->host, > .len = PMD_SIZE, > - .flags = IOMAP_FAULT, > + .flags = IOMAP_DAX | IOMAP_FAULT, > }; > vm_fault_t ret = VM_FAULT_FALLBACK; > pgoff_t max_pgoff; > diff --git a/include/linux/iomap.h b/include/linux/iomap.h > index 6d1b08d0ae930..146a7e3e3ea11 100644 > --- a/include/linux/iomap.h > +++ b/include/linux/iomap.h > @@ -141,6 +141,7 @@ struct iomap_page_ops { > #define IOMAP_NOWAIT (1 << 5) /* do not block */ > #define IOMAP_OVERWRITE_ONLY (1 << 6) /* only pure overwrites allowed */ > #define IOMAP_UNSHARE (1 << 7) /* unshare_file_range */ > +#define IOMAP_DAX (1 << 8) /* DAX mapping */ > > struct iomap_ops { > /* > -- > 2.30.2 >
On Tue, Nov 23, 2021 at 06:47:10PM -0800, Dan Williams wrote: > On Tue, Nov 9, 2021 at 12:34 AM Christoph Hellwig <hch@lst.de> wrote: > > > > Add a flag so that the file system can easily detect DAX operations. > > Looks ok, but I would have preferred a quick note about the rationale > here before needing to read other patches to figure that out. The reason is to only apply the DAX partition offsets to actual DAX operations, and not to e.g. fiemap. I'll document that more clearly.
diff --git a/fs/dax.c b/fs/dax.c index 5b52b878124ac..0bd6cdcbacfc4 100644 --- a/fs/dax.c +++ b/fs/dax.c @@ -1180,7 +1180,7 @@ int dax_zero_range(struct inode *inode, loff_t pos, loff_t len, bool *did_zero, .inode = inode, .pos = pos, .len = len, - .flags = IOMAP_ZERO, + .flags = IOMAP_DAX | IOMAP_ZERO, }; int ret; @@ -1308,6 +1308,7 @@ dax_iomap_rw(struct kiocb *iocb, struct iov_iter *iter, .inode = iocb->ki_filp->f_mapping->host, .pos = iocb->ki_pos, .len = iov_iter_count(iter), + .flags = IOMAP_DAX, }; loff_t done = 0; int ret; @@ -1461,7 +1462,7 @@ static vm_fault_t dax_iomap_pte_fault(struct vm_fault *vmf, pfn_t *pfnp, .inode = mapping->host, .pos = (loff_t)vmf->pgoff << PAGE_SHIFT, .len = PAGE_SIZE, - .flags = IOMAP_FAULT, + .flags = IOMAP_DAX | IOMAP_FAULT, }; vm_fault_t ret = 0; void *entry; @@ -1570,7 +1571,7 @@ static vm_fault_t dax_iomap_pmd_fault(struct vm_fault *vmf, pfn_t *pfnp, struct iomap_iter iter = { .inode = mapping->host, .len = PMD_SIZE, - .flags = IOMAP_FAULT, + .flags = IOMAP_DAX | IOMAP_FAULT, }; vm_fault_t ret = VM_FAULT_FALLBACK; pgoff_t max_pgoff; diff --git a/include/linux/iomap.h b/include/linux/iomap.h index 6d1b08d0ae930..146a7e3e3ea11 100644 --- a/include/linux/iomap.h +++ b/include/linux/iomap.h @@ -141,6 +141,7 @@ struct iomap_page_ops { #define IOMAP_NOWAIT (1 << 5) /* do not block */ #define IOMAP_OVERWRITE_ONLY (1 << 6) /* only pure overwrites allowed */ #define IOMAP_UNSHARE (1 << 7) /* unshare_file_range */ +#define IOMAP_DAX (1 << 8) /* DAX mapping */ struct iomap_ops { /*
Add a flag so that the file system can easily detect DAX operations. Signed-off-by: Christoph Hellwig <hch@lst.de> --- fs/dax.c | 7 ++++--- include/linux/iomap.h | 1 + 2 files changed, 5 insertions(+), 3 deletions(-)