|
Lines 2081-2089
cdrom_lockdoor(ide_drive_t *drive, int l
Link Here
|
| 2081 |
if (sense == NULL) |
2081 |
if (sense == NULL) |
| 2082 |
sense = &my_sense; |
2082 |
sense = &my_sense; |
| 2083 |
|
2083 |
|
|
|
2084 |
if (!drive->driver_data) { |
| 2085 |
printk (KERN_ERR "%s: no driver_data\n", drive->name); |
| 2086 |
return 0; |
| 2087 |
} |
| 2088 |
|
| 2084 |
/* If the drive cannot lock the door, just pretend. */ |
2089 |
/* If the drive cannot lock the door, just pretend. */ |
| 2085 |
if (CDROM_CONFIG_FLAGS(drive)->no_doorlock) { |
2090 |
if (CDROM_CONFIG_FLAGS(drive)->no_doorlock) { |
| 2086 |
stat = 0; |
2091 |
stat = 0; |
|
|
2092 |
} else if (lockflag == CDROM_STATE_FLAGS(drive)->door_locked) { |
| 2093 |
/* Lock status has not changed */ |
| 2094 |
stat = 0; |
| 2087 |
} else { |
2095 |
} else { |
| 2088 |
cdrom_prepare_request(drive, &req); |
2096 |
cdrom_prepare_request(drive, &req); |
| 2089 |
req.sense = sense; |
2097 |
req.sense = sense; |
|
Lines 3270-3275
static int ide_cd_remove(struct device *
Link Here
|
| 3270 |
ide_drive_t *drive = to_ide_device(dev); |
3278 |
ide_drive_t *drive = to_ide_device(dev); |
| 3271 |
struct cdrom_info *info = drive->driver_data; |
3279 |
struct cdrom_info *info = drive->driver_data; |
| 3272 |
|
3280 |
|
|
|
3281 |
if (unregister_cdrom(&info->devinfo)) |
| 3282 |
printk(KERN_ERR "%s: %s failed to unregister device from the cdrom " |
| 3283 |
"driver.\n", __FUNCTION__, drive->name); |
| 3284 |
|
| 3273 |
ide_unregister_subdriver(drive, info->driver); |
3285 |
ide_unregister_subdriver(drive, info->driver); |
| 3274 |
|
3286 |
|
| 3275 |
del_gendisk(info->disk); |
3287 |
del_gendisk(info->disk); |
|
Lines 3286-3303
static void ide_cd_release(struct kref *
Link Here
|
| 3286 |
ide_drive_t *drive = info->drive; |
3298 |
ide_drive_t *drive = info->drive; |
| 3287 |
struct gendisk *g = info->disk; |
3299 |
struct gendisk *g = info->disk; |
| 3288 |
|
3300 |
|
|
|
3301 |
printk(KERN_ERR "%s: release IDE CD-ROM\n", drive->name); |
| 3302 |
|
| 3289 |
if (info->buffer != NULL) |
3303 |
if (info->buffer != NULL) |
| 3290 |
kfree(info->buffer); |
3304 |
kfree(info->buffer); |
| 3291 |
if (info->toc != NULL) |
3305 |
if (info->toc != NULL) |
| 3292 |
kfree(info->toc); |
3306 |
kfree(info->toc); |
| 3293 |
if (info->changer_info != NULL) |
3307 |
if (info->changer_info != NULL) |
| 3294 |
kfree(info->changer_info); |
3308 |
kfree(info->changer_info); |
| 3295 |
if (devinfo->handle == drive && unregister_cdrom(devinfo)) |
3309 |
|
| 3296 |
printk(KERN_ERR "%s: %s failed to unregister device from the cdrom " |
|
|
| 3297 |
"driver.\n", __FUNCTION__, drive->name); |
| 3298 |
drive->dsc_overlap = 0; |
3310 |
drive->dsc_overlap = 0; |
| 3299 |
drive->driver_data = NULL; |
3311 |
drive->driver_data = NULL; |
| 3300 |
blk_queue_prep_rq(drive->queue, NULL); |
|
|
| 3301 |
g->private_data = NULL; |
3312 |
g->private_data = NULL; |
| 3302 |
put_disk(g); |
3313 |
put_disk(g); |
| 3303 |
kfree(info); |
3314 |
kfree(info); |
|
Lines 3374-3379
static int idecd_release(struct inode *
Link Here
|
| 3374 |
struct cdrom_info *info = ide_cd_g(disk); |
3385 |
struct cdrom_info *info = ide_cd_g(disk); |
| 3375 |
ide_drive_t *drive = info->drive; |
3386 |
ide_drive_t *drive = info->drive; |
| 3376 |
|
3387 |
|
|
|
3388 |
if (!drive->driver_data) { |
| 3389 |
printk(KERN_ERR "%s: no driver_data, correcting\n", drive->name); |
| 3390 |
drive->driver_data = info; |
| 3391 |
} |
| 3377 |
cdrom_release (&info->devinfo, file); |
3392 |
cdrom_release (&info->devinfo, file); |
| 3378 |
drive->usage--; |
3393 |
drive->usage--; |
| 3379 |
|
3394 |
|