Re: Is warn_on() right reply for i/o error?
From: Jan Kara <jack@suse.cz>
Date: 2014-07-29 12:05:59
Also in:
lkml
On Thu 24-07-14 15:29:38, Ted Tso wrote:
On Thu, Jul 24, 2014 at 05:27:22PM +0200, Pavel Machek wrote:quoted
Hi! Just... I know, I should not be unscrewing hard drive cover while operating. But on the other hand... WARN_ON() does not sound like right reply for a disk failure... right?Actually, it can be worse than that. If a hard drive disappears out from under you while writeback is happening, it's possible to get crashes in bdi_writeack_workfn() because you can have races between bdi_unregister() and bdi_writeback_workfn(), since the latter requeues itself and flush_delayed_work() can return while bdi_writeback_workfn() is still executing.
This should be fixed by 5acda9d12dcf1ad0d9a5a2a7c646de3472fa7555 I wrote in April. But there are certainly other races in that code...
This looks like it's a related problem, where the block device gets unregistered (and this happens in the block device layer without it telling the file system that the disk drive is about to disappear out from under it), and occasionally, Bad Stuff Happens. :-(
Yeah. Honza -- Jan Kara [off-list ref] SUSE Labs, CR