Re: [PATCH] zswap: Same-filled pages handling

From: Matthew Wilcox
Date: Wed Oct 18 2017 - 21:11:03 EST


On Wed, Oct 18, 2017 at 01:43:10PM -0700, Andi Kleen wrote:
> > +static int zswap_is_page_same_filled(void *ptr, unsigned long *value)
> > +{
> > + unsigned int pos;
> > + unsigned long *page;
> > +
> > + page = (unsigned long *)ptr;
> > + for (pos = 1; pos < PAGE_SIZE / sizeof(*page); pos++) {
> > + if (page[pos] != page[0])
> > + return 0;
> > + }
>
> So on 32bit it checks for 32bit repeating values and on 64bit
> for 64bit repeating values. Does that make sense?

Yes. Every 64-bit repeating pattern is also a 32-bit repeating pattern.
Supporting a 64-bit pattern on a 32-bit kernel is painful, but it makes
no sense to *not* support a 64-bit pattern on a 64-bit kernel. This is
the same approach used in zram, fwiw.