summaryrefslogtreecommitdiffstats
path: root/mm/zsmalloc.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2016-05-11 16:56:38 +0200
committerIngo Molnar <mingo@kernel.org>2016-05-11 16:56:38 +0200
commitd2950158d0d7bc376503393ca5f73f6f8d27c56b (patch)
tree7daa04400d833bd722258a49d56a39acfb392520 /mm/zsmalloc.c
parentea7c28518943b26a85d73cd76acd03b71962cb18 (diff)
parente9d848cb65d5f6f7731d12bd1b6d994bfdbcc94f (diff)
downloadtalos-op-linux-d2950158d0d7bc376503393ca5f73f6f8d27c56b.tar.gz
talos-op-linux-d2950158d0d7bc376503393ca5f73f6f8d27c56b.zip
Merge branch 'perf/urgent' into perf/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'mm/zsmalloc.c')
-rw-r--r--mm/zsmalloc.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c
index e72efb109fde..fe47fbba995a 100644
--- a/mm/zsmalloc.c
+++ b/mm/zsmalloc.c
@@ -1735,10 +1735,13 @@ static struct page *isolate_source_page(struct size_class *class)
static unsigned long zs_can_compact(struct size_class *class)
{
unsigned long obj_wasted;
+ unsigned long obj_allocated = zs_stat_get(class, OBJ_ALLOCATED);
+ unsigned long obj_used = zs_stat_get(class, OBJ_USED);
- obj_wasted = zs_stat_get(class, OBJ_ALLOCATED) -
- zs_stat_get(class, OBJ_USED);
+ if (obj_allocated <= obj_used)
+ return 0;
+ obj_wasted = obj_allocated - obj_used;
obj_wasted /= get_maxobj_per_zspage(class->size,
class->pages_per_zspage);
OpenPOWER on IntegriCloud