[LTP] [PATCH] min_kver: Add kernel version requestions

zhaogongyi zhaogongyi@huawei.com
Tue Mar 30 11:31:42 CEST 2021


Hi,

> > I have seen the function definition in lapi/preadv2.h or lapi/pwritev2.h,
> but it seems not enough.
> Hi Zhongyi,
> 
> It is enough to indicate that preadv2() and pwritev2() are supported on
> your enviroment.
>
----- I mean that in this testcase, it should call preadv2/pwritev2 in libc since its kernel version < 4.6. So I think this testcase need to be skipped on this system,or it would fail for EINVALID even though
	I don’t known the root cause of it. Maybe it is the dismatch of libc with kernel.

Thanks!

Best Regards,
Gongyi



> On 2021/3/30 16:18, zhaogongyi wrote:
> > Hi Yang,
> >
> > I have seen the function definition in lapi/preadv2.h or lapi/pwritev2.h,
> but it seems not enough.
> Hi Zhongyi,
> 
> It is enough to indicate that preadv2() and pwritev2() are supported on
> your enviroment.
> 
> > I run the testcases preadv201 and pwritev201 on my qemu, kernel
> version 4.4, arch is armeb, and report as follows:
> >
> > # ./preadv201
> > tst_test.c:1294: TINFO: Timeout per run is 0h 05m 00s
> > preadv201.c:91: TPASS: preadv2() read 64 bytes with content 'a'
> > expectedly
> > preadv201.c:91: TPASS: preadv2() read 64 bytes with content 'a'
> > expectedly
> > preadv201.c:91: TPASS: preadv2() read 32 bytes with content 'b'
> > expectedly
> > preadv201.c:64: TFAIL: preadv2() failed: EINVAL (22)
> > preadv201.c:64: TFAIL: preadv2() failed: EINVAL (22)
> > preadv201.c:64: TFAIL: preadv2() failed: EINVAL (22)
> >
> > Summary:
> > passed   3
> > failed   3
> > broken   0
> > skipped  0
> > warnings 0
> >
> >
> > # ./pwritev201
> > tst_test.c:1294: TINFO: Timeout per run is 0h 05m 00s
> > pwritev201.c:96: TPASS: pwritev2() wrote 64 bytes successfully with
> > content 'a' expectedly
> > pwritev201.c:96: TPASS: pwritev2() wrote 64 bytes successfully with
> > content 'a' expectedly
> > pwritev201.c:96: TPASS: pwritev2() wrote 64 bytes successfully with
> > content 'a' expectedly
> > pwritev201.c:62: TFAIL: pwritev2() failed: EINVAL (22)
> > pwritev201.c:62: TFAIL: pwritev2() failed: EINVAL (22)
> > pwritev201.c:62: TFAIL: pwritev2() failed: EINVAL (22)
> >
> > Summary:
> > passed   3
> > failed   3
> > broken   0
> > skipped  0
> > warnings 0
> >
> 
> It seems that preadv2() and pwritev2() cannot accept the offset argument
> which is set to -1.
> You should find why preadv2() and pwritev2() cannot accept the offset ==
> -1.
> 1) If LTP introduces the issue, you should send a patch to fix it(not add
> kernel version check).
> 2) If kernel introduces the issue, you should keep the test becasue it
> exposes the kernel bug as expected.
>       Of course, you can also try to find which kernel commit fixes the
> issue if you want.
> 
> > See man 2, we known preadv2() and pwritev2() first appeared in Linux
> 4.6, so I think we need to check kernel version in testcases.
> 
> 1) It is wrong to work around the issue about preadv2()/pwritev2() by
> kernel version check.
> 2) As Xu metioned on your patch(syscalls/shmctl04: Add kernel version
> requestions), kernel version check is not the best way to indicate if
> preadv2()/pwritev2() is supported.
> 
> Best Regards,
> Xiao Yang
> > Thanks!
> >
> > Best Regards,
> > Gongyi
> >
> >
> >> Hi Zhongyi,
> >>
> >> Do you get any issue here?
> >>
> >> It is unncessary to add version check because LTP has check the
> >> support of
> >> preadv2/pwritev2:
> >> 1) Call preadv2/pwritev2 directly if glibc provides it.
> >> 2) Call syscall(__NR_preadv2/__NR_pwritev2) if glibc doesn't provides
> >> preadv2/pwritev.
> >> 3) Report TCONF if kernel doesn't support
> __NR_preadv2/__NR_pwritev2.
> >>
> >> Please reference "include/lapi/preadv2.h"
> >>
> >> Best Regards,
> >> Xiao Yang
> >> On 2021/3/30 15:44, Zhao Gongyi wrote:
> >>> We need add kernel version requestions sinc preadv2() and
> pwritev2()
> >>> first appeared in Linux 4.6.
> >>>
> >>> For those:
> >>> 	testcases/kernel/syscalls/preadv2/preadv201.c
> >>> 	testcases/kernel/syscalls/pwritev2/pwritev201.c
> >>>
> >>> Signed-off-by: Zhao Gongyi<zhaogongyi@huawei.com>
> >>> ---
> >>>    testcases/kernel/syscalls/preadv2/preadv201.c   | 1 +
> >>>    testcases/kernel/syscalls/pwritev2/pwritev201.c | 1 +
> >>>    2 files changed, 2 insertions(+)
> >>>
> >>> diff --git a/testcases/kernel/syscalls/preadv2/preadv201.c
> >>> b/testcases/kernel/syscalls/preadv2/preadv201.c
> >>> index 91e2b9889..e8220f94c 100644
> >>> --- a/testcases/kernel/syscalls/preadv2/preadv201.c
> >>> +++ b/testcases/kernel/syscalls/preadv2/preadv201.c
> >>> @@ -111,6 +111,7 @@ static void cleanup(void)
> >>>    }
> >>>
> >>>    static struct tst_test test = {
> >>> +	.min_kver = "4.6",
> >>>    	.tcnt = ARRAY_SIZE(tcases),
> >>>    	.setup = setup,
> >>>    	.cleanup = cleanup,
> >>> diff --git a/testcases/kernel/syscalls/pwritev2/pwritev201.c
> >>> b/testcases/kernel/syscalls/pwritev2/pwritev201.c
> >>> index eba45b7d3..a8273e59d 100644
> >>> --- a/testcases/kernel/syscalls/pwritev2/pwritev201.c
> >>> +++ b/testcases/kernel/syscalls/pwritev2/pwritev201.c
> >>> @@ -111,6 +111,7 @@ static void cleanup(void)
> >>>    }
> >>>
> >>>    static struct tst_test test = {
> >>> +	.min_kver = "4.6",
> >>>    	.tcnt = ARRAY_SIZE(tcases),
> >>>    	.setup = setup,
> >>>    	.cleanup = cleanup,
> >>> --
> >>> 2.17.1
> >>>
> >>>
> > .
> >


More information about the ltp mailing list