Loading drivers/block/zram/zram_drv.c +41 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ #include <linux/string.h> #include <linux/vmalloc.h> #include <linux/ratelimit.h> #include <linux/show_mem_notifier.h> #include <linux/err.h> #include "zram_drv.h" Loading Loading @@ -84,6 +85,45 @@ static inline bool init_done(struct zram *zram) return zram->disksize; } static int zram_show_mem_notifier(struct notifier_block *nb, unsigned long action, void *data) { int i; if (!zram_devices) return 0; for (i = 0; i < num_devices; i++) { struct zram *zram = &zram_devices[i]; struct zram_meta *meta = zram->meta; if (!down_read_trylock(&zram->init_lock)) continue; if (init_done(zram)) { u64 val; u64 data_size; val = zpool_get_total_size(meta->mem_pool); data_size = atomic64_read(&zram->stats.compr_data_size); pr_info("Zram[%d] mem_used_total = %llu\n", i, val); pr_info("Zram[%d] compr_data_size = %llu\n", i, (unsigned long long)data_size); pr_info("Zram[%d] orig_data_size = %u\n", i, atomic_read(&zram->stats.pages_stored)); } up_read(&zram->init_lock); } return 0; } static struct notifier_block zram_show_mem_notifier_block = { .notifier_call = zram_show_mem_notifier }; static inline struct zram *dev_to_zram(struct device *dev) { return (struct zram *)dev_to_disk(dev)->private_data; Loading Loading @@ -1283,6 +1323,7 @@ static int __init zram_init(void) goto out_error; } show_mem_notifier_register(&zram_show_mem_notifier_block); pr_info("Created %u device(s)\n", num_devices); return 0; Loading Loading
drivers/block/zram/zram_drv.c +41 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ #include <linux/string.h> #include <linux/vmalloc.h> #include <linux/ratelimit.h> #include <linux/show_mem_notifier.h> #include <linux/err.h> #include "zram_drv.h" Loading Loading @@ -84,6 +85,45 @@ static inline bool init_done(struct zram *zram) return zram->disksize; } static int zram_show_mem_notifier(struct notifier_block *nb, unsigned long action, void *data) { int i; if (!zram_devices) return 0; for (i = 0; i < num_devices; i++) { struct zram *zram = &zram_devices[i]; struct zram_meta *meta = zram->meta; if (!down_read_trylock(&zram->init_lock)) continue; if (init_done(zram)) { u64 val; u64 data_size; val = zpool_get_total_size(meta->mem_pool); data_size = atomic64_read(&zram->stats.compr_data_size); pr_info("Zram[%d] mem_used_total = %llu\n", i, val); pr_info("Zram[%d] compr_data_size = %llu\n", i, (unsigned long long)data_size); pr_info("Zram[%d] orig_data_size = %u\n", i, atomic_read(&zram->stats.pages_stored)); } up_read(&zram->init_lock); } return 0; } static struct notifier_block zram_show_mem_notifier_block = { .notifier_call = zram_show_mem_notifier }; static inline struct zram *dev_to_zram(struct device *dev) { return (struct zram *)dev_to_disk(dev)->private_data; Loading Loading @@ -1283,6 +1323,7 @@ static int __init zram_init(void) goto out_error; } show_mem_notifier_register(&zram_show_mem_notifier_block); pr_info("Created %u device(s)\n", num_devices); return 0; Loading