2022-07-22 09:51:47

by Stephen Rothwell

[permalink] [raw]
Subject: linux-next: build failure after merge of the bitmap tree

Hi all,

After merging the bitmap tree, today's linux-next build (powerpc
ppc64_defconfig) failed like this:

In file included from include/linux/cred.h:16,
from include/linux/seq_file.h:13,
from arch/powerpc/include/asm/machdep.h:6,
from arch/powerpc/include/asm/archrandom.h:5,
from include/linux/random.h:109,
from include/linux/nodemask.h:97,
from include/linux/list_lru.h:12,
from include/linux/fs.h:13,
from include/linux/compat.h:17,
from arch/powerpc/kernel/asm-offsets.c:12:
include/linux/sched.h:1203:9: error: unknown type name 'nodemask_t'
1203 | nodemask_t mems_allowed;
| ^~~~~~~~~~
In file included from include/linux/gfp.h:7,
from include/linux/percpu_counter.h:16,
from include/linux/sched/user.h:7,
from include/linux/cred.h:17,
from include/linux/seq_file.h:13,
from arch/powerpc/include/asm/machdep.h:6,
from arch/powerpc/include/asm/archrandom.h:5,
from include/linux/random.h:109,
from include/linux/nodemask.h:97,
from include/linux/list_lru.h:12,
from include/linux/fs.h:13,
from include/linux/compat.h:17,
from arch/powerpc/kernel/asm-offsets.c:12:
include/linux/mmzone.h:1166:41: error: unknown type name 'nodemask_t'
1166 | nodemask_t *nodes);
| ^~~~~~~~~~
In file included from include/linux/gfp.h:7,
from include/linux/percpu_counter.h:16,
from include/linux/sched/user.h:7,
from include/linux/cred.h:17,
from include/linux/seq_file.h:13,
from arch/powerpc/include/asm/machdep.h:6,
from arch/powerpc/include/asm/archrandom.h:5,
from include/linux/random.h:109,
from include/linux/nodemask.h:97,
from include/linux/list_lru.h:12,
from include/linux/fs.h:13,
from include/linux/compat.h:17,
from arch/powerpc/kernel/asm-offsets.c:12:
include/linux/mmzone.h:1185:41: error: unknown type name 'nodemask_t'
1185 | nodemask_t *nodes)
| ^~~~~~~~~~
include/linux/mmzone.h:1211:41: error: unknown type name 'nodemask_t'
1211 | nodemask_t *nodes)
| ^~~~~~~~~~
include/linux/mmzone.h:1254:39: error: unknown type name 'nodemask_t'
1254 | static inline bool movable_only_nodes(nodemask_t *nodes)
| ^~~~~~~~~~
In file included from include/linux/percpu_counter.h:16,
from include/linux/sched/user.h:7,
from include/linux/cred.h:17,
from include/linux/seq_file.h:13,
from arch/powerpc/include/asm/machdep.h:6,
from arch/powerpc/include/asm/archrandom.h:5,
from include/linux/random.h:109,
from include/linux/nodemask.h:97,
from include/linux/list_lru.h:12,
from include/linux/fs.h:13,
from include/linux/compat.h:17,
from arch/powerpc/kernel/asm-offsets.c:12:
include/linux/gfp.h:198:17: error: unknown type name 'nodemask_t'
198 | nodemask_t *nodemask);
| ^~~~~~~~~~
include/linux/gfp.h:200:17: error: unknown type name 'nodemask_t'
200 | nodemask_t *nodemask);
| ^~~~~~~~~~
include/linux/gfp.h:203:33: error: unknown type name 'nodemask_t'
203 | nodemask_t *nodemask, int nr_pages,
| ^~~~~~~~~~
include/linux/gfp.h: In function 'alloc_pages_bulk_list':
include/linux/gfp.h:215:16: error: implicit declaration of function '__alloc_pages_bulk'; did you mean 'alloc_pages_bulk_list'? [-Werror=implicit-function-declaration]
215 | return __alloc_pages_bulk(gfp, numa_mem_id(), NULL, nr_pages, list, NULL);
| ^~~~~~~~~~~~~~~~~~
| alloc_pages_bulk_list
In file included from include/linux/container_of.h:5,
from include/linux/list.h:5,
from include/linux/preempt.h:11,
from include/linux/spinlock.h:55,
from include/linux/ipc.h:5,
from include/uapi/linux/sem.h:5,
from include/linux/sem.h:5,
from include/linux/compat.h:14,
from arch/powerpc/kernel/asm-offsets.c:12:
include/linux/gfp.h: In function '__alloc_pages_node':
include/linux/gfp.h:241:52: error: implicit declaration of function 'node_online'; did you mean 'node_zonelist'? [-Werror=implicit-function-declaration]
241 | VM_WARN_ON((gfp_mask & __GFP_THISNODE) && !node_online(nid));
| ^~~~~~~~~~~
include/linux/build_bug.h:30:63: note: in definition of macro 'BUILD_BUG_ON_INVALID'
30 | #define BUILD_BUG_ON_INVALID(e) ((void)(sizeof((__force long)(e))))
| ^
include/linux/gfp.h:241:9: note: in expansion of macro 'VM_WARN_ON'
241 | VM_WARN_ON((gfp_mask & __GFP_THISNODE) && !node_online(nid));
| ^~~~~~~~~~
In file included from include/linux/percpu_counter.h:16,
from include/linux/sched/user.h:7,
from include/linux/cred.h:17,
from include/linux/seq_file.h:13,
from arch/powerpc/include/asm/machdep.h:6,
from arch/powerpc/include/asm/archrandom.h:5,
from include/linux/random.h:109,
from include/linux/nodemask.h:97,
from include/linux/list_lru.h:12,
from include/linux/fs.h:13,
from include/linux/compat.h:17,
from arch/powerpc/kernel/asm-offsets.c:12:
include/linux/gfp.h:243:16: error: implicit declaration of function '__alloc_pages'; did you mean '__add_pages'? [-Werror=implicit-function-declaration]
243 | return __alloc_pages(gfp_mask, order, nid, NULL);
| ^~~~~~~~~~~~~
| __add_pages
include/linux/gfp.h:243:16: warning: returning 'int' from a function with return type 'struct page *' makes pointer from integer without a cast [-Wint-conversion]
243 | return __alloc_pages(gfp_mask, order, nid, NULL);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/gfp.h: In function '__folio_alloc_node':
include/linux/gfp.h:252:16: error: implicit declaration of function '__folio_alloc'; did you mean '__folio_alloc_node'? [-Werror=implicit-function-declaration]
252 | return __folio_alloc(gfp, order, nid, NULL);
| ^~~~~~~~~~~~~
| __folio_alloc_node
include/linux/gfp.h:252:16: warning: returning 'int' from a function with return type 'struct folio *' makes pointer from integer without a cast [-Wint-conversion]
252 | return __folio_alloc(gfp, order, nid, NULL);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/gfp.h: At top level:
include/linux/gfp.h:366:49: error: unknown type name 'nodemask_t'
366 | int nid, nodemask_t *nodemask);
| ^~~~~~~~~~
In file included from include/linux/mm.h:703,
from include/linux/scatterlist.h:8,
from include/linux/dma-mapping.h:10,
from arch/powerpc/include/asm/machdep.h:8,
from arch/powerpc/include/asm/archrandom.h:5,
from include/linux/random.h:109,
from include/linux/nodemask.h:97,
from include/linux/list_lru.h:12,
from include/linux/fs.h:13,
from include/linux/compat.h:17,
from arch/powerpc/kernel/asm-offsets.c:12:
include/linux/huge_mm.h: In function '__transparent_hugepage_enabled':
include/linux/huge_mm.h:166:13: error: implicit declaration of function 'vma_is_dax' [-Werror=implicit-function-declaration]
166 | if (vma_is_dax(vma))
| ^~~~~~~~~~
include/linux/huge_mm.h: In function 'file_thp_enabled':
include/linux/huge_mm.h:183:29: error: invalid use of undefined type 'struct file'
183 | inode = vma->vm_file->f_inode;
| ^~
include/linux/huge_mm.h:187:17: error: implicit declaration of function 'inode_is_open_for_write' [-Werror=implicit-function-declaration]
187 | !inode_is_open_for_write(inode) && S_ISREG(inode->i_mode);
| ^~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/stat.h:7,
from include/linux/compat.h:12,
from arch/powerpc/kernel/asm-offsets.c:12:
include/linux/huge_mm.h:187:64: error: invalid use of undefined type 'struct inode'
187 | !inode_is_open_for_write(inode) && S_ISREG(inode->i_mode);
| ^~
include/uapi/linux/stat.h:22:28: note: in definition of macro 'S_ISREG'
22 | #define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
| ^
In file included from include/linux/scatterlist.h:8,
from include/linux/dma-mapping.h:10,
from arch/powerpc/include/asm/machdep.h:8,
from arch/powerpc/include/asm/archrandom.h:5,
from include/linux/random.h:109,
from include/linux/nodemask.h:97,
from include/linux/list_lru.h:12,
from include/linux/fs.h:13,
from include/linux/compat.h:17,
from arch/powerpc/kernel/asm-offsets.c:12:
include/linux/mm.h: At top level:
include/linux/mm.h:1833:49: error: unknown type name 'nodemask_t'
1833 | extern void show_free_areas(unsigned int flags, nodemask_t *nodemask);
| ^~~~~~~~~~
include/linux/mm.h: In function 'get_num_physpages':
include/linux/mm.h:2518:9: error: implicit declaration of function 'for_each_online_node'; did you mean 'for_each_online_pgdat'? [-Werror=implicit-function-declaration]
2518 | for_each_online_node(nid)
| ^~~~~~~~~~~~~~~~~~~~
| for_each_online_pgdat
include/linux/mm.h:2518:34: error: expected ';' before 'phys_pages'
2518 | for_each_online_node(nid)
| ^
| ;
2519 | phys_pages += node_present_pages(nid);
| ~~~~~~~~~~
include/linux/mm.h: At top level:
include/linux/mm.h:2569:42: error: unknown type name 'nodemask_t'
2569 | extern void show_mem(unsigned int flags, nodemask_t *nodemask);
| ^~~~~~~~~~
include/linux/mm.h:2578:33: error: unknown type name 'nodemask_t'
2578 | void warn_alloc(gfp_t gfp_mask, nodemask_t *nodemask, const char *fmt, ...);
| ^~~~~~~~~~
include/linux/mm.h: In function 'seal_check_future_write':
include/linux/mm.h:3411:21: error: 'F_SEAL_FUTURE_WRITE' undeclared (first use in this function)
3411 | if (seals & F_SEAL_FUTURE_WRITE) {
| ^~~~~~~~~~~~~~~~~~~
include/linux/mm.h:3411:21: note: each undeclared identifier is reported only once for each function it appears in
In file included from include/linux/compat.h:17,
from arch/powerpc/kernel/asm-offsets.c:12:
include/linux/fs.h: At top level:
include/linux/fs.h:2977:20: error: conflicting types for 'inode_is_open_for_write'; have 'bool(const struct inode *)' {aka '_Bool(const struct inode *)'}
2977 | static inline bool inode_is_open_for_write(const struct inode *inode)
| ^~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/mm.h:703,
from include/linux/scatterlist.h:8,
from include/linux/dma-mapping.h:10,
from arch/powerpc/include/asm/machdep.h:8,
from arch/powerpc/include/asm/archrandom.h:5,
from include/linux/random.h:109,
from include/linux/nodemask.h:97,
from include/linux/list_lru.h:12,
from include/linux/fs.h:13,
from include/linux/compat.h:17,
from arch/powerpc/kernel/asm-offsets.c:12:
include/linux/huge_mm.h:187:17: note: previous implicit declaration of 'inode_is_open_for_write' with type 'int()'
187 | !inode_is_open_for_write(inode) && S_ISREG(inode->i_mode);
| ^~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/compat.h:17,
from arch/powerpc/kernel/asm-offsets.c:12:
include/linux/fs.h:3364:20: error: conflicting types for 'vma_is_dax'; have 'bool(const struct vm_area_struct *)' {aka '_Bool(const struct vm_area_struct *)'}
3364 | static inline bool vma_is_dax(const struct vm_area_struct *vma)
| ^~~~~~~~~~
In file included from include/linux/mm.h:703,
from include/linux/scatterlist.h:8,
from include/linux/dma-mapping.h:10,
from arch/powerpc/include/asm/machdep.h:8,
from arch/powerpc/include/asm/archrandom.h:5,
from include/linux/random.h:109,
from include/linux/nodemask.h:97,
from include/linux/list_lru.h:12,
from include/linux/fs.h:13,
from include/linux/compat.h:17,
from arch/powerpc/kernel/asm-offsets.c:12:
include/linux/huge_mm.h:166:13: note: previous implicit declaration of 'vma_is_dax' with type 'int()'
166 | if (vma_is_dax(vma))
| ^~~~~~~~~~

I am not sure which commit caused this. Though I suspect

bbe8fb1a3c53 ("lib/nodemask: inline next_node_in() and node_random()")

which added the include of random.h to nodemask.h

I have used the bitmap tree from next-20220721 for today.

--
Cheers,
Stephen Rothwell


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature

2022-07-22 19:47:50

by Yury Norov

[permalink] [raw]
Subject: Re: linux-next: build failure after merge of the bitmap tree

On Fri, Jul 22, 2022 at 07:16:57PM +1000, Stephen Rothwell wrote:
> Hi all,
...

> I am not sure which commit caused this. Though I suspect
>
> bbe8fb1a3c53 ("lib/nodemask: inline next_node_in() and node_random()")
>
> which added the include of random.h to nodemask.h
>
> I have used the bitmap tree from next-20220721 for today.

Hi Stephen,

You're right. The problem in the last patch of the series. I've got
the fix already, and testing it now.

I'll drop the bbe8fb1a3c53 and submit it separately together with
header fix.

Thanks,
Yury