Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4099a966 authored by Al Viro's avatar Al Viro
Browse files

[PATCH] switch ub



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent b4d9a442
Loading
Loading
Loading
Loading
+12 −14
Original line number Diff line number Diff line
@@ -1667,10 +1667,9 @@ static void ub_revalidate(struct ub_dev *sc, struct ub_lun *lun)
 * This is mostly needed to keep refcounting, but also to support
 * media checks on removable media drives.
 */
static int ub_bd_open(struct inode *inode, struct file *filp)
static int ub_bd_open(struct block_device *bdev, fmode_t mode)
{
	struct gendisk *disk = inode->i_bdev->bd_disk;
	struct ub_lun *lun = disk->private_data;
	struct ub_lun *lun = bdev->bd_disk->private_data;
	struct ub_dev *sc = lun->udev;
	unsigned long flags;
	int rc;
@@ -1684,19 +1683,19 @@ static int ub_bd_open(struct inode *inode, struct file *filp)
	spin_unlock_irqrestore(&ub_lock, flags);

	if (lun->removable || lun->readonly)
		check_disk_change(inode->i_bdev);
		check_disk_change(bdev);

	/*
	 * The sd.c considers ->media_present and ->changed not equivalent,
	 * under some pretty murky conditions (a failure of READ CAPACITY).
	 * We may need it one day.
	 */
	if (lun->removable && lun->changed && !(filp->f_mode & FMODE_NDELAY)) {
	if (lun->removable && lun->changed && !(mode & FMODE_NDELAY)) {
		rc = -ENOMEDIUM;
		goto err_open;
	}

	if (lun->readonly && (filp->f_mode & FMODE_WRITE)) {
	if (lun->readonly && (mode & FMODE_WRITE)) {
		rc = -EROFS;
		goto err_open;
	}
@@ -1710,9 +1709,8 @@ static int ub_bd_open(struct inode *inode, struct file *filp)

/*
 */
static int ub_bd_release(struct inode *inode, struct file *filp)
static int ub_bd_release(struct gendisk *disk, fmode_t mode)
{
	struct gendisk *disk = inode->i_bdev->bd_disk;
	struct ub_lun *lun = disk->private_data;
	struct ub_dev *sc = lun->udev;

@@ -1723,13 +1721,13 @@ static int ub_bd_release(struct inode *inode, struct file *filp)
/*
 * The ioctl interface.
 */
static int ub_bd_ioctl(struct inode *inode, struct file *filp,
static int ub_bd_ioctl(struct block_device *bdev, fmode_t mode,
    unsigned int cmd, unsigned long arg)
{
	struct gendisk *disk = inode->i_bdev->bd_disk;
	struct gendisk *disk = bdev->bd_disk;
	void __user *usermem = (void __user *) arg;

	return scsi_cmd_ioctl(disk->queue, disk, filp ? filp->f_mode : 0, cmd, usermem);
	return scsi_cmd_ioctl(disk->queue, disk, mode, cmd, usermem);
}

/*
@@ -1791,9 +1789,9 @@ static int ub_bd_media_changed(struct gendisk *disk)

static struct block_device_operations ub_bd_fops = {
	.owner		= THIS_MODULE,
	.__open		= ub_bd_open,
	.__release	= ub_bd_release,
	.__ioctl		= ub_bd_ioctl,
	.open		= ub_bd_open,
	.release	= ub_bd_release,
	.locked_ioctl	= ub_bd_ioctl,
	.media_changed	= ub_bd_media_changed,
	.revalidate_disk = ub_bd_revalidate,
};