|
@@ -43,18 +43,18 @@
|
|
|
/*
|
|
|
* file operation structure for tape block frontend
|
|
|
*/
|
|
|
-static int tapeblock_open(struct inode *, struct file *);
|
|
|
-static int tapeblock_release(struct inode *, struct file *);
|
|
|
-static int tapeblock_ioctl(struct inode *, struct file *, unsigned int,
|
|
|
+static int tapeblock_open(struct block_device *, fmode_t);
|
|
|
+static int tapeblock_release(struct gendisk *, fmode_t);
|
|
|
+static int tapeblock_ioctl(struct block_device *, fmode_t, unsigned int,
|
|
|
unsigned long);
|
|
|
static int tapeblock_medium_changed(struct gendisk *);
|
|
|
static int tapeblock_revalidate_disk(struct gendisk *);
|
|
|
|
|
|
static struct block_device_operations tapeblock_fops = {
|
|
|
.owner = THIS_MODULE,
|
|
|
- .__open = tapeblock_open,
|
|
|
- .__release = tapeblock_release,
|
|
|
- .__ioctl = tapeblock_ioctl,
|
|
|
+ .open = tapeblock_open,
|
|
|
+ .release = tapeblock_release,
|
|
|
+ .locked_ioctl = tapeblock_ioctl,
|
|
|
.media_changed = tapeblock_medium_changed,
|
|
|
.revalidate_disk = tapeblock_revalidate_disk,
|
|
|
};
|
|
@@ -364,13 +364,12 @@ tapeblock_medium_changed(struct gendisk *disk)
|
|
|
* Block frontend tape device open function.
|
|
|
*/
|
|
|
static int
|
|
|
-tapeblock_open(struct inode *inode, struct file *filp)
|
|
|
+tapeblock_open(struct block_device *bdev, fmode_t mode)
|
|
|
{
|
|
|
- struct gendisk * disk;
|
|
|
+ struct gendisk * disk = bdev->bd_disk;
|
|
|
struct tape_device * device;
|
|
|
int rc;
|
|
|
|
|
|
- disk = inode->i_bdev->bd_disk;
|
|
|
device = tape_get_device_reference(disk->private_data);
|
|
|
|
|
|
if (device->required_tapemarks) {
|
|
@@ -410,9 +409,8 @@ release:
|
|
|
* we just get the pointer here and release the reference.
|
|
|
*/
|
|
|
static int
|
|
|
-tapeblock_release(struct inode *inode, struct file *filp)
|
|
|
+tapeblock_release(struct gendisk *disk, fmode_t mode)
|
|
|
{
|
|
|
- struct gendisk *disk = inode->i_bdev->bd_disk;
|
|
|
struct tape_device *device = disk->private_data;
|
|
|
|
|
|
tape_state_set(device, TS_IN_USE);
|
|
@@ -427,22 +425,21 @@ tapeblock_release(struct inode *inode, struct file *filp)
|
|
|
*/
|
|
|
static int
|
|
|
tapeblock_ioctl(
|
|
|
- struct inode * inode,
|
|
|
- struct file * file,
|
|
|
+ struct block_device * bdev,
|
|
|
+ fmode_t mode,
|
|
|
unsigned int command,
|
|
|
unsigned long arg
|
|
|
) {
|
|
|
int rc;
|
|
|
int minor;
|
|
|
- struct gendisk *disk;
|
|
|
+ struct gendisk *disk = bdev->bd_disk;
|
|
|
struct tape_device *device;
|
|
|
|
|
|
rc = 0;
|
|
|
- disk = inode->i_bdev->bd_disk;
|
|
|
BUG_ON(!disk);
|
|
|
device = disk->private_data;
|
|
|
BUG_ON(!device);
|
|
|
- minor = iminor(inode);
|
|
|
+ minor = MINOR(bdev->bd_dev);
|
|
|
|
|
|
DBF_LH(6, "tapeblock_ioctl(0x%0x)\n", command);
|
|
|
DBF_LH(6, "device = %d:%d\n", tapeblock_major, minor);
|