Hello,
On (01/13/17 16:29), zhouxianrong@xxxxxxxxxx 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<id>/zero_pages
+What: /sys/block/zram<id>/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
.