Re: [GIT PULL] io_uring fixes for 6.0-rc1

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 8/12/22 3:08 PM, Jens Axboe wrote:
> On 8/12/22 3:01 PM, Jens Axboe wrote:
>> On 8/12/22 2:44 PM, Jens Axboe wrote:
>>> On Aug 12, 2022, at 2:28 PM, Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:
>>>>
>>>> ?On Fri, Aug 12, 2022 at 5:46 AM Jens Axboe <axboe@xxxxxxxxx> wrote:
>>>>>
>>>>> - Small series improving type safety of the sqe fields (Stefan)
>>>>
>>>> This doesn't work AT ALL.
>>>>
>>>> A basic allmodconfig build fails with tons of errors. It starts with
>>>>
>>>>  In function ?io_kiocb_cmd_sz_check?,
>>>>      inlined from ?io_prep_rw? at io_uring/rw.c:38:21:
>>>>  ././include/linux/compiler_types.h:354:45: error: call to
>>>> ?__compiletime_assert_802? declared with attribute error: BUILD_BUG_ON
>>>> failed: cmd_sz > sizeof(struct io_cmd_data)
>>>>    354 |         _compiletime_assert(condition, msg,
>>>> __compiletime_assert_, __COUNTER__)
>>>>        |                                             ^
>>>>  ././include/linux/compiler_types.h:335:25: note: in definition of
>>>> macro ?__compiletime_assert?
>>>>    335 |                         prefix ## suffix();
>>>>           \
>>>>        |                         ^~~~~~
>>>>  ././include/linux/compiler_types.h:354:9: note: in expansion of
>>>> macro ?_compiletime_assert?
>>>>    354 |         _compiletime_assert(condition, msg,
>>>> __compiletime_assert_, __COUNTER__)
>>>>        |         ^~~~~~~~~~~~~~~~~~~
>>>>  ./include/linux/build_bug.h:39:37: note: in expansion of macro
>>>> ?compiletime_assert?
>>>>     39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
>>>>        |                                     ^~~~~~~~~~~~~~~~~~
>>>>  ./include/linux/build_bug.h:50:9: note: in expansion of macro
>>>> ?BUILD_BUG_ON_MSG?
>>>>     50 |         BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: "
>>>> #condition)
>>>>        |         ^~~~~~~~~~~~~~~~
>>>>  ./include/linux/io_uring_types.h:496:9: note: in expansion of macro
>>>> ?BUILD_BUG_ON?
>>>>    496 |         BUILD_BUG_ON(cmd_sz > sizeof(struct io_cmd_data));
>>>>        |         ^~~~~~~~~~~~
>>>>
>>>> and goes downhill from there.
>>>>
>>>> I don't think this can have seen any testing at all.
>>>
>>> Wtf? I always run allmodconfig before sending and it also ran testing.
>>> I?ll check shortly. Sorry about that, whatever went wrong here. 
>>
>> My test box is still on the same sha from this morning, which is:
>>
>> commit 2ae08b36c06ea8df73a79f6b80ff7964e006e9e3 (origin/master, origin/HEAD)
>> Merge: 21f9c8a13bb2 8bb5e7f4dcd9
>> Author: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
>> Date:   Thu Aug 11 09:23:08 2022 -0700
>>
>>     Merge tag 'input-for-v5.20-rc0' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
>>
>> with io_uring-6.0 (ff34d8d06a1f16b6a58fb41bfbaa475cc6c02497) and
>> block-6.0 (aa0c680c3aa96a5f9f160d90dd95402ad578e2b0) pulled in, and it
>> builds just fine for me:
>>
>> axboe@r7525 ~/gi/build (test)> make clean                                    9.827s
>>   HOSTCC  scripts/basic/fixdep
>>   HOSTCC  scripts/kconfig/conf.o
>>   HOSTCC  scripts/kconfig/confdata.o
>>   HOSTCC  scripts/kconfig/expr.o
>>   LEX     scripts/kconfig/lexer.lex.c
>>   YACC    scripts/kconfig/parser.tab.[ch]
>>   HOSTCC  scripts/kconfig/lexer.lex.o
>>   HOSTCC  scripts/kconfig/menu.o
>>   HOSTCC  scripts/kconfig/parser.tab.o
>>   HOSTCC  scripts/kconfig/preprocess.o
>>   HOSTCC  scripts/kconfig/symbol.o
>>   HOSTCC  scripts/kconfig/util.o
>>   HOSTLD  scripts/kconfig/conf
>> #
>> # No change to .config
>> #
>> axboe@r7525 ~/gi/build (test)> time make -j256 -s
>>
>> ________________________________________________________
>> Executed in  172.67 secs    fish           external
>>    usr time  516.61 mins  396.00 micros  516.61 mins
>>    sys time   44.40 mins    0.00 micros   44.40 mins
>>
>> using:
>>
>> axboe@r7525 ~/gi/build (test)> gcc --version
>> gcc (Debian 12.1.0-7) 12.1.0
>>
>> Puzzled, I'll keep poking...
> 
> I re-did an allmodconfig, and also built on arm64, and I have to say I'm
> puzzled with what you are seeing. Updated to latest master as well,
> nothing. Furthermore, I have the build bot send me successful build
> notifications as well, not just the errors, and here's what it reported
> 12h ago:
> 
> tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git io_uring-6.0
> branch HEAD: ff34d8d06a1f16b6a58fb41bfbaa475cc6c02497  io_uring: add missing BUILD_BUG_ON() checks for new io_uring_sqe fields
> 
> elapsed time: 882m
> 
> configs tested: 53
> configs skipped: 2
> 
> The following configs have been built successfully.
> More configs may be tested in the coming days.
> 
> gcc tested configs:
> um                           x86_64_defconfig
> um                             i386_defconfig
> i386                                defconfig
> i386                          randconfig-a014
> i386                          randconfig-a012
> i386                          randconfig-a016
> x86_64                        randconfig-a013
> x86_64                        randconfig-a011
> arc                  randconfig-r043-20220811
> arm                                 defconfig
> x86_64                        randconfig-a015
> m68k                             allmodconfig
> arc                              allyesconfig
> i386                             allyesconfig
> i386                          randconfig-a001
> x86_64                          rhel-8.3-func
> i386                          randconfig-a003
> x86_64                              defconfig
> alpha                            allyesconfig
> mips                             allyesconfig
> arm                              allyesconfig
> x86_64                         rhel-8.3-kunit
> m68k                             allyesconfig
> powerpc                           allnoconfig
> arm64                            allyesconfig
> i386                          randconfig-a005
> x86_64                               rhel-8.3
> sh                               allmodconfig
> x86_64                           rhel-8.3-kvm
> x86_64                           allyesconfig
> x86_64                    rhel-8.3-kselftests
> x86_64                           rhel-8.3-syz
> x86_64                        randconfig-a002
> x86_64                        randconfig-a004
> x86_64                        randconfig-a006
> ia64                             allmodconfig
> powerpc                          allmodconfig
> 
> clang tested configs:
> i386                          randconfig-a011
> i386                          randconfig-a013
> hexagon              randconfig-r045-20220811
> hexagon              randconfig-r041-20220811
> x86_64                        randconfig-a012
> s390                 randconfig-r044-20220811
> i386                          randconfig-a015
> riscv                randconfig-r042-20220811
> x86_64                        randconfig-a014
> x86_64                        randconfig-a016
> i386                          randconfig-a002
> i386                          randconfig-a006
> i386                          randconfig-a004
> x86_64                        randconfig-a001
> x86_64                        randconfig-a003
> x86_64                        randconfig-a005
> 
> building that very same sha I sent you. WTF? I assure you this thing has
> been both built, and not just by me, and runtime tested as per usual.
> Why it fails on your end, I really have no good clue right now.

Keith brought up a good point, is this some weird randomization of
io_kiocb that makes it bigger? struct io_rw is already at 64-bytes as it
is, if it gets re-arranged for more padding maybe that's what you're
hitting? Is it just io_rw or are you seeing others?

-- 
Jens Axboe




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux