Messages in this thread | | | Date | Tue, 11 Mar 2014 23:34:21 +0800 | Subject | Re: [PATCH RESEND 1/3] percpu_ida: Fix data race on cpus_have_tags cpumask | From | Ming Lei <> |
| |
On Tue, Mar 11, 2014 at 10:03 PM, Alexander Gordeev <agordeev@redhat.com> wrote:
>> >> In theory, it still might cause percpu_ida_alloc(TASK_RUNNING) failed, >> looks it isn't a big deal for the case. >> >> But I am wondering why cpumask_set_cpu() isn't called with >> holding lock inside percpu_ida_free()? Looks 'nr_free == 1' >> shouldn't have happened frequently. > > Because bouncing on the lock is more expensive than occasionally putting > a thread into sleep.
I mean the below block can be put inside the previous lock:
if (nr_free == 1) cpumask_set_cpu()
As I mentioned, 'nr_free == 1' doesn't happen frequently, so it won't be big deal, will it?
Thanks, -- Ming Lei
| |