Re: [PATCH v2 1/1] blk-mq: fix hang caused by freeze/unfreeze sequence

From: Tejun Heo
Date: Wed Aug 10 2016 - 14:54:20 EST


On Wed, Aug 10, 2016 at 10:42:09AM +0200, Roman Penyaev wrote:
> Hi,
>
> On Wed, Aug 10, 2016 at 5:55 AM, Tejun Heo <tj@xxxxxxxxxx> wrote:
> > Hello,
> >
> > On Mon, Aug 08, 2016 at 01:39:08PM +0200, Roman Pen wrote:
> >> Long time ago there was a similar fix proposed by Akinobu Mita[1],
> >> but it seems that time everyone decided to fix this subtle race in
> >> percpu-refcount and Tejun Heo[2] did an attempt (as I can see that
> >> patchset was not applied).
> >
> > So, I probably forgot about it while waiting for confirmation of fix.
> > Can you please verify that the patchset fixes the issue? I can apply
> > the patchset right away.
>
> I have not checked your patchset but according to my understanding
> it should not fix *this* issue. What happens here is a wrong order
> of invocation of percpu_ref_reinit() and percpu_ref_kill(). So what
> was observed is the following:

Ah, understood.

Acked-by: Tejun Heo <tj@xxxxxxxxxx>

I'll commit the percpu_refcnt patches too. While they don't fix the
problem on their own, the changes are generally useful for all mode
switching use cases.

Thanks.

--
tejun