aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/zram/zram_drv.h
diff options
context:
space:
mode:
authorJerome Marchand <jmarchan@redhat.com>2011-06-10 15:28:48 +0200
committerSimon Shields <keepcalm444@gmail.com>2016-06-12 21:19:28 +1000
commit6300749d0009cb3b326a24e81f39cc36c46c20d8 (patch)
tree847bcc0d949840c40571addd6a4db51082f6ccc8 /drivers/staging/zram/zram_drv.h
parent9e0c774e32396f1750e8c8d37ed151ed4f6f8729 (diff)
downloadkernel_samsung_smdk4412-6300749d0009cb3b326a24e81f39cc36c46c20d8.zip
kernel_samsung_smdk4412-6300749d0009cb3b326a24e81f39cc36c46c20d8.tar.gz
kernel_samsung_smdk4412-6300749d0009cb3b326a24e81f39cc36c46c20d8.tar.bz2
Staging: zram: allow partial page operations
Commit 7b19b8d45b216ff3186f066b31937bdbde066f08 (zram: Prevent overflow in logical block size) introduced ZRAM_LOGICAL_BLOCK_SIZE constant to prevent overflow of logical block size on 64k page kernel. However, the current implementation of zram only allow operation on block of the same size as a page. That makes theorically legit 4k requests fail on 64k page kernel. This patch makes zram allow operation on partial pages. Basically, it means we still do operations on full pages internally, but only copy the relevent segments from/to the user memory. Signed-off-by: Jerome Marchand <jmarchan@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> Conflicts: drivers/staging/zram/zram_drv.c Change-Id: I2ebdfa2642feea970b8dc343380062aa593a8a05
Diffstat (limited to 'drivers/staging/zram/zram_drv.h')
-rw-r--r--drivers/staging/zram/zram_drv.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/staging/zram/zram_drv.h b/drivers/staging/zram/zram_drv.h
index d0b2e03..77035b6 100644
--- a/drivers/staging/zram/zram_drv.h
+++ b/drivers/staging/zram/zram_drv.h
@@ -61,7 +61,10 @@ static const size_t max_zpage_size = PAGE_SIZE / 4 * 3;
#define SECTOR_SIZE (1 << SECTOR_SHIFT)
#define SECTORS_PER_PAGE_SHIFT (PAGE_SHIFT - SECTOR_SHIFT)
#define SECTORS_PER_PAGE (1 << SECTORS_PER_PAGE_SHIFT)
-#define ZRAM_LOGICAL_BLOCK_SIZE 4096
+#define ZRAM_LOGICAL_BLOCK_SHIFT 12
+#define ZRAM_LOGICAL_BLOCK_SIZE (1 << ZRAM_LOGICAL_BLOCK_SHIFT)
+#define ZRAM_SECTOR_PER_LOGICAL_BLOCK \
+ (1 << (ZRAM_LOGICAL_BLOCK_SHIFT - SECTOR_SHIFT))
/* Flags for zram pages (table[page_no].flags) */
enum zram_pageflags {