]> www.infradead.org Git - users/hch/block.git/commitdiff
block: stop using bdget_disk for partition 0 bdev-inode
authorChristoph Hellwig <hch@lst.de>
Sat, 14 Nov 2020 19:30:06 +0000 (20:30 +0100)
committerChristoph Hellwig <hch@lst.de>
Mon, 16 Nov 2020 10:09:57 +0000 (11:09 +0100)
We can just dereference the point in struct gendisk instead.  Also
remove the now unused export.

Signed-off-by: Christoph Hellwig <hch@lst.de>
block/genhd.c
drivers/block/nbd.c
drivers/block/xen-blkfront.c
drivers/block/zram/zram_drv.c
drivers/md/dm.c
drivers/s390/block/dasd_ioctl.c

index 5dcb8b8902daaeec20134cb72d88ba7e61b77fec..b2a4e68171519a07188cba08ff569381d7bc5622 100644 (file)
@@ -904,7 +904,6 @@ struct block_device *bdget_disk(struct gendisk *disk, int partno)
 
        return bdev;
 }
-EXPORT_SYMBOL(bdget_disk);
 
 /*
  * print a full list of all partitions - intended for places where the root
index 014683968ce1745520909a98eed8790730dd3dcc..92f84ed0ba9eb6eb4fc125eec0166b319e9fbfca 100644 (file)
@@ -1488,12 +1488,10 @@ out:
 static void nbd_release(struct gendisk *disk, fmode_t mode)
 {
        struct nbd_device *nbd = disk->private_data;
-       struct block_device *bdev = bdget_disk(disk, 0);
 
        if (test_bit(NBD_RT_DISCONNECT_ON_CLOSE, &nbd->config->runtime_flags) &&
-                       bdev->bd_openers == 0)
+                       disk->part0->bd_openers == 0)
                nbd_disconnect_and_put(nbd);
-       bdput(bdev);
 
        nbd_config_put(nbd);
        nbd_put(nbd);
index 5b1f99ca77b734865e85428ef2e5762acd6f36a6..c2721ec73d72914666c7515c57ff6375cb8899eb 100644 (file)
@@ -2153,7 +2153,7 @@ static void blkfront_closing(struct blkfront_info *info)
        }
 
        if (info->gd)
-               bdev = bdget_disk(info->gd, 0);
+               bdev = bdgrab(info->gd->part0);
 
        mutex_unlock(&info->mutex);
 
@@ -2518,7 +2518,7 @@ static int blkfront_remove(struct xenbus_device *xbdev)
 
        disk = info->gd;
        if (disk)
-               bdev = bdget_disk(disk, 0);
+               bdev = bdgrab(disk->part0);
 
        info->xbdev = NULL;
        mutex_unlock(&info->mutex);
@@ -2595,19 +2595,11 @@ out:
 static void blkif_release(struct gendisk *disk, fmode_t mode)
 {
        struct blkfront_info *info = disk->private_data;
-       struct block_device *bdev;
        struct xenbus_device *xbdev;
 
        mutex_lock(&blkfront_mutex);
-
-       bdev = bdget_disk(disk, 0);
-
-       if (!bdev) {
-               WARN(1, "Block device %s yanked out from us!\n", disk->disk_name);
+       if (disk->part0->bd_openers)
                goto out_mutex;
-       }
-       if (bdev->bd_openers)
-               goto out;
 
        /*
         * Check if we have been instructed to close. We will have
@@ -2619,7 +2611,7 @@ static void blkif_release(struct gendisk *disk, fmode_t mode)
 
        if (xbdev && xbdev->state == XenbusStateClosing) {
                /* pending switch to state closed */
-               dev_info(disk_to_dev(bdev->bd_disk), "releasing disk\n");
+               dev_info(disk_to_dev(disk), "releasing disk\n");
                xlvbd_release_gendisk(info);
                xenbus_frontend_closed(info->xbdev);
        }
@@ -2628,14 +2620,12 @@ static void blkif_release(struct gendisk *disk, fmode_t mode)
 
        if (!xbdev) {
                /* sudden device removal */
-               dev_info(disk_to_dev(bdev->bd_disk), "releasing disk\n");
+               dev_info(disk_to_dev(disk), "releasing disk\n");
                xlvbd_release_gendisk(info);
                disk->private_data = NULL;
                free_info(info);
        }
 
