zram: remove obsolete sysfs attrs
authorSergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
Wed, 22 Feb 2017 23:46:45 +0000 (15:46 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 23 Feb 2017 00:41:30 +0000 (16:41 -0800)
We had a deprecated_attr_warn() warning for 2 years and now the time has
come and we finally can do the cleanup.

The plan was as follows:

: per-stat sysfs attributes are considered to be deprecated.
: The basic strategy is:
: -- the existing RW nodes will be downgraded to WO nodes (in linux 4.11)
: -- deprecated RO sysfs nodes will eventually be removed (in linux 4.11)
:
: The list of deprecated attributes can be found here:
: Documentation/ABI/obsolete/sysfs-block-zram
:
: Basically, every attribute that has its own read accessible sysfs
: node (e.g. num_reads) *AND* is accessible via one of the stat files
: (zram<id>/stat or zram<id>/io_stat or zram<id>/mm_stat) is considered
: to be deprecated.

The patch also removes `obsolete/sysfs-block-zram', clean ups
`testing/sysfs-block-zram' and tweaks zram.txt files.

Link: http://lkml.kernel.org/r/20170118035838.11090-1-sergey.senozhatsky@gmail.com
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Acked-by: Minchan Kim <minchan@kernel.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Documentation/ABI/obsolete/sysfs-block-zram [deleted file]
Documentation/ABI/testing/sysfs-block-zram
Documentation/blockdev/zram.txt
drivers/block/zram/zram_drv.c

diff --git a/Documentation/ABI/obsolete/sysfs-block-zram b/Documentation/ABI/obsolete/sysfs-block-zram
deleted file mode 100644 (file)
index 720ea92..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-What:          /sys/block/zram<id>/num_reads
-Date:          August 2015
-Contact:       Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
-Description:
-               The num_reads file is read-only and specifies the number of
-               reads (failed or successful) done on this device.
-               Now accessible via zram<id>/stat node.
-
-What:          /sys/block/zram<id>/num_writes
-Date:          August 2015
-Contact:       Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
-Description:
-               The num_writes file is read-only and specifies the number of
-               writes (failed or successful) done on this device.
-               Now accessible via zram<id>/stat node.
-
-What:          /sys/block/zram<id>/invalid_io
-Date:          August 2015
-Contact:       Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
-Description:
-               The invalid_io file is read-only and specifies the number of
-               non-page-size-aligned I/O requests issued to this device.
-               Now accessible via zram<id>/io_stat node.
-
-What:          /sys/block/zram<id>/failed_reads
-Date:          August 2015
-Contact:       Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
-Description:
-               The failed_reads file is read-only and specifies the number of
-               failed reads happened on this device.
-               Now accessible via zram<id>/io_stat node.
-
-What:          /sys/block/zram<id>/failed_writes
-Date:          August 2015
-Contact:       Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
-Description:
-               The failed_writes file is read-only and specifies the number of
-               failed writes happened on this device.
-               Now accessible via zram<id>/io_stat node.
-
-What:          /sys/block/zram<id>/notify_free
-Date:          August 2015
-Contact:       Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
-Description:
-               The notify_free file is read-only. Depending on device usage
-               scenario it may account a) the number of pages freed because
-               of swap slot free notifications or b) the number of pages freed
-               because of REQ_DISCARD requests sent by bio. The former ones
-               are sent to a swap block device when a swap slot is freed, which
-               implies that this disk is being used as a swap disk. The latter
-               ones are sent by filesystem mounted with discard option,
-               whenever some data blocks are getting discarded.
-               Now accessible via zram<id>/io_stat node.
-
-What:          /sys/block/zram<id>/zero_pages
-Date:          August 2015
-Contact:       Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
-Description:
-               The zero_pages file is read-only and specifies number of zero
-               filled pages written to this disk. No memory is allocated for
-               such pages.
-               Now accessible via zram<id>/mm_stat node.
-
-What:          /sys/block/zram<id>/orig_data_size
-Date:          August 2015
-Contact:       Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
-Description:
-               The orig_data_size file is read-only and specifies uncompressed
-               size of data stored in this disk. This excludes zero-filled
-               pages (zero_pages) since no memory is allocated for them.
-               Unit: bytes
-               Now accessible via zram<id>/mm_stat node.
-
-What:          /sys/block/zram<id>/compr_data_size
-Date:          August 2015
-Contact:       Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
-Description:
-               The compr_data_size file is read-only and specifies compressed
-               size of data stored in this disk. So, compression ratio can be
-               calculated using orig_data_size and this statistic.
-               Unit: bytes
-               Now accessible via zram<id>/mm_stat node.
-
-What:          /sys/block/zram<id>/mem_used_total
-Date:          August 2015
-Contact:       Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
-Description:
-               The mem_used_total file is read-only and specifies the amount
-               of memory, including allocator fragmentation and metadata
-               overhead, allocated for this disk. So, allocator space
-               efficiency can be calculated using compr_data_size and this
-               statistic.
-               Unit: bytes
-               Now accessible via zram<id>/mm_stat node.
-
-What:          /sys/block/zram<id>/mem_used_max
-Date:          August 2015
-Contact:       Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
-Description:
-               The mem_used_max file is read/write and specifies the amount
-               of maximum memory zram have consumed to store compressed data.
-               For resetting the value, you should write "0". Otherwise,
-               you could see -EINVAL.
-               Unit: bytes
-               Downgraded to write-only node: so it's possible to set new
-               value only; its current value is stored in zram<id>/mm_stat
-               node.
-
-What:          /sys/block/zram<id>/mem_limit
-Date:          August 2015
-Contact:       Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
-Description:
-               The mem_limit file is read/write and specifies the maximum
-               amount of memory ZRAM can use to store the compressed data.
-               The limit could be changed in run time and "0" means disable
-               the limit.  No limit is the initial state.  Unit: bytes
-               Downgraded to write-only node: so it's possible to set new
-               value only; its current value is stored in zram<id>/mm_stat
-               node.
index 4518d30b8c2edf5b30405e6da700f757000aab77..451b6d882b2c182af1e9ce9b28bcd73b1218ae26 100644 (file)
@@ -22,41 +22,6 @@ Description:
                device. The reset operation frees all the memory associated
                with this device.
 
