mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 03:36:19 +00:00
backing-dev: bdi sb prune should be in the unregister path, not destroy
Commit 592b09a42f
was different from
the tested path, in that it moved the bdi super_block prune from
unregister to destroy context. This doesn't fully fix the sync hang
bug on unexpected device removal, as need to prune the bdi cache
pointer before killing flusher thread.
Tested-by: Artur Skawina <art.08.09@gmail.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
This commit is contained in:
parent
5f04eeb8a7
commit
8c4db3355b
1 changed files with 2 additions and 1 deletions
|
@ -628,6 +628,8 @@ static void bdi_prune_sb(struct backing_dev_info *bdi)
|
|||
void bdi_unregister(struct backing_dev_info *bdi)
|
||||
{
|
||||
if (bdi->dev) {
|
||||
bdi_prune_sb(bdi);
|
||||
|
||||
if (!bdi_cap_flush_forker(bdi))
|
||||
bdi_wb_shutdown(bdi);
|
||||
bdi_debug_unregister(bdi);
|
||||
|
@ -697,7 +699,6 @@ void bdi_destroy(struct backing_dev_info *bdi)
|
|||
spin_unlock(&inode_lock);
|
||||
}
|
||||
|
||||
bdi_prune_sb(bdi);
|
||||
bdi_unregister(bdi);
|
||||
|
||||
for (i = 0; i < NR_BDI_STAT_ITEMS; i++)
|
||||
|
|
Loading…
Reference in a new issue