2018-04-04 09:56:02

by Arnd Bergmann

[permalink] [raw]
Subject: [PATCH] dm: fix DAX dependency

Building device mapper with CONFIG_DAX=m now results in a link error:

drivers/md/dm.o: In function `dm_put_table_device':
dm.c:(.text+0x33c): undefined reference to `put_dax'
drivers/md/dm.o: In function `cleanup_mapped_device':
dm.c:(.text+0x1054): undefined reference to `kill_dax'
dm.c:(.text+0x105c): undefined reference to `put_dax'
drivers/md/dm.o: In function `dm_get_table_device':
dm.c:(.text+0x2744): undefined reference to `dax_get_by_host'
drivers/md/dm-table.o: In function `device_dax_write_cache_enabled':
dm-table.c:(.text+0x1030): undefined reference to `dax_write_cache_enabled'
drivers/md/dm-table.o: In function `dm_table_set_restrictions':
dm-table.c:(.text+0x29b8): undefined reference to `dax_write_cache'

This adds a dependency that prevents the invalid configuration, allowing
a built-in device mapper only if DAX is either built-in as well, or
completely disabled.

Fixes: 4de1c562f7e9 ("dax, dm: allow device-mapper to operate without dax support")
Signed-off-by: Arnd Bergmann <[email protected]>
---
The regression only showed up in linux-next at the start of the merge
window. Any idea what happened?
---
drivers/md/Kconfig | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/md/Kconfig b/drivers/md/Kconfig
index 49287135b86c..5e5a47c5ff82 100644
--- a/drivers/md/Kconfig
+++ b/drivers/md/Kconfig
@@ -200,6 +200,7 @@ config BLK_DEV_DM_BUILTIN

config BLK_DEV_DM
tristate "Device mapper support"
+ depends on DAX || DAX=n
select BLK_DEV_DM_BUILTIN
---help---
Device-mapper is a low level volume manager. It works by allowing
--
2.9.0



2018-04-04 13:44:39

by Mike Snitzer

[permalink] [raw]
Subject: Re: dm: fix DAX dependency

On Wed, Apr 04 2018 at 5:54am -0400,
Arnd Bergmann <[email protected]> wrote:

> Building device mapper with CONFIG_DAX=m now results in a link error:
>
> drivers/md/dm.o: In function `dm_put_table_device':
> dm.c:(.text+0x33c): undefined reference to `put_dax'
> drivers/md/dm.o: In function `cleanup_mapped_device':
> dm.c:(.text+0x1054): undefined reference to `kill_dax'
> dm.c:(.text+0x105c): undefined reference to `put_dax'
> drivers/md/dm.o: In function `dm_get_table_device':
> dm.c:(.text+0x2744): undefined reference to `dax_get_by_host'
> drivers/md/dm-table.o: In function `device_dax_write_cache_enabled':
> dm-table.c:(.text+0x1030): undefined reference to `dax_write_cache_enabled'
> drivers/md/dm-table.o: In function `dm_table_set_restrictions':
> dm-table.c:(.text+0x29b8): undefined reference to `dax_write_cache'
>
> This adds a dependency that prevents the invalid configuration, allowing
> a built-in device mapper only if DAX is either built-in as well, or
> completely disabled.
>
> Fixes: 4de1c562f7e9 ("dax, dm: allow device-mapper to operate without dax support")
> Signed-off-by: Arnd Bergmann <[email protected]>
> ---
> The regression only showed up in linux-next at the start of the merge
> window. Any idea what happened?
> ---
> drivers/md/Kconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/md/Kconfig b/drivers/md/Kconfig
> index 49287135b86c..5e5a47c5ff82 100644
> --- a/drivers/md/Kconfig
> +++ b/drivers/md/Kconfig
> @@ -200,6 +200,7 @@ config BLK_DEV_DM_BUILTIN
>
> config BLK_DEV_DM
> tristate "Device mapper support"
> + depends on DAX || DAX=n
> select BLK_DEV_DM_BUILTIN
> ---help---
> Device-mapper is a low level volume manager. It works by allowing
> --
> 2.9.0
>

Seems fine, CONFIG_DAX=m was an oversight in commit 4de1c562f7e9

Dan, do you want to just fold this into that original commit? Either
way, please feel free to pick this up.

Thanks Arnd.

Reviewed-by: Mike Snitzer <[email protected]>

2018-04-04 14:01:59

by Dan Williams

[permalink] [raw]
Subject: Re: [PATCH] dm: fix DAX dependency

On Wed, Apr 4, 2018 at 2:54 AM, Arnd Bergmann <[email protected]> wrote:
> Building device mapper with CONFIG_DAX=m now results in a link error:
>
> drivers/md/dm.o: In function `dm_put_table_device':
> dm.c:(.text+0x33c): undefined reference to `put_dax'
> drivers/md/dm.o: In function `cleanup_mapped_device':
> dm.c:(.text+0x1054): undefined reference to `kill_dax'
> dm.c:(.text+0x105c): undefined reference to `put_dax'
> drivers/md/dm.o: In function `dm_get_table_device':
> dm.c:(.text+0x2744): undefined reference to `dax_get_by_host'
> drivers/md/dm-table.o: In function `device_dax_write_cache_enabled':
> dm-table.c:(.text+0x1030): undefined reference to `dax_write_cache_enabled'
> drivers/md/dm-table.o: In function `dm_table_set_restrictions':
> dm-table.c:(.text+0x29b8): undefined reference to `dax_write_cache'
>
> This adds a dependency that prevents the invalid configuration, allowing
> a built-in device mapper only if DAX is either built-in as well, or
> completely disabled.
>
> Fixes: 4de1c562f7e9 ("dax, dm: allow device-mapper to operate without dax support")
> Signed-off-by: Arnd Bergmann <[email protected]>
> ---
> The regression only showed up in linux-next at the start of the merge
> window. Any idea what happened?

I had some larger reworks of dax pending in -next until I got a late
report of a UML build error. Investigating that made me realize that I
missed the device-mapper dax support in those dax reworks, I started
pulling in late changes. However, this wider rework is to feel too
late for 4.17...

Thanks for the fix, I'll get it folded in and reevaluate what bits are
still viable / tested enough to push at this stage.