Message ID | 20201031085810.450489-6-hch@lst.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [01/11] mtd_blkdevs: don't override BLKFLSBUF | expand |
On Sat, Oct 31, 2020 at 10:11 AM Christoph Hellwig <hch@lst.de> wrote: > > Implement the ->set_read_only method instead of parsing the actual > ioctl command. > > Signed-off-by: Christoph Hellwig <hch@lst.de> > --- > drivers/block/rbd.c | 41 ++++------------------------------------- > 1 file changed, 4 insertions(+), 37 deletions(-) > > diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c > index f84128abade319..37f8fc28004acb 100644 > --- a/drivers/block/rbd.c > +++ b/drivers/block/rbd.c > @@ -692,12 +692,9 @@ static void rbd_release(struct gendisk *disk, fmode_t mode) > put_device(&rbd_dev->dev); > } > > -static int rbd_ioctl_set_ro(struct rbd_device *rbd_dev, unsigned long arg) > +static int rbd_set_read_only(struct block_device *bdev, bool ro) > { > - int ro; > - > - if (get_user(ro, (int __user *)arg)) > - return -EFAULT; > + struct rbd_device *rbd_dev = bdev->bd_disk->private_data; > > /* > * Both images mapped read-only and snapshots can't be marked > @@ -706,47 +703,17 @@ static int rbd_ioctl_set_ro(struct rbd_device *rbd_dev, unsigned long arg) > if (!ro) { > if (rbd_is_ro(rbd_dev)) > return -EROFS; > - > rbd_assert(!rbd_is_snap(rbd_dev)); If you repost, please leave this empty line. > } > > - /* Let blkdev_roset() handle it */ > - return -ENOTTY; > -} > - > -static int rbd_ioctl(struct block_device *bdev, fmode_t mode, > - unsigned int cmd, unsigned long arg) > -{ > - struct rbd_device *rbd_dev = bdev->bd_disk->private_data; > - int ret; > - > - switch (cmd) { > - case BLKROSET: > - ret = rbd_ioctl_set_ro(rbd_dev, arg); > - break; > - default: > - ret = -ENOTTY; > - } > - > - return ret; > -} > - > -#ifdef CONFIG_COMPAT > -static int rbd_compat_ioctl(struct block_device *bdev, fmode_t mode, > - unsigned int cmd, unsigned long arg) > -{ > - return rbd_ioctl(bdev, mode, cmd, arg); > + return 0; > } > -#endif /* CONFIG_COMPAT */ > > static const struct block_device_operations rbd_bd_ops = { > .owner = THIS_MODULE, > .open = rbd_open, > .release = rbd_release, > - .ioctl = rbd_ioctl, > -#ifdef CONFIG_COMPAT > - .compat_ioctl = rbd_compat_ioctl, > -#endif > + .set_read_only = rbd_set_read_only, > }; > > /* > -- > 2.28.0 > With that nit, Acked-by: Ilya Dryomov <idryomov@gmail.com> Thanks, Ilya
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c index f84128abade319..37f8fc28004acb 100644 --- a/drivers/block/rbd.c +++ b/drivers/block/rbd.c @@ -692,12 +692,9 @@ static void rbd_release(struct gendisk *disk, fmode_t mode) put_device(&rbd_dev->dev); } -static int rbd_ioctl_set_ro(struct rbd_device *rbd_dev, unsigned long arg) +static int rbd_set_read_only(struct block_device *bdev, bool ro) { - int ro; - - if (get_user(ro, (int __user *)arg)) - return -EFAULT; + struct rbd_device *rbd_dev = bdev->bd_disk->private_data; /* * Both images mapped read-only and snapshots can't be marked @@ -706,47 +703,17 @@ static int rbd_ioctl_set_ro(struct rbd_device *rbd_dev, unsigned long arg) if (!ro) { if (rbd_is_ro(rbd_dev)) return -EROFS; - rbd_assert(!rbd_is_snap(rbd_dev)); } - /* Let blkdev_roset() handle it */ - return -ENOTTY; -} - -static int rbd_ioctl(struct block_device *bdev, fmode_t mode, - unsigned int cmd, unsigned long arg) -{ - struct rbd_device *rbd_dev = bdev->bd_disk->private_data; - int ret; - - switch (cmd) { - case BLKROSET: - ret = rbd_ioctl_set_ro(rbd_dev, arg); - break; - default: - ret = -ENOTTY; - } - - return ret; -} - -#ifdef CONFIG_COMPAT -static int rbd_compat_ioctl(struct block_device *bdev, fmode_t mode, - unsigned int cmd, unsigned long arg) -{ - return rbd_ioctl(bdev, mode, cmd, arg); + return 0; } -#endif /* CONFIG_COMPAT */ static const struct block_device_operations rbd_bd_ops = { .owner = THIS_MODULE, .open = rbd_open, .release = rbd_release, - .ioctl = rbd_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = rbd_compat_ioctl, -#endif + .set_read_only = rbd_set_read_only, }; /*
Implement the ->set_read_only method instead of parsing the actual ioctl command. Signed-off-by: Christoph Hellwig <hch@lst.de> --- drivers/block/rbd.c | 41 ++++------------------------------------- 1 file changed, 4 insertions(+), 37 deletions(-)