Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755810Ab2F2PcD (ORCPT ); Fri, 29 Jun 2012 11:32:03 -0400 Received: from gir.skynet.ie ([193.1.99.77]:40174 "EHLO gir.skynet.ie" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751895Ab2F2PcB (ORCPT ); Fri, 29 Jun 2012 11:32:01 -0400 Date: Fri, 29 Jun 2012 16:31:57 +0100 From: Mel Gorman To: Rafael Aquini Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, Rusty Russell , "Michael S. Tsirkin" , Rik van Riel , Andi Kleen , Andrew Morton , Konrad Rzeszutek Wilk Subject: Re: [PATCH v2 1/4] mm: introduce compaction and migration for virtio ballooned pages Message-ID: <20120629153157.GB13141@csn.ul.ie> References: MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2837 Lines: 74 On Thu, Jun 28, 2012 at 06:49:39PM -0300, Rafael Aquini wrote: > This patch introduces the helper functions as well as the necessary changes > to teach compaction and migration bits how to cope with pages which are > part of a guest memory balloon, in order to make them movable by memory > compaction procedures. > > Signed-off-by: Rafael Aquini I have two minor comments but it is not critical they be addressed. If you doa V3 then fix it but if it is picked up as it is, I'm ok with that. >From a compaction point of view; Acked-by: Mel Gorman > --- > include/linux/mm.h | 16 ++++++++ > mm/compaction.c | 110 +++++++++++++++++++++++++++++++++++++++++++--------- > mm/migrate.c | 30 +++++++++++++- > 3 files changed, 136 insertions(+), 20 deletions(-) > > diff --git a/include/linux/mm.h b/include/linux/mm.h > index b36d08c..35568fc 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -1629,5 +1629,21 @@ static inline unsigned int debug_guardpage_minorder(void) { return 0; } > static inline bool page_is_guard(struct page *page) { return false; } > #endif /* CONFIG_DEBUG_PAGEALLOC */ > > +#if (defined(CONFIG_VIRTIO_BALLOON) || \ > + defined(CONFIG_VIRTIO_BALLOON_MODULE)) && defined(CONFIG_COMPACTION) > +extern bool isolate_balloon_page(struct page *); > +extern bool putback_balloon_page(struct page *); > +extern struct address_space *balloon_mapping; > + > +static inline bool is_balloon_page(struct page *page) > +{ > + return (page->mapping == balloon_mapping) ? true : false; > +} > +#else > +static inline bool is_balloon_page(struct page *page) { return false; } > +static inline bool isolate_balloon_page(struct page *page) { return false; } > +static inline bool putback_balloon_page(struct page *page) { return false; } > +#endif /* (VIRTIO_BALLOON || VIRTIO_BALLOON_MODULE) && COMPACTION */ > + > #endif /* __KERNEL__ */ > #endif /* _LINUX_MM_H */ isolate_balloon_page is only used in compaction.c and could declared static to compaction.c. You could move them all between struct compact_control and release_pages to avoid forward declarations. > > +/* putback_lru_page() counterpart for a ballooned page */ > +bool putback_balloon_page(struct page *page) > +{ > + if (WARN_ON(!is_balloon_page(page))) > + return false; > + > + if (likely(trylock_page(page))) { > + if(is_balloon_page(page)) { Stick a space in there. Run checkpatch.pl if you haven't already. I suspect it would have caught this. As I said, not worth spinning a V3 for :) -- Mel Gorman SUSE Labs -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/