This is a subset of [1] series which contains only fixes and improvements (no new features, as ZRAM_HUGE split is still under consideration). The motivation for factoring out is that zram_write_page() gets more and more complex all the time, because it tries to handle too many scenarios: ZRAM_SAME store, ZRAM_HUGE store, compress page store with zs_malloc allocation slowpath and conditional recompression, etc. Factor those out and make things easier to handle. Addition of cond_resched() is simply a fix, I can trigger watchdog from zram writeback(). And early slot free is just a reasonable thing to do. [1] https://lore.kernel.org/linux-kernel/20241119072057.3440039-1-senozhatsky@xxxxxxxxxxxx Sergey Senozhatsky (7): zram: free slot memory early during write zram: remove entry element member zram: factor out ZRAM_SAME write zram: factor out ZRAM_HUGE write zram: factor out different page types read zram: use zram_read_from_zspool() in writeback zram: cond_resched() in writeback loop drivers/block/zram/zram_drv.c | 301 +++++++++++++++++++--------------- drivers/block/zram/zram_drv.h | 5 +- 2 files changed, 171 insertions(+), 135 deletions(-) -- 2.47.1.613.gc27f4b7a9f-goog