From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from psmtp.com (na3sys010amx130.postini.com [74.125.245.130]) by kanga.kvack.org (Postfix) with SMTP id 4E42F6B0068 for ; Tue, 21 Aug 2012 11:37:23 -0400 (EDT) Message-ID: <1345563433.26596.2.camel@twins> Subject: Re: [PATCH v8 3/5] virtio_balloon: introduce migration primitives to balloon pages From: Peter Zijlstra Date: Tue, 21 Aug 2012 17:37:13 +0200 In-Reply-To: <20120821144013.GA7784@redhat.com> References: <20120821144013.GA7784@redhat.com> Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 Sender: owner-linux-mm@kvack.org List-ID: To: "Michael S. Tsirkin" Cc: Rafael Aquini , linux-mm@kvack.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, Rusty Russell , Rik van Riel , Mel Gorman , Andi Kleen , Andrew Morton , Konrad Rzeszutek Wilk , Minchan Kim , paulmck On Tue, 2012-08-21 at 17:40 +0300, Michael S. Tsirkin wrote: > > + spin_lock(&vb->pages_lock); > > + page =3D list_first_or_null_rcu(&vb->pages, struct page, = lru); >=20 > Why is list_first_or_null_rcu called outside > RCU critical section here? It looks like vb->pages_lock is the exclusive (or modification) counterpart to the rcu-read-lock in this particular case, so it should be fine. Although for that same reason, it seems superfluous to use the RCU list method since we're exclusive with list manipulations anyway. > > + if (!page) { > > + spin_unlock(&vb->pages_lock); > > + break; > > + } > > + /* > > + * It is safe now to drop page->mapping and delete this p= age > > + * from balloon page list, since we are grabbing 'pages_l= ock' > > + * which prevents 'virtballoon_isolatepage()' from acting= . > > + */ > > + clear_balloon_mapping(page); > > + list_del_rcu(&page->lru); > > + spin_unlock(&vb->pages_lock);=20 -- 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: email@kvack.org