Re: [LTP] [linux-next:master] [scsi] eca2040972: ltp.ioprio_set03.fail

Liu, Yujie
2023-07-05T08:36:21Z

Hi,

On Wed, 2023-06-21 at 15:33 +0000, Niklas Cassel wrote:
> On Wed, Jun 21, 2023 at 02:47:43PM +0200, Cyril Hrubis wrote:
> > Hi!
> > > > kernel test robot noticed "ltp.ioprio_set03.fail" on:
> > >
> > > LTP maintainers,
> > >
> > > Patches have been submitted to fix this issue. Were these patches applied ?
> >
> > Looks like they are in, at least these two:
> >
> >     ioprio: use ioprio.h kernel header if it exists
> >     ioprio: Use IOPRIO_PRIO_NUM to check prio range
> >
> > And there does not seem to be anything ioprio related haning in the LTP
> > patchwork.
>
> Hello Cyril, Petr, Damien,
>
>
> I just ran LTP master + linux-next and the test case passes for me.
>
>
> Although, note that even if you are using LTP master,
> the way that the LTP header:
> testcases/kernel/syscalls/ioprio/ioprio.h
> is written, you will need to run
>
> make headers_install
> with linux-next kernel source,
>
> before running
> make autotools && ./configure
> in LTP.
>
> Otherwise LTP will use the kernel uapi headers from your distro,
> which does not perform the new checks for the IOPRIO_PRIO_VALUE()
> macro. (It requires linux uapi headers from linux-next.)

Sorry for the late reply. This is kernel test robot team.

Thanks a lot for this info. We followed above steps and confirmed the
test case passes after building it with the header files from linux-
next.

== before installing headers ==

ltp/testcases/kernel/syscalls/ioprio# make

ltp/testcases/kernel/syscalls/ioprio# ./ioprio_set03
tst_test.c:1558: TINFO: Timeout per run is 0h 00m 30s
ioprio_set03.c:40: TFAIL: ioprio_set IOPRIO_CLASS_BE prio 8 should not work
ioprio_set03.c:48: TINFO: tested illegal priority with class NONE
ioprio_set03.c:51: TPASS: returned correct error for wrong prio: EINVAL (22)

Summary:
passed 1
failed 1
broken 0
skipped 0
warnings 0

== after installing headers ==

linux# git checkout linux-next/master
linux# make INSTALL_HDR_PATH=/usr headers_install
INSTALL /usr/include

ltp/testcases/kernel/syscalls/ioprio# make

ltp/testcases/kernel/syscalls/ioprio# ./ioprio_set03
tst_test.c:1558: TINFO: Timeout per run is 0h 00m 30s
ioprio.h:70: TPASS: ioprio_set new class BEST-EFFORT, new prio 4
ioprio_set03.c:35: TPASS: returned correct error for wrong prio: EINVAL (22)
ioprio_set03.c:48: TINFO: tested illegal priority with class NONE
ioprio_set03.c:51: TPASS: returned correct error for wrong prio: EINVAL (22)

Summary:
passed 3
failed 0
broken 0
skipped 0
warnings 0

> Does the linux kernel test robot not run
> make headers_install
> before running
> make autotools && ./configure
> in LTP?

Thanks for Cyril's input, and indeed it is costy to recompile LTP for
the test on each kernel. Our LTP testsuite is pre-compiled in a debian
11 distribution environment with some old headers, then each test will
retrieve the pre-compiled LTP to run the testcases, so our LTP is not
compiled against the headers of the running kernel.

> One option, although I'm not sure if we want this,
> is to change
> testcases/kernel/syscalls/ioprio/ioprio.h
> to do something like:
>
> #ifndef IOPRIO_BAD_VALUE
> # define IOPRIO_BAD_VALUE(val, max) ((val) < 0 || (val) >= (max))
> #endif
>
> such that LTP does not need to be compiled against the kernel uapi
> headers that match the running kernel.
>
> But... shouldn't the installed uapi headers match the running kernel?

It requires a major change in our test flow if we want to recompile LTP
with the headers of current running kernel in each run. We will first
evaluate the feasibility of doing so in the bot. Thanks.

Best Regards,
Yujie