|
@@ -267,11 +267,6 @@ static DEFINE_MUTEX(idetape_ref_mutex);
|
|
|
|
|
|
static struct class *idetape_sysfs_class;
|
|
static struct class *idetape_sysfs_class;
|
|
|
|
|
|
-#define to_ide_tape(obj) container_of(obj, struct ide_tape_obj, kref)
|
|
|
|
-
|
|
|
|
-#define ide_tape_g(disk) \
|
|
|
|
- container_of((disk)->private_data, struct ide_tape_obj, driver)
|
|
|
|
-
|
|
|
|
static void ide_tape_release(struct kref *);
|
|
static void ide_tape_release(struct kref *);
|
|
|
|
|
|
static struct ide_tape_obj *ide_tape_get(struct gendisk *disk)
|
|
static struct ide_tape_obj *ide_tape_get(struct gendisk *disk)
|
|
@@ -279,7 +274,7 @@ static struct ide_tape_obj *ide_tape_get(struct gendisk *disk)
|
|
struct ide_tape_obj *tape = NULL;
|
|
struct ide_tape_obj *tape = NULL;
|
|
|
|
|
|
mutex_lock(&idetape_ref_mutex);
|
|
mutex_lock(&idetape_ref_mutex);
|
|
- tape = ide_tape_g(disk);
|
|
|
|
|
|
+ tape = ide_drv_g(disk, ide_tape_obj);
|
|
if (tape) {
|
|
if (tape) {
|
|
if (ide_device_get(tape->drive))
|
|
if (ide_device_get(tape->drive))
|
|
tape = NULL;
|
|
tape = NULL;
|
|
@@ -306,8 +301,6 @@ static void ide_tape_put(struct ide_tape_obj *tape)
|
|
*/
|
|
*/
|
|
static struct ide_tape_obj *idetape_devs[MAX_HWIFS * MAX_DRIVES];
|
|
static struct ide_tape_obj *idetape_devs[MAX_HWIFS * MAX_DRIVES];
|
|
|
|
|
|
-#define ide_tape_f(file) ((file)->private_data)
|
|
|
|
-
|
|
|
|
static struct ide_tape_obj *ide_tape_chrdev_get(unsigned int i)
|
|
static struct ide_tape_obj *ide_tape_chrdev_get(unsigned int i)
|
|
{
|
|
{
|
|
struct ide_tape_obj *tape = NULL;
|
|
struct ide_tape_obj *tape = NULL;
|
|
@@ -1542,7 +1535,7 @@ static int idetape_space_over_filemarks(ide_drive_t *drive, short mt_op,
|
|
static ssize_t idetape_chrdev_read(struct file *file, char __user *buf,
|
|
static ssize_t idetape_chrdev_read(struct file *file, char __user *buf,
|
|
size_t count, loff_t *ppos)
|
|
size_t count, loff_t *ppos)
|
|
{
|
|
{
|
|
- struct ide_tape_obj *tape = ide_tape_f(file);
|
|
|
|
|
|
+ struct ide_tape_obj *tape = file->private_data;
|
|
ide_drive_t *drive = tape->drive;
|
|
ide_drive_t *drive = tape->drive;
|
|
ssize_t bytes_read, temp, actually_read = 0, rc;
|
|
ssize_t bytes_read, temp, actually_read = 0, rc;
|
|
ssize_t ret = 0;
|
|
ssize_t ret = 0;
|
|
@@ -1604,7 +1597,7 @@ finish:
|
|
static ssize_t idetape_chrdev_write(struct file *file, const char __user *buf,
|
|
static ssize_t idetape_chrdev_write(struct file *file, const char __user *buf,
|
|
size_t count, loff_t *ppos)
|
|
size_t count, loff_t *ppos)
|
|
{
|
|
{
|
|
- struct ide_tape_obj *tape = ide_tape_f(file);
|
|
|
|
|
|
+ struct ide_tape_obj *tape = file->private_data;
|
|
ide_drive_t *drive = tape->drive;
|
|
ide_drive_t *drive = tape->drive;
|
|
ssize_t actually_written = 0;
|
|
ssize_t actually_written = 0;
|
|
ssize_t ret = 0;
|
|
ssize_t ret = 0;
|
|
@@ -1836,7 +1829,7 @@ static int idetape_mtioctop(ide_drive_t *drive, short mt_op, int mt_count)
|
|
static int idetape_chrdev_ioctl(struct inode *inode, struct file *file,
|
|
static int idetape_chrdev_ioctl(struct inode *inode, struct file *file,
|
|
unsigned int cmd, unsigned long arg)
|
|
unsigned int cmd, unsigned long arg)
|
|
{
|
|
{
|
|
- struct ide_tape_obj *tape = ide_tape_f(file);
|
|
|
|
|
|
+ struct ide_tape_obj *tape = file->private_data;
|
|
ide_drive_t *drive = tape->drive;
|
|
ide_drive_t *drive = tape->drive;
|
|
struct mtop mtop;
|
|
struct mtop mtop;
|
|
struct mtget mtget;
|
|
struct mtget mtget;
|
|
@@ -2013,7 +2006,7 @@ static void idetape_write_release(ide_drive_t *drive, unsigned int minor)
|
|
|
|
|
|
static int idetape_chrdev_release(struct inode *inode, struct file *filp)
|
|
static int idetape_chrdev_release(struct inode *inode, struct file *filp)
|
|
{
|
|
{
|
|
- struct ide_tape_obj *tape = ide_tape_f(filp);
|
|
|
|
|
|
+ struct ide_tape_obj *tape = filp->private_data;
|
|
ide_drive_t *drive = tape->drive;
|
|
ide_drive_t *drive = tape->drive;
|
|
unsigned int minor = iminor(inode);
|
|
unsigned int minor = iminor(inode);
|
|
|
|
|
|
@@ -2272,7 +2265,7 @@ static void ide_tape_remove(ide_drive_t *drive)
|
|
|
|
|
|
static void ide_tape_release(struct kref *kref)
|
|
static void ide_tape_release(struct kref *kref)
|
|
{
|
|
{
|
|
- struct ide_tape_obj *tape = to_ide_tape(kref);
|
|
|
|
|
|
+ struct ide_tape_obj *tape = to_ide_drv(kref, ide_tape_obj);
|
|
ide_drive_t *drive = tape->drive;
|
|
ide_drive_t *drive = tape->drive;
|
|
struct gendisk *g = tape->disk;
|
|
struct gendisk *g = tape->disk;
|
|
|
|
|
|
@@ -2355,7 +2348,7 @@ static int idetape_open(struct inode *inode, struct file *filp)
|
|
static int idetape_release(struct inode *inode, struct file *filp)
|
|
static int idetape_release(struct inode *inode, struct file *filp)
|
|
{
|
|
{
|
|
struct gendisk *disk = inode->i_bdev->bd_disk;
|
|
struct gendisk *disk = inode->i_bdev->bd_disk;
|
|
- struct ide_tape_obj *tape = ide_tape_g(disk);
|
|
|
|
|
|
+ struct ide_tape_obj *tape = ide_drv_g(disk, ide_tape_obj);
|
|
|
|
|
|
ide_tape_put(tape);
|
|
ide_tape_put(tape);
|
|
|
|
|
|
@@ -2366,7 +2359,7 @@ static int idetape_ioctl(struct inode *inode, struct file *file,
|
|
unsigned int cmd, unsigned long arg)
|
|
unsigned int cmd, unsigned long arg)
|
|
{
|
|
{
|
|
struct block_device *bdev = inode->i_bdev;
|
|
struct block_device *bdev = inode->i_bdev;
|
|
- struct ide_tape_obj *tape = ide_tape_g(bdev->bd_disk);
|
|
|
|
|
|
+ struct ide_tape_obj *tape = ide_drv_g(bdev->bd_disk, ide_tape_obj);
|
|
ide_drive_t *drive = tape->drive;
|
|
ide_drive_t *drive = tape->drive;
|
|
int err = generic_ide_ioctl(drive, file, bdev, cmd, arg);
|
|
int err = generic_ide_ioctl(drive, file, bdev, cmd, arg);
|
|
if (err == -EINVAL)
|
|
if (err == -EINVAL)
|