Re: [PATCH v6 6/6] zsmalloc: Implement writeback mechanism for zsmalloc

From: Johannes Weiner
Date: Tue Nov 22 2022 - 02:10:28 EST


On Tue, Nov 22, 2022 at 03:35:18PM +0900, Sergey Senozhatsky wrote:
> On (22/11/22 01:09), Johannes Weiner wrote:
> > On Tue, Nov 22, 2022 at 12:42:20PM +0900, Sergey Senozhatsky wrote:
> > > On (22/11/21 22:12), Johannes Weiner wrote:
> > > > On Tue, Nov 22, 2022 at 11:15:20AM +0900, Sergey Senozhatsky wrote:
> > > > > On (22/11/18 16:15), Nhat Pham wrote:
>
> [..]
>
> > > What I meant was: if zs_reclaim_page() makes only partial progress
> > > with the current LRU tail zspage and returns -EAGAIN, then we just
> > > don't increment `total` and continue looping in zs_zpool_shrink().
> >
> > Hm, but it breaks on -EAGAIN, it doesn't continue.
>
> Yes. "What if it would continue". Would it make sense to not
> break on EAGAIN?
>
> while (total < pages) {
> ret = zs_reclaim_page(pool);
> if (ret == -EAGAIN)
> continue;
> if (ret < 0)
> break;
> total++;
> }
>
> Then we don't need retry loop in zs_reclaim_page().

But that's an indefinite busy-loop?

I don't see what the problem with limited retrying in
zs_reclaim_page() is. It's robust and has worked for years.