Re: [PATCH v3 06/16] zsmalloc: squeeze inuse into page->mapping

From: Minchan Kim
Date: Tue Apr 19 2016 - 03:40:10 EST


On Mon, Apr 18, 2016 at 12:08:04AM +0900, Sergey Senozhatsky wrote:
> Hello,
>
> On (03/30/16 16:12), Minchan Kim wrote:
> [..]
> > +static int get_zspage_inuse(struct page *first_page)
> > +{
> > + struct zs_meta *m;
> > +
> > + VM_BUG_ON_PAGE(!is_first_page(first_page), first_page);
> > +
> > + m = (struct zs_meta *)&first_page->mapping;
> ..
> > +static void set_zspage_inuse(struct page *first_page, int val)
> > +{
> > + struct zs_meta *m;
> > +
> > + VM_BUG_ON_PAGE(!is_first_page(first_page), first_page);
> > +
> > + m = (struct zs_meta *)&first_page->mapping;
> ..
> > +static void mod_zspage_inuse(struct page *first_page, int val)
> > +{
> > + struct zs_meta *m;
> > +
> > + VM_BUG_ON_PAGE(!is_first_page(first_page), first_page);
> > +
> > + m = (struct zs_meta *)&first_page->mapping;
> ..
> > static void get_zspage_mapping(struct page *first_page,
> > unsigned int *class_idx,
> > enum fullness_group *fullness)
> > {
> > - unsigned long m;
> > + struct zs_meta *m;
> > +
> > VM_BUG_ON_PAGE(!is_first_page(first_page), first_page);
> > + m = (struct zs_meta *)&first_page->mapping;
> ..
> > static void set_zspage_mapping(struct page *first_page,
> > unsigned int class_idx,
> > enum fullness_group fullness)
> > {
> > + struct zs_meta *m;
> > +
> > VM_BUG_ON_PAGE(!is_first_page(first_page), first_page);
> >
> > + m = (struct zs_meta *)&first_page->mapping;
> > + m->fullness = fullness;
> > + m->class = class_idx;
> > }
>
>
> a nitpick: this
>
> struct zs_meta *m;
> VM_BUG_ON_PAGE(!is_first_page(first_page), first_page);
> m = (struct zs_meta *)&first_page->mapping;
>
>
> seems to be common in several places, may be it makes sense to
> factor it out and turn into a macro or a static inline helper?
>
> other than that, looks good to me

Yeb.

>
> Reviewed-by: Sergey Senozhatsky <sergey.senozhatsky@xxxxxxxxx>

Thanks for the review!