aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block/zram/zram_drv.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/block/zram/zram_drv.h')
-rw-r--r--drivers/block/zram/zram_drv.h29
1 files changed, 20 insertions, 9 deletions
diff --git a/drivers/block/zram/zram_drv.h b/drivers/block/zram/zram_drv.h
index 7f21c145e317..5b0afde729cd 100644
--- a/drivers/block/zram/zram_drv.h
+++ b/drivers/block/zram/zram_drv.h
@@ -43,7 +43,6 @@ static const size_t max_zpage_size = PAGE_SIZE / 4 * 3;
43/*-- End of configurable params */ 43/*-- End of configurable params */
44 44
45#define SECTOR_SHIFT 9 45#define SECTOR_SHIFT 9
46#define SECTOR_SIZE (1 << SECTOR_SHIFT)
47#define SECTORS_PER_PAGE_SHIFT (PAGE_SHIFT - SECTOR_SHIFT) 46#define SECTORS_PER_PAGE_SHIFT (PAGE_SHIFT - SECTOR_SHIFT)
48#define SECTORS_PER_PAGE (1 << SECTORS_PER_PAGE_SHIFT) 47#define SECTORS_PER_PAGE (1 << SECTORS_PER_PAGE_SHIFT)
49#define ZRAM_LOGICAL_BLOCK_SHIFT 12 48#define ZRAM_LOGICAL_BLOCK_SHIFT 12
@@ -51,10 +50,24 @@ static const size_t max_zpage_size = PAGE_SIZE / 4 * 3;
51#define ZRAM_SECTOR_PER_LOGICAL_BLOCK \ 50#define ZRAM_SECTOR_PER_LOGICAL_BLOCK \
52 (1 << (ZRAM_LOGICAL_BLOCK_SHIFT - SECTOR_SHIFT)) 51 (1 << (ZRAM_LOGICAL_BLOCK_SHIFT - SECTOR_SHIFT))
53 52
54/* Flags for zram pages (table[page_no].flags) */ 53
54/*
55 * The lower ZRAM_FLAG_SHIFT bits of table.value is for
56 * object size (excluding header), the higher bits is for
57 * zram_pageflags.
58 *
59 * zram is mainly used for memory efficiency so we want to keep memory
60 * footprint small so we can squeeze size and flags into a field.
61 * The lower ZRAM_FLAG_SHIFT bits is for object size (excluding header),
62 * the higher bits is for zram_pageflags.
63 */
64#define ZRAM_FLAG_SHIFT 24
65
66/* Flags for zram pages (table[page_no].value) */
55enum zram_pageflags { 67enum zram_pageflags {
56 /* Page consists entirely of zeros */ 68 /* Page consists entirely of zeros */
57 ZRAM_ZERO, 69 ZRAM_ZERO = ZRAM_FLAG_SHIFT + 1,
70 ZRAM_ACCESS, /* page in now accessed */
58 71
59 __NR_ZRAM_PAGEFLAGS, 72 __NR_ZRAM_PAGEFLAGS,
60}; 73};
@@ -62,11 +75,10 @@ enum zram_pageflags {
62/*-- Data structures */ 75/*-- Data structures */
63 76
64/* Allocated for each disk page */ 77/* Allocated for each disk page */
65struct table { 78struct zram_table_entry {
66 unsigned long handle; 79 unsigned long handle;
67 u16 size; /* object size (excluding header) */ 80 unsigned long value;
68 u8 flags; 81};
69} __aligned(4);
70 82
71struct zram_stats { 83struct zram_stats {
72 atomic64_t compr_data_size; /* compressed size of pages stored */ 84 atomic64_t compr_data_size; /* compressed size of pages stored */
@@ -81,8 +93,7 @@ struct zram_stats {
81}; 93};
82 94
83struct zram_meta { 95struct zram_meta {
84 rwlock_t tb_lock; /* protect table */ 96 struct zram_table_entry *table;
85 struct table *table;
86 struct zs_pool *mem_pool; 97 struct zs_pool *mem_pool;
87}; 98};
88 99