From: David Rientjes <rientjes@google.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Christoph Lameter <cl@linux-foundation.org>,
Nick Piggin <npiggin@suse.de>, Paul Menage <menage@google.com>,
Derek Fults <dfults@sgi.com>,
linux-kernel@vger.kernel.org
Subject: Re: [patch 1/7] cpusets: add dirty map to struct address_space
Date: Tue, 28 Oct 2008 19:24:33 -0700 (PDT) [thread overview]
Message-ID: <alpine.DEB.1.10.0810281922320.32430@chino.kir.corp.google.com> (raw)
In-Reply-To: <alpine.DEB.1.10.0810281722290.23743@chino.kir.corp.google.com>
On Tue, 28 Oct 2008, David Rientjes wrote:
> diff --git a/kernel/cpuset.c b/kernel/cpuset.c
> --- a/kernel/cpuset.c
> +++ b/kernel/cpuset.c
> @@ -2413,10 +2413,7 @@ EXPORT_SYMBOL_GPL(cpuset_mem_spread_node);
> #if MAX_NUMNODES > BITS_PER_LONG
> /*
> * Special functions for NUMA systems with a large number of nodes. The
> - * nodemask is pointed to from the address_space structure. The attachment of
> - * the dirty_nodes nodemask is protected by the tree_lock. The nodemask is
> - * freed only when the inode is cleared (and therefore unused, thus no locking
> - * is necessary).
> + * nodemask is pointed to from the address_space structure.
> */
> void cpuset_update_dirty_nodes(struct address_space *mapping,
> struct page *page)
> @@ -2424,14 +2421,18 @@ void cpuset_update_dirty_nodes(struct address_space *mapping,
> nodemask_t *nodes = mapping->dirty_nodes;
> int node = page_to_nid(page);
>
> + spin_lock_irq(&mapping->dirty_nodes_lock);
> if (!nodes) {
> nodes = kmalloc(sizeof(nodemask_t), GFP_ATOMIC);
> - if (!nodes)
> + if (!nodes) {
> + spin_unlock_irq(&mapping->dirty_nodes_lock);
> return;
> + }
>
> *nodes = NODE_MASK_NONE;
> mapping->dirty_nodes = nodes;
> }
> + spin_unlock_irq(&mapping->dirty_nodes_lock);
> node_set(node, *nodes);
> }
>
Would need to be
spin_lock_irq(&mapping->dirty_nodes_lock);
nodes = mapping->dirty_nodes;
if (!nodes) {
nodes = kmalloc(sizeof(nodemask_t), GFP_ATOMIC);
if (!nodes) {
spin_unlock_irq(&mapping->dirty_nodes_lock);
return;
}
...
}
spin_unlock_irq(&mapping->dirty_nodes_lock);
but this shouldn't add much locking overhead without mapping->tree_lock.
next prev parent reply other threads:[~2008-10-29 2:25 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-28 16:08 David Rientjes
2008-10-28 16:08 ` [patch 2/7] pdflush: allow the passing of a nodemask parameter David Rientjes
2008-10-28 16:08 ` [patch 3/7] mm: make page writeback obey cpuset constraints David Rientjes
2008-10-28 17:31 ` Peter Zijlstra
2008-10-28 19:16 ` David Rientjes
2008-10-28 17:32 ` Peter Zijlstra
2008-10-28 19:18 ` David Rientjes
2008-10-30 8:42 ` Peter Zijlstra
2008-10-30 9:10 ` David Rientjes
2008-10-30 9:34 ` Peter Zijlstra
2008-10-28 16:08 ` [patch 4/7] mm: cpuset aware reclaim writeout David Rientjes
2008-10-28 16:08 ` [patch 5/7] mm: throttle writeout with cpuset awareness David Rientjes
2008-10-28 16:08 ` [patch 6/7] cpusets: per cpuset dirty ratios David Rientjes
2008-10-30 6:59 ` Paul Menage
2008-10-30 8:48 ` David Rientjes
2008-10-30 15:28 ` Christoph Lameter
2008-10-30 8:44 ` Peter Zijlstra
2008-10-30 9:03 ` David Rientjes
2008-10-30 9:34 ` Peter Zijlstra
2008-10-30 10:02 ` David Rientjes
2008-10-28 16:08 ` [patch 7/7] cpusets: update documentation for writeback throttling David Rientjes
2008-10-30 16:06 ` Christoph Lameter
2008-10-28 17:37 ` [patch 1/7] cpusets: add dirty map to struct address_space Peter Zijlstra
2008-10-28 20:48 ` David Rientjes
2008-10-29 1:13 ` David Rientjes
2008-10-29 2:24 ` David Rientjes [this message]
2008-10-30 8:38 ` Peter Zijlstra
2008-10-28 17:46 ` Peter Zijlstra
2008-10-28 19:19 ` David Rientjes
2008-10-30 19:23 [patch 0/7] cpuset writeback throttling David Rientjes
2008-10-30 19:23 ` [patch 1/7] cpusets: add dirty map to struct address_space David Rientjes
2008-11-04 21:09 ` Andrew Morton
2008-11-04 21:20 ` Christoph Lameter
2008-11-04 21:42 ` Andrew Morton
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=alpine.DEB.1.10.0810281922320.32430@chino.kir.corp.google.com \
--to=rientjes@google.com \
--cc=akpm@linux-foundation.org \
--cc=cl@linux-foundation.org \
--cc=dfults@sgi.com \
--cc=linux-kernel@vger.kernel.org \
--cc=menage@google.com \
--cc=npiggin@suse.de \
--cc=peterz@infradead.org \
/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
all inboxes | Powered by JetHome®