Re: WARNING: at fs/fs-writeback.c when plug out SD card after system suspend/resume

From: Ulf Hansson
Date: Thu Dec 04 2014 - 08:36:10 EST


On 4 December 2014 at 13:41, Jan Kara <jack@xxxxxxx> wrote:
> On Thu 04-12-14 11:43:17, Dong Aisheng wrote:
>> Hi ALL,
>>
>> We met an filesystem issue when do stable kernel upgrade from 3.10.31 to
>> 3.10.53. And we found it's caused by the following commit bf0972039 which
>> introduced in 3.10.53.
>> After applying this patch, after system suspend/resume, plug out a SD card
>> will cause the following WARNING if SD card has a filesystem mounted.
>> If revert it, no such WARNING shows.
>>
>> I also tried the latest linux-next tree, it also has such issue.
>>
>> Looks the patch is used to fixing a potential system crashing.
>> We're not sure whether this WARNING is as expected and reasonable
>> or a BUG because there's no such WARNING before this patch.
>>
>> Can someone explain about it?
> The warning happens because bdi disappeared from under filesystem (likely
> it was even freed) but filesystem still has references to it. Previously,
> we were just silenly using freed memory, now we warn about it because we
> now clear the BDI_registered bit before freeing the bdi.
>
> So for now the best advice I can give you is: Don't remove device from
> under mounted filesystem (even when the system is suspended). I may easily
> crash your machine.

When you are dealing with removable devices, we can't protect us
against such scenarios.

Moreover, during system suspend phase the mmc block device are not
being removed (even if the physical mmc card gets removed). Instead
that will be handled first when a PM_POST_SUSPEND|HIBERNATION|RESTORE
notifier is received by the mmc subsystem.

Hope that adds some clarify to what goes on here.

Kind regards
Uffe
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/