|
@@ -861,17 +861,16 @@ static int set_mode_densblk(struct scsi_tape * STp, struct st_modedef * STm)
|
|
|
/* Lock or unlock the drive door. Don't use when st_request allocated. */
|
|
|
static int do_door_lock(struct scsi_tape * STp, int do_lock)
|
|
|
{
|
|
|
- int retval, cmd;
|
|
|
+ int retval;
|
|
|
|
|
|
- cmd = do_lock ? SCSI_IOCTL_DOORLOCK : SCSI_IOCTL_DOORUNLOCK;
|
|
|
DEBC_printk(STp, "%socking drive door.\n", do_lock ? "L" : "Unl");
|
|
|
- retval = scsi_ioctl(STp->device, cmd, NULL);
|
|
|
- if (!retval) {
|
|
|
+
|
|
|
+ retval = scsi_set_medium_removal(STp->device,
|
|
|
+ do_lock ? SCSI_REMOVAL_PREVENT : SCSI_REMOVAL_ALLOW);
|
|
|
+ if (!retval)
|
|
|
STp->door_locked = do_lock ? ST_LOCKED_EXPLICIT : ST_UNLOCKED;
|
|
|
- }
|
|
|
- else {
|
|
|
+ else
|
|
|
STp->door_locked = ST_LOCK_FAILS;
|
|
|
- }
|
|
|
return retval;
|
|
|
}
|
|
|
|