On Thu, Oct 16, 2025 at 12:20 AM Andrii Nakryiko andrii.nakryiko@gmail.com wrote:
On Tue, Oct 14, 2025 at 7:50 PM Xing Guo higuoxing@gmail.com wrote:
Recently, I noticed a selftest failure in my local environment. The test_parse_test_list_file writes some data to /tmp/bpf_arg_parsing_test.XXXXXX and parse_test_list_file() will read the data back. However, after writing data to that file, we forget to call fsync() and it's causing testing failure in my laptop. This patch helps fix it by adding the missing fsync() call.
Signed-off-by: Xing Guo higuoxing@gmail.com
tools/testing/selftests/bpf/prog_tests/arg_parsing.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
I accidentally applied it to bpf-next tree and had to drop it from there.
It actually doesn't apply to bpf tree cleanly, so please rebase and resend.
But first, did you validate that fclose() actually fixes the issue for you? Because I don't think fclose() will call fsync(), will it? fclose() will basically do the same thing as should be done with fflush() anyways, so I have my doubts.
Thanks for pointing this out. Adding fclose() resolves the issue on my laptop too. I prefer switching back to using fsync() according to your comment.
Best Regards, Xing.
Furthermore, your commit message doesn't correspond to your patch. There is no fsync() call here, please fix that as well.
diff --git a/tools/testing/selftests/bpf/prog_tests/arg_parsing.c b/tools/testing/selftests/bpf/prog_tests/arg_parsing.c index bb143de68875..0f99f06116ea 100644 --- a/tools/testing/selftests/bpf/prog_tests/arg_parsing.c +++ b/tools/testing/selftests/bpf/prog_tests/arg_parsing.c @@ -140,9 +140,11 @@ static void test_parse_test_list_file(void) fprintf(fp, "testA/subtest2\n"); fprintf(fp, "testC_no_eof_newline"); fflush(fp);
if (!ASSERT_OK(ferror(fp), "prepare tmp"))
goto out_fclose;
if (!ASSERT_OK(ferror(fp), "prepare tmp")) {
fclose(fp);
goto out_remove;
}
fclose(fp); init_test_filter_set(&set);
@@ -160,8 +162,6 @@ static void test_parse_test_list_file(void)
free_test_filter_set(&set);
-out_fclose:
fclose(fp);
out_remove: remove(tmpfile); } -- 2.51.0