On 3/13/2024 9:53 AM, David Hildenbrand wrote:
* 1 reference if the folio has private data (thank you, bufferheads)
Oh. Is that the bug? can_split_folio() doesn't know that. This
usually isn't a problem because, eg, truncate_inode_partial_folio()
will remove the private data before calling split_folio(). But
memory-failure doesn't know about that rule ...
The worst thing that could happen is that splitting the folio would
fail (because one more unexpected reference), not that we would split
where we shouldn't, right?
No, that's not it. shmem doesn't use the folio private flag. It's
still a bug, but it's not Jane's bug.
Maybe *something* really accidentally dropped a page reference :/
Reproducer + details would be great.
Thank you Matthew and David, let me take some time digesting points you
raised, and rerun the test, hopefully not only on my hacked up kernel
for emulating GUP pin, but with real mr_register(), and report my findings.
thanks!
-jane