From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751199AbdAUInZ (ORCPT ); Sat, 21 Jan 2017 03:43:25 -0500 Received: from mail-pg0-f65.google.com ([74.125.83.65]:36482 "EHLO mail-pg0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751129AbdAUInY (ORCPT ); Sat, 21 Jan 2017 03:43:24 -0500 Date: Sat, 21 Jan 2017 17:43:38 +0900 From: Sergey Senozhatsky To: zhouxianrong@huawei.com Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, akpm@linux-foundation.org, sergey.senozhatsky@gmail.com, minchan@kernel.org, ngupta@vflare.org, Mi.Sophia.Wang@huawei.com, zhouxiyu@huawei.com, weidu.du@huawei.com, zhangshiming5@huawei.com, won.ho.park@huawei.com Subject: Re: [PATCH] mm: extend zero pages to same element pages for zram Message-ID: <20170121084338.GA405@jagdpanzerIV.localdomain> References: <1483692145-75357-1-git-send-email-zhouxianrong@huawei.com> <1484296195-99771-1-git-send-email-zhouxianrong@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1484296195-99771-1-git-send-email-zhouxianrong@huawei.com> User-Agent: Mutt/1.7.2 (2016-11-26) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello, On (01/13/17 16:29), zhouxianrong@huawei.com wrote: [..] > --- a/Documentation/ABI/testing/sysfs-block-zram > +++ b/Documentation/ABI/testing/sysfs-block-zram > @@ -86,21 +86,21 @@ Description: > ones are sent by filesystem mounted with discard option, > whenever some data blocks are getting discarded. > > -What: /sys/block/zram/zero_pages > +What: /sys/block/zram/same_pages [..] > -zero_pages RO the number of zero filled pages written to this disk > +same_pages RO the number of same element filled pages written to this disk [..] > - zero_pages > + same_pages > num_migrated > +} we removed deprecated sysfs attrs. zero_pages does not exist anymore. > static size_t zram_get_obj_size(struct zram_meta *meta, u32 index) > { > return meta->table[index].value & (BIT(ZRAM_FLAG_SHIFT) - 1); > @@ -158,31 +169,76 @@ static inline void update_used_max(struct zram *zram, > } while (old_max != cur_max); > } > > -static bool page_zero_filled(void *ptr) > +static inline void zram_fill_page(char *ptr, unsigned long value) > +{ > + int i; > + unsigned long *page = (unsigned long *)ptr; > + > + if (likely(value == 0)) { > + clear_page(ptr); > + } else { > + for (i = PAGE_SIZE / sizeof(unsigned long) - 1; i >= 0; i--) > + page[i] = value; > + } any particular reason not to use memset() here? memset() can be faster that that, right? [..] > /* Flags for zram pages (table[page_no].value) */ > enum zram_pageflags { > - /* Page consists entirely of zeros */ > - ZRAM_ZERO = ZRAM_FLAG_SHIFT, > + /* Page consists entirely of same elements */ > + ZRAM_SAME = ZRAM_FLAG_SHIFT, > ZRAM_ACCESS, /* page is now accessed */ [..] > @@ -83,7 +86,7 @@ struct zram_stats { > atomic64_t failed_writes; /* can happen when memory is too low */ > atomic64_t invalid_io; /* non-page-aligned I/O requests */ > atomic64_t notify_free; /* no. of swap slot free notifications */ > - atomic64_t zero_pages; /* no. of zero filled pages */ > + atomic64_t same_pages; /* no. of same element filled pages */ not like this rename is particularity important, but ok. works for me. -ss