Subject: Re: linux-next: manual merge of the akpm tree with the workqueues tree

From: Andrew Morton <[email-masked]>
Date: Wed, 13 Mar 2013 12:46:24 -0700

On Wed, 13 Mar 2013 15:49:05 +1100 Stephen Rothwell <[email-masked]> wrote:

> Today's linux-next merge of the akpm tree got a conflict in
> kernel/workqueue.c between commit fa1b54e69bc6 ("workqueue: update
> synchronization rules on worker_pool_idr") from the workqueues tree and
> commit "workqueue: convert to idr_alloc()" from the akpm tree.
> 
> I fixed it up (I think - see below) and can carry the fix as necessary
> (no action is required).
> 

OK, thanks.  I have workqueue-convert-to-idr_alloc.patch queued for 3.9
so I moved it ahead of linux-next.patch and made a mess.

Tejun, can you please confirm that this is how worker_pool_assign_id()
should look in linux-next?

static int worker_pool_assign_id(struct worker_pool *pool)
{
	int ret;

	do {
		idr_preload(GFP_KERNEL);
		spin_lock_irq(&workqueue_lock);
		ret = idr_alloc(&worker_pool_idr, pool, 0, 0, GFP_NOWAIT);
		if (ret >= 0)
			pool->id = ret;
		spin_unlock_irq(&workqueue_lock);
	} while (ret == -EAGAIN);

	return ret < 0 ? ret : 0;
}