mbox series

[v2,0/2] Fix the compatibility of zsmalloc and zswap

Message ID 20210213075831.10852-1-song.bao.hua@hisilicon.com (mailing list archive)
Headers show
Series Fix the compatibility of zsmalloc and zswap | expand

Message

Song Bao Hua (Barry Song) Feb. 13, 2021, 7:58 a.m. UTC
The compatibility of zsmalloc and zswap was broken by commit 1ec3b5fe6eec
("mm/zswap: move to use crypto_acomp API for hardware acceleration").

patch #1 add a flag to zpool, then zswap used it to determine if zpool
drivers such as zbud/z3fold/zsmalloc will enter an atomic context after
mapping. the difference between zbud/z3fold and zsmalloc is that zsmalloc
requires an atomic context since its map function holds a
preempt-disabled lock, but zbud/z3fold don't require an atomic context.
so patch #2 set flag sleep_mapped to true indicates that zbud/z3fold can
sleep after mapping. zsmalloc didn't support sleep after mapping, so not
set that flag to true.

-v2:
  * folded-merged sanitizer check patches into tiantao's patch1(done by
  Andrew);
  * added fixes tag in changelog and refined commit log(done by Barry)

Tian Tao (2):
  mm/zswap: add a flag to indicate if zpool can do sleep map
  mm: set the sleep_mapped to true for zbud and z3fold

 include/linux/zpool.h |  3 +++
 mm/z3fold.c           |  1 +
 mm/zbud.c             |  1 +
 mm/zpool.c            | 13 +++++++++++
 mm/zswap.c            | 51 ++++++++++++++++++++++++++++++++++++++-----
 5 files changed, 64 insertions(+), 5 deletions(-)

Comments

Andrew Morton Feb. 13, 2021, 10:33 p.m. UTC | #1
On Sat, 13 Feb 2021 20:58:29 +1300 Barry Song <song.bao.hua@hisilicon.com> wrote:

> The compatibility of zsmalloc and zswap was broken by commit 1ec3b5fe6eec
> ("mm/zswap: move to use crypto_acomp API for hardware acceleration").
> 
> patch #1 add a flag to zpool, then zswap used it to determine if zpool
> drivers such as zbud/z3fold/zsmalloc will enter an atomic context after
> mapping. the difference between zbud/z3fold and zsmalloc is that zsmalloc
> requires an atomic context since its map function holds a
> preempt-disabled lock, but zbud/z3fold don't require an atomic context.
> so patch #2 set flag sleep_mapped to true indicates that zbud/z3fold can
> sleep after mapping. zsmalloc didn't support sleep after mapping, so not
> set that flag to true.

OK, thanks for cleaning all that up.

I'll send it in to Linus for 5.11 if there will be a -rc8.  Otherwise
for 5.12-rc1 with a cc:stable so this gets repaired in 5.11.1.