Re: [PATCH] Fix sysrq emergency thaw

From: Chris Mason
Date: Tue Jul 19 2016 - 08:16:35 EST


On 07/15/2016 08:38 PM, Charles Gong wrote:
"SYSRQ + J" triggers a call to emergency_thaw_all(). Currently, this is an
infinite loop. Once we trigger it, we'll need to do a hard power-cycle. There
are users reporting this bug from 2012 to 2016, for example, at
https://bugzilla.kernel.org/show_bug.cgi?id=47741.

This happens because thaw_bdev() fails to return -EINVAL in the non-frozen case,
and I fixed it so that do_one_thaw() can recognize this case and quit from
looping. I checked that none of the other thaw_bdev() callers check the return
value.

Hi Charles,

Can you please resend this without the hunks that change only whitespace? Looks like your editor was properly killing off trailing whitespace, but that's not related to your fix.

Also, please reference the commit where the regression was introduced:

commit 4504230a71566785a05d3e6b53fa1ee071b864eb
Author: Christoph Hellwig <hch@xxxxxx>
Date: Mon Aug 3 23:28:35 2009 +0200

freeze_bdev: grab active reference to frozen superblocks

Then you can add:

Reviewed-by: Chris Mason <clm@xxxxxx>

Thanks!

-chris