From: Christoph Hellwig Date: Wed, 9 Aug 2023 22:05:37 +0000 (-0700) Subject: xfs: close the RT and log block devices in xfs_free_buftarg X-Git-Tag: v6.6.17~4097^2~39 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=41233576e9a4515dc9b0bd1cbbb896b520a1f486;p=platform%2Fkernel%2Flinux-rpi.git 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 Reviewed-by: "Darrick J. Wong" Message-Id: <20230809220545.1308228-6-hch@lst.de> Signed-off-by: Christian Brauner --- diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c index 15d1e5a..65110df 100644 --- a/fs/xfs/xfs_buf.c +++ b/fs/xfs/xfs_buf.c @@ -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); }