Messages in this thread | | | Date | Mon, 30 Jun 2008 11:53:54 +0900 | From | KAMEZAWA Hiroyuki <> | Subject | Re: [PATCH] splitlru: BDI_CAP_SWAP_BACKED |
| |
On Sun, 29 Jun 2008 17:48:59 +0900 KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> wrote:
> > The split-lru patches put file and swap-backed pages on different lrus. > > shmem/tmpfs pages are awkward because they are swap-backed file pages. > > Since it's difficult to change lru midstream, they are treated as swap- > > backed throughout, with SetPageSwapBacked on allocation in shmem_getpage. > > > > However, splice read (used by loop and sendfile) and readahead* allocate > > pages first, add_to_page_cache_lru, and then call into the filesystem > > through ->readpage. Under memory pressure, the shmem pages arrive at > > add_to_swap_cache and hit its BUG_ON(!PageSwapBacked(page)). > > > > I've not yet found a better way to handle this than a "capability" > > flag in shmem_backing_dev_info, tested by add_to_page_cache_lru. > > And solely because it would look suspicious without it, set that > > BDI_CAP_SWAP_BACKED in swap_backing_dev_info also. > > > > * readahead on shmem/tmpfs? I'd always thought ra_pages 0 prevented > > that; but in fact readahead(2), fadvise(POSIX_FADV_WILLNEED) and > > madvise(MADV_WILLNEED) all force_page_cache_readahead and get there. > > > > Signed-off-by: Hugh Dickins <hugh@veritas.com> > > great. > > I'm not sure about this patch is perfect. > but it seems makes sense and very good code. > > So, I'll testing this patch for a while. >
Hmm, how about adding LRU only for shmem/tmpfs ? nonsense ? ;) It's just a file if not mapped but it's swap backed.
Thanks, -Kame
| |