diff options
author | Seth Jennings <sjenning@linux.vnet.ibm.com> | 2012-07-02 16:15:52 -0500 |
---|---|---|
committer | Simon Shields <keepcalm444@gmail.com> | 2016-06-12 21:20:13 +1000 |
commit | e587fc7e1422e54b05f8b92b601bc09ebe5ca22b (patch) | |
tree | b0ddf193fd3b76a39e9971af8458ddfa8269cf7c | |
parent | 1460992795a08a75595c5ac905f280c73c89ce12 (diff) | |
download | kernel_samsung_smdk4412-e587fc7e1422e54b05f8b92b601bc09ebe5ca22b.tar.gz kernel_samsung_smdk4412-e587fc7e1422e54b05f8b92b601bc09ebe5ca22b.tar.bz2 kernel_samsung_smdk4412-e587fc7e1422e54b05f8b92b601bc09ebe5ca22b.zip |
staging: zsmalloc: add mapping modes
This patch improves mapping performance in zsmalloc by getting
usage information from the user in the form of a "mapping mode"
and using it to avoid unnecessary copying for objects that span
pages.
Signed-off-by: Seth Jennings <sjenning@linux.vnet.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Conflicts:
drivers/staging/zram/zram_drv.c
drivers/staging/zsmalloc/zsmalloc-main.c
drivers/staging/zsmalloc/zsmalloc.h
drivers/staging/zsmalloc/zsmalloc_int.h
Change-Id: I0b7a97e21eb3b26270bd2949697ef6d14bf7ae27
-rw-r--r-- | drivers/staging/zcache/zcache-main.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/staging/zcache/zcache-main.c b/drivers/staging/zcache/zcache-main.c index 2532c97dae1..752390d07fb 100644 --- a/drivers/staging/zcache/zcache-main.c +++ b/drivers/staging/zcache/zcache-main.c @@ -709,7 +709,7 @@ static unsigned long zv_create(struct zs_pool *pool, uint32_t pool_id, goto out; atomic_inc(&zv_curr_dist_counts[chunks]); atomic_inc(&zv_cumul_dist_counts[chunks]); - zv = zs_map_object(pool, handle); + zv = zs_map_object(pool, handle, ZS_MM_WO); zv->index = index; zv->oid = *oid; zv->pool_id = pool_id; @@ -728,7 +728,7 @@ static void zv_free(struct zs_pool *pool, unsigned long handle) uint16_t size; int chunks; - zv = zs_map_object(pool, handle); + zv = zs_map_object(pool, handle, ZS_MM_RW); ASSERT_SENTINEL(zv, ZVH); size = zv->size + sizeof(struct zv_hdr); INVERT_SENTINEL(zv, ZVH); @@ -750,7 +750,7 @@ static void zv_decompress(struct page *page, unsigned long handle) int ret; struct zv_hdr *zv; - zv = zs_map_object(zcache_host.zspool, handle); + zv = zs_map_object(zcache_host.zspool, handle, ZS_MM_RO); BUG_ON(zv->size == 0); ASSERT_SENTINEL(zv, ZVH); to_va = kmap_atomic(page, KM_USER0); |