login
Login
/
Register
Search
Search this site:
Forums
News
Blogs
Features
Site
Home
»
Mailing list archives
»
linux-kernel
»
2008
»
September
»
5
Re: [PATCH -v2] cpuset: avoid changing cpuset's cpus when -errno returned
view
thread
Previous message: [
thread
] [
date
] [
author
]
Next message: [thread] [
date
] [
author
]
[view in full thread]
From: Paul Menage
Subject:
Re: [PATCH -v2] cpuset: avoid changing cpuset's cpus when -errno returned
Date: Friday, September 5, 2008 - 4:24 pm
On Thu, Sep 4, 2008 at 8:42 PM, Li Zefan <lizf@cn.fujitsu.com> wrote:
quoted text
> After the patch: > > commit 0b2f630a28d53b5a2082a5275bc3334b10373508 > Author: Miao Xie <miaox@cn.fujitsu.com> > Date: Fri Jul 25 01:47:21 2008 -0700 > > cpusets: restructure the function update_cpumask() and update_nodemask() > > It might happen that 'echo 0 > /cpuset/sub/cpus' returned failure but 'cpus' > has been changed, because cpus was changed before calling heap_init() which > may return -ENOMEM. > > This patch restores the orginal behavior. > > Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Acked-by: Paul Menage <menage@google.com> Thanks. Paul
quoted text
> --- > kernel/cpuset.c | 37 +++++++++++++++---------------------- > 1 files changed, 15 insertions(+), 22 deletions(-) > > diff --git a/kernel/cpuset.c b/kernel/cpuset.c > index d5ab79c..0d33827 100644 > --- a/kernel/cpuset.c > +++ b/kernel/cpuset.c > @@ -774,37 +774,25 @@ static void cpuset_change_cpumask(struct task_struct *tsk, > /** > * update_tasks_cpumask - Update the cpumasks of tasks in the cpuset. > * @cs: the cpuset in which each task's cpus_allowed mask needs to be changed > + * @heap: if NULL, defer allocating heap memory to cgroup_scan_tasks() > * > * Called with cgroup_mutex held > * > * The cgroup_scan_tasks() function will scan all the tasks in a cgroup, > * calling callback functions for each. > * > - * Return 0 if successful, -errno if not. > + * No return value. It's guaranteed that cgroup_scan_tasks() always returns 0 > + * if @heap != NULL. > */ > -static int update_tasks_cpumask(struct cpuset *cs) > +static void update_tasks_cpumask(struct cpuset *cs, struct ptr_heap *heap) > { > struct cgroup_scanner scan; > - struct ptr_heap heap; > - int retval; > - > - /* > - * cgroup_scan_tasks() will initialize heap->gt for us. > - * heap_init() is still needed here for we should not change > - * cs->cpus_allowed when heap_init() fails. > - */ > - retval = heap_init(&heap, PAGE_SIZE, GFP_KERNEL, NULL); > - if (retval) > - return retval; > > scan.cg = cs->css.cgroup; > scan.test_task = cpuset_test_cpumask; > scan.process_task = cpuset_change_cpumask; > - scan.heap = &heap; > - retval = cgroup_scan_tasks(&scan); > - > - heap_free(&heap); > - return retval; > + scan.heap = heap; > + cgroup_scan_tasks(&scan); > } > > /** > @@ -814,6 +802,7 @@ static int update_tasks_cpumask(struct cpuset *cs) > */ > static int update_cpumask(struct cpuset *cs, const char *buf) > { > + struct ptr_heap heap; > struct cpuset trialcs; > int retval; > int is_load_balanced; > @@ -848,6 +837,10 @@ static int update_cpumask(struct cpuset *cs, const char *buf) > if (cpus_equal(cs->cpus_allowed, trialcs.cpus_allowed)) > return 0; > > + retval = heap_init(&heap, PAGE_SIZE, GFP_KERNEL, NULL); > + if (retval) > + return retval; > + > is_load_balanced = is_sched_load_balance(&trialcs); > > mutex_lock(&callback_mutex); > @@ -858,9 +851,9 @@ static int update_cpumask(struct cpuset *cs, const char *buf) > * Scan tasks in the cpuset, and update the cpumasks of any > * that need an update. > */ > - retval = update_tasks_cpumask(cs); > - if (retval < 0) > - return retval; > + update_tasks_cpumask(cs, &heap); > + > + heap_free(&heap); > > if (is_load_balanced) > rebuild_sched_domains(); > @@ -1896,7 +1889,7 @@ static void scan_for_empty_cpusets(const struct cpuset *root) > nodes_empty(cp->mems_allowed)) > remove_tasks_in_empty_cpuset(cp); > else { > - update_tasks_cpumask(cp); > + update_tasks_cpumask(cp, NULL); > update_tasks_nodemask(cp, &oldmems); > } > } > -- > 1.5.4.rc3 > >
--
unsubscribe notice
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/
Previous message: [
thread
] [
date
] [
author
]
Next message: [thread] [
date
] [
author
]
Messages in current thread:
[PATCH] cpuset: avoid changing cpuset's cpus when -errno r ...
, Li Zefan
, (Wed Sep 3, 12:33 am)
Re: [PATCH] cpuset: avoid changing cpuset's cpus when -err ...
, Paul Menage
, (Thu Sep 4, 10:49 am)
[PATCH -v2] cpuset: avoid changing cpuset's cpus when -err ...
, Li Zefan
, (Thu Sep 4, 8:42 pm)
Re: [PATCH -v2] cpuset: avoid changing cpuset's cpus when ...
, Paul Menage
, (Fri Sep 5, 4:24 pm)
Navigation
Mailing list archives
Recent posts
Popular discussions
linux-kernel
:
Ingo Molnar
Re: [PATCH 0/3] v2 Make hierarchical RCU less IPI-happy and add more tracing
Jeremy Fitzhardinge
Re: Linux 2.6.28.10 and Linux 2.6.29.6 XEN Guest Support Broken x86_64 in BUILD
Nick Piggin
Re: [patch] CFS (Completely Fair Scheduler), v2
Gary Hade
Re: [PATCH 0/5][RFC] Physical PCI slot objects
Dave Johnson
Re: expected behavior of PF_PACKET on NETIF_F_HW_VLAN_RX device?
linux-netdev
:
Arnd Bergmann
Re: 64-bit net_device_stats
Stephens, Allan
RE: [PATCH]: tipc: Fix oops on send prior to entering networked mode
frank.blaschka
[patch 3/5] [PATCH] qeth: support z/VM VSWITCH Port Isolation
Wu Fengguang
Re: [PATCH] dm9601: handle corrupt mac address
David Miller
Re: [PATCH net-2.6.24] Fix refcounting problem with netif_rx_reschedule()
git
:
Junio C Hamano
Re: [PATCH] [RFC] add Message-ID field to log on git-am operation
Junio C Hamano
Re: Handling large files with GIT
Karl
Re: [ANNOUNCE] pg - A patch porcelain for GIT
Josh Triplett
Re: [RFC][PATCH 00/10] Sparse: Git's "make check" target
Pierre Habouzit
Re: [PATCH] git-daemon: more powerful base-path/user-path settings, using formats.
git-commits-head
:
Linux Kernel Mailing List
MIPS: RBTX4939: Fix IOC pin-enable register updating
Linux Kernel Mailing List
regulator: update email address for Liam Girdwood
Linux Kernel Mailing List
[SCSI] ipr: add message to error table
Linux Kernel Mailing List
powerpc/32: Wire up the trampoline code for kdump
Linux Kernel Mailing List
USB: omap_udc: sync with OMAP tree
openbsd-misc
:
Josh Grosse
Re: error : pkg add phpMyAdmin
Brian Candler
Re: OBSD's perspective on SELinux
Jacob Meuser
Re: /dev/audio: Device busy
David Vasek
Re: Inexpensive, low power, "wall wart" computer
William Boshuck
Re: Richard Stallman...
Colocation donated by:
Syndicate