Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 83d50d20 authored by TARKZiM's avatar TARKZiM
Browse files

Revert "Revert "zram: Register with show_mem notification framework""

This reverts commit 5ed67ff0.
parent 11914c26
Loading
Loading
Loading
Loading
+41 −0
Original line number Diff line number Diff line
@@ -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"
@@ -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;
@@ -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;