aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMinchan Kim <minchan@kernel.org>2017-05-03 17:55:50 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2017-05-03 18:52:11 -0400
commit643ae61d0f41c48aa7179921fe15ba4b4d8ddfec (patch)
treea061c291ebc29ff7bda4359f480c7650385e0a90
parentbeb6602cf87abee547b2692031185111f625153a (diff)
zram: introduce zram data accessor
With element, sometime I got confused handle and element access. It might be my bad but I think it's time to introduce accessor to prevent future idiot like me. This patch is just clean-up patch so it shouldn't change any behavior. Link: http://lkml.kernel.org/r/1492052365-16169-6-git-send-email-minchan@kernel.org Signed-off-by: Minchan Kim <minchan@kernel.org> Reviewed-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Cc: Hannes Reinecke <hare@suse.com> Cc: Johannes Thumshirn <jthumshirn@suse.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--drivers/block/zram/zram_drv.c33
1 files changed, 22 insertions, 11 deletions
diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
index c674d23539b1..61b0f8374222 100644
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -57,6 +57,16 @@ static inline struct zram *dev_to_zram(struct device *dev)
57 return (struct zram *)dev_to_disk(dev)->private_data; 57 return (struct zram *)dev_to_disk(dev)->private_data;
58} 58}
59 59
60static unsigned long zram_get_handle(struct zram *zram, u32 index)
61{
62 return zram->table[index].handle;
63}
64
65static void zram_set_handle(struct zram *zram, u32 index, unsigned long handle)
66{
67 zram->table[index].handle = handle;
68}
69
60/* flag operations require table entry bit_spin_lock() being held */ 70/* flag operations require table entry bit_spin_lock() being held */
61static int zram_test_flag(struct zram *zram, u32 index, 71static int zram_test_flag(struct zram *zram, u32 index,
62 enum zram_pageflags flag) 72 enum zram_pageflags flag)
@@ -82,9 +92,9 @@ static inline void zram_set_element(struct zram *zram, u32 index,
82 zram->table[index].element = element; 92 zram->table[index].element = element;
83} 93}
84 94
85static inline void zram_clear_element(struct zram *zram, u32 index) 95static unsigned long zram_get_element(struct zram *zram, u32 index)
86{ 96{
87 zram->table[index].element = 0; 97 return zram->table[index].element;
88} 98}
89 99
90static size_t zram_get_obj_size(struct zram *zram, u32 index) 100static size_t zram_get_obj_size(struct zram *zram, u32 index)
@@ -425,13 +435,14 @@ static bool zram_same_page_read(struct zram *zram, u32 index,
425 unsigned int offset, unsigned int len) 435 unsigned int offset, unsigned int len)
426{ 436{
427 zram_slot_lock(zram, index); 437 zram_slot_lock(zram, index);
428 if (unlikely(!zram->table[index].handle) || 438 if (unlikely(!zram_get_handle(zram, index) ||
429 zram_test_flag(zram, index, ZRAM_SAME)) { 439 zram_test_flag(zram, index, ZRAM_SAME))) {
430 void *mem; 440 void *mem;
431 441
432 zram_slot_unlock(zram, index); 442 zram_slot_unlock(zram, index);
433 mem = kmap_atomic(page); 443 mem = kmap_atomic(page);
434 zram_fill_page(mem + offset, len, zram->table[index].element); 444 zram_fill_page(mem + offset, len,
445 zram_get_element(zram, index));
435 kunmap_atomic(mem); 446 kunmap_atomic(mem);
436 return true; 447 return true;
437 } 448 }
@@ -470,7 +481,7 @@ static void zram_meta_free(struct zram *zram, u64 disksize)
470 481
471 /* Free all pages that are still in this zram device */ 482 /* Free all pages that are still in this zram device */
472 for (index = 0; index < num_pages; index++) { 483 for (index = 0; index < num_pages; index++) {
473 unsigned long handle = zram->table[index].handle; 484 unsigned long handle = zram_get_handle(zram, index);
474 /* 485 /*
475 * No memory is allocated for same element filled pages. 486 * No memory is allocated for same element filled pages.
476 * Simply clear same page flag. 487 * Simply clear same page flag.
@@ -510,7 +521,7 @@ static bool zram_meta_alloc(struct zram *zram, u64 disksize)
510 */ 521 */
511static void zram_free_page(struct zram *zram, size_t index) 522static void zram_free_page(struct zram *zram, size_t index)
512{ 523{
513 unsigned long handle = zram->table[index].handle; 524 unsigned long handle = zram_get_handle(zram, index);
514 525
515 /* 526 /*
516 * No memory is allocated for same element filled pages. 527 * No memory is allocated for same element filled pages.
@@ -518,7 +529,7 @@ static void zram_free_page(struct zram *zram, size_t index)
518 */ 529 */
519 if (zram_test_flag(zram, index, ZRAM_SAME)) { 530 if (zram_test_flag(zram, index, ZRAM_SAME)) {
520 zram_clear_flag(zram, index, ZRAM_SAME); 531 zram_clear_flag(zram, index, ZRAM_SAME);
521 zram_clear_element(zram, index); 532 zram_set_element(zram, index, 0);
522 atomic64_dec(&zram->stats.same_pages); 533 atomic64_dec(&zram->stats.same_pages);
523 return; 534 return;
524 } 535 }
@@ -532,7 +543,7 @@ static void zram_free_page(struct zram *zram, size_t index)
532 &zram->stats.compr_data_size); 543 &zram->stats.compr_data_size);
533 atomic64_dec(&zram->stats.pages_stored); 544 atomic64_dec(&zram->stats.pages_stored);
534 545
535 zram->table[index].handle = 0; 546 zram_set_handle(zram, index, 0);
536 zram_set_obj_size(zram, index, 0); 547 zram_set_obj_size(zram, index, 0);
537} 548}
538 549
@@ -547,7 +558,7 @@ static int zram_decompress_page(struct zram *zram, struct page *page, u32 index)
547 return 0; 558 return 0;
548 559
549 zram_slot_lock(zram, index); 560 zram_slot_lock(zram, index);
550 handle = zram->table[index].handle; 561 handle = zram_get_handle(zram, index);
551 size = zram_get_obj_size(zram, index); 562 size = zram_get_obj_size(zram, index);
552 563
553 src = zs_map_object(zram->mem_pool, handle, ZS_MM_RO); 564 src = zs_map_object(zram->mem_pool, handle, ZS_MM_RO);
@@ -713,7 +724,7 @@ static int __zram_bvec_write(struct zram *zram, struct bio_vec *bvec, u32 index)
713 */ 724 */
714 zram_slot_lock(zram, index); 725 zram_slot_lock(zram, index);
715 zram_free_page(zram, index); 726 zram_free_page(zram, index);
716 zram->table[index].handle = handle; 727 zram_set_handle(zram, index, handle);
717 zram_set_obj_size(zram, index, comp_len); 728 zram_set_obj_size(zram, index, comp_len);
718 zram_slot_unlock(zram, index); 729 zram_slot_unlock(zram, index);
719 730