Commit c97d93c3 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe
Browse files

block: factor out a part_devt helper



Add a helper to find the dev_t for a disk + partno tuple.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarMing Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20210525061301.2242282-8-hch@lst.de


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent ab4b5705
Loading
Loading
Loading
Loading
+17 −8
Original line number Diff line number Diff line
@@ -1227,6 +1227,19 @@ static int __init proc_genhd_init(void)
module_init(proc_genhd_init);
#endif /* CONFIG_PROC_FS */

dev_t part_devt(struct gendisk *disk, u8 partno)
{
	struct block_device *part = bdget_disk(disk, partno);
	dev_t devt = 0;

	if (part) {
		devt = part->bd_dev;
		bdput(part);
	}

	return devt;
}

dev_t blk_lookup_devt(const char *name, int partno)
{
	dev_t devt = MKDEV(0, 0);
@@ -1236,7 +1249,6 @@ dev_t blk_lookup_devt(const char *name, int partno)
	class_dev_iter_init(&iter, &block_class, NULL, &disk_type);
	while ((dev = class_dev_iter_next(&iter))) {
		struct gendisk *disk = dev_to_disk(dev);
		struct block_device *part;

		if (strcmp(dev_name(dev), name))
			continue;
@@ -1247,12 +1259,9 @@ dev_t blk_lookup_devt(const char *name, int partno)
			 */
			devt = MKDEV(MAJOR(dev->devt),
				     MINOR(dev->devt) + partno);
			break;
		}
		part = bdget_disk(disk, partno);
		if (part) {
			devt = part->bd_dev;
			bdput(part);
		} else {
			devt = part_devt(disk, partno);
			if (devt)
				break;
		}
	}
+1 −0
Original line number Diff line number Diff line
@@ -333,6 +333,7 @@ static inline void bd_unlink_disk_holder(struct block_device *bdev,
}
#endif /* CONFIG_SYSFS */

dev_t part_devt(struct gendisk *disk, u8 partno);
dev_t blk_lookup_devt(const char *name, int partno);
void blk_request_module(dev_t devt);
#ifdef CONFIG_BLOCK
+2 −8
Original line number Diff line number Diff line
@@ -133,14 +133,8 @@ static dev_t devt_from_partuuid(const char *uuid_str)
		 * Attempt to find the requested partition by adding an offset
		 * to the partition number found by UUID.
		 */
		struct block_device *part;

		part = bdget_disk(dev_to_disk(dev),
		devt = part_devt(dev_to_disk(dev),
				 dev_to_bdev(dev)->bd_partno + offset);
		if (part) {
			devt = part->bd_dev;
			bdput(part);
		}
	} else {
		devt = dev->devt;
	}