Re: linux-next: build failure after merge of the block tree

From: Matteo Croce
Date: Thu Mar 12 2020 - 09:57:58 EST


On Thu, Mar 12, 2020 at 2:07 PM Jens Axboe <axboe@xxxxxxxxx> wrote:
>
> On 3/12/20 4:12 AM, Matteo Croce wrote:
> > On Thu, Mar 12, 2020 at 3:55 AM Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> wrote:
> >>
> >> Hi all,
> >>
> >> After merging the block tree, today's linux-next build (x86_64
> >> allmodconfig) failed like this:
> >>
> >> In file included from fs/erofs/xattr.h:10,
> >> from fs/erofs/inode.c:7:
> >> fs/erofs/inode.c: In function 'erofs_read_inode':
> >> fs/erofs/internal.h:197:31: error: 'PAGE_SECTORS_SHIFT' undeclared (first use in this function); did you mean 'PA_SECTION_SHIFT'?
> >> 197 | #define LOG_SECTORS_PER_BLOCK PAGE_SECTORS_SHIFT
> >> | ^~~~~~~~~~~~~~~~~~
> >> fs/erofs/inode.c:122:30: note: in expansion of macro 'LOG_SECTORS_PER_BLOCK'
> >> 122 | inode->i_blocks = nblks << LOG_SECTORS_PER_BLOCK;
> >> | ^~~~~~~~~~~~~~~~~~~~~
> >> fs/erofs/internal.h:197:31: note: each undeclared identifier is reported only once for each function it appears in
> >> 197 | #define LOG_SECTORS_PER_BLOCK PAGE_SECTORS_SHIFT
> >> | ^~~~~~~~~~~~~~~~~~
> >> fs/erofs/inode.c:122:30: note: in expansion of macro 'LOG_SECTORS_PER_BLOCK'
> >> 122 | inode->i_blocks = nblks << LOG_SECTORS_PER_BLOCK;
> >> | ^~~~~~~~~~~~~~~~~~~~~
> >> In file included from fs/erofs/data.c:7:
> >> fs/erofs/data.c: In function 'erofs_read_raw_page':
> >> fs/erofs/internal.h:197:31: error: 'PAGE_SECTORS_SHIFT' undeclared (first use in this function); did you mean 'PA_SECTION_SHIFT'?
> >> 197 | #define LOG_SECTORS_PER_BLOCK PAGE_SECTORS_SHIFT
> >> | ^~~~~~~~~~~~~~~~~~
> >> fs/erofs/data.c:226:4: note: in expansion of macro 'LOG_SECTORS_PER_BLOCK'
> >> 226 | LOG_SECTORS_PER_BLOCK;
> >> | ^~~~~~~~~~~~~~~~~~~~~
> >> fs/erofs/internal.h:197:31: note: each undeclared identifier is reported only once for each function it appears in
> >> 197 | #define LOG_SECTORS_PER_BLOCK PAGE_SECTORS_SHIFT
> >> | ^~~~~~~~~~~~~~~~~~
> >> fs/erofs/data.c:226:4: note: in expansion of macro 'LOG_SECTORS_PER_BLOCK'
> >> 226 | LOG_SECTORS_PER_BLOCK;
> >> | ^~~~~~~~~~~~~~~~~~~~~
> >> fs/erofs/data.c: In function 'erofs_bmap':
> >> fs/erofs/internal.h:197:31: error: 'PAGE_SECTORS_SHIFT' undeclared (first use in this function); did you mean 'PA_SECTION_SHIFT'?
> >> 197 | #define LOG_SECTORS_PER_BLOCK PAGE_SECTORS_SHIFT
> >> | ^~~~~~~~~~~~~~~~~~
> >> fs/erofs/data.c:351:16: note: in expansion of macro 'LOG_SECTORS_PER_BLOCK'
> >> 351 | if (block >> LOG_SECTORS_PER_BLOCK >= blks)
> >> | ^~~~~~~~~~~~~~~~~~~~~
> >>
> >> Caused by commit
> >>
> >> 61c7d3d5e015 ("block: refactor duplicated macros")
> >>
> >> I have used the block tree from next-20200311 for today.
> >>
> >> --
> >> Cheers,
> >> Stephen Rothwell
> >
> > Hi,
> >
> > I was building a kernel without erofs. Just including
> > include/linux/blkdev.h will fix it, should I amend the
> > patch or send a fix?
>
> I'll drop the patch. I was worried about the patch to begin with,
> something like this really should be done through cocinelle so there's
> less concern of a stupid mistake.
>
> On top of that, somewhat miffed that you'd have a v3 of a patch, yet
> haven't bothered to even _compile_ the parts you touch. That's
> inexcusable.
>
> --
> Jens Axboe
>

I apologize, I was using a config with all in it but erofs, which was
moved from staging in 5.4:

$ grep -e BRD -e ZRAM -e DAX -e MD_RAID -e SDHCI= -e EXT2 -e SWAP -e
DM_RAID -e EROFS .config
CONFIG_SWAP=y
# CONFIG_MEMCG_SWAP is not set
CONFIG_ARCH_USE_BUILTIN_BSWAP=y
CONFIG_ARCH_WANTS_THP_SWAP=y
CONFIG_THP_SWAP=y
# CONFIG_FRONTSWAP is not set
CONFIG_MD_RAID0=y
CONFIG_MD_RAID1=y
CONFIG_MD_RAID10=y
CONFIG_MD_RAID456=y
CONFIG_DM_RAID=y
CONFIG_MMC_SDHCI=y
CONFIG_DAX=y
CONFIG_DEV_DAX=y
CONFIG_EXT2_FS=y
# CONFIG_EXT2_FS_XATTR is not set
# CONFIG_FS_DAX is not set
# CONFIG_EROFS_FS is not set

I'm running coccinelle with this change appended, and also an all allyesconfig

--- a/fs/erofs/internal.h
+++ b/fs/erofs/internal.h
@@ -16,6 +16,7 @@
#include <linux/magic.h>
#include <linux/slab.h>
#include <linux/vmalloc.h>
+#include <linux/blkdev.h>
#include "erofs_fs.h"

Regards,
--
Matteo Croce
per aspera ad upstream