From: Cyril Hrubis <chrubis@suse.cz>
To: Shirisha G <shirisha@linux.ibm.com>
Cc: ltp@lists.linux.it
Subject: Re: [LTP] [PATCH v4] Migrating the libhugetlbfs/testcases/truncate.c test
Date: Fri, 28 Jun 2024 16:19:33 +0200 [thread overview]
Message-ID: <Zn7GdRv33zuC1Eig@yuki> (raw)
In-Reply-To: <20240322052812.633953-1-shirisha@linux.ibm.com>
Hi!
> Test Description: Test is used to verify the correct functionality
> and compatibility of the library with the "truncate" system
> call when operating on files residing in a mounted
> huge page filesystem.
>
> Signed-off-by: Shirisha G <shirisha@linux.ibm.com>
> ---
> v4:
> --Addressed the below requested changes
> 1. Added SAFE_FTRUNCATE()
> 2. Fixed run test more times (-iN)
> 3. Fixed warning: unused parameter ‘signum’ [-Wunused-parameter]
> 4. Added blank lines wherever needed which helps the readability
> 5. Ran make check and fixed the issues
> ---
> v3:
> -Addressed the below requested changes
> 1. Removed RANDOM_CONSTANT
> 2. Made hpage_size and fd to static
> 3. Used a volatile variable as a flag
> to pass test in the run_test()
> 4. Removed the failure condition for SAFE_MMAP()
> 5. Have setup the handler in the setup()
> 6. Added SAFE_MUNMAP()
> 7. Ran make check and fixed all issues
> ---
> v2:
> -Corrected typo
> ---
> runtest/hugetlb | 1 +
> testcases/kernel/mem/.gitignore | 1 +
> .../kernel/mem/hugetlb/hugemmap/hugemmap33.c | 87 +++++++++++++++++++
> 3 files changed, 89 insertions(+)
> create mode 100644 testcases/kernel/mem/hugetlb/hugemmap/hugemmap33.c
>
> diff --git a/runtest/hugetlb b/runtest/hugetlb
> index 299c07ac9..1300e80fb 100644
> --- a/runtest/hugetlb
> +++ b/runtest/hugetlb
> @@ -35,6 +35,7 @@ hugemmap29 hugemmap29
> hugemmap30 hugemmap30
> hugemmap31 hugemmap31
> hugemmap32 hugemmap32
> +hugemmap33 hugemmap33
> hugemmap05_1 hugemmap05 -m
> hugemmap05_2 hugemmap05 -s
> hugemmap05_3 hugemmap05 -s -m
> diff --git a/testcases/kernel/mem/.gitignore b/testcases/kernel/mem/.gitignore
> index c96fe8bfc..444acdf52 100644
> --- a/testcases/kernel/mem/.gitignore
> +++ b/testcases/kernel/mem/.gitignore
> @@ -34,6 +34,7 @@
> /hugetlb/hugemmap/hugemmap30
> /hugetlb/hugemmap/hugemmap31
> /hugetlb/hugemmap/hugemmap32
> +/hugetlb/hugemmap/hugemmap33
> /hugetlb/hugeshmat/hugeshmat01
> /hugetlb/hugeshmat/hugeshmat02
> /hugetlb/hugeshmat/hugeshmat03
> diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap33.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap33.c
> new file mode 100644
> index 000000000..eb21e204c
> --- /dev/null
> +++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap33.c
> @@ -0,0 +1,87 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Copyright (C) 2005-2006 IBM Corporation.
> + * Author: David Gibson & Adam Litke
> + */
> +
> +/*\
> + * [Description]
> + *
> + * Test case is used to verify the correct functionality
> + * and compatibility of the library with the "truncate" system call when
> + * operating on files residing in a mounted huge page filesystem.
> + */
> +
> +#include "hugetlb.h"
> +#include <setjmp.h>
> +#include <signal.h>
> +
> +#define MNTPOINT "hugetlbfs/"
> +
> +static long hpage_size;
> +static int fd;
> +static sigjmp_buf sig_escape;
> +static volatile int test_pass;
> +static int sigbus_count;
> +
> +static void sigbus_handler(int signum LTP_ATTRIBUTE_UNUSED)
> +{
> + test_pass = 1;
> + siglongjmp(sig_escape, 17);
> +}
> +
> +static void run_test(void)
> +{
> + void *p;
> + volatile unsigned int *q;
> +
> + sigbus_count = 0;
> + test_pass = 0;
> +
> + struct sigaction my_sigaction;
> +
> + my_sigaction.sa_handler = sigbus_handler;
> + p = SAFE_MMAP(NULL, hpage_size, PROT_READ|PROT_WRITE, MAP_SHARED,
> + fd, 0);
> + q = p;
> + *q = 0;
> + SAFE_SIGACTION(SIGBUS, &my_sigaction, NULL);
> +
> + SAFE_FTRUNCATE(fd, 0);
> +
> + if (sigsetjmp(sig_escape, 1) == 0)
> + *q;
> + else
> + sigbus_count++;
> +
You should reset the SIGBUS handler to SIGDFL here, otherwise all
subsequent runs run with the handler installed during the whole
run_test() function. I suppose that you purposely install it after you
have faulted a page in the file with *q = 0 to jump to the
sigbus_count++ branch.
> + if (sigbus_count != 1)
> + tst_res(TFAIL, "Didn't SIGBUS");
> +
> + if (test_pass == 1)
> + tst_res(TPASS, "Expected SIGBUS triggered");
This is really redundant. Since we use siglongjmp() we don't need a
variable set in the signal handler. And we have to report some result
either case, so this should really be:
if (sigbus_count)
tst_res(TPASS, "Got SIGBUS");
else
tst_res(TFAIL, "Haven't got SIGBUS");
> + SAFE_MUNMAP(p, hpage_size);
> +}
> +
> +
> +static void setup(void)
> +{
> + hpage_size = tst_get_hugepage_size();
> + fd = tst_creat_unlinked(MNTPOINT, 0);
> +}
> +
> +static void cleanup(void)
> +{
> + if (fd > 0)
> + SAFE_CLOSE(fd);
> +}
> +
> +static struct tst_test test = {
> + .needs_root = 1,
> + .mntpoint = MNTPOINT,
> + .needs_hugetlbfs = 1,
> + .needs_tmpdir = 1,
> + .setup = setup,
> + .cleanup = cleanup,
> + .test_all = run_test,
> + .hugepages = {1, TST_NEEDS},
> +};
> --
> 2.39.3
>
>
> --
> Mailing list info: https://lists.linux.it/listinfo/ltp
--
Cyril Hrubis
chrubis@suse.cz
--
Mailing list info: https://lists.linux.it/listinfo/ltp
next prev parent reply other threads:[~2024-06-28 14:20 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-22 5:28 [LTP] [PATCH v4] Migrating the libhugetlbfs/testcases/truncate.c test Shirisha G
2024-03-22 5:41 ` Petr Vorel
2024-03-22 6:02 ` Petr Vorel
2024-06-28 14:19 ` Cyril Hrubis [this message]
2024-06-28 14:21 ` Cyril Hrubis
-- strict thread matches above, loose matches on Subject: below --
2024-03-22 5:08 Shirisha G
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=Zn7GdRv33zuC1Eig@yuki \
--to=chrubis@suse.cz \
--cc=ltp@lists.linux.it \
--cc=shirisha@linux.ibm.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 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.