Message ID | 1484087383-29478-1-git-send-email-ross.zwisler@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue 10-01-17 15:29:43, Ross Zwisler wrote: > As reported by Arnd: > > https://lkml.org/lkml/2017/1/10/756 > > Compiling with the following configuration: > > # CONFIG_EXT2_FS is not set > # CONFIG_EXT4_FS is not set > # CONFIG_XFS_FS is not set > # CONFIG_FS_IOMAP depends on the above filesystems, as is not set > CONFIG_FS_DAX=y > > generates build warnings about unused functions in fs/dax.c: > > fs/dax.c:878:12: warning: ‘dax_insert_mapping’ defined but not used [-Wunused-function] > static int dax_insert_mapping(struct address_space *mapping, > ^~~~~~~~~~~~~~~~~~ > fs/dax.c:572:12: warning: ‘copy_user_dax’ defined but not used [-Wunused-function] > static int copy_user_dax(struct block_device *bdev, sector_t sector, size_t size, > ^~~~~~~~~~~~~ > fs/dax.c:542:12: warning: ‘dax_load_hole’ defined but not used [-Wunused-function] > static int dax_load_hole(struct address_space *mapping, void **entry, > ^~~~~~~~~~~~~ > fs/dax.c:312:14: warning: ‘grab_mapping_entry’ defined but not used [-Wunused-function] > static void *grab_mapping_entry(struct address_space *mapping, pgoff_t index, > ^~~~~~~~~~~~~~~~~~ > > Now that the struct buffer_head based DAX fault paths and I/O path have > been removed we really depend on iomap support being present for DAX. Make > this explicit by selecting FS_IOMAP if we compile in DAX support. > > This allows us to remove conditional selections of FS_IOMAP when FS_DAX was > present for ext2 and ext4, and to remove an #ifdef in fs/dax.c. > > Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com> > Reported-by: Arnd Bergmann <arnd@arndb.de> > Cc: Jan Kara <jack@suse.cz> > Cc: Christoph Hellwig <hch@lst.de> Looks good. I agree that DAX without FS_IOMAP does not make sense. You can add: Reviewed-by: Jan Kara <jack@suse.cz> Honza > --- > fs/Kconfig | 1 + > fs/dax.c | 2 -- > fs/ext2/Kconfig | 1 - > fs/ext4/Kconfig | 1 - > 4 files changed, 1 insertion(+), 4 deletions(-) > > diff --git a/fs/Kconfig b/fs/Kconfig > index c2a377c..83eab52 100644 > --- a/fs/Kconfig > +++ b/fs/Kconfig > @@ -38,6 +38,7 @@ config FS_DAX > bool "Direct Access (DAX) support" > depends on MMU > depends on !(ARM || MIPS || SPARC) > + select FS_IOMAP > help > Direct Access (DAX) can be used on memory-backed block devices. > If the block device supports DAX and the filesystem supports DAX, > diff --git a/fs/dax.c b/fs/dax.c > index 5c74f60..083b950 100644 > --- a/fs/dax.c > +++ b/fs/dax.c > @@ -969,7 +969,6 @@ int __dax_zero_page_range(struct block_device *bdev, sector_t sector, > } > EXPORT_SYMBOL_GPL(__dax_zero_page_range); > > -#ifdef CONFIG_FS_IOMAP > static sector_t dax_iomap_sector(struct iomap *iomap, loff_t pos) > { > return iomap->blkno + (((pos & PAGE_MASK) - iomap->offset) >> 9); > @@ -1407,4 +1406,3 @@ int dax_iomap_pmd_fault(struct vm_area_struct *vma, unsigned long address, > } > EXPORT_SYMBOL_GPL(dax_iomap_pmd_fault); > #endif /* CONFIG_FS_DAX_PMD */ > -#endif /* CONFIG_FS_IOMAP */ > diff --git a/fs/ext2/Kconfig b/fs/ext2/Kconfig > index 36bea5a..c634874e 100644 > --- a/fs/ext2/Kconfig > +++ b/fs/ext2/Kconfig > @@ -1,6 +1,5 @@ > config EXT2_FS > tristate "Second extended fs support" > - select FS_IOMAP if FS_DAX > help > Ext2 is a standard Linux file system for hard disks. > > diff --git a/fs/ext4/Kconfig b/fs/ext4/Kconfig > index 7b90691..e38039f 100644 > --- a/fs/ext4/Kconfig > +++ b/fs/ext4/Kconfig > @@ -37,7 +37,6 @@ config EXT4_FS > select CRC16 > select CRYPTO > select CRYPTO_CRC32C > - select FS_IOMAP if FS_DAX > help > This is the next generation of the ext3 filesystem. > > -- > 2.7.4 >
Looks fine:
Reviewed-by: Christoph Hellwig <hch@lst.de>
diff --git a/fs/Kconfig b/fs/Kconfig index c2a377c..83eab52 100644 --- a/fs/Kconfig +++ b/fs/Kconfig @@ -38,6 +38,7 @@ config FS_DAX bool "Direct Access (DAX) support" depends on MMU depends on !(ARM || MIPS || SPARC) + select FS_IOMAP help Direct Access (DAX) can be used on memory-backed block devices. If the block device supports DAX and the filesystem supports DAX, diff --git a/fs/dax.c b/fs/dax.c index 5c74f60..083b950 100644 --- a/fs/dax.c +++ b/fs/dax.c @@ -969,7 +969,6 @@ int __dax_zero_page_range(struct block_device *bdev, sector_t sector, } EXPORT_SYMBOL_GPL(__dax_zero_page_range); -#ifdef CONFIG_FS_IOMAP static sector_t dax_iomap_sector(struct iomap *iomap, loff_t pos) { return iomap->blkno + (((pos & PAGE_MASK) - iomap->offset) >> 9); @@ -1407,4 +1406,3 @@ int dax_iomap_pmd_fault(struct vm_area_struct *vma, unsigned long address, } EXPORT_SYMBOL_GPL(dax_iomap_pmd_fault); #endif /* CONFIG_FS_DAX_PMD */ -#endif /* CONFIG_FS_IOMAP */ diff --git a/fs/ext2/Kconfig b/fs/ext2/Kconfig index 36bea5a..c634874e 100644 --- a/fs/ext2/Kconfig +++ b/fs/ext2/Kconfig @@ -1,6 +1,5 @@ config EXT2_FS tristate "Second extended fs support" - select FS_IOMAP if FS_DAX help Ext2 is a standard Linux file system for hard disks. diff --git a/fs/ext4/Kconfig b/fs/ext4/Kconfig index 7b90691..e38039f 100644 --- a/fs/ext4/Kconfig +++ b/fs/ext4/Kconfig @@ -37,7 +37,6 @@ config EXT4_FS select CRC16 select CRYPTO select CRYPTO_CRC32C - select FS_IOMAP if FS_DAX help This is the next generation of the ext3 filesystem.
As reported by Arnd: https://lkml.org/lkml/2017/1/10/756 Compiling with the following configuration: # CONFIG_EXT2_FS is not set # CONFIG_EXT4_FS is not set # CONFIG_XFS_FS is not set # CONFIG_FS_IOMAP depends on the above filesystems, as is not set CONFIG_FS_DAX=y generates build warnings about unused functions in fs/dax.c: fs/dax.c:878:12: warning: ‘dax_insert_mapping’ defined but not used [-Wunused-function] static int dax_insert_mapping(struct address_space *mapping, ^~~~~~~~~~~~~~~~~~ fs/dax.c:572:12: warning: ‘copy_user_dax’ defined but not used [-Wunused-function] static int copy_user_dax(struct block_device *bdev, sector_t sector, size_t size, ^~~~~~~~~~~~~ fs/dax.c:542:12: warning: ‘dax_load_hole’ defined but not used [-Wunused-function] static int dax_load_hole(struct address_space *mapping, void **entry, ^~~~~~~~~~~~~ fs/dax.c:312:14: warning: ‘grab_mapping_entry’ defined but not used [-Wunused-function] static void *grab_mapping_entry(struct address_space *mapping, pgoff_t index, ^~~~~~~~~~~~~~~~~~ Now that the struct buffer_head based DAX fault paths and I/O path have been removed we really depend on iomap support being present for DAX. Make this explicit by selecting FS_IOMAP if we compile in DAX support. This allows us to remove conditional selections of FS_IOMAP when FS_DAX was present for ext2 and ext4, and to remove an #ifdef in fs/dax.c. Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com> Reported-by: Arnd Bergmann <arnd@arndb.de> Cc: Jan Kara <jack@suse.cz> Cc: Christoph Hellwig <hch@lst.de> --- fs/Kconfig | 1 + fs/dax.c | 2 -- fs/ext2/Kconfig | 1 - fs/ext4/Kconfig | 1 - 4 files changed, 1 insertion(+), 4 deletions(-)