tree: https://git.kernel.org/pub/scm/linux/kernel/git/josef/btrfs-next.git new-kill-btree-inode head: 246e803530bee11804fa19b24ce467d2a2c9cb5d commit: 406cde4fc84d7943fa7d69642cc7fd563301f5e6 [25/28] writeback: introduce super_operations->write_metadata config: x86_64-randconfig-x015-201745 (attached as .config) compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026 reproduce: git checkout 406cde4fc84d7943fa7d69642cc7fd563301f5e6 # save the attached .config to linux build tree make ARCH=x86_64 All warnings (new ones prefixed by >>): In file included from include/asm-generic/bug.h:4:0, from arch/x86/include/asm/bug.h:81, from include/linux/bug.h:4, from include/linux/mmdebug.h:4, from include/linux/gfp.h:4, from include/linux/slab.h:14, from fs/super.c:24: fs/super.c: In function 'generic_shutdown_super': fs/super.c:450:19: error: incompatible type for argument 1 of 'list_empty' if (!list_empty(sb->s_bdi_list)) { ^ include/linux/compiler.h:156:30: note: in definition of macro '__trace_if' if (__builtin_constant_p(!!(cond)) ? !!(cond) : \ ^~~~ >> fs/super.c:450:3: note: in expansion of macro 'if' if (!list_empty(sb->s_bdi_list)) { ^~ In file included from include/linux/preempt.h:10:0, from include/linux/spinlock.h:50, from include/linux/mmzone.h:7, from include/linux/gfp.h:5, from include/linux/slab.h:14, from fs/super.c:24: include/linux/list.h:200:19: note: expected 'const struct list_head *' but argument is of type 'struct list_head' static inline int list_empty(const struct list_head *head) ^~~~~~~~~~ In file included from include/asm-generic/bug.h:4:0, from arch/x86/include/asm/bug.h:81, from include/linux/bug.h:4, from include/linux/mmdebug.h:4, from include/linux/gfp.h:4, from include/linux/slab.h:14, from fs/super.c:24: fs/super.c:450:19: error: incompatible type for argument 1 of 'list_empty' if (!list_empty(sb->s_bdi_list)) { ^ include/linux/compiler.h:156:42: note: in definition of macro '__trace_if' if (__builtin_constant_p(!!(cond)) ? !!(cond) : \ ^~~~ >> fs/super.c:450:3: note: in expansion of macro 'if' if (!list_empty(sb->s_bdi_list)) { ^~ In file included from include/linux/preempt.h:10:0, from include/linux/spinlock.h:50, from include/linux/mmzone.h:7, from include/linux/gfp.h:5, from include/linux/slab.h:14, from fs/super.c:24: include/linux/list.h:200:19: note: expected 'const struct list_head *' but argument is of type 'struct list_head' static inline int list_empty(const struct list_head *head) ^~~~~~~~~~ In file included from include/asm-generic/bug.h:4:0, from arch/x86/include/asm/bug.h:81, from include/linux/bug.h:4, from include/linux/mmdebug.h:4, from include/linux/gfp.h:4, from include/linux/slab.h:14, from fs/super.c:24: fs/super.c:450:19: error: incompatible type for argument 1 of 'list_empty' if (!list_empty(sb->s_bdi_list)) { ^ include/linux/compiler.h:167:16: note: in definition of macro '__trace_if' ______r = !!(cond); \ ^~~~ >> fs/super.c:450:3: note: in expansion of macro 'if' if (!list_empty(sb->s_bdi_list)) { ^~ In file included from include/linux/preempt.h:10:0, from include/linux/spinlock.h:50, from include/linux/mmzone.h:7, from include/linux/gfp.h:5, from include/linux/slab.h:14, from fs/super.c:24: include/linux/list.h:200:19: note: expected 'const struct list_head *' but argument is of type 'struct list_head' static inline int list_empty(const struct list_head *head) ^~~~~~~~~~ In file included from include/asm-generic/bug.h:4:0, from arch/x86/include/asm/bug.h:81, from include/linux/bug.h:4, from include/linux/mmdebug.h:4, from include/linux/gfp.h:4, from include/linux/slab.h:14, from fs/super.c:24: fs/super.c: At top level: include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'strcpy' which is not static ______f = { \ ^ include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if' #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) ^~~~~~~~~~ include/linux/string.h:421:2: note: in expansion of macro 'if' if (p_size == (size_t)-1 && q_size == (size_t)-1) ^~ include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'kmemdup' which is not static ______f = { \ ^ include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if' #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) ^~~~~~~~~~ include/linux/string.h:411:2: note: in expansion of macro 'if' if (p_size < size) ^~ include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'kmemdup' which is not static ______f = { \ ^ include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if' #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) ^~~~~~~~~~ include/linux/string.h:409:2: note: in expansion of macro 'if' if (__builtin_constant_p(size) && p_size < size) ^~ include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'memchr_inv' which is not static ______f = { \ ^ include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if' #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) ^~~~~~~~~~ include/linux/string.h:400:2: note: in expansion of macro 'if' if (p_size < size) ^~ include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'memchr_inv' which is not static ______f = { \ ^ include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if' #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) ^~~~~~~~~~ include/linux/string.h:398:2: note: in expansion of macro 'if' if (__builtin_constant_p(size) && p_size < size) ^~ include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'memchr' which is not static ______f = { \ ^ include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if' #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) ^~~~~~~~~~ include/linux/string.h:389:2: note: in expansion of macro 'if' if (p_size < size) ^~ include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'memchr' which is not static ______f = { \ ^ include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if' #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) ^~~~~~~~~~ include/linux/string.h:387:2: note: in expansion of macro 'if' if (__builtin_constant_p(size) && p_size < size) ^~ include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'memcmp' which is not static ______f = { \ ^ include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if' #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) ^~~~~~~~~~ include/linux/string.h:379:2: note: in expansion of macro 'if' if (p_size < size || q_size < size) ^~ include/linux/compiler.h:162:4: warning: '______f' is static but declared in inline function 'memcmp' which is not static ______f = { \ ^ include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if' #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) ^~~~~~~~~~ include/linux/string.h:376:3: note: in expansion of macro 'if' if (q_size < size) ^~ vim +/if +450 fs/super.c 401 402 /** 403 * generic_shutdown_super - common helper for ->kill_sb() 404 * @sb: superblock to kill 405 * 406 * generic_shutdown_super() does all fs-independent work on superblock 407 * shutdown. Typical ->kill_sb() should pick all fs-specific objects 408 * that need destruction out of superblock, call generic_shutdown_super() 409 * and release aforementioned objects. Note: dentries and inodes _are_ 410 * taken care of and do not need specific handling. 411 * 412 * Upon calling this function, the filesystem may no longer alter or 413 * rearrange the set of dentries belonging to this super_block, nor may it 414 * change the attachments of dentries to inodes. 415 */ 416 void generic_shutdown_super(struct super_block *sb) 417 { 418 const struct super_operations *sop = sb->s_op; 419 420 if (sb->s_root) { 421 shrink_dcache_for_umount(sb); 422 sync_filesystem(sb); 423 sb->s_flags &= ~SB_ACTIVE; 424 425 fsnotify_unmount_inodes(sb); 426 cgroup_writeback_umount(); 427 428 evict_inodes(sb); 429 430 if (sb->s_dio_done_wq) { 431 destroy_workqueue(sb->s_dio_done_wq); 432 sb->s_dio_done_wq = NULL; 433 } 434 435 if (sop->put_super) 436 sop->put_super(sb); 437 438 if (!list_empty(&sb->s_inodes)) { 439 printk("VFS: Busy inodes after unmount of %s. " 440 "Self-destruct in 5 seconds. Have a nice day...\n", 441 sb->s_id); 442 } 443 } 444 spin_lock(&sb_lock); 445 /* should be initialized for __put_super_and_need_restart() */ 446 hlist_del_init(&sb->s_instances); 447 spin_unlock(&sb_lock); 448 up_write(&sb->s_umount); 449 if (sb->s_bdi != &noop_backing_dev_info) { > 450 if (!list_empty(sb->s_bdi_list)) { 451 spin_lock(&sb->s_bdi->sb_list_lock); 452 list_del_init(&sb->s_bdi_list); 453 spin_unlock(&sb->s_bdi->sb_list_lock); 454 } 455 bdi_put(sb->s_bdi); 456 sb->s_bdi = &noop_backing_dev_info; 457 } 458 } 459 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip
