Re: [PATCH v3 02/12] tools/nolibc: add missing nanoseconds support for __NR_statx

From: Willy Tarreau
Date: Sun Jun 04 2023 - 08:53:42 EST


On Sun, Jun 04, 2023 at 02:00:02PM +0200, Thomas Weißschuh wrote:
> On 2023-06-04 13:18:35+0200, Willy Tarreau wrote:
> > On Sat, Jun 03, 2023 at 04:02:04PM +0800, Zhangjin Wu wrote:
> > > Commit a89c937d781a ("tools/nolibc: support nanoseconds in stat()")
> > > added nanoseconds for stat() but missed the statx case, this adds it.
> > >
> > > The stx_atime, stx_mtime, stx_ctime are in type of 'struct
> > > statx_timestamp', which is incompatible with 'struct timespec', should
> > > convert explicitly.
> > >
> > > /* include/uapi/linux/stat.h */
> > >
> > > struct statx_timestamp {
> > > __s64 tv_sec;
> > > __u32 tv_nsec;
> > > __s32 __reserved;
> > > };
> > >
> > > /* include/uapi/linux/time.h */
> > > struct timespec {
> > > __kernel_old_time_t tv_sec; /* seconds */
> > > long tv_nsec; /* nanoseconds */
> > > };
> > >
> > > Without this patch, the stat_timestamps test case would fail when
> > > __NR_statx defined.
> > >
> > > Fixes: a89c937d781a ("tools/nolibc: support nanoseconds in stat()")
> > > Suggested-by: Thomas Weißschuh <linux@xxxxxxxxxxxxxx>
> > > Link: https://lore.kernel.org/linux-riscv/3a3edd48-1ace-4c89-89e8-9c594dd1b3c9@xxxxxxxx/
> > > Signed-off-by: Zhangjin Wu <falcon@xxxxxxxxxxx>
> >
> > Thank you. I've queued it immediately after Thomas' patch.
> > I'll let the two of you tell me if it's better to squash them
> > together to avoid breaking bisect and mark you co-authors.
>
> Squashing them sounds like the correct solution to me.

OK I've done it for now in my branch. I'm going to push it as
20230604-nolibc-rv32+stkp6. All tests pass fine again for me now on
all supported archs. I'll pass this one to Paul, I think it's fine
for 6.5. I just don't know if he still has tests planned on his side
for 6.5 (Paul always re-runs the whole tests after integration and
often spots failures).

By the way, I'm still using my test-all script that's extremely
convenient to test the expected results from user-mode (it basically
does what run-user does, but for all archs and at -O0, -Os, -O3).

I'm sharing it attached since I think it can help you and Zhangjin in
your respective tests. That's how I'm cheating to spot build issues in
contributed changes. I have not committed it because it's ugly and I
don't know where to put it, but I think you'll find it convenient
nevertheless. I'm starting it like this:

$ ./test-all-opts.sh | tee test16.out
$ grep passed test16.out
136 test(s) passed, 2 skipped, 0 failed. See all results in run-arm64.out
135 test(s) passed, 3 skipped, 0 failed. See all results in run-arm-march=armv5t_-marm.out
135 test(s) passed, 3 skipped, 0 failed. See all results in run-arm-march=armv5t_-mthumb.out
135 test(s) passed, 3 skipped, 0 failed. See all results in run-arm-march=armv7-a_-marm.out
135 test(s) passed, 3 skipped, 0 failed. See all results in run-arm-march=armv7-a_-mthumb.out
136 test(s) passed, 2 skipped, 0 failed. See all results in run-i386.out
136 test(s) passed, 2 skipped, 0 failed. See all results in run-i386-march=i586.out
(...)
$ grep ' [^0] failed' test16.out || echo OK
OK

Hoping this helps,
Willy