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.