Prev: [PATCH 5/7] HID: N-trig MTM Driver fix And cleanup patch 5
Next: [PATCH] Staging: comedi: fix space before tabs coding style issue in adl_pci6208.c
From: David Rientjes on 8 Mar 2010 16:30 On Mon, 8 Mar 2010, Miao Xie wrote: > Changes from V1 to V2: > - cleanup two unnecessary smp_wmb() at cpuset_migrate_mm() > This patch is already in -mm without this update, so it's probably better to make this an incremental series basedo n mmotm-2010-03-04-18-05 or later. > @@ -2090,15 +2086,19 @@ static int cpuset_track_online_cpus(struct notifier_block *unused_nb, > static int cpuset_track_online_nodes(struct notifier_block *self, > unsigned long action, void *arg) > { > + nodemask_t oldmems; > + > cgroup_lock(); > switch (action) { > case MEM_ONLINE: > - case MEM_OFFLINE: > + oldmems = top_cpuset.mems_allowed; > mutex_lock(&callback_mutex); > top_cpuset.mems_allowed = node_states[N_HIGH_MEMORY]; > mutex_unlock(&callback_mutex); > - if (action == MEM_OFFLINE) > - scan_for_empty_cpusets(&top_cpuset); > + update_tasks_nodemask(&top_cpuset, &oldmems, NULL); > + break; > + case MEM_OFFLINE: > + scan_for_empty_cpusets(&top_cpuset); > break; > default: > break; This looks wrong, why isn't top_cpuset.mems_allowed updated for MEM_OFFLINE? If you're going to update it when a new node comes online for (struct memory_notify *)arg->status_change_nid is >= 0, then it should be removed from the nodemask when offlined as well. You'd be calling scan_for_empty_cpusets() needlessly in this code since it'll never change under your hotplug code. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Miao Xie on 8 Mar 2010 20:30
on 2010-3-9 5:22, David Rientjes wrote: > On Mon, 8 Mar 2010, Miao Xie wrote: > >> Changes from V1 to V2: >> - cleanup two unnecessary smp_wmb() at cpuset_migrate_mm() >> > > This patch is already in -mm without this update, so it's probably better > to make this an incremental series basedo n mmotm-2010-03-04-18-05 or > later. ok, I'll do it. > >> @@ -2090,15 +2086,19 @@ static int cpuset_track_online_cpus(struct notifier_block *unused_nb, >> static int cpuset_track_online_nodes(struct notifier_block *self, >> unsigned long action, void *arg) >> { >> + nodemask_t oldmems; >> + >> cgroup_lock(); >> switch (action) { >> case MEM_ONLINE: >> - case MEM_OFFLINE: >> + oldmems = top_cpuset.mems_allowed; >> mutex_lock(&callback_mutex); >> top_cpuset.mems_allowed = node_states[N_HIGH_MEMORY]; >> mutex_unlock(&callback_mutex); >> - if (action == MEM_OFFLINE) >> - scan_for_empty_cpusets(&top_cpuset); >> + update_tasks_nodemask(&top_cpuset, &oldmems, NULL); >> + break; >> + case MEM_OFFLINE: >> + scan_for_empty_cpusets(&top_cpuset); >> break; >> default: >> break; > > This looks wrong, why isn't top_cpuset.mems_allowed updated for > MEM_OFFLINE? If you're going to update it when a new node comes online > for (struct memory_notify *)arg->status_change_nid is >= 0, then it should > be removed from the nodemask when offlined as well. You'd be calling > scan_for_empty_cpusets() needlessly in this code since it'll never change > under your hotplug code. scan_for_empty_cpusets() will update top_cpuset.mems_allowed when doing MEM_OFFLINE. The comment of this source is necessary. I'll add it. Thanks! Miao > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |