aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/block/zram/zram_drv.c9
-rw-r--r--drivers/block/zram/zram_drv.h16
2 files changed, 8 insertions, 17 deletions
diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
index 0afa6c8c3857..bd38f46801d3 100644
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -44,6 +44,11 @@ static const char *default_compressor = "lzo";
44 44
45/* Module params (documentation at end) */ 45/* Module params (documentation at end) */
46static unsigned int num_devices = 1; 46static unsigned int num_devices = 1;
47/*
48 * Pages that compress to sizes equals or greater than this are stored
49 * uncompressed in memory.
50 */
51static size_t huge_class_size;
47 52
48static void zram_free_page(struct zram *zram, size_t index); 53static void zram_free_page(struct zram *zram, size_t index);
49 54
@@ -786,6 +791,8 @@ static bool zram_meta_alloc(struct zram *zram, u64 disksize)
786 return false; 791 return false;
787 } 792 }
788 793
794 if (!huge_class_size)
795 huge_class_size = zs_huge_class_size(zram->mem_pool);
789 return true; 796 return true;
790} 797}
791 798
@@ -965,7 +972,7 @@ compress_again:
965 return ret; 972 return ret;
966 } 973 }
967 974
968 if (unlikely(comp_len > max_zpage_size)) { 975 if (unlikely(comp_len >= huge_class_size)) {
969 if (zram_wb_enabled(zram) && allow_wb) { 976 if (zram_wb_enabled(zram) && allow_wb) {
970 zcomp_stream_put(zram->comp); 977 zcomp_stream_put(zram->comp);
971 ret = write_to_bdev(zram, bvec, index, bio, &element); 978 ret = write_to_bdev(zram, bvec, index, bio, &element);
diff --git a/drivers/block/zram/zram_drv.h b/drivers/block/zram/zram_drv.h
index 31762db861e3..d71c8000a964 100644
--- a/drivers/block/zram/zram_drv.h
+++ b/drivers/block/zram/zram_drv.h
@@ -21,22 +21,6 @@
21 21
22#include "zcomp.h" 22#include "zcomp.h"
23 23
24/*-- Configurable parameters */
25
26/*
27 * Pages that compress to size greater than this are stored
28 * uncompressed in memory.
29 */
30static const size_t max_zpage_size = PAGE_SIZE / 4 * 3;
31
32/*
33 * NOTE: max_zpage_size must be less than or equal to:
34 * ZS_MAX_ALLOC_SIZE. Otherwise, zs_malloc() would
35 * always return failure.
36 */
37
38/*-- End of configurable params */
39
40#define SECTOR_SHIFT 9 24#define SECTOR_SHIFT 9
41#define SECTORS_PER_PAGE_SHIFT (PAGE_SHIFT - SECTOR_SHIFT) 25#define SECTORS_PER_PAGE_SHIFT (PAGE_SHIFT - SECTOR_SHIFT)
42#define SECTORS_PER_PAGE (1 << SECTORS_PER_PAGE_SHIFT) 26#define SECTORS_PER_PAGE (1 << SECTORS_PER_PAGE_SHIFT)