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

Reply via email to