The page allocation with GFP_NOIO may fail. And zram can handle this allocation failure. We do not need to print log for this. Actually warn_alloc was more restricted by commit 1be334e5c088 ("mm/page_alloc.c: ratelimit allocation failure warnings more aggressively"). To catch other allocation failure, zram can use __GFP_NOWARN. This is what I got. kswapd0: page allocation failure: order:0, mode:0x140000a(GFP_NOIO|__GFP_HIGHMEM|__GFP_MOVABLE), nodemask=(null) kswapd0 cpuset=/ mems_allowed=0 Call trace: dump_backtrace+0x0/0x218 show_stack+0x14/0x1c dump_stack+0xb8/0xf0 warn_alloc+0x110/0x234 __alloc_pages_nodemask+0x11c0/0x12a0 zs_malloc+0x1ac/0x50c zram_bvec_rw+0x1a4/0x6a8 zram_make_request+0x23c/0x328 generic_make_request+0xe4/0x270 submit_bio+0x64/0x2a8 __swap_writepage+0x3a8/0x404 swap_writepage+0x40/0x4c shrink_page_list.llvm.15153564514306699876+0xffc/0x13a0 shrink_inactive_list+0x2dc/0x710 shrink_node_memcg+0x394/0x940 shrink_node+0x194/0x380 Signed-off-by: Jaewon Kim <jaewon31.kim@xxxxxxxxxxx> --- drivers/block/zram/zram_drv.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c index e9474b02012d..c22201da25bb 100644 --- a/drivers/block/zram/zram_drv.c +++ b/drivers/block/zram/zram_drv.c @@ -1405,6 +1405,7 @@ static int __zram_bvec_write(struct zram *zram, struct bio_vec *bvec, atomic64_inc(&zram->stats.writestall); handle = zs_malloc(zram->mem_pool, comp_len, GFP_NOIO | __GFP_HIGHMEM | + __GFP_NOWARN | __GFP_MOVABLE); if (handle) goto compress_again; -- 2.17.1