Re: [PATCH] zsmalloc: drop unused member 'mapping_area->huge'

From: Sergey Senozhatsky
Date: Tue Feb 16 2016 - 21:25:19 EST


Hello,

On (02/17/16 09:56), YiPing Xu wrote:
> static int create_handle_cache(struct zs_pool *pool)
> @@ -1127,11 +1126,9 @@ static void __zs_unmap_object(struct mapping_area *area,
> goto out;
>
> buf = area->vm_buf;
> - if (!area->huge) {
> - buf = buf + ZS_HANDLE_SIZE;
> - size -= ZS_HANDLE_SIZE;
> - off += ZS_HANDLE_SIZE;
> - }
> + buf = buf + ZS_HANDLE_SIZE;
> + size -= ZS_HANDLE_SIZE;
> + off += ZS_HANDLE_SIZE;
>
> sizes[0] = PAGE_SIZE - off;
> sizes[1] = size - sizes[0];


hm, indeed.

shouldn't it depend on class->huge?

void *zs_map_object()
{
void *ret = __zs_map_object(area, pages, off, class->size);

if (!class->huge)
ret += ZS_HANDLE_SIZE; /* area->vm_buf + ZS_HANDLE_SIZE */

return ret;
}

static void __zs_unmap_object(struct mapping_area *area...)
{
char *buf = area->vm_buf;

/* handle is in page->private for class->huge */

buf = buf + ZS_HANDLE_SIZE;
size -= ZS_HANDLE_SIZE;
off += ZS_HANDLE_SIZE;

memcpy(..);
}

-ss