mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-11-01 06:46:35 +01:00
xfs: close the RT and log block devices in xfs_free_buftarg
Closing the block devices logically belongs into xfs_free_buftarg, So instead of open coding it in the caller move it there and add a check for the s_bdev so that the main device isn't close as that's done by the VFS helper. Signed-off-by: Christoph Hellwig <[email protected]> Reviewed-by: "Darrick J. Wong" <[email protected]> Message-Id: <[email protected]> Signed-off-by: Christian Brauner <[email protected]>
This commit is contained in:
1 parent
d3ef7e94ee
commit
41233576e9
1 file changed
+5
@@ -1938,6 +1938,8 @@ void
|
||||
xfs_free_buftarg(
|
||||
struct xfs_buftarg *btp)
|
||||
{
|
||||
struct block_device *bdev = btp->bt_bdev;
|
||||
|
||||
unregister_shrinker(&btp->bt_shrinker);
|
||||
ASSERT(percpu_counter_sum(&btp->bt_io_count) == 0);
|
||||
percpu_counter_destroy(&btp->bt_io_count);
|
||||
@@ -1946,6 +1948,9 @@ xfs_free_buftarg(
|
||||
blkdev_issue_flush(btp->bt_bdev);
|
||||
invalidate_bdev(btp->bt_bdev);
|
||||
fs_put_dax(btp->bt_daxdev, btp->bt_mount);
|
||||
/* the main block device is closed by kill_block_super */
|
||||
if (bdev != btp->bt_mount->m_super->s_bdev)
|
||||
blkdev_put(bdev, btp->bt_mount);
|
||||
|
||||
kmem_free(btp);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user