From: Cyril Hrubis <chrubis@suse.cz>
To: Wei Gao <wegao@suse.com>
Cc: ltp@lists.linux.it
Subject: Re: [LTP] [PATCH v4] listmount04.c: Update case support mnt_id_req.mnt_ns_fd
Date: Thu, 11 Dec 2025 10:25:09 +0100 [thread overview]
Message-ID: <aTqN9fjQhDe4WU45@yuki.lan> (raw)
In-Reply-To: <20251211015915.1086-1-wegao@suse.com>
Hi!
> #define _GNU_SOURCE
>
> +#include "config.h"
> #include "tst_test.h"
> #include "lapi/mount.h"
> #include "lapi/syscalls.h"
> @@ -26,7 +27,11 @@ static uint64_t mnt_ids[MNT_SIZE];
> static struct tcase {
> int req_usage;
> uint32_t size;
> +#ifdef HAVE_STRUCT_MNT_ID_REQ_MNT_NS_FD
> + uint32_t mnt_ns_fd;
> +#else
> uint32_t spare;
> +#endif
> uint64_t mnt_id;
> uint64_t param;
> uint64_t *mnt_ids;
> @@ -73,12 +78,21 @@ static struct tcase {
> {
> .req_usage = 1,
> .size = MNT_ID_REQ_SIZE_VER0,
> +#ifdef HAVE_STRUCT_MNT_ID_REQ_MNT_NS_FD
> + .mnt_ns_fd = -1,
> +#else
> .spare = -1,
> +#endif
> .mnt_id = LSMT_ROOT,
> .mnt_ids = mnt_ids,
> .nr_mnt_ids = MNT_SIZE,
> +#ifdef HAVE_STRUCT_MNT_ID_REQ_MNT_NS_FD
> + .exp_errno = EBADF,
> + .msg = "invalid mnt_id_req.mnt_ns_fd bad file descriptor",
> +#else
> .exp_errno = EINVAL,
> .msg = "invalid mnt_id_req.spare",
> +#endif
>
> },
> {
> .req_usage = 1,
> @@ -122,7 +136,17 @@ static void run(unsigned int n)
> req->mnt_id = tc->mnt_id;
> req->param = tc->param;
> req->size = tc->size;
> - req->spare = tc->spare;
> +#ifdef HAVE_STRUCT_MNT_ID_REQ_MNT_NS_FD
> + if ((tst_kvercmp(6, 18, 0)) >= 0)
> + req->mnt_ns_fd = tc->mnt_ns_fd;
> + else
> + tst_brk(TCONF, "Skipping test, kernel version should be >= 6.18");
> +#else
> + if ((tst_kvercmp(6, 18, 0)) >= 0)
> + tst_brk(TCONF, "Skipping test, kernel version should be < 6.18");
> + else
> + req->spare = tc->spare;
> +#endif
I do not like this solution. Here we disable the test on newer kernel if
it was compiled on older headers and vice versa.
There are actually two problems to be solved and they are independent of
each other and we shouldn't mix these two.
First problem is that the mnt_ns_fd is not defined on older headers.
That should be fixed by a fallback defintion in lapi/. The spare in
lapi/mount.h in struct mnt_id_req should be renamed to mnt_ns_fd. And we
should use that structure if mnt_id_req is not defined in system
headers. I guess that we can use typedef for that and do something as:
struct mnt_id_req_fallback {
uint32_t size;
...
};
#if !defined(HAVE_STRUCT_MNT_ID_REQ) || !HAVE_STRUCT_MNT_ID_REQ_MNT_NS_FD
typedef struct mnt_id_req_fallback mnt_id_req
#else
typedef struct mnd_id_req mnt_id_req
#endif
And then use mnt_id_req in test with the guarantee that the mnt_ns_fd is
always there.
The second problem is the expected errno. That should be just set once
based on the kernel version in the test setup().
> }
>
> TST_EXP_FAIL(tst_syscall(__NR_listmount, req, tc->mnt_ids,
> --
> 2.51.0
>
--
Cyril Hrubis
chrubis@suse.cz
--
Mailing list info: https://lists.linux.it/listinfo/ltp
next prev parent reply other threads:[~2025-12-11 9:24 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-27 14:39 [LTP] [PATCH v1] listmount04.c: Update case support mnt_id_req.mnt_ns_fd Wei Gao via ltp
2025-11-28 3:26 ` Li Wang via ltp
2025-11-28 7:37 ` Wei Gao via ltp
2025-12-08 11:51 ` Petr Vorel
2025-12-09 0:50 ` Wei Gao via ltp
2025-12-09 0:41 ` [LTP] [PATCH v2] " Wei Gao via ltp
2025-12-09 11:17 ` Petr Vorel
2025-12-09 15:53 ` Cyril Hrubis
2025-12-09 17:49 ` Petr Vorel
2025-12-10 6:19 ` [LTP] [PATCH v3] " Wei Gao via ltp
2025-12-10 8:38 ` Petr Vorel
2025-12-11 1:59 ` [LTP] [PATCH v4] " Wei Gao via ltp
2025-12-11 9:25 ` Cyril Hrubis [this message]
2025-12-11 11:51 ` Petr Vorel
2025-12-12 11:50 ` [LTP] [PATCH v5] " Wei Gao via ltp
2025-12-12 12:28 ` Petr Vorel
2025-12-12 12:56 ` Cyril Hrubis
2025-12-12 14:20 ` Petr Vorel
2025-12-12 15:11 ` Petr Vorel
2025-12-14 1:54 ` Wei Gao via ltp
2025-12-15 15:22 ` Petr Vorel
2025-12-14 2:15 ` [LTP] [PATCH v6] " Wei Gao via ltp
2025-12-15 15:20 ` Petr Vorel
2025-12-16 8:08 ` Li Wang via ltp
2025-12-17 9:32 ` Cyril Hrubis
2025-12-17 13:15 ` Petr Vorel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aTqN9fjQhDe4WU45@yuki.lan \
--to=chrubis@suse.cz \
--cc=ltp@lists.linux.it \
--cc=wegao@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox