tree: https://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git dev head: 38bd76b9696c5582dcef4ab1af437e0666021f65 commit: 42f56b7a4a7db127a9d281da584152dc3d525d25 [41/50] ext4: mballoc: introduce pcpu seqcnt for freeing PA to improve ENOSPC handling config: i386-randconfig-a014-20200601 (attached as .config) compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 2388a096e7865c043e83ece4e26654bd3d1a20d5) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install i386 cross compiling tool for clang build # apt-get install binutils-i386-linux-gnu git checkout 42f56b7a4a7db127a9d281da584152dc3d525d25 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=i386 If you fix the issue, kindly add following tag as appropriate Reported-by: kbuild test robot <lkp@xxxxxxxxx> All errors (new ones prefixed by >>, old ones prefixed by <<): >> fs/ext4/mballoc.c:1494:2: error: invalid input size for constraint 'qi' this_cpu_inc(discard_pa_seq); ^ include/linux/percpu-defs.h:520:28: note: expanded from macro 'this_cpu_inc' #define this_cpu_inc(pcp) this_cpu_add(pcp, 1) ^ include/linux/percpu-defs.h:509:33: note: expanded from macro 'this_cpu_add' #define this_cpu_add(pcp, val) __pcpu_size_call(this_cpu_add_, pcp, val) ^ include/linux/percpu-defs.h:377:11: note: expanded from macro '__pcpu_size_call' case 1: stem##1(variable, __VA_ARGS__);break; ^ <scratch space>:160:1: note: expanded from here this_cpu_add_1 ^ arch/x86/include/asm/percpu.h:432:34: note: expanded from macro 'this_cpu_add_1' #define this_cpu_add_1(pcp, val) percpu_add_op(volatile, (pcp), val) ^ arch/x86/include/asm/percpu.h:147:16: note: expanded from macro 'percpu_add_op' : "qi" ((pao_T__)(val))); ^ >> fs/ext4/mballoc.c:1494:2: error: invalid input size for constraint 'qi' include/linux/percpu-defs.h:520:28: note: expanded from macro 'this_cpu_inc' #define this_cpu_inc(pcp) this_cpu_add(pcp, 1) ^ include/linux/percpu-defs.h:509:33: note: expanded from macro 'this_cpu_add' #define this_cpu_add(pcp, val) __pcpu_size_call(this_cpu_add_, pcp, val) ^ include/linux/percpu-defs.h:378:11: note: expanded from macro '__pcpu_size_call' case 2: stem##2(variable, __VA_ARGS__);break; ^ <scratch space>:185:1: note: expanded from here this_cpu_add_2 ^ arch/x86/include/asm/percpu.h:433:34: note: expanded from macro 'this_cpu_add_2' #define this_cpu_add_2(pcp, val) percpu_add_op(volatile, (pcp), val) ^ arch/x86/include/asm/percpu.h:147:16: note: expanded from macro 'percpu_add_op' : "qi" ((pao_T__)(val))); ^ >> fs/ext4/mballoc.c:1494:2: error: invalid input size for constraint 'qi' include/linux/percpu-defs.h:520:28: note: expanded from macro 'this_cpu_inc' #define this_cpu_inc(pcp) this_cpu_add(pcp, 1) ^ include/linux/percpu-defs.h:509:33: note: expanded from macro 'this_cpu_add' #define this_cpu_add(pcp, val) __pcpu_size_call(this_cpu_add_, pcp, val) ^ include/linux/percpu-defs.h:379:11: note: expanded from macro '__pcpu_size_call' case 4: stem##4(variable, __VA_ARGS__);break; ^ <scratch space>:210:1: note: expanded from here this_cpu_add_4 ^ arch/x86/include/asm/percpu.h:434:34: note: expanded from macro 'this_cpu_add_4' #define this_cpu_add_4(pcp, val) percpu_add_op(volatile, (pcp), val) ^ arch/x86/include/asm/percpu.h:147:16: note: expanded from macro 'percpu_add_op' : "qi" ((pao_T__)(val))); ^ fs/ext4/mballoc.c:1636:2: error: invalid input size for constraint 'qi' this_cpu_inc(discard_pa_seq); ^ include/linux/percpu-defs.h:520:28: note: expanded from macro 'this_cpu_inc' #define this_cpu_inc(pcp) this_cpu_add(pcp, 1) ^ include/linux/percpu-defs.h:509:33: note: expanded from macro 'this_cpu_add' #define this_cpu_add(pcp, val) __pcpu_size_call(this_cpu_add_, pcp, val) ^ include/linux/percpu-defs.h:377:11: note: expanded from macro '__pcpu_size_call' case 1: stem##1(variable, __VA_ARGS__);break; ^ <scratch space>:12:1: note: expanded from here this_cpu_add_1 ^ arch/x86/include/asm/percpu.h:432:34: note: expanded from macro 'this_cpu_add_1' #define this_cpu_add_1(pcp, val) percpu_add_op(volatile, (pcp), val) ^ arch/x86/include/asm/percpu.h:147:16: note: expanded from macro 'percpu_add_op' : "qi" ((pao_T__)(val))); ^ fs/ext4/mballoc.c:1636:2: error: invalid input size for constraint 'qi' include/linux/percpu-defs.h:520:28: note: expanded from macro 'this_cpu_inc' #define this_cpu_inc(pcp) this_cpu_add(pcp, 1) ^ include/linux/percpu-defs.h:509:33: note: expanded from macro 'this_cpu_add' #define this_cpu_add(pcp, val) __pcpu_size_call(this_cpu_add_, pcp, val) ^ include/linux/percpu-defs.h:378:11: note: expanded from macro '__pcpu_size_call' case 2: stem##2(variable, __VA_ARGS__);break; ^ <scratch space>:37:1: note: expanded from here this_cpu_add_2 ^ arch/x86/include/asm/percpu.h:433:34: note: expanded from macro 'this_cpu_add_2' #define this_cpu_add_2(pcp, val) percpu_add_op(volatile, (pcp), val) ^ arch/x86/include/asm/percpu.h:147:16: note: expanded from macro 'percpu_add_op' : "qi" ((pao_T__)(val))); ^ fs/ext4/mballoc.c:1636:2: error: invalid input size for constraint 'qi' include/linux/percpu-defs.h:520:28: note: expanded from macro 'this_cpu_inc' #define this_cpu_inc(pcp) this_cpu_add(pcp, 1) ^ include/linux/percpu-defs.h:509:33: note: expanded from macro 'this_cpu_add' #define this_cpu_add(pcp, val) __pcpu_size_call(this_cpu_add_, pcp, val) ^ include/linux/percpu-defs.h:379:11: note: expanded from macro '__pcpu_size_call' case 4: stem##4(variable, __VA_ARGS__);break; ^ <scratch space>:62:1: note: expanded from here this_cpu_add_4 ^ arch/x86/include/asm/percpu.h:434:34: note: expanded from macro 'this_cpu_add_4' #define this_cpu_add_4(pcp, val) percpu_add_op(volatile, (pcp), val) ^ arch/x86/include/asm/percpu.h:147:16: note: expanded from macro 'percpu_add_op' : "qi" ((pao_T__)(val))); ^ fs/ext4/mballoc.c:3996:2: error: invalid input size for constraint 'qi' this_cpu_inc(discard_pa_seq); ^ include/linux/percpu-defs.h:520:28: note: expanded from macro 'this_cpu_inc' #define this_cpu_inc(pcp) this_cpu_add(pcp, 1) ^ include/linux/percpu-defs.h:509:33: note: expanded from macro 'this_cpu_add' #define this_cpu_add(pcp, val) __pcpu_size_call(this_cpu_add_, pcp, val) ^ include/linux/percpu-defs.h:377:11: note: expanded from macro '__pcpu_size_call' case 1: stem##1(variable, __VA_ARGS__);break; ^ <scratch space>:150:1: note: expanded from here this_cpu_add_1 ^ arch/x86/include/asm/percpu.h:432:34: note: expanded from macro 'this_cpu_add_1' #define this_cpu_add_1(pcp, val) percpu_add_op(volatile, (pcp), val) ^ arch/x86/include/asm/percpu.h:147:16: note: expanded from macro 'percpu_add_op' : "qi" ((pao_T__)(val))); ^ fs/ext4/mballoc.c:3996:2: error: invalid input size for constraint 'qi' include/linux/percpu-defs.h:520:28: note: expanded from macro 'this_cpu_inc' vim +/qi +1494 fs/ext4/mballoc.c 1473 1474 static void mb_free_blocks(struct inode *inode, struct ext4_buddy *e4b, 1475 int first, int count) 1476 { 1477 int left_is_free = 0; 1478 int right_is_free = 0; 1479 int block; 1480 int last = first + count - 1; 1481 struct super_block *sb = e4b->bd_sb; 1482 1483 if (WARN_ON(count == 0)) 1484 return; 1485 BUG_ON(last >= (sb->s_blocksize << 3)); 1486 assert_spin_locked(ext4_group_lock_ptr(sb, e4b->bd_group)); 1487 /* Don't bother if the block group is corrupt. */ 1488 if (unlikely(EXT4_MB_GRP_BBITMAP_CORRUPT(e4b->bd_info))) 1489 return; 1490 1491 mb_check_buddy(e4b); 1492 mb_free_blocks_double(inode, e4b, first, count); 1493 > 1494 this_cpu_inc(discard_pa_seq); 1495 e4b->bd_info->bb_free += count; 1496 if (first < e4b->bd_info->bb_first_free) 1497 e4b->bd_info->bb_first_free = first; 1498 1499 /* access memory sequentially: check left neighbour, 1500 * clear range and then check right neighbour 1501 */ 1502 if (first != 0) 1503 left_is_free = !mb_test_bit(first - 1, e4b->bd_bitmap); 1504 block = mb_test_and_clear_bits(e4b->bd_bitmap, first, count); 1505 if (last + 1 < EXT4_SB(sb)->s_mb_maxs[0]) 1506 right_is_free = !mb_test_bit(last + 1, e4b->bd_bitmap); 1507 1508 if (unlikely(block != -1)) { 1509 struct ext4_sb_info *sbi = EXT4_SB(sb); 1510 ext4_fsblk_t blocknr; 1511 1512 blocknr = ext4_group_first_block_no(sb, e4b->bd_group); 1513 blocknr += EXT4_C2B(sbi, block); 1514 ext4_grp_locked_error(sb, e4b->bd_group, 1515 inode ? inode->i_ino : 0, 1516 blocknr, 1517 "freeing already freed block " 1518 "(bit %u); block bitmap corrupt.", 1519 block); 1520 ext4_mark_group_bitmap_corrupted(sb, e4b->bd_group, 1521 EXT4_GROUP_INFO_BBITMAP_CORRUPT); 1522 mb_regenerate_buddy(e4b); 1523 goto done; 1524 } 1525 1526 /* let's maintain fragments counter */ 1527 if (left_is_free && right_is_free) 1528 e4b->bd_info->bb_fragments--; 1529 else if (!left_is_free && !right_is_free) 1530 e4b->bd_info->bb_fragments++; 1531 1532 /* buddy[0] == bd_bitmap is a special case, so handle 1533 * it right away and let mb_buddy_mark_free stay free of 1534 * zero order checks. 1535 * Check if neighbours are to be coaleasced, 1536 * adjust bitmap bb_counters and borders appropriately. 1537 */ 1538 if (first & 1) { 1539 first += !left_is_free; 1540 e4b->bd_info->bb_counters[0] += left_is_free ? -1 : 1; 1541 } 1542 if (!(last & 1)) { 1543 last -= !right_is_free; 1544 e4b->bd_info->bb_counters[0] += right_is_free ? -1 : 1; 1545 } 1546 1547 if (first <= last) 1548 mb_buddy_mark_free(e4b, first >> 1, last >> 1); 1549 1550 done: 1551 mb_set_largest_free_order(sb, e4b->bd_info); 1552 mb_check_buddy(e4b); 1553 } 1554 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
Attachment:
.config.gz
Description: application/gzip