[PATCH] switch ub

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Al Viro 2008-03-02 10:21:43 -05:00
parent b4d9a4425b
commit 4099a96693

View File

@ -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 * This is mostly needed to keep refcounting, but also to support
* media checks on removable media drives. * 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 = bdev->bd_disk->private_data;
struct ub_lun *lun = disk->private_data;
struct ub_dev *sc = lun->udev; struct ub_dev *sc = lun->udev;
unsigned long flags; unsigned long flags;
int rc; int rc;
@ -1684,19 +1683,19 @@ static int ub_bd_open(struct inode *inode, struct file *filp)
spin_unlock_irqrestore(&ub_lock, flags); spin_unlock_irqrestore(&ub_lock, flags);
if (lun->removable || lun->readonly) 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, * The sd.c considers ->media_present and ->changed not equivalent,
* under some pretty murky conditions (a failure of READ CAPACITY). * under some pretty murky conditions (a failure of READ CAPACITY).
* We may need it one day. * 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; rc = -ENOMEDIUM;
goto err_open; goto err_open;
} }
if (lun->readonly && (filp->f_mode & FMODE_WRITE)) { if (lun->readonly && (mode & FMODE_WRITE)) {
rc = -EROFS; rc = -EROFS;
goto err_open; goto err_open;
} }
@ -1710,9 +1709,8 @@ err_open:
/* /*
*/ */
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_lun *lun = disk->private_data;
struct ub_dev *sc = lun->udev; struct ub_dev *sc = lun->udev;
@ -1723,13 +1721,13 @@ static int ub_bd_release(struct inode *inode, struct file *filp)
/* /*
* The ioctl interface. * 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) 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; 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 = { static struct block_device_operations ub_bd_fops = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.__open = ub_bd_open, .open = ub_bd_open,
.__release = ub_bd_release, .release = ub_bd_release,
.__ioctl = ub_bd_ioctl, .locked_ioctl = ub_bd_ioctl,
.media_changed = ub_bd_media_changed, .media_changed = ub_bd_media_changed,
.revalidate_disk = ub_bd_revalidate, .revalidate_disk = ub_bd_revalidate,
}; };