From mboxrd@z Thu Jan 1 00:00:00 1970 Date: Tue, 22 May 2007 18:56:56 -0700 (PDT) From: Christoph Lameter Subject: Re: [Patch] memory unplug v3 [2/4] migration by kernel In-Reply-To: <20070523104558.a877d869.kamezawa.hiroyu@jp.fujitsu.com> Message-ID: References: <20070522155824.563f5873.kamezawa.hiroyu@jp.fujitsu.com> <20070522160437.6607f445.kamezawa.hiroyu@jp.fujitsu.com> <20070523104558.a877d869.kamezawa.hiroyu@jp.fujitsu.com> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-linux-mm@kvack.org Return-Path: To: KAMEZAWA Hiroyuki Cc: linux-mm@kvack.org, mel@csn.ul.ie, y-goto@jp.fujitsu.com List-ID: On Wed, 23 May 2007, KAMEZAWA Hiroyuki wrote: > > > +#ifdef CONFIG_MIGRATION_BY_KERNEL > > > +struct anon_vma *anon_vma_hold(struct page *page) { > > > + struct anon_vma *anon_vma; > > > + anon_vma = page_lock_anon_vma(page); > > > + if (!anon_vma) > > > + return NULL; > > > + atomic_set(&anon_vma->ref, 1); > > > > Why use an atomic value if it is set and cleared within a spinlock? > > anon_vma_free(), which see this value, doesn't take any lock and use atomic ops. > I used atomic ops to handle atomic_t. anon_vma_free() only reads the value. Thus no race. You do not need an atomic_t. atomic_t is only necessary if a variable needs to be changed atomically. Reading a word from memory is atomic regardless. -- 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