On Thu, Jun 02, 2016 at 09:25:19AM +0900, Minchan Kim wrote: > On Wed, Jun 01, 2016 at 04:09:26PM +0200, Vlastimil Babka wrote: > > On 06/01/2016 01:21 AM, Minchan Kim wrote: > > > > [...] > > > > > > > > Cc: Sergey Senozhatsky <sergey.senozhatsky@xxxxxxxxx> > > > Signed-off-by: Minchan Kim <minchan@xxxxxxxxxx> > > > > I'm not that familiar with zsmalloc, so this is not a full review. I was > > just curious how it's handling the movable migration API, and stumbled > > upon some things pointed out below. > > > > > @@ -252,16 +276,23 @@ struct zs_pool { > > > */ > > > #define FULLNESS_BITS 2 > > > #define CLASS_BITS 8 > > > +#define ISOLATED_BITS 3 > > > +#define MAGIC_VAL_BITS 8 > > > > > > struct zspage { > > > struct { > > > unsigned int fullness:FULLNESS_BITS; > > > unsigned int class:CLASS_BITS; > > > + unsigned int isolated:ISOLATED_BITS; > > > + unsigned int magic:MAGIC_VAL_BITS; > > > > This magic seems to be only tested via VM_BUG_ON, so it's presence > > should be also guarded by #ifdef DEBUG_VM, no? > > Thanks for the point. > > Then, I want to change it to BUG_ON because struct zspage corruption > is really risky to work rightly and want to catch on it in real product > which disable CONFIG_DEBUG_VM for a while until make the feature stable. Andrew, Please fold this patch into zsmalloc: page migration support. Thanks! >From 6b8fa9889b7892bdf5b2f01698310cfc766c4d17 Mon Sep 17 00:00:00 2001 From: Minchan Kim <minchan@xxxxxxxxxx> Date: Fri, 3 Jun 2016 09:54:03 +0900 Subject: [PATCH] zsmalloc: zspage sanity check The zsmalloc page migration is new feature so I want to catch any corruption of zspage struct which is very critical to work regardless of CONFIG_DEBUG_VM. Signed-off-by: Minchan Kim <minchan@xxxxxxxxxx> --- mm/zsmalloc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c index a80100db16d6..f75d2d134741 100644 --- a/mm/zsmalloc.c +++ b/mm/zsmalloc.c @@ -523,7 +523,7 @@ static void get_zspage_mapping(struct zspage *zspage, unsigned int *class_idx, enum fullness_group *fullness) { - VM_BUG_ON(zspage->magic != ZSPAGE_MAGIC); + BUG_ON(zspage->magic != ZSPAGE_MAGIC); *fullness = zspage->fullness; *class_idx = zspage->class; @@ -857,7 +857,7 @@ static struct zspage *get_zspage(struct page *page) { struct zspage *zspage = (struct zspage *)page->private; - VM_BUG_ON(zspage->magic != ZSPAGE_MAGIC); + BUG_ON(zspage->magic != ZSPAGE_MAGIC); return zspage; } -- 1.9.1 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>