Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 13eec236 authored by Jan Kara's avatar Jan Kara Committed by Jens Axboe
Browse files

fs: Get proper reference for s_bdi



So far we just relied on block device to hold a bdi reference for us
while the filesystem is mounted. While that works perfectly fine, it is
a bit awkward that we have a pointer to a refcounted structure in the
superblock without proper reference. So make s_bdi hold a proper
reference to block device's BDI. No filesystem using mount_bdev()
actually changes s_bdi so this is safe and will make bdev filesystems
work the same way as filesystems needing to set up their private bdi.

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 fca39346
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -1054,12 +1054,9 @@ static int set_bdev_super(struct super_block *s, void *data)
{
	s->s_bdev = data;
	s->s_dev = s->s_bdev->bd_dev;
	s->s_bdi = bdi_get(s->s_bdev->bd_bdi);
	s->s_iflags |= SB_I_DYNBDI;

	/*
	 * We set the bdi here to the queue backing, file systems can
	 * overwrite this in ->fill_super()
	 */
	s->s_bdi = bdev_get_queue(s->s_bdev)->backing_dev_info;
	return 0;
}