* [PATCH] selftests: mm: capture write_hugetlb_memory.sh exit status
@ 2026-04-05 19:46 CaoRuichuang
2026-04-05 20:20 ` Andrew Morton
0 siblings, 1 reply; 3+ messages in thread
From: CaoRuichuang @ 2026-04-05 19:46 UTC (permalink / raw)
To: akpm, david
Cc: ljs, Liam.Howlett, vbabka, rppt, surenb, mhocko, shuah, linux-mm,
linux-kselftest, linux-kernel, CaoRuichuang
charge_reserved_hugetlb.sh backgrounds write_hugetlb_memory.sh and immediately stores $? in write_result.
That only records whether the background job was started successfully, not whether write_hugetlb_memory.sh itself later failed. As a result, the test can miss reservation failure and OOM-kill outcomes that are inferred from the writer exit status.
Redirect the writer output straight to the temporary log file and wait for the background process before inspecting write_result, so the test records the actual exit status.
Signed-off-by: CaoRuichuang <create0818@163.com>
---
tools/testing/selftests/mm/charge_reserved_hugetlb.sh | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/mm/charge_reserved_hugetlb.sh b/tools/testing/selftests/mm/charge_reserved_hugetlb.sh
index 447769657..2f52ad7c8 100755
--- a/tools/testing/selftests/mm/charge_reserved_hugetlb.sh
+++ b/tools/testing/selftests/mm/charge_reserved_hugetlb.sh
@@ -193,9 +193,9 @@ function write_hugetlbfs_and_get_usage() {
[[ "$private" == "-r" ]] && [[ "$expect_failure" != 1 ]]; then
bash write_hugetlb_memory.sh "$size" "$populate" "$write" \
- "$cgroup" "$path" "$method" "$private" "-l" "$reserve" 2>&1 | tee $output &
+ "$cgroup" "$path" "$method" "$private" "-l" "$reserve" \
+ >"$output" 2>&1 &
- local write_result=$?
local write_pid=$!
until grep -q -i "DONE" $output; do
@@ -223,6 +223,8 @@ function write_hugetlbfs_and_get_usage() {
sleep 0.5
fi
+ wait "$write_pid"
+ local write_result=$?
echo write_result is $write_result
else
bash write_hugetlb_memory.sh "$size" "$populate" "$write" \
--
2.39.5 (Apple Git-154)
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] selftests: mm: capture write_hugetlb_memory.sh exit status
2026-04-05 19:46 [PATCH] selftests: mm: capture write_hugetlb_memory.sh exit status CaoRuichuang
@ 2026-04-05 20:20 ` Andrew Morton
2026-04-05 21:35 ` CaoRuichuang
0 siblings, 1 reply; 3+ messages in thread
From: Andrew Morton @ 2026-04-05 20:20 UTC (permalink / raw)
To: CaoRuichuang
Cc: david, ljs, Liam.Howlett, vbabka, rppt, surenb, mhocko, shuah,
linux-mm, linux-kselftest, linux-kernel, Mina Almasry
On Mon, 6 Apr 2026 03:46:23 +0800 CaoRuichuang <create0818@163.com> wrote:
Please word-wrap your emails!
I fixed it.
> charge_reserved_hugetlb.sh backgrounds write_hugetlb_memory.sh and
> immediately stores $? in write_result.
Yes.
> That only records whether the background job was started successfully,
> not whether write_hugetlb_memory.sh itself later failed. As a result,
> the test can miss reservation failure and OOM-kill outcomes that are
> inferred from the writer exit status.
Seems that way.
> Redirect the writer output straight to the temporary log file and wait
> for the background process before inspecting write_result, so the test
> records the actual exit status.
Looks good to me.
It appears that this code is from 2020.
Question is, will this change break the selftests because it discovers
previously undiscovered failures!
> index 447769657..2f52ad7c8 100755
> --- a/tools/testing/selftests/mm/charge_reserved_hugetlb.sh
> +++ b/tools/testing/selftests/mm/charge_reserved_hugetlb.sh
> @@ -193,9 +193,9 @@ function write_hugetlbfs_and_get_usage() {
> [[ "$private" == "-r" ]] && [[ "$expect_failure" != 1 ]]; then
>
> bash write_hugetlb_memory.sh "$size" "$populate" "$write" \
> - "$cgroup" "$path" "$method" "$private" "-l" "$reserve" 2>&1 | tee $output &
> + "$cgroup" "$path" "$method" "$private" "-l" "$reserve" \
> + >"$output" 2>&1 &
>
> - local write_result=$?
> local write_pid=$!
>
> until grep -q -i "DONE" $output; do
> @@ -223,6 +223,8 @@ function write_hugetlbfs_and_get_usage() {
> sleep 0.5
> fi
>
> + wait "$write_pid"
> + local write_result=$?
> echo write_result is $write_result
> else
> bash write_hugetlb_memory.sh "$size" "$populate" "$write" \
Do we actually need to play these backgrounding games? We run
write_hugetlb_memory.sh then synchronously wait for it, polling its
output. Why don't we simply run write_hugetlb_memory.sh synchronously?
Do away with that grep loop and the replaying of
write_hugetlb_memory.sh's output.
The 29750f71a9b4c changelog doesn't explain why it's done this way.
Maybe Mina recalls?
Thanks, I'll set this aside for consideration after -rc1. I expect a
cc:stable will be wanted.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] selftests: mm: capture write_hugetlb_memory.sh exit status
2026-04-05 20:20 ` Andrew Morton
@ 2026-04-05 21:35 ` CaoRuichuang
0 siblings, 0 replies; 3+ messages in thread
From: CaoRuichuang @ 2026-04-05 21:35 UTC (permalink / raw)
To: Andrew Morton
Cc: David Hildenbrand, Lorenzo Stoakes, Liam R. Howlett,
Vlastimil Babka, Mike Rapoport, Suren Baghdasaryan, Michal Hocko,
Shuah Khan, linux-mm, linux-kselftest, linux-kernel,
Mina Almasry, CaoRuichuang
Hi Andrew,
Thanks for the review.
I re-evaluated this after your question about the backgrounding model,
and I don't think this patch should move forward as-is.
In the async branch, write_hugetlb_memory.sh is invoked with -l, and
write_to_hugetlbfs prints DONE and then deliberately sleeps until
cleanup_hugetlb_memory() sends SIGINT. Waiting for $write_pid in that
path therefore blocks before cleanup runs, so my patch can deadlock
instead of reporting a meaningful exit status.
So I'll drop this change for now rather than push a flawed fix.
While validating the test on a minimal Ubuntu VM, I did find a different,
reproducible issue in the same selftest: cleanup currently depends on
killall from psmisc. I sent a separate patch for that one.
If there is a clearer direction for simplifying or tightening this async
flow after -rc1, I'll follow up on it.
Thanks,
CaoRuichuang
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-04-05 21:35 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-04-05 19:46 [PATCH] selftests: mm: capture write_hugetlb_memory.sh exit status CaoRuichuang
2026-04-05 20:20 ` Andrew Morton
2026-04-05 21:35 ` CaoRuichuang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox