blob: 04aca36ba6c2b37747652e29c81db45a9a115471 [file] [log] [blame]
From: Sergey Senozhatsky <senozhatsky@chromium.org>
Subject: zram: permit reclaim in recompression handle allocation
Date: Mon, 27 Jan 2025 16:29:18 +0900
Recompression path can now permit direct reclaim during new zs_handle
allocation, because it's not atomic anymore.
Link: https://lkml.kernel.org/r/20250127072932.1289973-8-senozhatsky@chromium.org
Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org>
Cc: Minchan Kim <minchan@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
drivers/block/zram/zram_drv.c | 12 +++---------
1 file changed, 3 insertions(+), 9 deletions(-)
--- a/drivers/block/zram/zram_drv.c~zram-permit-reclaim-in-recompression-handle-allocation
+++ a/drivers/block/zram/zram_drv.c
@@ -1988,17 +1988,11 @@ static int recompress_slot(struct zram *
return 0;
/*
- * No direct reclaim (slow path) for handle allocation and no
- * re-compression attempt (unlike in zram_write_bvec()) since
- * we already have stored that object in zsmalloc. If we cannot
- * alloc memory for recompressed object then we bail out and
- * simply keep the old (existing) object in zsmalloc.
+ * If we cannot alloc memory for recompressed object then we bail out
+ * and simply keep the old (existing) object in zsmalloc.
*/
handle_new = zs_malloc(zram->mem_pool, comp_len_new,
- __GFP_KSWAPD_RECLAIM |
- __GFP_NOWARN |
- __GFP_HIGHMEM |
- __GFP_MOVABLE);
+ GFP_NOIO | __GFP_HIGHMEM | __GFP_MOVABLE);
if (IS_ERR_VALUE(handle_new)) {
zcomp_stream_put(zram->comps[prio], zstrm);
return PTR_ERR((void *)handle_new);
_