On Tue, Oct 14, 2025 at 04:03:23PM +0800, Xing Guo 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 <[email protected]>
> ---
> tools/testing/selftests/bpf/prog_tests/arg_parsing.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/tools/testing/selftests/bpf/prog_tests/arg_parsing.c
> b/tools/testing/selftests/bpf/prog_tests/arg_parsing.c
> index bb143de68875..4f071943ffb0 100644
> --- a/tools/testing/selftests/bpf/prog_tests/arg_parsing.c
> +++ b/tools/testing/selftests/bpf/prog_tests/arg_parsing.c
> @@ -140,6 +140,7 @@ static void test_parse_test_list_file(void)
> fprintf(fp, "testA/subtest2\n");
> fprintf(fp, "testC_no_eof_newline");
> fflush(fp);
> + fsync(fd);
could we just close the fp stream instead flushing it twice?
maybe something like below, but not sure ferror will work
after the fclose call
jirka
---
diff --git a/tools/testing/selftests/bpf/prog_tests/arg_parsing.c
b/tools/testing/selftests/bpf/prog_tests/arg_parsing.c
index bb143de68875..5a4c1bca2a1e 100644
--- a/tools/testing/selftests/bpf/prog_tests/arg_parsing.c
+++ b/tools/testing/selftests/bpf/prog_tests/arg_parsing.c
@@ -139,10 +139,10 @@ static void test_parse_test_list_file(void)
fprintf(fp, "testA/subtest # subtest duplicate\n");
fprintf(fp, "testA/subtest2\n");
fprintf(fp, "testC_no_eof_newline");
- fflush(fp);
+ fclose(fp);
if (!ASSERT_OK(ferror(fp), "prepare tmp"))
- goto out_fclose;
+ goto out_remove;
init_test_filter_set(&set);
@@ -160,8 +160,6 @@ static void test_parse_test_list_file(void)
free_test_filter_set(&set);
-out_fclose:
- fclose(fp);
out_remove:
remove(tmpfile);
}