Пример #1
0
static ssize_t num_writes_show(struct device *dev,
		struct device_attribute *attr, char *buf)
{
	struct zram *zram = dev_to_zram(dev);

	return sprintf(buf, "%llu\n",
		zram_stat64_read(zram, &zram->stats.num_writes));
}
Пример #2
0
static ssize_t compr_data_size_show(struct device *dev,
		struct device_attribute *attr, char *buf)
{
	struct zram *zram = dev_to_zram(dev);

	return sprintf(buf, "%llu\n",
		zram_stat64_read(zram, &zram->stats.compr_size));
}
Пример #3
0
static ssize_t orig_data_size_show(struct device *dev,
		struct device_attribute *attr, char *buf)
{
	struct zram *zram = dev_to_zram(dev);

	return sprintf(buf, "%llu\n",
		(u64)(zram->stats.pages_stored) << PAGE_SHIFT);
}
Пример #4
0
static ssize_t mem_used_total_show(struct device *dev,
		struct device_attribute *attr, char *buf)
{
	u64 val = 0;
	struct zram *zram = dev_to_zram(dev);

	if (zram->init_done)
		val = zs_get_total_size_bytes(zram->mem_pool);

	return sprintf(buf, "%llu\n", val);
}
Пример #5
0
static ssize_t mem_used_total_show(struct device *dev,
		struct device_attribute *attr, char *buf)
{
	u64 val = 0;
	struct zram *zram = dev_to_zram(dev);

	if (zram->init_done) {
		val = xv_get_total_size_bytes(zram->mem_pool) +
			((u64)(zram->stats.pages_expand) << PAGE_SHIFT);
	}

	return sprintf(buf, "%llu\n", val);
}
Пример #6
0
static ssize_t disksize_store(struct device *dev,
		struct device_attribute *attr, const char *buf, size_t len)
{
	u64 disksize;
	struct zram_meta *meta;
	struct zram *zram = dev_to_zram(dev);

	/* Fix disksize */
	disksize = default_disksize_perc_ram * ((totalram_pages << PAGE_SHIFT) / 100);
	/* Expand its disksize if we have little system ram! */
	if (totalram_pages < SUPPOSED_TOTALRAM) {
		disksize += (disksize >> 1) ;
	}
static ssize_t mem_used_total_show(struct device *dev,
		struct device_attribute *attr, char *buf)
{
	u64 val = 0;
	struct zram *zram = dev_to_zram(dev);
	struct zram_meta *meta = zram->meta;

	down_read(&zram->init_lock);
	if (zram->init_done)
		val = zs_get_total_pages(meta->mem_pool);
	up_read(&zram->init_lock);

	return sprintf(buf, "%llu\n", val << PAGE_SHIFT);
}
Пример #8
0
static ssize_t compressor_show(struct device *dev,
		struct device_attribute *attr, char *buf)
{
	char * const buf_base = buf;
	const struct zram_compressor *p, *curr;
	unsigned int i = 0;
	struct zram *zram = dev_to_zram(dev);
	curr = zram->compressor;
	p = zram_compressors[i];
	while (p) {
		if (curr == p)
			buf += sprintf(buf, "*");
		buf += sprintf(buf, "%u - %s\n", i, p->name);
		p = zram_compressors[++i];
	}
	return buf - buf_base;
}
static ssize_t reset_store(struct device *dev,
		struct device_attribute *attr, const char *buf, size_t len)
{
	int ret;
	unsigned short do_reset;
	struct zram *zram;
	struct block_device *bdev;

	zram = dev_to_zram(dev);
	bdev = bdget_disk(zram->disk, 0);

	if (!bdev)
		return -ENOMEM;

	/* Do not reset an active device! */
	if (bdev->bd_holders) {
		ret = -EBUSY;
		goto out;
	}

	ret = kstrtou16(buf, 10, &do_reset);
	if (ret)
		goto out;

	if (!do_reset) {
		ret = -EINVAL;
		goto out;
	}

	/* Make sure all pending I/O is finished */
	fsync_bdev(bdev);
	bdput(bdev);

	down_write(&zram->init_lock);
	if (zram->init_done)
		__zram_reset_device(zram);
	up_write(&zram->init_lock);

	return len;

out:
	bdput(bdev);
	return ret;
}
Пример #10
0
static ssize_t disksize_store(struct device *dev,
		struct device_attribute *attr, const char *buf, size_t len)
{
	int ret;
	struct zram *zram = dev_to_zram(dev);

	if (zram->init_done) {
		pr_info("Cannot change disksize for initialized device\n");
		return -EBUSY;
	}

	ret = strict_strtoull(buf, 10, &zram->disksize);
	if (ret)
		return ret;

	zram->disksize = PAGE_ALIGN(zram->disksize);
	set_capacity(zram->disk, zram->disksize >> SECTOR_SHIFT);

	return len;
}
Пример #11
0
static ssize_t initstate_store(struct device *dev,
				struct device_attribute *attr, const char *buf,
				size_t len)
{
	int ret;
	unsigned long do_init;
	struct zram *zram = dev_to_zram(dev);

	if (zram->init_done) {
		pr_info("the device is initialized device\n");
		return -EBUSY;
	}

	ret = strict_strtoul(buf, 10, &do_init);
	if (ret)
		return ret;
	if (!do_init)
		return -EINVAL;

	zram_init_device(zram);
	swapon("/dev/block/zram0", 0);
	return len;
}
Пример #12
0
static ssize_t disksize_store(struct device *dev,
		struct device_attribute *attr, const char *buf, size_t len)
{
	u64 disksize;
	struct zram *zram = dev_to_zram(dev);

	disksize = memparse(buf, NULL);
	if (!disksize)
		return -EINVAL;

	down_write(&zram->init_lock);
	if (zram->init_done) {
		up_write(&zram->init_lock);
		pr_info("Cannot change disksize for initialized device\n");
		return -EBUSY;
	}

	zram->disksize = PAGE_ALIGN(disksize);
	set_capacity(zram->disk, zram->disksize >> SECTOR_SHIFT);
	zram_init_device(zram);
	up_write(&zram->init_lock);

	return len;
}