| 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); |
| _ |