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)); }
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)); }
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); }
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); }
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); }
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); }
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; }
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; }
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; }
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; }