staging: zcache: handle zcache_[eph|pers]_zpages for zero-filled page

Increment/decrement zcache_[eph|pers]_zpages for zero-filled pages,
the main point of the counters for zpages and pageframes is to be
able to calculate density == zpages/pageframes. A zero-filled page
becomes a zpage that "compresses" to zero bytes and, as a result,
requires zero pageframes for storage. So the zpages counter should
be increased but the pageframes counter should not.

[Dan Magenheimer <dan.magenheimer@oracle.com>: patch description]
Acked-by: Dan Magenheimer <dan.magenheimer@oracle.com>
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Wanpeng Li <liwanp@linux.vnet.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Wanpeng Li 2013-04-02 10:46:15 +08:00 committed by Greg Kroah-Hartman
parent 8762c7dde7
commit b0749e77ae

View File

@ -648,6 +648,8 @@ static int zcache_pampd_get_data_and_free(char *data, size_t *sizep, bool raw,
if (pampd == (void *)ZERO_FILLED) {
handle_zero_filled_page(data);
zero_filled = true;
zsize = 0;
zpages = 1;
if (!raw)
*sizep = PAGE_SIZE;
goto zero_fill;
@ -696,8 +698,11 @@ static void zcache_pampd_free(void *pampd, struct tmem_pool *pool,
BUG_ON(preemptible());
if (pampd == (void *)ZERO_FILLED)
if (pampd == (void *)ZERO_FILLED) {
zero_filled = true;
zsize = 0;
zpages = 1;
}
if (pampd_is_remote(pampd) && !zero_filled) {
BUG_ON(!ramster_enabled);