diff options
author | Sergey Senozhatsky <sergey.senozhatsky@gmail.com> | 2015-04-15 19:16:03 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-15 19:35:21 -0400 |
commit | 2f6a3bed7347ee94fe57b3501fddaa646a26d890 (patch) | |
tree | ddbe3dca838dea06f3639394bf36bd5b4f10ee31 /drivers/block/zram/zram_drv.c | |
parent | 77ba015f9d5c584226a634753e9b318cb272cd41 (diff) |
zram: export new 'io_stat' sysfs attrs
Per-device `zram<id>/io_stat' file provides accumulated I/O statistics of
particular zram device in a format similar to block layer statistics. The
file consists of a single line and represents the following stats
(separated by whitespace):
failed_reads
failed_writes
invalid_io
notify_free
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Acked-by: Minchan Kim <minchan@kernel.org>
Cc: Nitin Gupta <ngupta@vflare.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/block/zram/zram_drv.c')
-rw-r--r-- | drivers/block/zram/zram_drv.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c index 35dafd9a0350..1b63a717bdbb 100644 --- a/drivers/block/zram/zram_drv.c +++ b/drivers/block/zram/zram_drv.c | |||
@@ -1033,6 +1033,25 @@ static DEVICE_ATTR_RW(mem_used_max); | |||
1033 | static DEVICE_ATTR_RW(max_comp_streams); | 1033 | static DEVICE_ATTR_RW(max_comp_streams); |
1034 | static DEVICE_ATTR_RW(comp_algorithm); | 1034 | static DEVICE_ATTR_RW(comp_algorithm); |
1035 | 1035 | ||
1036 | static ssize_t io_stat_show(struct device *dev, | ||
1037 | struct device_attribute *attr, char *buf) | ||
1038 | { | ||
1039 | struct zram *zram = dev_to_zram(dev); | ||
1040 | ssize_t ret; | ||
1041 | |||
1042 | down_read(&zram->init_lock); | ||
1043 | ret = scnprintf(buf, PAGE_SIZE, | ||
1044 | "%8llu %8llu %8llu %8llu\n", | ||
1045 | (u64)atomic64_read(&zram->stats.failed_reads), | ||
1046 | (u64)atomic64_read(&zram->stats.failed_writes), | ||
1047 | (u64)atomic64_read(&zram->stats.invalid_io), | ||
1048 | (u64)atomic64_read(&zram->stats.notify_free)); | ||
1049 | up_read(&zram->init_lock); | ||
1050 | |||
1051 | return ret; | ||
1052 | } | ||
1053 | |||
1054 | static DEVICE_ATTR_RO(io_stat); | ||
1036 | ZRAM_ATTR_RO(num_reads); | 1055 | ZRAM_ATTR_RO(num_reads); |
1037 | ZRAM_ATTR_RO(num_writes); | 1056 | ZRAM_ATTR_RO(num_writes); |
1038 | ZRAM_ATTR_RO(failed_reads); | 1057 | ZRAM_ATTR_RO(failed_reads); |
@@ -1060,6 +1079,7 @@ static struct attribute *zram_disk_attrs[] = { | |||
1060 | &dev_attr_mem_used_max.attr, | 1079 | &dev_attr_mem_used_max.attr, |
1061 | &dev_attr_max_comp_streams.attr, | 1080 | &dev_attr_max_comp_streams.attr, |
1062 | &dev_attr_comp_algorithm.attr, | 1081 | &dev_attr_comp_algorithm.attr, |
1082 | &dev_attr_io_stat.attr, | ||
1063 | NULL, | 1083 | NULL, |
1064 | }; | 1084 | }; |
1065 | 1085 | ||