Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / drivers / cdrom / cdu31a.c
index ac96de1..72ffd64 100644 (file)
@@ -1402,7 +1402,7 @@ static void do_cdu31a_request(request_queue_t * q)
                        if (!end_that_request_first(req, 1, nblock)) {
                                spin_lock_irq(q->queue_lock);
                                blkdev_dequeue_request(req);
-                               end_that_request_last(req);
+                               end_that_request_last(req, 1);
                                spin_unlock_irq(q->queue_lock);
                        }
                        continue;
@@ -2668,7 +2668,7 @@ static int scd_audio_ioctl(struct cdrom_device_info *cdi,
        return retval;
 }
 
-static int scd_dev_ioctl(struct cdrom_device_info *cdi,
+static int scd_read_audio(struct cdrom_device_info *cdi,
                         unsigned int cmd, unsigned long arg)
 {
        void __user *argp = (void __user *)arg;
@@ -2894,11 +2894,10 @@ static struct cdrom_device_ops scd_dops = {
        .get_mcn                = scd_get_mcn,
        .reset                  = scd_reset,
        .audio_ioctl            = scd_audio_ioctl,
-       .dev_ioctl              = scd_dev_ioctl,
        .capability             = CDC_OPEN_TRAY | CDC_CLOSE_TRAY | CDC_LOCK |
                                  CDC_SELECT_SPEED | CDC_MULTI_SESSION |
                                  CDC_MCN | CDC_MEDIA_CHANGED | CDC_PLAY_AUDIO |
-                                 CDC_RESET | CDC_IOCTLS | CDC_DRIVE_STATUS,
+                                 CDC_RESET | CDC_DRIVE_STATUS,
        .n_minors               = 1,
 };
 
@@ -2936,6 +2935,9 @@ static int scd_block_ioctl(struct inode *inode, struct file *file,
                case CDROMCLOSETRAY:
                        retval = scd_tray_move(&scd_info, 0);
                        break;
+               case CDROMREADAUDIO:
+                       retval = scd_read_audio(&scd_info, CDROMREADAUDIO, arg);
+                       break;
                default:
                        retval = cdrom_ioctl(file, &scd_info, inode, cmd, arg);
        }