diff options
Diffstat (limited to 'drivers/block/zram/zram_drv.h')
-rw-r--r-- | drivers/block/zram/zram_drv.h | 29 |
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) */ | ||
55 | enum zram_pageflags { | 67 | enum 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 */ |
65 | struct table { | 78 | struct 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 | ||
71 | struct zram_stats { | 83 | struct 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 | ||
83 | struct zram_meta { | 95 | struct 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 | ||