From: Dan Magenheimer <dan.magenheimer@oracle.com>
To: Seth Jennings <sjenning@linux.vnet.ibm.com>
Cc: Ric Mason <ric.masonn@gmail.com>,
Andrew Morton <akpm@linux-foundation.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Nitin Gupta <ngupta@vflare.org>, Minchan Kim <minchan@kernel.org>,
Konrad Wilk <konrad.wilk@oracle.com>,
Robert Jennings <rcj@linux.vnet.ibm.com>,
Jenifer Hopper <jhopper@us.ibm.com>, Mel Gorman <mgorman@suse.de>,
Johannes Weiner <jweiner@redhat.com>,
Rik van Riel <riel@redhat.com>,
Larry Woodman <lwoodman@redhat.com>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Dave Hansen <dave@linux.vnet.ibm.com>,
Joe Perches <joe@perches.com>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
devel@driverdev.osuosl.org
Subject: RE: [PATCHv5 4/8] zswap: add to mm/
Date: Mon, 18 Feb 2013 15:17:16 -0800 (PST) [thread overview]
Message-ID: <d0ca0139-cad3-4ef4-9d21-c1631393db24@default> (raw)
In-Reply-To: <5122B0A0.3090401@linux.vnet.ibm.com>
> From: Seth Jennings [mailto:sjenning@linux.vnet.ibm.com]
> Subject: Re: [PATCHv5 4/8] zswap: add to mm/
>
> On 02/18/2013 03:59 PM, Dan Magenheimer wrote:
> >>>>> please document in Documentation/kernel-parameters.txt.
> >>>>
> >>>> Will do.
> >>>
> >>> Is that a good idea? Konrad's frontswap/cleancache patches
> >>> to fix frontswap/cleancache initialization so that backends
> >>> can be built/loaded as modules may be merged for 3.9.
> >>> AFAIK, module parameters are not included in kernel-parameters.txt.
> >>
> >> This is true. However, the frontswap/cleancache init stuff isn't the
> >> only reason zswap is built-in only. The writeback code depends on
> >> non-exported kernel symbols:
> >>
> >> swapcache_free
> >> __swap_writepage
> >> __add_to_swap_cache
> >> swapcache_prepare
> >> swapper_space
> >> end_swap_bio_write
> >>
> >> I know a fix is as trivial as exporting them, but I didn't want to
> >> take on that debate right now.
> >
> > Hmmm... I wonder if exporting these might be the best solution
> > as it (unnecessarily?) exposes some swap subsystem internals.
> > I wonder if a small change to read_swap_cache_async might
> > be more acceptable.
>
> Yes, I'm not saying that I'm for exporting them; just that that would
> be an easy and probably improper fix.
>
> As I recall, the only thing I really needed to change in my adaption
> of read_swap_cache_async(), zswap_get_swap_cache_page() in zswap, was
> the assumption built in that it is swapping in a page on behalf of a
> userspace program with the vma argument and alloc_page_vma(). Maybe
> if we change it to just use alloc_page when vma is NULL, that could
> work. In a non-NUMA kernel alloc_page_vma() equals alloc_page() so I
> wouldn't expect weird things doing that.
The zcache version (zcache_get_swap_cache_page, in linux-next) expects
the new_page to be pre-allocated and passed in. This could be
done easily with something like the patch below. But both the
zswap and zcache version require three distinct return values
and slightly different actions before returning "success" so
some minor surgery will be needed there as well.
With a more generic read_swap_cache_async, I think the only
remaining swap subsystem change might be the modified
__swap_writepage (and possibly the end_swap_bio_write change,
though that seems to be mostly just to modify a counter...
may not be really needed.)
Oh, and then of course read_swap_cache_async() would need to be
exported.
Dan
diff --git a/mm/swap_state.c b/mm/swap_state.c
index 0cb36fb..c0e2509 100644
--- a/mm/swap_state.c
+++ b/mm/swap_state.c
@@ -279,9 +279,10 @@ struct page * lookup_swap_cache(swp_entry_t entry)
* the swap entry is no longer in use.
*/
struct page *read_swap_cache_async(swp_entry_t entry, gfp_t gfp_mask,
- struct vm_area_struct *vma, unsigned long addr)
+ struct vm_area_struct *vma, unsigned long addr,
+ struct page *new_page)
{
- struct page *found_page, *new_page = NULL;
+ struct page *found_page;
int err;
do {
@@ -389,7 +390,7 @@ struct page *swapin_readahead(swp_entry_t entry, gfp_t gfp_mask,
for (offset = start_offset; offset <= end_offset ; offset++) {
/* Ok, do the async read-ahead now */
page = read_swap_cache_async(swp_entry(swp_type(entry), offset),
- gfp_mask, vma, addr);
+ gfp_mask, vma, addr, NULL);
if (!page)
continue;
page_cache_release(page);
@@ -397,5 +398,5 @@ struct page *swapin_readahead(swp_entry_t entry, gfp_t gfp_mask,
blk_finish_plug(&plug);
lru_add_drain(); /* Push any new pages onto the LRU now */
- return read_swap_cache_async(entry, gfp_mask, vma, addr);
+ return read_swap_cache_async(entry, gfp_mask, vma, addr, NULL);
}
--
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-18 23:17 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-13 18:38 [PATCHv5 0/8] zswap: compressed swap caching Seth Jennings
2013-02-13 18:38 ` [PATCHv5 1/8] zsmalloc: add to mm/ Seth Jennings
2013-02-16 3:26 ` Ric Mason
2013-02-18 19:04 ` Seth Jennings
2013-02-19 9:18 ` Joonsoo Kim
2013-02-19 17:54 ` Seth Jennings
2013-02-19 23:37 ` Minchan Kim
2013-02-22 9:24 ` Joonsoo Kim
2013-02-22 20:04 ` Seth Jennings
2013-02-25 17:05 ` Dan Magenheimer
2013-02-25 19:14 ` Seth Jennings
2013-02-26 0:20 ` Dan Magenheimer
2013-02-20 1:58 ` Nitin Gupta
2013-02-20 2:42 ` Nitin Gupta
2013-02-13 18:38 ` [PATCHv5 2/8] zsmalloc: add documentation Seth Jennings
2013-02-16 6:21 ` Ric Mason
2013-02-18 19:16 ` Seth Jennings
2013-02-21 8:44 ` Ric Mason
2013-02-21 8:49 ` Ric Mason
2013-02-21 15:50 ` Seth Jennings
2013-02-21 16:20 ` Dan Magenheimer
2013-02-22 2:56 ` Ric Mason
2013-02-22 21:02 ` Seth Jennings
2013-02-24 0:37 ` Ric Mason
2013-02-25 15:18 ` Seth Jennings
2013-03-01 6:47 ` Ric Mason
2013-02-22 2:59 ` Ric Mason
2013-02-13 18:38 ` [PATCHv5 3/8] debugfs: add get/set for atomic types Seth Jennings
2013-02-13 18:38 ` [PATCHv5 4/8] zswap: add to mm/ Seth Jennings
2013-02-16 4:04 ` Ric Mason
2013-02-18 19:24 ` Seth Jennings
2013-02-18 19:49 ` Cody P Schafer
2013-02-18 20:07 ` Seth Jennings
2013-02-18 19:55 ` Dan Magenheimer
2013-02-18 20:39 ` Seth Jennings
2013-02-18 21:59 ` Dan Magenheimer
2013-02-18 22:52 ` Seth Jennings
2013-02-18 23:17 ` Dan Magenheimer [this message]
2013-02-20 20:37 ` Seth Jennings
2013-02-13 18:38 ` [PATCHv5 5/8] mm: break up swap_writepage() for frontswap backends Seth Jennings
2013-02-13 18:38 ` [PATCHv5 6/8] mm: allow for outstanding swap writeback accounting Seth Jennings
2013-02-13 18:38 ` [PATCHv5 7/8] zswap: add swap page writeback support Seth Jennings
2013-02-16 6:11 ` Ric Mason
2013-02-18 19:32 ` Seth Jennings
2013-02-25 2:54 ` Minchan Kim
2013-02-25 17:37 ` Seth Jennings
2013-02-13 18:38 ` [PATCHv5 8/8] zswap: add documentation Seth Jennings
2013-02-16 3:20 ` [PATCHv5 0/8] zswap: compressed swap caching Ric Mason
2013-02-18 19:37 ` Seth Jennings
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=d0ca0139-cad3-4ef4-9d21-c1631393db24@default \
--to=dan.magenheimer@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=benh@kernel.crashing.org \
--cc=dave@linux.vnet.ibm.com \
--cc=devel@driverdev.osuosl.org \
--cc=gregkh@linuxfoundation.org \
--cc=jhopper@us.ibm.com \
--cc=joe@perches.com \
--cc=jweiner@redhat.com \
--cc=konrad.wilk@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lwoodman@redhat.com \
--cc=mgorman@suse.de \
--cc=minchan@kernel.org \
--cc=ngupta@vflare.org \
--cc=rcj@linux.vnet.ibm.com \
--cc=ric.masonn@gmail.com \
--cc=riel@redhat.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).