From: Ric Mason <ric.masonn@gmail.com>
To: Konrad Rzeszutek Wilk <konrad@kernel.org>
Cc: dan.magenheimer@oracle.com, konrad.wilk@oracle.com,
sjenning@linux.vnet.ibm.com, gregkh@linuxfoundation.org,
akpm@linux-foundation.org, ngupta@vflare.org,
rcj@linux.vnet.ibm.com, linux-mm@kvack.org,
linux-kernel@vger.kernel.org, devel@driverdev.osuosl.org
Subject: Re: [PATCH v2] Make frontswap+cleancache and its friend be modularized.
Date: Sun, 03 Feb 2013 02:52:00 -0600 [thread overview]
Message-ID: <1359881520.1328.14.camel@kernel.cn.ibm.com> (raw)
In-Reply-To: <1359750184-23408-1-git-send-email-konrad.wilk@oracle.com>
Hi Konrad,
On Fri, 2013-02-01 at 15:22 -0500, Konrad Rzeszutek Wilk wrote:
I have already enable frontswap,cleancache,zcache,
FRONTSWAP [=y]
CLEANCACHE [=y]
ZCACHE [=y]
But all of knode under /sys/kernel/debug/frontswap and cleancache still
zero, my swap device is enable, where I miss?
> Parts of this patch have been posted in the post (way back in November), but
> this patchset expanded it a bit. The goal of the patches is to make the
> different frontswap/cleancache API backends be modules - and load way way after
> the swap system (or filesystem) has been initialized. Naturally one can still
> build the frontswap+cleancache backend devices in the kernel. The next goal
> (after these patches) is to also be able to unload the backend drivers - but
> that places some interesting requirements to "reload" the swap device with
> swap pages (don't need to worry that much about cleancache as it is a "secondary"
> cache and can be dumped). Seth had posted some patches for that in the zswap
> backend - and they could be more generally repurporsed.
>
> Anyhow, I did not want to lose the authorship of some of the patches so I
> didn't squash the ones that were made by Dan and mine. I can do it for review
> if it would make it easier, but from my recollection on how Linus likes things
> run he would prefer to keep the history (even the kludge parts).
>
> The general flow prior to these patches was [I am concentrating on the
> frontswap here, but the cleancache is similar, just s/swapon/mount/]:
>
> 1) kernel inits frontswap_init
> 2) kernel inits zcache (or some other backend)
> 3) user does swapon /dev/XX and the writes to the swap disk end up in
> frontswap and then in the backend.
>
> With the module loading, the 1) is still part of the bootup, but the
> 2) or 3) can be run at anytime. This means one could load the backend
> _after_ the swap disk has been initialized and running along. Or
> _before_ the swap disk has been setup - but that is similar to the
> existing case so not that exciting.
>
> To deal with that scenario the frontswap keeps an queue (actually an atomic
> bitmap of the swap disks that have been init) and when the backend registers -
> frontswap runs the backend init on the queued up swap disks.
>
> The interesting thing is that we can be to certain degree racy when the
> swap system starts steering pages to frontswap. Meaning after the backend
> has registered it is OK if the pages are still hitting the disk instead of
> the backend. Naturally this is unacceptable if one were to unload the
> backend (not yet supported) - as we need to be quite atomic at that stage
> and need to stop processing the pages the moment the backend is being
> unloaded. To support this, the frontswap is using the struct static_key
> which are incredibly light when they are in usage. They are incredibly heavy
> when the value switches (on/off), but that is OK. The next part of unloading is
> also taking the pages that are in the backend and feed them in the swap
> storage (and Seth's patches do some of this).
>
> Also attached is one patch from Minchan that fixes the condition where the
> backend was constricted in allocating memory at init - b/c we were holding
> a spin-lock. His patch fixes that and we are just holding the swapon_mutex
> instead. It has been rebased on top of my patches.
>
> This patchset is based on Greg KH's staging tree (since the zcache2 has
> now been renamed to zcache). To be exact, it is based on
> 085494ac2039433a5df9fdd6fb653579e18b8c71
>
> Dan Magenheimer (4):
> mm: cleancache: lazy initialization to allow tmem backends to build/run as modules
> mm: frontswap: lazy initialization to allow tmem backends to build/run as modules
> staging: zcache: enable ramster to be built/loaded as a module
> xen: tmem: enable Xen tmem shim to be built/loaded as a module
>
> Konrad Rzeszutek Wilk (10):
> frontswap: Make frontswap_init use a pointer for the ops.
> cleancache: Make cleancache_init use a pointer for the ops
> staging: zcache: enable zcache to be built/loaded as a module
> xen/tmem: Remove the subsys call.
> frontswap: Remove the check for frontswap_enabled.
> frontswap: Use static_key instead of frontswap_enabled and frontswap_ops
> cleancache: Remove the check for cleancache_enabled.
> cleancache: Use static_key instead of cleancache_ops and cleancache_enabled.
> zcache/tmem: Better error checking on frontswap_register_ops return value.
> xen/tmem: Add missing %s in the printk statement.
>
> Minchan Kim (1):
> frontswap: Get rid of swap_lock dependency
>
>
> drivers/staging/zcache/Kconfig | 6 +-
> drivers/staging/zcache/Makefile | 11 +-
> drivers/staging/zcache/ramster.h | 6 +-
> drivers/staging/zcache/ramster/nodemanager.c | 9 +-
> drivers/staging/zcache/ramster/ramster.c | 29 ++-
> drivers/staging/zcache/ramster/ramster.h | 2 +-
> .../staging/zcache/ramster/ramster_nodemanager.h | 2 +
> drivers/staging/zcache/tmem.c | 6 +-
> drivers/staging/zcache/tmem.h | 8 +-
> drivers/staging/zcache/zcache-main.c | 64 +++++-
> drivers/staging/zcache/zcache.h | 2 +-
> drivers/xen/Kconfig | 4 +-
> drivers/xen/tmem.c | 55 +++--
> drivers/xen/xen-selfballoon.c | 13 +-
> include/linux/cleancache.h | 27 ++-
> include/linux/frontswap.h | 31 +--
> include/xen/tmem.h | 8 +
> mm/cleancache.c | 241 ++++++++++++++++++---
> mm/frontswap.c | 121 ++++++++---
> mm/swapfile.c | 7 +-
> 20 files changed, 505 insertions(+), 147 deletions(-)
>
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to majordomo@kvack.org. For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2013-02-03 8:52 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-01 20:22 [PATCH v2] Make frontswap+cleancache and its friend be modularized Konrad Rzeszutek Wilk
2013-02-01 20:22 ` [PATCH 01/15] mm: cleancache: lazy initialization to allow tmem backends to build/run as modules Konrad Rzeszutek Wilk
2013-02-03 8:06 ` Ric Mason
2013-02-01 20:22 ` [PATCH 02/15] mm: frontswap: " Konrad Rzeszutek Wilk
2013-02-03 7:07 ` Ric Mason
2013-02-04 5:53 ` Bob Liu
2013-02-05 0:23 ` Ric Mason
2013-02-01 20:22 ` [PATCH 03/15] frontswap: Make frontswap_init use a pointer for the ops Konrad Rzeszutek Wilk
2013-02-01 20:22 ` [PATCH 04/15] cleancache: Make cleancache_init " Konrad Rzeszutek Wilk
2013-02-01 20:22 ` [PATCH 05/15] staging: zcache: enable ramster to be built/loaded as a module Konrad Rzeszutek Wilk
2013-02-01 20:22 ` [PATCH 06/15] staging: zcache: enable zcache " Konrad Rzeszutek Wilk
2013-02-01 20:22 ` [PATCH 07/15] xen: tmem: enable Xen tmem shim " Konrad Rzeszutek Wilk
2013-02-01 20:22 ` [PATCH 08/15] xen/tmem: Remove the subsys call Konrad Rzeszutek Wilk
2013-02-01 20:22 ` [PATCH 09/15] frontswap: Remove the check for frontswap_enabled Konrad Rzeszutek Wilk
2013-02-01 20:22 ` [PATCH 10/15] frontswap: Use static_key instead of frontswap_enabled and frontswap_ops Konrad Rzeszutek Wilk
2013-02-01 20:23 ` [PATCH 11/15] cleancache: Remove the check for cleancache_enabled Konrad Rzeszutek Wilk
2013-02-01 20:23 ` [PATCH 12/15] cleancache: Use static_key instead of cleancache_ops and cleancache_enabled Konrad Rzeszutek Wilk
2013-02-01 20:23 ` [PATCH 13/15] frontswap: Get rid of swap_lock dependency Konrad Rzeszutek Wilk
2013-02-03 8:43 ` Wanpeng Li
2013-02-03 8:43 ` Wanpeng Li
2013-02-03 8:43 ` Wanpeng Li
2013-02-01 20:23 ` [PATCH 14/15] zcache/tmem: Better error checking on frontswap_register_ops return value Konrad Rzeszutek Wilk
2013-02-01 20:23 ` [PATCH 15/15] xen/tmem: Add missing %s in the printk statement Konrad Rzeszutek Wilk
2013-02-03 8:52 ` Ric Mason [this message]
2013-02-04 15:14 ` [PATCH v2] Make frontswap+cleancache and its friend be modularized Seth Jennings
2013-02-05 0:21 ` Ric Mason
2013-02-05 0:38 ` Konrad Rzeszutek Wilk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1359881520.1328.14.camel@kernel.cn.ibm.com \
--to=ric.masonn@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=dan.magenheimer@oracle.com \
--cc=devel@driverdev.osuosl.org \
--cc=gregkh@linuxfoundation.org \
--cc=konrad.wilk@oracle.com \
--cc=konrad@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ngupta@vflare.org \
--cc=rcj@linux.vnet.ibm.com \
--cc=sjenning@linux.vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).