On Tue, 22 Dec 2020, 22:06 Song Bao Hua (Barry Song),
<song.bao.hua@xxxxxxxxxxxxx> wrote:
No, I really don't think we should go that far. What if we add a flag
-----Original Message-----I see. But it seems we still need a solution for the compatibility
From: Vitaly Wool [mailto:vitaly.wool@xxxxxxxxxxxx]
Sent: Tuesday, December 22, 2020 10:44 PM
To: Song Bao Hua (Barry Song) <song.bao.hua@xxxxxxxxxxxxx>
Cc: Shakeel Butt <shakeelb@xxxxxxxxxx>; Minchan Kim <minchan@xxxxxxxxxx>; Mike
Galbraith <efault@xxxxxx>; LKML <linux-kernel@xxxxxxxxxxxxxxx>; linux-mm
<linux-mm@xxxxxxxxx>; Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx>;
NitinGupta <ngupta@xxxxxxxxxx>; Sergey Senozhatsky
<sergey.senozhatsky.work@xxxxxxxxx>; Andrew Morton
<akpm@xxxxxxxxxxxxxxxxxxxx>; tiantao (H) <tiantao6@xxxxxxxxxxxxx>
Subject: Re: [PATCH] zsmalloc: do not use bit_spin_lock
On Tue, 22 Dec 2020, 03:11 Song Bao Hua (Barry Song),
<song.bao.hua@xxxxxxxxxxxxx> wrote:
Mike
-----Original Message-----
From: Song Bao Hua (Barry Song)
Sent: Tuesday, December 22, 2020 3:03 PM
To: 'Vitaly Wool' <vitaly.wool@xxxxxxxxxxxx>
Cc: Shakeel Butt <shakeelb@xxxxxxxxxx>; Minchan Kim <minchan@xxxxxxxxxx>;
becomeGalbraith <efault@xxxxxx>; LKML <linux-kernel@xxxxxxxxxxxxxxx>; linux-mm
<linux-mm@xxxxxxxxx>; Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx>;
NitinGupta <ngupta@xxxxxxxxxx>; Sergey Senozhatsky
<sergey.senozhatsky.work@xxxxxxxxx>; Andrew Morton
<akpm@xxxxxxxxxxxxxxxxxxxx>; tiantao (H) <tiantao6@xxxxxxxxxxxxx>
Subject: RE: [PATCH] zsmalloc: do not use bit_spin_lock
I'm still not convinced. Will kmap what, src? At this point src might
Butjust a bogus pointer.
As long as the memory is still there, we can kmap it by its page struct.
ifOr we can do get_page() to avoid the movement of the page.
it is not there anymore, we have no way.
Why couldn't the object have been moved somewhere else (due to the compactionmechanism for instance)
at the time DMA kicks in?So zs_map_object() will guarantee the src won't be moved by holding those
preemption-disabled lock?
If so, it seems we have to drop the MOVABLE gfp in zswap for zsmalloc case?
I would like to discuss this more in zswap context than zsmalloc's.
Since zsmalloc does not implement reclaim callback, using it in zswap
is a corner case anyway.
of zsmalloc and zswap? this will require change in either zsmalloc
or zswap.
or do you want to make zswap depend on !ZSMALLOC?
to zpool, named like "can_sleep_mapped", and have it set for
zbud/z3fold?
Then zswap could go the current path if the flag is set; and if it's
not set, and mutex_trylock fails, copy data from src to a temporary
buffer, then unmap the handle, take the mutex, process the buffer
instead of src. Not the nicest thing to do but at least it won't break
anything.
~Vitaly
zswap, on the other hand, may be dealing with some new backends inThanks
future which have more chances to become mainstream. Imagine typical
NUMA-like cases, i. e. a zswap pool allocated in some kind SRAM, or in
unused video memory. In such a case if you try to use a pointer to an
invalidated zpool mapping, you are on the way to thrash the system.
So: no assumptions that the zswap pool is in regular linear RAM should
be made.
~Vitaly
Barry