From: Brendan Jackman <jackmanb@google.com>
To: Ujwal Kundur <ujwal.kundur@gmail.com>,
<akpm@linux-foundation.org>, <peterx@redhat.com>,
<shuah@kernel.org>
Cc: <linux-mm@kvack.org>, <linux-kselftest@vger.kernel.org>,
<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v3 1/1] selftests/mm/uffd: Refactor non-composite global vars into struct
Date: Tue, 13 May 2025 12:12:29 +0000 [thread overview]
Message-ID: <D9V0UTL5BCLM.1WHR6F4UN14QQ@google.com> (raw)
In-Reply-To: <20250510160335.1898-1-ujwal.kundur@gmail.com>
On Sat May 10, 2025 at 4:03 PM UTC, Ujwal Kundur wrote:
> Refactor macros and non-composite global variable definitions into a
> struct that is defined at the start of a test and is passed around
> instead of relying on global vars.
>
> Signed-off-by: Ujwal Kundur <ujwal.kundur@gmail.com>
Tested-by: Brendan Jackman <jackmanb@google.com
Using this hacked to enable the uffd tests (I disable them normally
because they're flaky):
https://github.com/bjackman/linux/blob/github-base/.github/scripts/run_local.sh
> ---
> Changes since v2:
> - redo patch on mm-new branch
> Changes since v1:
> - indentation fixes
> - squash into single patch to assist bisections
Thanks for this.
> -static void retry_copy_page(int ufd, struct uffdio_copy *uffdio_copy,
> - unsigned long offset)
> +static void retry_copy_page(uffd_global_test_opts_t *gopts, struct uffdio_copy *uffdio_copy,
> + unsigned long offset)
> {
> - uffd_test_ops->alias_mapping(&uffdio_copy->dst,
> - uffdio_copy->len,
> - offset);
> - if (ioctl(ufd, UFFDIO_COPY, uffdio_copy)) {
> + uffd_test_ops->alias_mapping(gopts,
> + &uffdio_copy->dst,
> + uffdio_copy->len,
> + offset);
Looks like your editor got a bit excited here :D
There are a few other places where this happened too, e.g. the
are_count() declaration and there's a pthread_create_call() that's quite
messed up.
Unfortunately I don't know of any tool that can find/fix these issues
automatically without also messing up the whole file. Could you just
do a visual skim and fix what you can spot?
> static void sigalrm(int sig)
> {
> if (sig != SIGALRM)
> abort();
> - test_uffdio_copy_eexist = true;
> + // TODO: Set this without access to global vars
> + // gopts->test_uffdio_copy_eexist = true;
Did you mean to leave this like that?
> @@ -1734,6 +1737,27 @@ int main(int argc, char *argv[])
> }
> for (j = 0; j < n_mems; j++) {
> mem_type = &mem_types[j];
> +
> + // Initialize global test options
Wrong comment style here
> + uffd_global_test_opts_t gopts;
> +
> + gopts.map_shared = mem_type->shared;
> + uffd_test_ops = mem_type->mem_ops;
> + uffd_test_case_ops = test->test_case_ops;
> +
> + if (mem_type->mem_flag & (MEM_HUGETLB_PRIVATE | MEM_HUGETLB))
> + gopts.page_size = default_huge_page_size();
> + else
> + gopts.page_size = psize();
> +
> + /* Ensure we have at least 2 pages */
> + gopts.nr_pages = MAX(UFFD_TEST_MEM_SIZE, gopts.page_size * 2) / gopts.page_size;
> + /* TODO: remove this global var.. it's so ugly */
That's done :)
> + gopts.nr_parallel = 1;
> +
> + /* Initialize test arguments */
(This comment seems like noise? I could be wrong, not a big deal).
Thanks for these improvements. Bit of a hasty review and I'm not really
qualified to comment on the test logic itself, but aside from that and
my nits:
Reviewed-by: Brendan Jackman <jackmanb@google.com>
next prev parent reply other threads:[~2025-05-13 12:12 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-01 16:38 [PATCH 0/4] selftests/mm/uffd: refactor global variables Ujwal Kundur
2025-05-01 16:38 ` [PATCH 1/4] selftests/mm/uffd: Refactor non-composite global vars into struct Ujwal Kundur
2025-05-02 12:16 ` Brendan Jackman
2025-05-02 12:28 ` Brendan Jackman
2025-05-03 18:16 ` Ujwal Kundur
2025-05-04 2:25 ` Andrew Morton
2025-05-01 16:38 ` [PATCH 2/4] selftests/mm/uffd: Swap global vars with global test options Ujwal Kundur
2025-05-01 16:38 ` [PATCH 3/4] selftests/mm/uffd: Swap global variables with global test opts Ujwal Kundur
2025-05-01 16:38 ` [PATCH 4/4] " Ujwal Kundur
2025-05-02 12:18 ` [PATCH 0/4] selftests/mm/uffd: refactor global variables Brendan Jackman
2025-05-04 9:48 ` [PATCH v2 1/1] selftests/mm/uffd: Refactor non-composite global vars into struct Ujwal Kundur
2025-05-06 0:57 ` Andrew Morton
2025-05-10 16:03 ` [PATCH v3 " Ujwal Kundur
2025-05-13 12:12 ` Brendan Jackman [this message]
2025-05-19 13:50 ` Ujwal Kundur
2025-05-19 21:40 ` Andrew Morton
2025-05-20 9:16 ` Brendan Jackman
2025-05-25 19:19 ` Ujwal Kundur
2025-05-26 9:08 ` Brendan Jackman
2025-05-30 7:45 ` Ujwal Kundur
2025-05-31 7:46 ` [PATCH v4 " Ujwal Kundur
2025-06-10 6:57 ` Ujwal Kundur
2025-06-10 11:32 ` Brendan Jackman
2025-06-16 6:38 ` Ujwal Kundur
2025-06-16 10:04 ` [PATCH v5 " Ujwal Kundur
2025-06-17 0:26 ` Andrew Morton
2025-06-17 15:52 ` Peter Xu
2025-06-17 17:22 ` Peter Xu
2025-06-18 10:00 ` Brendan Jackman
2025-06-26 5:22 ` Ujwal Kundur
2025-06-26 14:12 ` Peter Xu
2025-06-30 11:25 ` Ujwal Kundur
2025-07-02 15:20 ` [PATCH v6 " Ujwal Kundur
2025-07-04 16:20 ` Peter Xu
2025-07-10 5:07 ` Ujwal Kundur
2025-08-06 15:03 ` Ujwal Kundur
2025-08-07 16:45 ` Peter Xu
2025-08-13 11:33 ` Brendan Jackman
2025-08-16 14:12 ` Ujwal Kundur
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=D9V0UTL5BCLM.1WHR6F4UN14QQ@google.com \
--to=jackmanb@google.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=peterx@redhat.com \
--cc=shuah@kernel.org \
--cc=ujwal.kundur@gmail.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.