[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAMuHMdVpHHY-XGDtDYCt2wN8w_VPQU5t6E4FMr2S42zN7vyN4w@mail.gmail.com>
Date: Tue, 9 May 2017 09:57:19 +0200
From: Geert Uytterhoeven <geert@...ux-m68k.org>
To: Dan Williams <dan.j.williams@...el.com>
Cc: "kbuild-all@...org" <kbuild-all@...org>,
"linux-nvdimm@...ts.01.org" <linux-nvdimm@...ts.01.org>,
linux-block@...r.kernel.org,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
kbuild test robot <lkp@...el.com>
Subject: Re: [PATCH 1/2] block, dax: move "select DAX" from BLOCK to FS_DAX
Hi Dan,
On Tue, May 9, 2017 at 12:36 AM, kbuild test robot <lkp@...el.com> wrote:
> [auto build test ERROR on linus/master]
> [also build test ERROR on next-20170508]
> [cannot apply to v4.11]
> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
>
> url: https://github.com/0day-ci/linux/commits/Dan-Williams/block-dax-move-select-DAX-from-BLOCK-to-FS_DAX/20170509-051522
> config: parisc-c3000_defconfig (attached as .config)
> compiler: hppa-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705
> reproduce:
> wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # save the attached .config to linux build tree
> make.cross ARCH=parisc
>
> All errors (new ones prefixed by >>):
>
> fs/built-in.o: In function `bdev_dax_supported':
>>> (.text.bdev_dax_supported+0x4c): undefined reference to `dax_get_by_host'
> fs/built-in.o: In function `bdev_dax_supported':
>>> (.text.bdev_dax_supported+0x5c): undefined reference to `dax_read_lock'
> fs/built-in.o: In function `bdev_dax_supported':
>>> (.text.bdev_dax_supported+0x7c): undefined reference to `dax_direct_access'
> fs/built-in.o: In function `bdev_dax_supported':
>>> (.text.bdev_dax_supported+0x88): undefined reference to `dax_read_unlock'
> fs/built-in.o: In function `bdev_dax_supported':
>>> (.text.bdev_dax_supported+0x90): undefined reference to `put_dax'
I ran into the same issue if CONFIG_DAX=m (it's still selected by some other
modular symbol). #if IS_ENABLED(CONFIG_DAX) is true in the modular case, so
the dummies provided by include/linux/dax.h are not used.
However, while changing it to #ifdef CONFIG_DAX allows to build vmlinux, it
leads to other issues as DAX is compiled as a module:
drivers/dax/super.c:35: error: redefinition of ‘dax_read_lock’
include/linux/dax.h:30: error: previous definition of
‘dax_read_lock’ was here
Yes, calling into optional modular code from builtin code in fs/blockdev.c is
tricky ;-( Perhaps you can make bdev_dax_supported() a small wrapper
that calls into the real code through a function pointer, when the DAX module
is available?
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@...ux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Powered by blists - more mailing lists