Re: [PATCH v3] selftests/mm: add folio_split() and filemap_get_entry() race test
From: Zi Yan
Date: Fri Mar 20 2026 - 14:17:02 EST
On 20 Mar 2026, at 14:04, Lorenzo Stoakes (Oracle) wrote:
> On Fri, Mar 20, 2026 at 01:58:18PM -0400, Zi Yan wrote:
>> On 20 Mar 2026, at 13:53, Lorenzo Stoakes (Oracle) wrote:
>>
>>> (-cc old email)
>>>
>>> On Thu, Mar 19, 2026 at 03:04:08PM -0400, Zi Yan wrote:
>>>> The added folio_split_race_test is a modified C port of the race condition
>>>> test from [1]. The test creates shmem huge pages, where the main thread
>>>> punches holes in the shmem to cause folio_split() in the kernel and
>>>> a set of 16 threads reads the shmem to cause filemap_get_entry() in the
>>>> kernel. filemap_get_entry() reads the folio and xarray split by
>>>> folio_split() locklessly. The original test[2] is written in rust and uses
>>>> memfd (shmem backed). This C port uses shmem directly and use a single
>>>> process.
>>>>
>>>> Note: the initial rust to C conversion is done by Cursor.
>>>>
>>>> Link: https://lore.kernel.org/all/CAKNNEtw5_kZomhkugedKMPOG-sxs5Q5OLumWJdiWXv+C9Yct0w@xxxxxxxxxxxxxx/ [1]
>>>> Link: https://github.com/dfinity/thp-madv-remove-test [2]
>>>> Signed-off-by: Bas van Dijk <bas@xxxxxxxxxxx>
>>>> Signed-off-by: Adam Bratschi-Kaye <adam.bratschikaye@xxxxxxxxxxx>
>>>> Signed-off-by: Zi Yan <ziy@xxxxxxxxxx>
>>>
>>> No .gitignore entry? :)
>>>
>>> (Just saw it flag up locally in git status)
>>>
>>> Linus says don't remove, but he doesn't say don't add :P
>>
>> I did not know about that. The fixup is below. Thank you for pointing it out.
>
> To be clear I'm referencing this re: the .gitignore _removals_ ;)
>
> https://lore.kernel.org/linux-mm/CAHk-=wiHK5_oBUdUiNAaevmN9f-ORe+QBqbRefAZaw-RbgEn3w@xxxxxxxxxxxxxx/
>
> Thanks! :)
I did not know .gitignore file exists in that directory. Also good to know
about the do-not-remove rule.
>
>>
>> From bd164a7090c0e8b6e3013502c64c161214e38714 Mon Sep 17 00:00:00 2001
>> From: Zi Yan <ziy@xxxxxxxxxx>
>> Date: Fri, 20 Mar 2026 13:56:04 -0400
>> Subject: [PATCH] git: add generated binary into gitignore
>>
>> Signed-off-by: Zi Yan <ziy@xxxxxxxxxx>
>> ---
>> tools/testing/selftests/mm/.gitignore | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/tools/testing/selftests/mm/.gitignore b/tools/testing/selftests/mm/.gitignore
>> index 83ad9454dd9d1..b0c30c5ee9e30 100644
>> --- a/tools/testing/selftests/mm/.gitignore
>> +++ b/tools/testing/selftests/mm/.gitignore
>> @@ -61,3 +61,4 @@ guard-regions
>> merge
>> prctl_thp_disable
>> rmap
>> +folio_split_race_test
>> --
>> 2.51.0
>>
>>
>>
>> Best Regards,
>> Yan, Zi
>
> Cheers, Lorenzo
Best Regards,
Yan, Zi