Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dm: Convert to bdev_open_by_dev()

Convert device mapper to use bdev_open_by_dev() and pass the handle
around.

CC: Alasdair Kergon <agk@redhat.com>
CC: Mike Snitzer <snitzer@kernel.org>
CC: dm-devel@redhat.com
Acked-by: Christoph Hellwig <hch@lst.de>
Acked-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Jan Kara <jack@suse.cz>
Link: https://lore.kernel.org/r/20230927093442.25915-10-jack@suse.cz
Signed-off-by: Christian Brauner <brauner@kernel.org>

authored by

Jan Kara and committed by
Christian Brauner
c2fce61f 631b001f

+12 -9
+11 -9
drivers/md/dm.c
··· 724 724 dev_t dev, blk_mode_t mode) 725 725 { 726 726 struct table_device *td; 727 - struct block_device *bdev; 727 + struct bdev_handle *bdev_handle; 728 728 u64 part_off; 729 729 int r; 730 730 ··· 733 733 return ERR_PTR(-ENOMEM); 734 734 refcount_set(&td->count, 1); 735 735 736 - bdev = blkdev_get_by_dev(dev, mode, _dm_claim_ptr, NULL); 737 - if (IS_ERR(bdev)) { 738 - r = PTR_ERR(bdev); 736 + bdev_handle = bdev_open_by_dev(dev, mode, _dm_claim_ptr, NULL); 737 + if (IS_ERR(bdev_handle)) { 738 + r = PTR_ERR(bdev_handle); 739 739 goto out_free_td; 740 740 } 741 741 ··· 745 745 * called. 746 746 */ 747 747 if (md->disk->slave_dir) { 748 - r = bd_link_disk_holder(bdev, md->disk); 748 + r = bd_link_disk_holder(bdev_handle->bdev, md->disk); 749 749 if (r) 750 750 goto out_blkdev_put; 751 751 } 752 752 753 753 td->dm_dev.mode = mode; 754 - td->dm_dev.bdev = bdev; 755 - td->dm_dev.dax_dev = fs_dax_get_by_bdev(bdev, &part_off, NULL, NULL); 754 + td->dm_dev.bdev = bdev_handle->bdev; 755 + td->dm_dev.bdev_handle = bdev_handle; 756 + td->dm_dev.dax_dev = fs_dax_get_by_bdev(bdev_handle->bdev, &part_off, 757 + NULL, NULL); 756 758 format_dev_t(td->dm_dev.name, dev); 757 759 list_add(&td->list, &md->table_devices); 758 760 return td; 759 761 760 762 out_blkdev_put: 761 - blkdev_put(bdev, _dm_claim_ptr); 763 + bdev_release(bdev_handle); 762 764 out_free_td: 763 765 kfree(td); 764 766 return ERR_PTR(r); ··· 773 771 { 774 772 if (md->disk->slave_dir) 775 773 bd_unlink_disk_holder(td->dm_dev.bdev, md->disk); 776 - blkdev_put(td->dm_dev.bdev, _dm_claim_ptr); 774 + bdev_release(td->dm_dev.bdev_handle); 777 775 put_dax(td->dm_dev.dax_dev); 778 776 list_del(&td->list); 779 777 kfree(td);
+1
include/linux/device-mapper.h
··· 165 165 166 166 struct dm_dev { 167 167 struct block_device *bdev; 168 + struct bdev_handle *bdev_handle; 168 169 struct dax_device *dax_dev; 169 170 blk_mode_t mode; 170 171 char name[16];