Change the "enabled" parameter to be configurable at runtime.  Remove
the enabled check from init(), and move it to the frontswap store()
function; when enabled, pages will be stored, and when disabled, pages
won't be stored.

Signed-off-by: Dan Streetman <ddstr...@ieee.org>
---
 mm/zswap.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/mm/zswap.c b/mm/zswap.c
index 4249e82..e070b10 100644
--- a/mm/zswap.c
+++ b/mm/zswap.c
@@ -75,9 +75,10 @@ static u64 zswap_duplicate_entry;
 /*********************************
 * tunables
 **********************************/
-/* Enable/disable zswap (disabled by default, fixed at boot for now) */
-static bool zswap_enabled __read_mostly;
-module_param_named(enabled, zswap_enabled, bool, 0444);
+
+/* Enable/disable zswap (disabled by default) */
+static bool zswap_enabled;
+module_param_named(enabled, zswap_enabled, bool, 0644);
 
 /* Compressor to be used by zswap (fixed at boot for now) */
 #define ZSWAP_COMPRESSOR_DEFAULT "lzo"
@@ -648,6 +649,9 @@ static int zswap_frontswap_store(unsigned type, pgoff_t 
offset,
        u8 *src, *dst;
        struct zswap_header *zhdr;
 
+       if (!zswap_enabled)
+               return -EPERM;
+
        if (!tree) {
                ret = -ENODEV;
                goto reject;
@@ -901,9 +905,6 @@ static int __init init_zswap(void)
 {
        gfp_t gfp = __GFP_NORETRY | __GFP_NOWARN;
 
-       if (!zswap_enabled)
-               return 0;
-
        pr_info("loading zswap\n");
 
        zswap_pool = zpool_create_pool(zswap_zpool_type, "zswap", gfp,
-- 
2.1.0

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to