/* * Set read only */ static int dasd_ioctl_set_ro(struct block_device *bdev, void __user *argp) { struct dasd_device *base; int intval, rc; if (!capable(CAP_SYS_ADMIN)) return -EACCES; if (bdev != bdev->bd_contains) // ro setting is not allowed for partitions return -EINVAL; if (get_user(intval, (int __user *)argp)) return -EFAULT; base = dasd_device_from_gendisk(bdev->bd_disk); if (!base) return -ENODEV; if (!intval && test_bit(DASD_FLAG_DEVICE_RO, &base->flags)) { dasd_put_device(base); return -EROFS; } set_disk_ro(bdev->bd_disk, intval); rc = dasd_set_feature(base->cdev, DASD_FEATURE_READONLY, intval); dasd_put_device(base); return rc; }
/* * Set read only */ static int dasd_ioctl_set_ro(struct block_device *bdev, void __user *argp) { struct dasd_block *block = bdev->bd_disk->private_data; int intval; if (!capable(CAP_SYS_ADMIN)) return -EACCES; if (bdev != bdev->bd_contains) // ro setting is not allowed for partitions return -EINVAL; if (get_user(intval, (int __user *)argp)) return -EFAULT; set_disk_ro(bdev->bd_disk, intval); return dasd_set_feature(block->base->cdev, DASD_FEATURE_READONLY, intval); }