diff options
author | Christoph Hellwig <hch@lst.de> | 2021-08-10 17:45:10 +0200 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2021-08-12 10:31:35 -0600 |
commit | 7f6be3765e113e0d4b8e6b65e1074982de94377e (patch) | |
tree | bba3bfda58f09c1ffbe739fa8a06f2e2d7a98667 | |
parent | a08aa9bccdc282b5e8d133bf8c239473f057b464 (diff) | |
download | linux-7f6be3765e113e0d4b8e6b65e1074982de94377e.tar.gz linux-7f6be3765e113e0d4b8e6b65e1074982de94377e.tar.bz2 linux-7f6be3765e113e0d4b8e6b65e1074982de94377e.zip |
block: pass a gendisk to bdev_add_partition
bdev_add_partition can only operate on the whole device. Make that clear
by passing a gendisk instead of a block_device.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20210810154512.1809898-3-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r-- | block/blk.h | 4 | ||||
-rw-r--r-- | block/ioctl.c | 3 | ||||
-rw-r--r-- | block/partitions/core.c | 5 |
3 files changed, 6 insertions, 6 deletions
diff --git a/block/blk.h b/block/blk.h index 56f33fbcde59..c0486f609978 100644 --- a/block/blk.h +++ b/block/blk.h @@ -347,8 +347,8 @@ void blk_free_ext_minor(unsigned int minor); #define ADDPART_FLAG_NONE 0 #define ADDPART_FLAG_RAID 1 #define ADDPART_FLAG_WHOLEDISK 2 -int bdev_add_partition(struct block_device *bdev, int partno, - sector_t start, sector_t length); +int bdev_add_partition(struct gendisk *disk, int partno, sector_t start, + sector_t length); int bdev_del_partition(struct block_device *bdev, int partno); int bdev_resize_partition(struct block_device *bdev, int partno, sector_t start, sector_t length); diff --git a/block/ioctl.c b/block/ioctl.c index fff161eaab42..36e0ec76b3b2 100644 --- a/block/ioctl.c +++ b/block/ioctl.c @@ -16,6 +16,7 @@ static int blkpg_do_ioctl(struct block_device *bdev, struct blkpg_partition __user *upart, int op) { + struct gendisk *disk = bdev->bd_disk; struct blkpg_partition p; long long start, length; @@ -40,7 +41,7 @@ static int blkpg_do_ioctl(struct block_device *bdev, /* check if partition is aligned to blocksize */ if (p.start & (bdev_logical_block_size(bdev) - 1)) return -EINVAL; - return bdev_add_partition(bdev, p.pno, start, length); + return bdev_add_partition(disk, p.pno, start, length); case BLKPG_RESIZE_PARTITION: return bdev_resize_partition(bdev, p.pno, start, length); default: diff --git a/block/partitions/core.c b/block/partitions/core.c index 5dd1cd1a163d..7b227c114297 100644 --- a/block/partitions/core.c +++ b/block/partitions/core.c @@ -451,11 +451,10 @@ static bool partition_overlaps(struct gendisk *disk, sector_t start, return overlap; } -int bdev_add_partition(struct block_device *bdev, int partno, - sector_t start, sector_t length) +int bdev_add_partition(struct gendisk *disk, int partno, sector_t start, + sector_t length) { struct block_device *part; - struct gendisk *disk = bdev->bd_disk; int ret; mutex_lock(&disk->open_mutex); |