On Wed, Mar 13, 2013 at 09:53:48AM -0700, Dan Magenheimer wrote: >> From: Wanpeng Li [mailto:liwanp@xxxxxxxxxxxxxxxxxx] >> Subject: [PATCH 2/4] zcache: zero-filled pages awareness >> >> Compression of zero-filled pages can unneccessarily cause internal >> fragmentation, and thus waste memory. This special case can be >> optimized. >> >> This patch captures zero-filled pages, and marks their corresponding >> zcache backing page entry as zero-filled. Whenever such zero-filled >> page is retrieved, we fill the page frame with zero. >> >> Signed-off-by: Wanpeng Li <liwanp@xxxxxxxxxxxxxxxxxx> >> --- >> drivers/staging/zcache/tmem.c | 4 +- >> drivers/staging/zcache/tmem.h | 5 ++ >> drivers/staging/zcache/zcache-main.c | 87 ++++++++++++++++++++++++++++++---- >> 3 files changed, 85 insertions(+), 11 deletions(-) >> >> diff --git a/drivers/staging/zcache/tmem.c b/drivers/staging/zcache/tmem.c >> index a2b7e03..62468ea 100644 >> --- a/drivers/staging/zcache/tmem.c >> +++ b/drivers/staging/zcache/tmem.c >> @@ -597,7 +597,9 @@ int tmem_put(struct tmem_pool *pool, struct tmem_oid *oidp, uint32_t index, >> if (unlikely(ret == -ENOMEM)) >> /* may have partially built objnode tree ("stump") */ >> goto delete_and_free; >> - (*tmem_pamops.create_finish)(pampd, is_ephemeral(pool)); >> + if (pampd != (void *)ZERO_FILLED) >> + (*tmem_pamops.create_finish)(pampd, is_ephemeral(pool)); >> + >> goto out; >> >> delete_and_free: >> diff --git a/drivers/staging/zcache/tmem.h b/drivers/staging/zcache/tmem.h >> index adbe5a8..6719dbd 100644 >> --- a/drivers/staging/zcache/tmem.h >> +++ b/drivers/staging/zcache/tmem.h >> @@ -204,6 +204,11 @@ struct tmem_handle { >> uint16_t client_id; >> }; >> >> +/* >> + * mark pampd to special vaule in order that later >> + * retrieve will identify zero-filled pages >> + */ >> +#define ZERO_FILLED 0x2 > >You can avoid changing tmem.[ch] entirely by moving this >definition into zcache-main.c and by moving the check >comparing pampd against ZERO_FILLED into zcache_pampd_create_finish() >I think that would be cleaner... Great point! > >If you change this and make the pageframe counter fix for PATCH 4/4, >please add my ack for the next version: > Thanks Dan. :-) Regards, Wanpeng Li >Acked-by: Dan Magenheimer <dan.magenheimer@xxxxxxxxxx> > >-- >To unsubscribe, send a message with 'unsubscribe linux-mm' in >the body to majordomo@xxxxxxxxx. For more info on Linux MM, >see: http://www.linux-mm.org/ . >Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a> -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>