backing-dev: ensure that a removed bdi no longer has super_block referencing it
authorJens Axboe <jens.axboe@oracle.com>
Thu, 29 Oct 2009 10:46:12 +0000 (11:46 +0100)
committerJens Axboe <jens.axboe@oracle.com>
Thu, 29 Oct 2009 10:46:12 +0000 (11:46 +0100)
When the bdi is being removed, we have to ensure that no super_blocks
currently have that cached in sb->s_bdi. Normally this is ensured by
the sb having a longer life span than the bdi, but if the device is
suddenly yanked, we have to kill this reference. sb->s_bdi is pointed
to freed memory at that point.

This fixes a problem with sync(1) hanging when a USB stick is pulled
without cleanly umounting it first.

Reported-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>

No differences found