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

block: pass a gendisk to ->open



->open is only called on the whole device.  Make that explicit by
passing a gendisk instead of the block_device.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
Acked-by: default avatarChristian Brauner <brauner@kernel.org>
Acked-by: Jack Wang <jinpu.wang@ionos.com>		[rnbd]
Link: https://lore.kernel.org/r/20230608110258.189493-9-hch@lst.de


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 444aa2c5
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -108,7 +108,7 @@ static inline void ubd_set_bit(__u64 bit, unsigned char *data)
static DEFINE_MUTEX(ubd_lock);
static DEFINE_MUTEX(ubd_mutex); /* replaces BKL, might not be needed */

static int ubd_open(struct block_device *bdev, fmode_t mode);
static int ubd_open(struct gendisk *disk, fmode_t mode);
static void ubd_release(struct gendisk *disk, fmode_t mode);
static int ubd_ioctl(struct block_device *bdev, fmode_t mode,
		     unsigned int cmd, unsigned long arg);
@@ -1154,9 +1154,8 @@ static int __init ubd_driver_init(void){

device_initcall(ubd_driver_init);

static int ubd_open(struct block_device *bdev, fmode_t mode)
static int ubd_open(struct gendisk *disk, fmode_t mode)
{
	struct gendisk *disk = bdev->bd_disk;
	struct ubd *ubd_dev = disk->private_data;
	int err = 0;

+2 −2
Original line number Diff line number Diff line
@@ -120,9 +120,9 @@ static void simdisk_submit_bio(struct bio *bio)
	bio_endio(bio);
}

static int simdisk_open(struct block_device *bdev, fmode_t mode)
static int simdisk_open(struct gendisk *disk, fmode_t mode)
{
	struct simdisk *dev = bdev->bd_disk->private_data;
	struct simdisk *dev = disk->private_data;

	spin_lock(&dev->lock);
	++dev->users;
+1 −1
Original line number Diff line number Diff line
@@ -652,7 +652,7 @@ static int blkdev_get_whole(struct block_device *bdev, fmode_t mode)
	int ret;

	if (disk->fops->open) {
		ret = disk->fops->open(bdev, mode);
		ret = disk->fops->open(disk, mode);
		if (ret) {
			/* avoid ghost partitions on a removed medium */
			if (ret == -ENOMEDIUM &&
+4 −4
Original line number Diff line number Diff line
@@ -1654,10 +1654,10 @@ static void fd_probe(int dev)
 * /dev/PS0 etc), and disallows simultaneous access to the same
 * drive with different device numbers.
 */
static int floppy_open(struct block_device *bdev, fmode_t mode)
static int floppy_open(struct gendisk *disk, fmode_t mode)
{
	int drive = MINOR(bdev->bd_dev) & 3;
	int system =  (MINOR(bdev->bd_dev) & 4) >> 2;
	int drive = disk->first_minor & 3;
	int system = (disk->first_minor & 4) >> 2;
	int old_dev;
	unsigned long flags;

@@ -1675,7 +1675,7 @@ static int floppy_open(struct block_device *bdev, fmode_t mode)
	}

	if (mode & (FMODE_READ|FMODE_WRITE)) {
		disk_check_media_change(bdev->bd_disk);
		disk_check_media_change(disk);
		if (mode & FMODE_WRITE) {
			int wrprot;

+2 −2
Original line number Diff line number Diff line
@@ -204,9 +204,9 @@ aoedisk_rm_debugfs(struct aoedev *d)
}

static int
aoeblk_open(struct block_device *bdev, fmode_t mode)
aoeblk_open(struct gendisk *disk, fmode_t mode)
{
	struct aoedev *d = bdev->bd_disk->private_data;
	struct aoedev *d = disk->private_data;
	ulong flags;

	if (!virt_addr_valid(d)) {
Loading