-What:          /sys/block/zram<id>/num_reads
-Date:          August 2010
-Contact:       Nitin Gupta <ngupta@vflare.org>
-Description:
-               The num_reads file is read-only and specifies the number of
-               reads (failed or successful) done on this device.
-
-What:          /sys/block/zram<id>/num_writes
-Date:          August 2010
-Contact:       Nitin Gupta <ngupta@vflare.org>
-Description:
-               The num_writes file is read-only and specifies the number of
-               writes (failed or successful) done on this device.
-
-What:          /sys/block/zram<id>/invalid_io
-Date:          August 2010
-Contact:       Nitin Gupta <ngupta@vflare.org>
-Description:
-               The invalid_io file is read-only and specifies the number of
-               non-page-size-aligned I/O requests issued to this device.
-
-What:          /sys/block/zram<id>/failed_reads
-Date:          February 2014
-Contact:       Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
-Description:
-               The failed_reads file is read-only and specifies the number of
-               failed reads happened on this device.
-
-What:          /sys/block/zram<id>/failed_writes
-Date:          February 2014
-Contact:       Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
-Description:
-               The failed_writes file is read-only and specifies the number of
-               failed writes happened on this device.
-
 What:          /sys/block/zram<id>/max_comp_streams
 Date:          February 2014
 Contact:       Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
@@ -73,74 +38,24 @@ Description:
                available and selected compression algorithms, change
                compression algorithm selection.
 
-What:          /sys/block/zram<id>/notify_free
-Date:          August 2010
-Contact:       Nitin Gupta <ngupta@vflare.org>
-Description:
-               The notify_free file is read-only. Depending on device usage
-               scenario it may account a) the number of pages freed because
-               of swap slot free notifications or b) the number of pages freed
-               because of REQ_DISCARD requests sent by bio. The former ones
-               are sent to a swap block device when a swap slot is freed, which
-               implies that this disk is being used as a swap disk. The latter
-               ones are sent by filesystem mounted with discard option,
-               whenever some data blocks are getting discarded.
-
-What:          /sys/block/zram<id>/zero_pages
-Date:          August 2010
-Contact:       Nitin Gupta <ngupta@vflare.org>
-Description:
-               The zero_pages file is read-only and specifies number of zero
-               filled pages written to this disk. No memory is allocated for
-               such pages.
-
-What:          /sys/block/zram<id>/orig_data_size
-Date:          August 2010
-Contact:       Nitin Gupta <ngupta@vflare.org>
-Description:
-               The orig_data_size file is read-only and specifies uncompressed
-               size of data stored in this disk. This excludes zero-filled
-               pages (zero_pages) since no memory is allocated for them.
-               Unit: bytes
-
-What:          /sys/block/zram<id>/compr_data_size
-Date:          August 2010
-Contact:       Nitin Gupta <ngupta@vflare.org>
-Description:
-               The compr_data_size file is read-only and specifies compressed
-               size of data stored in this disk. So, compression ratio can be
-               calculated using orig_data_size and this statistic.
-               Unit: bytes
-
-What:          /sys/block/zram<id>/mem_used_total
-Date:          August 2010
-Contact:       Nitin Gupta <ngupta@vflare.org>
-Description:
-               The mem_used_total file is read-only and specifies the amount
-               of memory, including allocator fragmentation and metadata
-               overhead, allocated for this disk. So, allocator space
-               efficiency can be calculated using compr_data_size and this
-               statistic.
-               Unit: bytes
-
 What:          /sys/block/zram<id>/mem_used_max
 Date:          August 2014
 Contact:       Minchan Kim <minchan@kernel.org>
 Description:
-               The mem_used_max file is read/write and specifies the amount
-               of maximum memory zram have consumed to store compressed data.
-               For resetting the value, you should write "0". Otherwise,
-               you could see -EINVAL.
+               The mem_used_max file is write-only and is used to reset
+               the counter of maximum memory zram have consumed to store
+               compressed data. For resetting the value, you should write
+               "0". Otherwise, you could see -EINVAL.
                Unit: bytes
 
 What:          /sys/block/zram<id>/mem_limit
 Date:          August 2014
 Contact:       Minchan Kim <minchan@kernel.org>
 Description:
-               The mem_limit file is read/write and specifies the maximum
-               amount of memory ZRAM can use to store the compressed data.  The
-               limit could be changed in run time and "0" means disable the
-               limit.  No limit is the initial state.  Unit: bytes
+               The mem_limit file is write-only and specifies the maximum
+               amount of memory ZRAM can use to store the compressed data.
+               The limit could be changed in run time and "0" means disable
+               the limit. No limit is the initial state.  Unit: bytes
 
 What:          /sys/block/zram<id>/compact
 Date:          August 2015
index 0535ae1f73e53e6e85a64a37cc7f05e9418adb7d..1c0c08d9206b1e145e8a8ccc1a784ac0b19156e7 100644 (file)
@@ -161,42 +161,14 @@ Name            access            description
 disksize          RW    show and set the device's disk size
 initstate         RO    shows the initialization state of the device
 reset             WO    trigger device reset
