Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 117522
b: refs/heads/master
c: 4099a96
h: refs/heads/master
v: v3
  • Loading branch information
Al Viro committed Oct 21, 2008
1 parent fe5bca4 commit f2de5f6
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 15 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b4d9a4425bde774ab30f0f43da60bb4ed3508903
refs/heads/master: 4099a96693ab58a95b3ecf19704973cd0f1bdf9d
26 changes: 12 additions & 14 deletions trunk/drivers/block/ub.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
}
Expand All @@ -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;

Expand All @@ -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);
}

/*
Expand Down Expand Up @@ -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,
};
Expand Down

0 comments on commit f2de5f6

Please sign in to comment.