OSDN Git Service

block: remove the disk argument to delete_partition
authorChristoph Hellwig <hch@lst.de>
Mon, 31 Aug 2020 18:02:38 +0000 (20:02 +0200)
committerJens Axboe <axboe@kernel.dk>
Wed, 2 Sep 2020 01:38:25 +0000 (19:38 -0600)
We can trivially derive the gendisk from the hd_struct.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk.h
block/genhd.c
block/partitions/core.c

index a180443..c08762e 100644 (file)
@@ -361,7 +361,7 @@ char *disk_name(struct gendisk *hd, int partno, char *buf);
 #define ADDPART_FLAG_NONE      0
 #define ADDPART_FLAG_RAID      1
 #define ADDPART_FLAG_WHOLEDISK 2
-void delete_partition(struct gendisk *disk, struct hd_struct *part);
+void delete_partition(struct hd_struct *part);
 int bdev_add_partition(struct block_device *bdev, int partno,
                sector_t start, sector_t length);
 int bdev_del_partition(struct block_device *bdev, int partno);
index 055ce9c..2055b5b 100644 (file)
@@ -913,7 +913,7 @@ void del_gendisk(struct gendisk *disk)
                             DISK_PITER_INCL_EMPTY | DISK_PITER_REVERSE);
        while ((part = disk_part_iter_next(&piter))) {
                invalidate_partition(disk, part->partno);
-               delete_partition(disk, part);
+               delete_partition(part);
        }
        disk_part_iter_exit(&piter);
 
index e596a85..dd68114 100644 (file)
@@ -324,8 +324,9 @@ int hd_ref_init(struct hd_struct *part)
  * Must be called either with bd_mutex held, before a disk can be opened or
  * after all disk users are gone.
  */
-void delete_partition(struct gendisk *disk, struct hd_struct *part)
+void delete_partition(struct hd_struct *part)
 {
+       struct gendisk *disk = part_to_disk(part);
        struct disk_part_tbl *ptbl =
                rcu_dereference_protected(disk->part_tbl, 1);
 
@@ -333,7 +334,7 @@ void delete_partition(struct gendisk *disk, struct hd_struct *part)
         * ->part_tbl is referenced in this part's release handler, so
         *  we have to hold the disk device
         */
-       get_device(disk_to_dev(part_to_disk(part)));
+       get_device(disk_to_dev(disk));
        rcu_assign_pointer(ptbl->part[part->partno], NULL);
        kobject_put(part->holder_dir);
        device_del(part_to_dev(part));
@@ -556,7 +557,7 @@ int bdev_del_partition(struct block_device *bdev, int partno)
        sync_blockdev(bdevp);
        invalidate_bdev(bdevp);
 
-       delete_partition(bdev->bd_disk, part);
+       delete_partition(part);
        ret = 0;
 out_unlock:
        mutex_unlock(&bdev->bd_mutex);
@@ -636,7 +637,7 @@ int blk_drop_partitions(struct block_device *bdev)
 
        disk_part_iter_init(&piter, bdev->bd_disk, DISK_PITER_INCL_EMPTY);
        while ((part = disk_part_iter_next(&piter)))
-               delete_partition(bdev->bd_disk, part);
+               delete_partition(part);
        disk_part_iter_exit(&piter);
 
        return 0;