aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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