diff options
author | Seth Jennings <sjenning@linux.vnet.ibm.com> | 2012-07-02 17:15:52 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-07-09 14:35:00 -0400 |
commit | b74185108668ef966e663878adbad65e03bfcb43 (patch) | |
tree | 39e367491f761ba93fbddc56a93f353b021552cc /drivers/staging/zram | |
parent | 166cfda752ca22eb6912614993b85f9a997dbd8f (diff) |
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>
Diffstat (limited to 'drivers/staging/zram')
-rw-r--r-- | drivers/staging/zram/zram_drv.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/staging/zram/zram_drv.c b/drivers/staging/zram/zram_drv.c index 706cb625aae..653b074035f 100644 --- a/drivers/staging/zram/zram_drv.c +++ b/drivers/staging/zram/zram_drv.c | |||
@@ -220,7 +220,8 @@ static int zram_bvec_read(struct zram *zram, struct bio_vec *bvec, | |||
220 | uncmem = user_mem; | 220 | uncmem = user_mem; |
221 | clen = PAGE_SIZE; | 221 | clen = PAGE_SIZE; |
222 | 222 | ||
223 | cmem = zs_map_object(zram->mem_pool, zram->table[index].handle); | 223 | cmem = zs_map_object(zram->mem_pool, zram->table[index].handle, |
224 | ZS_MM_RO); | ||
224 | 225 | ||
225 | ret = lzo1x_decompress_safe(cmem, zram->table[index].size, | 226 | ret = lzo1x_decompress_safe(cmem, zram->table[index].size, |
226 | uncmem, &clen); | 227 | uncmem, &clen); |
@@ -258,7 +259,7 @@ static int zram_read_before_write(struct zram *zram, char *mem, u32 index) | |||
258 | return 0; | 259 | return 0; |
259 | } | 260 | } |
260 | 261 | ||
261 | cmem = zs_map_object(zram->mem_pool, handle); | 262 | cmem = zs_map_object(zram->mem_pool, handle, ZS_MM_RO); |
262 | ret = lzo1x_decompress_safe(cmem, zram->table[index].size, | 263 | ret = lzo1x_decompress_safe(cmem, zram->table[index].size, |
263 | mem, &clen); | 264 | mem, &clen); |
264 | zs_unmap_object(zram->mem_pool, handle); | 265 | zs_unmap_object(zram->mem_pool, handle); |
@@ -351,7 +352,7 @@ static int zram_bvec_write(struct zram *zram, struct bio_vec *bvec, u32 index, | |||
351 | ret = -ENOMEM; | 352 | ret = -ENOMEM; |
352 | goto out; | 353 | goto out; |
353 | } | 354 | } |
354 | cmem = zs_map_object(zram->mem_pool, handle); | 355 | cmem = zs_map_object(zram->mem_pool, handle, ZS_MM_WO); |
355 | 356 | ||
356 | memcpy(cmem, src, clen); | 357 | memcpy(cmem, src, clen); |
357 | 358 | ||