Messages in this thread | | | Date | Wed, 20 Mar 2013 18:30:38 +0800 | From | Bob Liu <> | Subject | Re: [PATCH v4 2/8] staging: zcache: zero-filled pages awareness |
| |
> @@ -641,16 +691,22 @@ static void zcache_pampd_free(void *pampd, struct tmem_pool *pool, > { > struct page *page = NULL; > unsigned int zsize, zpages; > + bool zero_filled = false; > > BUG_ON(preemptible()); > - if (pampd_is_remote(pampd)) { > + > + if (pampd == (void *)ZERO_FILLED) > + zero_filled = true; > + > + if (pampd_is_remote(pampd) && !zero_filled) { > BUG_ON(!ramster_enabled); > pampd = ramster_pampd_free(pampd, pool, oid, index, acct); > if (pampd == NULL) > return; > } > if (is_ephemeral(pool)) { > - page = zbud_free_and_delist((struct zbudref *)pampd, > + if (!zero_filled) > + page = zbud_free_and_delist((struct zbudref *)pampd, > true, &zsize, &zpages);
This check should also apply for !is_ephemeral(pool).
> if (page) > dec_zcache_eph_pageframes(); > @@ -667,7 +723,7 @@ static void zcache_pampd_free(void *pampd, struct tmem_pool *pool, > } > if (!is_local_client(pool->client)) > ramster_count_foreign_pages(is_ephemeral(pool), -1); > - if (page) > + if (page && !zero_filled) > zcache_free_page(page); > } > >
-- Regards, -Bob
| |