Subject: linux-next: build failure after merge of the bitmap tree

From: Stephen Rothwell <[email-masked]>
Date: Fri, 22 Jul 2022 19:16:57 +1000

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