-num_reads         RO    the number of reads
-failed_reads      RO    the number of failed reads
-num_write         RO    the number of writes
-failed_writes     RO    the number of failed writes
-invalid_io        RO    the number of non-page-size-aligned I/O requests
+mem_used_max      WO    reset the `mem_used_max' counter (see later)
+mem_limit         WO    specifies the maximum amount of memory ZRAM can use
+                        to store the compressed data
 max_comp_streams  RW    the number of possible concurrent compress operations
 comp_algorithm    RW    show and change the compression algorithm
-notify_free       RO    the number of notifications to free pages (either
-                        slot free notifications or REQ_DISCARD requests)
-zero_pages        RO    the number of zero filled pages written to this disk
-orig_data_size    RO    uncompressed size of data stored in this disk
-compr_data_size   RO    compressed size of data stored in this disk
-mem_used_total    RO    the amount of memory allocated for this disk
-mem_used_max      RW    the maximum amount of memory zram have consumed to
-                        store the data (to reset this counter to the actual
-                        current value, write 1 to this attribute)
-mem_limit         RW    the maximum amount of memory ZRAM can use to store
-                        the compressed data
-pages_compacted   RO    the number of pages freed during compaction
-                        (available only via zram<id>/mm_stat node)
 compact           WO    trigger memory compaction
 debug_stat        RO    this file is used for zram debugging purposes
 
-WARNING
-=======
-per-stat sysfs attributes are considered to be deprecated.
-The basic strategy is:
--- the existing RW nodes will be downgraded to WO nodes (in linux 4.11)
--- deprecated RO sysfs nodes will eventually be removed (in linux 4.11)
-
-The list of deprecated attributes can be found here:
-Documentation/ABI/obsolete/sysfs-block-zram
-
-Basically, every attribute that has its own read accessible sysfs node
-(e.g. num_reads) *AND* is accessible via one of the stat files (zram<id>/stat
-or zram<id>/io_stat or zram<id>/mm_stat) is considered to be deprecated.
 
 User space is advised to use the following files to read the device statistics.
 
@@ -211,22 +183,40 @@ The stat file represents device's I/O statistics not accounted by block
 layer and, thus, not available in zram<id>/stat file. It consists of a
 single line of text and contains the following stats separated by
 whitespace:
-       failed_reads
-       failed_writes
-       invalid_io
-       notify_free
+ failed_reads     the number of failed reads
+ failed_writes    the number of failed writes
+ invalid_io       the number of non-page-size-aligned I/O requests
+ notify_free      Depending on device usage scenario it may account
+                  a) the number of pages freed because of swap slot free
+                  notifications or b) the number of pages freed because of
+                  REQ_DISCARD requests sent by bio. The former ones are
+                  sent to a swap block device when a swap slot is freed,
+                  which implies that this disk is being used as a swap disk.
+                  The latter ones are sent by filesystem mounted with
+                  discard option, whenever some data blocks are getting
+                  discarded.
 
 File /sys/block/zram<id>/mm_stat
 
 The stat file represents device's mm statistics. It consists of a single
 line of text and contains the following stats separated by whitespace:
-       orig_data_size
-       compr_data_size
-       mem_used_total
-       mem_limit
-       mem_used_max
-       zero_pages
-       num_migrated
+ orig_data_size   uncompressed size of data stored in this disk.
+                  This excludes zero-filled pages (zero_pages) since no
+                  memory is allocated for them.
+                  Unit: bytes
+ compr_data_size  compressed size of data stored in this disk
+ mem_used_total   the amount of memory allocated for this disk. This
+                  includes allocator fragmentation and metadata overhead,
+                  allocated for this disk. So, allocator space efficiency
+                  can be calculated using compr_data_size and this statistic.
+                  Unit: bytes
+ mem_limit        the maximum amount of memory ZRAM can use to store
+                  the compressed data
+ mem_used_max     the maximum amount of memory zram have consumed to
+                  store the data
+ zero_pages       the number of zero filled pages written to this disk.
+                  No memory is allocated for such pages.
+ pages_compacted  the number of pages freed during compaction
 
 9) Deactivate:
        swapoff /dev/zram0
index 3cd7856156b42de033b8e18db918542219026152..c73fede582f7292ae7193719e0368ea91acceb43 100644 (file)
@@ -45,27 +45,6 @@ static const char *default_compressor = "lzo";
 /* Module params (documentation at end) */
 static unsigned int num_devices = 1;
 
-static inline void deprecated_attr_warn(const char *name)
-{
-       pr_warn_once("%d (%s) Attribute %s (and others) will be removed. %s\n",
-                       task_pid_nr(current),
-                       current->comm,
-                       name,
-                       "See zram documentation.");
-}
-
-#define ZRAM_ATTR_RO(name)                                             \
-static ssize_t name##_show(struct device *d,                           \
-                               struct device_attribute *attr, char *b) \
-{                                                                      \
-       struct zram *zram = dev_to_zram(d);                             \
-                                                                       \
-       deprecated_attr_warn(__stringify(name));                        \
-       return scnprintf(b, PAGE_SIZE, "%llu\n",                        \
-               (u64)atomic64_read(&zram->stats.name));                 \
-}                                                                      \
-static DEVICE_ATTR_RO(name);
-
 static inline bool init_done(struct zram *zram)
 {
        return zram->disksize;
@@ -218,47 +197,6 @@ static ssize_t disksize_show(struct device *dev,
        return scnprintf(buf, PAGE_SIZE, "%llu\n", zram->disksize);
 }
 
-static ssize_t orig_data_size_show(struct device *dev,
-               struct device_attribute *attr, char *buf)
-{
-       struct zram *zram = dev_to_zram(dev);
-
-       deprecated_attr_warn("orig_data_size");
-       return scnprintf(buf, PAGE_SIZE, "%llu\n",
-               (u64)(atomic64_read(&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);
-
-       deprecated_attr_warn("mem_used_total");
-       down_read(&zram->init_lock);
-       if (init_done(zram)) {
-               struct zram_meta *meta = zram->meta;
-               val = zs_get_total_pages(meta->mem_pool);
-       }
-       up_read(&zram->init_lock);
-
-       return scnprintf(buf, PAGE_SIZE, "%llu\n", val << PAGE_SHIFT);
-}
-
-static ssize_t mem_limit_show(struct device *dev,
-               struct device_attribute *attr, char *buf)
-{
-       u64 val;
-       struct zram *zram = dev_to_zram(dev);
-
-       deprecated_attr_warn("mem_limit");
-       down_read(&zram->init_lock);
-       val = zram->limit_pages;
-       up_read(&zram->init_lock);
-
-       return scnprintf(buf, PAGE_SIZE, "%llu\n", val << PAGE_SHIFT);
-}
-
 static ssize_t mem_limit_store(struct device *dev,
                struct device_attribute *attr, const char *buf, size_t len)
 {
@@ -277,21 +215,6 @@ static ssize_t mem_limit_store(struct device *dev,
        return len;
 }
 
-static ssize_t mem_used_max_show(struct device *dev,
-               struct device_attribute *attr, char *buf)
-{
-       u64 val = 0;
-       struct zram *zram = dev_to_zram(dev);
-
-       deprecated_attr_warn("mem_used_max");
-       down_read(&zram->init_lock);
-       if (init_done(zram))
-               val = atomic_long_read(&zram->stats.max_used_pages);
-       up_read(&zram->init_lock);
-
-       return scnprintf(buf, PAGE_SIZE, "%llu\n", val << PAGE_SHIFT);
-}
-
 static ssize_t mem_used_max_store(struct device *dev,
                struct device_attribute *attr, const char *buf, size_t len)
 {
@@ -467,14 +390,6 @@ static ssize_t debug_stat_show(struct device *dev,
 static DEVICE_ATTR_RO(io_stat);
 static DEVICE_ATTR_RO(mm_stat);
 static DEVICE_ATTR_RO(debug_stat);
-ZRAM_ATTR_RO(num_reads);
-ZRAM_ATTR_RO(num_writes);
-ZRAM_ATTR_RO(failed_reads);
-ZRAM_ATTR_RO(failed_writes);
-ZRAM_ATTR_RO(invalid_io);
-ZRAM_ATTR_RO(notify_free);
-ZRAM_ATTR_RO(zero_pages);
-ZRAM_ATTR_RO(compr_data_size);
 
 static inline bool zram_meta_get(struct zram *zram)
 {
@@ -1188,10 +1103,8 @@ static DEVICE_ATTR_WO(compact);
 static DEVICE_ATTR_RW(disksize);
 static DEVICE_ATTR_RO(initstate);
 static DEVICE_ATTR_WO(reset);
-static DEVICE_ATTR_RO(orig_data_size);
-static DEVICE_ATTR_RO(mem_used_total);
-static DEVICE_ATTR_RW(mem_limit);
-static DEVICE_ATTR_RW(mem_used_max);
+static DEVICE_ATTR_WO(mem_limit);
+static DEVICE_ATTR_WO(mem_used_max);
 static DEVICE_ATTR_RW(max_comp_streams);
 static DEVICE_ATTR_RW(comp_algorithm);
 
@@ -1199,17 +1112,7 @@ static struct attribute *zram_disk_attrs[] = {
        &dev_attr_disksize.attr,
        &dev_attr_initstate.attr,
        &dev_attr_reset.attr,
-       &dev_attr_num_reads.attr,
-       &dev_attr_num_writes.attr,
-       &dev_attr_failed_reads.attr,
-       &dev_attr_failed_writes.attr,
        &dev_attr_compact.attr,
-       &dev_attr_invalid_io.attr,
-       &dev_attr_notify_free.attr,
-       &dev_attr_zero_pages.attr,
-       &dev_attr_orig_data_size.attr,
-       &dev_attr_compr_data_size.attr,
-       &dev_attr_mem_used_total.attr,
        &dev_attr_mem_limit.attr,
        &dev_attr_mem_used_max.attr,
        &dev_attr_max_comp_streams.attr,