Re: PROBLEM: 5.9.0-rc6 fails to compile due to 'redefinition of ‘dax_supported’'

From: Stuart Little
Date: Sun Sep 20 2020 - 22:25:56 EST


An update on this: I've done a bisect, with the following result.

--- cut here ---

e2ec5128254518cae320d5dc631b71b94160f663 is the first bad commit
commit e2ec5128254518cae320d5dc631b71b94160f663
Author: Jan Kara <jack@xxxxxxx>
Date: Sun Sep 20 08:54:42 2020 -0700

dm: Call proper helper to determine dax support

DM was calling generic_fsdax_supported() to determine whether a device
referenced in the DM table supports DAX. However this is a helper for "leaf" device drivers so that
they don't have to duplicate common generic checks. High level code
should call dax_supported() helper which that calls into appropriate
helper for the particular device. This problem manifested itself as
kernel messages:

dm-3: error: dax access failed (-95)

when lvm2-testsuite run in cases where a DM device was stacked on top of
another DM device.

Fixes: 7bf7eac8d648 ("dax: Arrange for dax_supported check to span multiple devices")
Cc: <stable@xxxxxxxxxxxxxxx>
Tested-by: Adrian Huang <ahuang12@xxxxxxxxxx>
Signed-off-by: Jan Kara <jack@xxxxxxx>
Acked-by: Mike Snitzer <snitzer@xxxxxxxxxx>
Reported-by: kernel test robot <lkp@xxxxxxxxx>
Link: https://lore.kernel.org/r/160061715195.13131.5503173247632041975.stgit@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx>

drivers/dax/super.c | 4 ++++
drivers/md/dm-table.c | 10 +++++++---
include/linux/dax.h | 22 ++++++++++++++++++++--
3 files changed, 31 insertions(+), 5 deletions(-)

--- end ---

On Sun, Sep 20, 2020 at 09:03:59PM -0400, Stuart Little wrote:
> I am trying to compile for an x86_64 machine (Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz). The config file I am currently using is at
>
> https://termbin.com/xin7
>
> The build for 5.9.0-rc6 fails with the following errors:
>
> --- cut here ---
>
> drivers/dax/super.c:325:6: error: redefinition of ‘dax_supported’
> 325 | bool dax_supported(struct dax_device *dax_dev, struct block_device *bdev,
> | ^~~~~~~~~~~~~
> In file included from drivers/dax/super.c:16:
> ./include/linux/dax.h:162:20: note: previous definition of ‘dax_supported’ was here
> 162 | static inline bool dax_supported(struct dax_device *dax_dev,
> | ^~~~~~~~~~~~~
> CC lib/memregion.o
> CC [M] drivers/gpu/drm/drm_gem_vram_helper.o
> make[2]: *** [scripts/Makefile.build:283: drivers/dax/super.o] Error 1
> make[1]: *** [scripts/Makefile.build:500: drivers/dax] Error 2
> make[1]: *** Waiting for unfinished jobs....
>
> --- end ---
>
> That's earlier on, and then later, at the end of the (failed) build:
>
> make: *** [Makefile:1784: drivers] Error 2
>
> The full build log is at
>
> https://termbin.com/ihxj
>
> but I do not see anything else amiss. 5.9.0-rc5 built fine last week.