[PATCH 05/11] rbd: implement ->set_read_only to hook into BLKROSET processing
Ilya Dryomov
idryomov at gmail.com
Mon Nov 2 06:30:05 EST 2020
On Sat, Oct 31, 2020 at 10:11 AM Christoph Hellwig <hch at lst.de> wrote:
>
> Implement the ->set_read_only method instead of parsing the actual
> ioctl command.
>
> Signed-off-by: Christoph Hellwig <hch at 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 at gmail.com>
Thanks,
Ilya
More information about the linux-mtd
mailing list