On 05.06.24 05:44, Alex Shi wrote:
On 6/4/24 9:18 PM, David Hildenbrand wrote:
@@ -2369,7 +2371,7 @@ static void cmp_and_merge_page(struct page *page, struct ksm_rmap_item *rmap_ite
* don't want to insert it in the unstable tree, and we don't want
* to waste our time searching for something identical to it there.
*/
- checksum = calc_checksum(page);
+ checksum = calc_checksum(folio);
So for a large folio you suddenly checksum more than a single page? That's wrong.
Or am I missing something?
I am not sure if this change are good too, anyway, comparing the whole folio may have it advantages on efficiency, but more splitting do save more pages.
Calculating the checksum of something that could be a large folio when
you might want to deduplicate subpages of the folio (and decide if you
might want to split it) sound very wrong.
Please pay more attention to the details how the current code works and
how it all works with tail pages.
--
Cheers,
David / dhildenb