Commit 5af110b2 authored by Jan Kara's avatar Jan Kara Committed by Jens Axboe

block: Unregister bdi on last reference drop

Most users will want to unregister bdi when dropping last reference to a
bdi. Only a few users (like block devices) want to play more complex
tricks with bdi registration and unregistration. So unregister bdi when
the last reference to bdi is dropped and just make sure we don't
unregister the bdi the second time if it is already unregistered.
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarJan Kara <jack@suse.cz>
Signed-off-by: default avatarJens Axboe <axboe@fb.com>
parent baf7a616
...@@ -961,6 +961,8 @@ static void release_bdi(struct kref *ref) ...@@ -961,6 +961,8 @@ static void release_bdi(struct kref *ref)
struct backing_dev_info *bdi = struct backing_dev_info *bdi =
container_of(ref, struct backing_dev_info, refcnt); container_of(ref, struct backing_dev_info, refcnt);
if (test_bit(WB_registered, &bdi->wb.state))
bdi_unregister(bdi);
bdi_exit(bdi); bdi_exit(bdi);
kfree(bdi); kfree(bdi);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment