|
@@ -2803,6 +2803,14 @@ static int pkt_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u
|
|
|
VPRINTK("pkt_ioctl: cmd %x, dev %d:%d\n", cmd, imajor(inode), iminor(inode));
|
|
|
|
|
|
switch (cmd) {
|
|
|
+ case CDROMEJECT:
|
|
|
+ /*
|
|
|
+ * The door gets locked when the device is opened, so we
|
|
|
+ * have to unlock it or else the eject command fails.
|
|
|
+ */
|
|
|
+ if (pd->refcnt == 1)
|
|
|
+ pkt_lock_door(pd, 0);
|
|
|
+ /* fallthru */
|
|
|
/*
|
|
|
* forward selected CDROM ioctls to CD-ROM, for UDF
|
|
|
*/
|
|
@@ -2811,16 +2819,8 @@ static int pkt_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u
|
|
|
case CDROM_LAST_WRITTEN:
|
|
|
case CDROM_SEND_PACKET:
|
|
|
case SCSI_IOCTL_SEND_COMMAND:
|
|
|
- return blkdev_ioctl(pd->bdev->bd_inode, file, cmd, arg);
|
|
|
-
|
|
|
- case CDROMEJECT:
|
|
|
- /*
|
|
|
- * The door gets locked when the device is opened, so we
|
|
|
- * have to unlock it or else the eject command fails.
|
|
|
- */
|
|
|
- if (pd->refcnt == 1)
|
|
|
- pkt_lock_door(pd, 0);
|
|
|
- return blkdev_ioctl(pd->bdev->bd_inode, file, cmd, arg);
|
|
|
+ return blkdev_driver_ioctl(pd->bdev->bd_inode, pd->bdev->bd_disk,
|
|
|
+ file, cmd, arg);
|
|
|
|
|
|
default:
|
|
|
VPRINTK(DRIVER_NAME": Unknown ioctl for %s (%x)\n", pd->name, cmd);
|