Re: [PATCHSET percpu/for-4.4] percpu_ref: make mode switching operations synchronize themselves

From: Tejun Heo
Date: Wed Aug 10 2016 - 15:06:54 EST


On Tue, Sep 29, 2015 at 05:47:15PM -0400, Tejun Heo wrote:
> Hello,
>
> Mostly for historical reasons, percpu_ref atomic/percpu mode switching
> operations require the users to synchronize different operations
> although there are valid usage scenarios where different types of
> operations racing against each other makes sense. This unusual
> requirement led to a subtle race condition in blk-mq which was spotted
> by Akinobu Mita[1].
>
> Akinobu proposed a blk-mq specific fix where it adds an enclosing
> mutex around the percpu_ref operations; however, this is a percpu_ref
> deficiency and fixing it at the source is the better long term
> approach. Unfortunately, this ended up being a somewhat invasive set
> of changes and the right thing to do likely is applying Akinobu's fix
> for 4.3 / -stable, applying this patchset for 4.4 window and reverting
> Akinobu's patch after the 4.4 merge window.
>
> Akinobu, can you please verify that this patchset makes the race
> condition go away?

Okay, this patchset got forgotten while waiting response from Akinobu.
I'm applying the patchset to percpu/for-4.9 as the changes are general
improvements to percpu_refcnt.

Thanks.

--
tejun