All of lore.kernel.org
 help / color / mirror / Atom feed
From: Brian Geffon <bgeffon@google.com>
To: Sergey Senozhatsky <senozhatsky@chromium.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Minchan Kim <minchan@kernel.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCHv2 1/2] zram: clear IDLE flag after recompression
Date: Mon, 28 Oct 2024 13:56:09 -0400	[thread overview]
Message-ID: <Zx_QOW79R5m6mg21@google.com> (raw)
In-Reply-To: <20241028153629.1479791-2-senozhatsky@chromium.org>

On Tue, Oct 29, 2024 at 12:36:14AM +0900, Sergey Senozhatsky wrote:
> Recompression should clear ZRAM_IDLE flag on the entries
> it has accessed, because otherwise some entries, specifically
> those for which recompression has failed, become immediate
> candidate entries for another post-processing (e.g. writeback).
> 
> Consider the following case:
> - recompression marks entries IDLE every 4 hours and attempts
>   to recompress them
> - some entries are incompressible, so we keep them intact and
>   hence preserve IDLE flag
> - writeback marks entries IDLE every 8 hours and writebacks
>   IDLE entries, however we have IDLE entries left from
>   recompression, so writeback prematurely writebacks those
>   entries.
> 
> The bug was reported by Shin Kawamura.
Reported-by: Shin Kawamura <kawasin@google.com>

> 
> Fixes: 84b33bf78889 ("zram: introduce recompress sysfs knob")
> Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org>
Acked-by: Brian Geffon <bgeffon@google.com>

> ---
>  drivers/block/zram/zram_drv.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
> index e6d12e81241d..a16dbffcdca3 100644
> --- a/drivers/block/zram/zram_drv.c
> +++ b/drivers/block/zram/zram_drv.c
> @@ -1864,6 +1864,13 @@ static int recompress_slot(struct zram *zram, u32 index, struct page *page,
>  	if (ret)
>  		return ret;
>  
> +	/*
> +	 * We touched this entry so mark it as non-IDLE. This makes sure that
> +	 * we don't preserve IDLE flag and don't incorrectly pick this entry
> +	 * for different post-processing type (e.g. writeback).
> +	 */
> +	zram_clear_flag(zram, index, ZRAM_IDLE);
> +
>  	class_index_old = zs_lookup_class_index(zram->mem_pool, comp_len_old);
>  	/*
>  	 * Iterate the secondary comp algorithms list (in order of priority)
> -- 
> 2.47.0.163.g1226f6d8fa-goog
> 

  reply	other threads:[~2024-10-28 17:56 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-28 15:36 [PATCHv2 0/2] zram: IDLE flag handling fixes Sergey Senozhatsky
2024-10-28 15:36 ` [PATCHv2 1/2] zram: clear IDLE flag after recompression Sergey Senozhatsky
2024-10-28 17:56   ` Brian Geffon [this message]
2024-10-28 15:36 ` [PATCHv2 2/2] zram: clear IDLE flag in mark_idle() Sergey Senozhatsky
2024-10-28 17:57   ` Brian Geffon
2024-10-29  0:09     ` Sergey Senozhatsky

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Zx_QOW79R5m6mg21@google.com \
    --to=bgeffon@google.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=minchan@kernel.org \
    --cc=senozhatsky@chromium.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.