-out:
-       bdput(bdev);
 out_mutex:
        mutex_unlock(&blkfront_mutex);
 }
index d539572ce16b209edbd038ad929c10aff9a7c886..272452a6decbef14823f5dd7fa4f25008b52acff 100644 (file)
@@ -1757,7 +1757,6 @@ static ssize_t reset_store(struct device *dev,
                struct device_attribute *attr, const char *buf, size_t len)
 {
        struct zram *zram = dev_to_zram(dev);
-       struct block_device *bdev;
        unsigned short do_reset;
        int ret = 0;
 
@@ -1767,17 +1766,12 @@ static ssize_t reset_store(struct device *dev,
        if (!do_reset)
                return -EINVAL;
 
-       bdev = bdget_disk(zram->disk, 0);
-       if (!bdev)
-               return -ENOMEM;
-
        mutex_lock(&zram->disk->mutex);
-       if (bdev->bd_openers)
+       if (zram->disk->part0->bd_openers)
                ret = -EBUSY;
        else
                zram_reset_device(zram);
        mutex_unlock(&zram->disk->mutex);
-       bdput(bdev);
 
        return ret ? ret : len;
 }
@@ -1940,24 +1934,9 @@ out_free_dev:
        return ret;
 }
 
-static bool zram_busy(struct zram *zram)
-{
-       struct block_device *bdev;
-       bool busy = false;
-
-       bdev = bdget_disk(zram->disk, 0);
-       if (bdev) {
-               if (bdev->bd_openers)
-                       busy = true;
-               bdput(bdev);
-       }
-
-       return busy;
-}
-
 static int zram_remove(struct zram *zram)
 {
-       if (zram_busy(zram))
+       if (zram->disk->part0->bd_openers)
                return -EBUSY;
 
        del_gendisk(zram->disk);
index ac46f6e41279cc919788a9c7a7c4db1977233368..ec48ccae50dd534381b43f81c146bd4bf881586e 100644 (file)
@@ -2375,17 +2375,12 @@ out:
  */
 static int lock_fs(struct mapped_device *md)
 {
-       struct block_device *bdev;
        int r;
 
        WARN_ON(md->frozen_sb);
 
-       bdev = bdget_disk(md->disk, 0);
-       if (!bdev)
-               return -ENOMEM;
-       md->frozen_sb = freeze_bdev(bdev);
+       md->frozen_sb = freeze_bdev(md->disk->part0);
        if (IS_ERR(md->frozen_sb)) {
-               bdput(bdev);
                r = PTR_ERR(md->frozen_sb);
                md->frozen_sb = NULL;
                return r;
@@ -2398,14 +2393,10 @@ static int lock_fs(struct mapped_device *md)
 
 static void unlock_fs(struct mapped_device *md)
 {
-       struct block_device *bdev;
-
        if (!test_bit(DMF_FROZEN, &md->flags))
                return;
 
-       bdev = md->frozen_sb->s_bdev;
-       thaw_bdev(bdev, md->frozen_sb);
-       bdput(bdev);
+       thaw_bdev(md->frozen_sb->s_bdev, md->frozen_sb);
        md->frozen_sb = NULL;
        clear_bit(DMF_FROZEN, &md->flags);
 }
index 304eba1acf163c8a4986a9065525172fac6babc4..9f64244089465537b8ab127f5d3d866c7d699a13 100644 (file)
@@ -220,9 +220,8 @@ dasd_format(struct dasd_block *block, struct format_data_t *fdata)
         * enabling the device later.
         */
        if (fdata->start_unit == 0) {
-               struct block_device *bdev = bdget_disk(block->gdp, 0);
-               bdev->bd_inode->i_blkbits = blksize_bits(fdata->blksize);
-               bdput(bdev);
+               block->gdp->part0->bd_inode->i_blkbits =
+                       blksize_bits(fdata->blksize);
        }
 
        rc = base->discipline->format_device(base, fdata, 1);