aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSergey Senozhatsky <sergey.senozhatsky@gmail.com>2015-04-15 19:16:03 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-04-15 19:35:21 -0400
commit2f6a3bed7347ee94fe57b3501fddaa646a26d890 (patch)
treeddbe3dca838dea06f3639394bf36bd5b4f10ee31
parent77ba015f9d5c584226a634753e9b318cb272cd41 (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>
-rw-r--r--Documentation/ABI/testing/sysfs-block-zram9
-rw-r--r--Documentation/blockdev/zram.txt11
-rw-r--r--drivers/block/zram/zram_drv.c20
3 files changed, 40 insertions, 0 deletions
diff --git a/Documentation/ABI/testing/sysfs-block-zram b/Documentation/ABI/testing/sysfs-block-zram
index 91ad7071b9e8..a7f622f9bcf6 100644
--- a/Documentation/ABI/testing/sysfs-block-zram
+++ b/Documentation/ABI/testing/sysfs-block-zram
@@ -149,3 +149,12 @@ Description:
149 The compact file is write-only and trigger compaction for 149 The compact file is write-only and trigger compaction for
150 allocator zrm uses. The allocator moves some objects so that 150 allocator zrm uses. The allocator moves some objects so that
151 it could free fragment space. 151 it could free fragment space.
152
153What: /sys/block/zram<id>/io_stat
154Date: August 2015
155Contact: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
156Description:
157 The io_stat file is read-only and accumulates device's I/O
158 statistics not accounted by block layer. For example,
159 failed_reads, failed_writes, etc. File format is similar to
160 block layer statistics file format.
diff --git a/Documentation/blockdev/zram.txt b/Documentation/blockdev/zram.txt
index 971765ed5ac1..9610be3e9d36 100644
--- a/Documentation/blockdev/zram.txt
+++ b/Documentation/blockdev/zram.txt
@@ -133,6 +133,17 @@ File /sys/block/zram<id>/stat
133Represents block layer statistics. Read Documentation/block/stat.txt for 133Represents block layer statistics. Read Documentation/block/stat.txt for
134details. 134details.
135 135
136File /sys/block/zram<id>/io_stat
137
138The stat file represents device's I/O statistics not accounted by block
139layer and, thus, not available in zram<id>/stat file. It consists of a
140single line of text and contains the following stats separated by
141whitespace:
142 failed_reads
143 failed_writes
144 invalid_io
145 notify_free
146
1368) Deactivate: 1478) Deactivate:
137 swapoff /dev/zram0 148 swapoff /dev/zram0
138 umount /dev/zram1 149 umount /dev/zram1
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);
1033static DEVICE_ATTR_RW(max_comp_streams); 1033static DEVICE_ATTR_RW(max_comp_streams);
1034static DEVICE_ATTR_RW(comp_algorithm); 1034static DEVICE_ATTR_RW(comp_algorithm);
1035 1035
1036static 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
1054static DEVICE_ATTR_RO(io_stat);
1036ZRAM_ATTR_RO(num_reads); 1055ZRAM_ATTR_RO(num_reads);
1037ZRAM_ATTR_RO(num_writes); 1056ZRAM_ATTR_RO(num_writes);
1038ZRAM_ATTR_RO(failed_reads); 1057ZRAM_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