Hi Tejun, On Mon, Oct 27, 2014 at 11:18:06AM -0400, Tejun Heo wrote: > On Mon, Oct 20, 2014 at 03:50:30PM +0400, Vladimir Davydov wrote: > > Current cpuset API for checking if a zone/node is allowed to allocate > > from looks rather awkward. We have hardwall and softwall versions of > > cpuset_node_allowed with the softwall version doing literally the same > > as the hardwall version if __GFP_HARDWALL is passed to it in gfp flags. > > If it isn't, the softwall version may check the given node against the > > enclosing hardwall cpuset, which it needs to take the callback lock to > > do. > > > > Such a distinction was introduced by commit 02a0e53d8227 ("cpuset: > > rework cpuset_zone_allowed api"). Before, we had the only version with > > the __GFP_HARDWALL flag determining its behavior. The purpose of the > > commit was to avoid sleep-in-atomic bugs when someone would mistakenly > > call the function without the __GFP_HARDWALL flag for an atomic > > allocation. The suffixes introduced were intended to make the callers > > think before using the function. > > > > However, since the callback lock was converted from mutex to spinlock by > > the previous patch, the softwall check function cannot sleep, and these > > precautions are no longer necessary. > > > > So let's simplify the API back to the single check. > > > > Suggested-by: David Rientjes <rientjes@xxxxxxxxxx> > > Signed-off-by: Vladimir Davydov <vdavydov@xxxxxxxxxxxxx> > > Acked-by: Christoph Lameter <cl@xxxxxxxxx> > > Acked-by: Zefan Li <lizefan@xxxxxxxxxx> > > Applied 1-2 to cgroup/for-3.19-cpuset-api-simplification which > contains only these two patches on top of v3.18-rc2 and will stay > stable. sl[au]b trees can pull it in or I can take the other two > patches too. Please let me know how the other two should be routed. JFYI, Andrew merged all four patches in his mmotm tree. FWIW, there's a typo in this patch recently found and fixed by Dan Carpenter. The fix is below. Thanks, Vladimir --- From: Dan Carpenter <dan.carpenter@xxxxxxxxxx> This will deadlock instead of unlocking. Fixes: f73eae8d8384 ('cpuset: simplify cpuset_node_allowed API') Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> Acked-by: Vladimir Davydov <vdavydov@xxxxxxxxxxxxx> diff --git a/kernel/cpuset.c b/kernel/cpuset.c index 38f7433..4eaa203 100644 --- a/kernel/cpuset.c +++ b/kernel/cpuset.c @@ -1992,7 +1992,7 @@ static int cpuset_css_online(struct cgroup_subsys_state *css) spin_lock_irq(&callback_lock); cs->mems_allowed = parent->mems_allowed; cpumask_copy(cs->cpus_allowed, parent->cpus_allowed); - spin_lock_irq(&callback_lock); + spin_unlock_irq(&callback_lock); out_unlock: mutex_unlock(&cpuset_mutex); return 0; -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>