On Fri, Oct 16, 2026 at 05:47:57PM +0530, Sarthak Sharma wrote:
> > +/*
> > + * An unmapped gap in the range makes either hint fail with ENOMEM, after
> > + * advising the mapped pages on both sides of the gap. Only MADV_PAGEOUT
> > has
> > + * an effect on those pages that the test can observe.
> > + */
> > +TEST_F(madvise, unmapped_gap_fails_after_advising)
> > +{
> > + char *mapping, *control;
> > + bool swapped = false;
> > + int retry;
> > +
> > + pin_to_current_cpu(_metadata);
> > +
> > + /* Make sure MADV_PAGEOUT can swap at all before relying on it. */
> > + control = mmap(NULL, page_size, PROT_READ | PROT_WRITE,
> > + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
> > + ASSERT_NE(control, MAP_FAILED);
> > + control[0] = 1;
> > + if (!pageout_until_swapped(_metadata, control, page_size,
> > + self->pagemap_fd))
> > + SKIP(return, "MADV_PAGEOUT did not swap the page");
>
> This test is checking for both MADV_COLD and MADV_PAGEOUT. So if we skip
> here because we couldn't pageout, then we don't test for MADV_COLD
> behaviour at all. Do we want it this way, or should the tests for both
> of these be separate?
>
If swap is off, the behavior of COLD and PAGEOUT look pretty much the
same, and we can't actually test them meaningfully.
We check that madvise(COLD) returns -1, but that's also largely
meaningless if this initial pageout_until_swapped() call fails.
At least that's my thought. If you think I should split it, I can.
~Gregory