]> git.karo-electronics.de Git - karo-tx-linux.git/commit
bcon: add a release work struct
authorJoern Engel <joern@logfs.org>
Wed, 20 Feb 2013 20:25:12 +0000 (12:25 -0800)
committerJoern Engel <joern@logfs.org>
Wed, 20 Feb 2013 20:25:12 +0000 (12:25 -0800)
commitd559bc66417720d11f7e39a61c8b3bf421b982a9
tree7071836d66376046d4533485703537d40fbcf3bc
parent1bf93fa6261643ed92b0ddf262c89859127207f6
bcon: add a release work struct

The final bcon_put() can be called from atomic context, by way of
bio_endio().  In that case we would sleep in invalidate_mapping_pages(),
with the usual unhappy results.

In nearly a year of production use, I have only seen a matching
backtrace once.  There was a second known issue that could be reproduced
by "yes h > /proc/sysrq-trigger" and concurrently pulling and replugging
the blockconsole device.  It took be somewhere around 30 pulls and sore
thumbs to reproduce and I never found the time to get to the bottom of
it.  Quite likely the two issues are identical.

Signed-off-by: Joern Engel <joern@logfs.org>
drivers/block/blockconsole.c