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
>
next prev parent 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.