Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933535AbcKWSqk (ORCPT ); Wed, 23 Nov 2016 13:46:40 -0500 Received: from mga09.intel.com ([134.134.136.24]:51500 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933789AbcKWSpH (ORCPT ); Wed, 23 Nov 2016 13:45:07 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.31,539,1473145200"; d="scan'208";a="904841825" From: Ross Zwisler To: linux-kernel@vger.kernel.org Cc: Ross Zwisler , Alexander Viro , Andrew Morton , Christoph Hellwig , Dan Williams , Dave Chinner , Ingo Molnar , Jan Kara , Matthew Wilcox , Steven Rostedt , linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-nvdimm@ml01.01.org Subject: [PATCH 1/6] dax: fix build breakage with ext4, dax and !iomap Date: Wed, 23 Nov 2016 11:44:17 -0700 Message-Id: <1479926662-21718-2-git-send-email-ross.zwisler@linux.intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1479926662-21718-1-git-send-email-ross.zwisler@linux.intel.com> References: <1479926662-21718-1-git-send-email-ross.zwisler@linux.intel.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2550 Lines: 73 With the current Kconfig setup it is possible to have the following: CONFIG_EXT4_FS=y CONFIG_FS_DAX=y CONFIG_FS_IOMAP=n # this is in fs/Kconfig & isn't user accessible With this config we get build failures in ext4_dax_fault() because the iomap functions in fs/dax.c are missing: fs/built-in.o: In function `ext4_dax_fault': file.c:(.text+0x7f3ac): undefined reference to `dax_iomap_fault' file.c:(.text+0x7f404): undefined reference to `dax_iomap_fault' fs/built-in.o: In function `ext4_file_read_iter': file.c:(.text+0x7fc54): undefined reference to `dax_iomap_rw' fs/built-in.o: In function `ext4_file_write_iter': file.c:(.text+0x7fe9a): undefined reference to `dax_iomap_rw' file.c:(.text+0x7feed): undefined reference to `dax_iomap_rw' fs/built-in.o: In function `ext4_block_zero_page_range': inode.c:(.text+0x85c0d): undefined reference to `iomap_zero_range' 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. Signed-off-by: Ross Zwisler --- fs/Kconfig | 1 + fs/dax.c | 2 -- fs/ext2/Kconfig | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/fs/Kconfig b/fs/Kconfig index 8e9e5f41..18024bf 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 be39633..d8fe3eb 100644 --- a/fs/dax.c +++ b/fs/dax.c @@ -968,7 +968,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); @@ -1405,4 +1404,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. -- 2.7.4