From: Petr Vorel <pvorel@suse.cz>
To: Cyril Hrubis <chrubis@suse.cz>
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 12:51:11 +0100 [thread overview]
Message-ID: <20251211115111.GA63924@pevik> (raw)
In-Reply-To: <aTqN9fjQhDe4WU45@yuki.lan>
...
> > @@ -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.
Thanks for catching this up. I had a feeling something is wrong but was not sure
what.
> 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:
OK, I did not realize that struct size is actually the same, only struct member
has changed so that we can happily pass that to any kernel version.
> 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().
+1. I was also thinking about moving this to setup to prevent repeated detecting
but was not sure how to do it in elegant way as errno is in the struct. I guess
you mean just to store result of tst_kvercmp(6, 18, 0), but even that is not
enough. The cleanest way looks to me to add another struct member int exp_errno_old:
static bool old_kernel = true;
static struct tcase {
...
int exp_errno;
int exp_errno_old;
}
static void setup()
{
if ((tst_kvercmp(6, 18, 0)) < 0)
old_kernel = false;
}
static void run(unsigned int n)
{
...
int exp_errno = (tc->exp_errno_old && old_kernel ? tc->exp_errno_old : tc->exp_errno);
TST_EXP_FAIL(tst_syscall(__NR_listmount, req, tc->mnt_ids,
tc->nr_mnt_ids, tc->flags), exp_errno,
"%s", tc->msg);
}
Also when looking in the code I'd personally factor out tc->req_usage to make it
obvious it's not called by first tcases member.
Kind regards,
Petr
--
Mailing list info: https://lists.linux.it/listinfo/ltp
next prev parent reply other threads:[~2025-12-11 11:51 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
2025-12-11 11:51 ` Petr Vorel [this message]
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=20251211115111.GA63924@pevik \
--to=pvorel@suse.cz \
--cc=chrubis@suse.cz \
--cc=ltp@lists.linux.it \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.