staging: zcache: fix account foregin counters against zero-filled pages
authorWanpeng Li <liwanp@linux.vnet.ibm.com>
Wed, 10 Apr 2013 00:25:51 +0000 (08:25 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 11 Apr 2013 19:58:39 +0000 (12:58 -0700)
zero-filled pages won't be compressed and sent to remote system. Monitor
the number ephemeral and persistent pages that Ramster has sent make no
sense. This patch skip account foregin counters against zero-filled pages.

Signed-off-by: Wanpeng Li <liwanp@linux.vnet.ibm.com>
Acked-by: Dan Magenheimer <dan.magenheimer@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/zcache/zcache-main.c

index f3de76d07073ab0d560799d94d0d650dc144a462..e23d814b539227ae64d73f0753eb5562a920db84 100644 (file)
@@ -415,7 +415,7 @@ create_in_new_page:
 got_pampd:
        inc_zcache_eph_zbytes(clen);
        inc_zcache_eph_zpages();
-       if (ramster_enabled && raw)
+       if (ramster_enabled && raw && !zero_filled)
                ramster_count_foreign_pages(true, 1);
        if (zero_filled)
                pampd = (void *)ZERO_FILLED;
@@ -500,7 +500,7 @@ create_in_new_page:
 got_pampd:
        inc_zcache_pers_zpages();
        inc_zcache_pers_zbytes(clen);
-       if (ramster_enabled && raw)
+       if (ramster_enabled && raw && !zero_filled)
                ramster_count_foreign_pages(false, 1);
        if (zero_filled)
                pampd = (void *)ZERO_FILLED;
@@ -681,7 +681,7 @@ zero_fill:
                dec_zcache_pers_zpages(zpages);
                dec_zcache_pers_zbytes(zsize);
        }
-       if (!is_local_client(pool->client))
+       if (!is_local_client(pool->client) && !zero_filled)
                ramster_count_foreign_pages(eph, -1);
        if (page && !zero_filled)
                zcache_free_page(page);
@@ -732,7 +732,7 @@ static void zcache_pampd_free(void *pampd, struct tmem_pool *pool,
                dec_zcache_pers_zpages(zpages);
                dec_zcache_pers_zbytes(zsize);
        }
-       if (!is_local_client(pool->client))
+       if (!is_local_client(pool->client) && !zero_filled)
                ramster_count_foreign_pages(is_ephemeral(pool), -1);
        if (page && !zero_filled)
                zcache_free_page(page);