diff options
Diffstat (limited to 'drivers/scsi/scsi_error.c')
-rw-r--r-- | drivers/scsi/scsi_error.c | 47 |
1 files changed, 9 insertions, 38 deletions
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c index c0ae9e965f6f..a2333d2c7af0 100644 --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c | |||
@@ -1320,23 +1320,6 @@ int scsi_decide_disposition(struct scsi_cmnd *scmd) | |||
1320 | } | 1320 | } |
1321 | 1321 | ||
1322 | /** | 1322 | /** |
1323 | * scsi_eh_lock_done - done function for eh door lock request | ||
1324 | * @scmd: SCSI command block for the door lock request | ||
1325 | * | ||
1326 | * Notes: | ||
1327 | * We completed the asynchronous door lock request, and it has either | ||
1328 | * locked the door or failed. We must free the command structures | ||
1329 | * associated with this request. | ||
1330 | **/ | ||
1331 | static void scsi_eh_lock_done(struct scsi_cmnd *scmd) | ||
1332 | { | ||
1333 | struct scsi_request *sreq = scmd->sc_request; | ||
1334 | |||
1335 | scsi_release_request(sreq); | ||
1336 | } | ||
1337 | |||
1338 | |||
1339 | /** | ||
1340 | * scsi_eh_lock_door - Prevent medium removal for the specified device | 1323 | * scsi_eh_lock_door - Prevent medium removal for the specified device |
1341 | * @sdev: SCSI device to prevent medium removal | 1324 | * @sdev: SCSI device to prevent medium removal |
1342 | * | 1325 | * |
@@ -1358,29 +1341,17 @@ static void scsi_eh_lock_done(struct scsi_cmnd *scmd) | |||
1358 | **/ | 1341 | **/ |
1359 | static void scsi_eh_lock_door(struct scsi_device *sdev) | 1342 | static void scsi_eh_lock_door(struct scsi_device *sdev) |
1360 | { | 1343 | { |
1361 | struct scsi_request *sreq = scsi_allocate_request(sdev, GFP_KERNEL); | 1344 | unsigned char cmnd[MAX_COMMAND_SIZE]; |
1362 | 1345 | ||
1363 | if (unlikely(!sreq)) { | 1346 | cmnd[0] = ALLOW_MEDIUM_REMOVAL; |
1364 | printk(KERN_ERR "%s: request allocate failed," | 1347 | cmnd[1] = 0; |
1365 | "prevent media removal cmd not sent\n", __FUNCTION__); | 1348 | cmnd[2] = 0; |
1366 | return; | 1349 | cmnd[3] = 0; |
1367 | } | 1350 | cmnd[4] = SCSI_REMOVAL_PREVENT; |
1351 | cmnd[5] = 0; | ||
1368 | 1352 | ||
1369 | sreq->sr_cmnd[0] = ALLOW_MEDIUM_REMOVAL; | 1353 | scsi_execute_async(sdev, cmnd, DMA_NONE, NULL, 0, 0, 10 * HZ, |
1370 | sreq->sr_cmnd[1] = 0; | 1354 | 5, NULL, NULL, GFP_KERNEL); |
1371 | sreq->sr_cmnd[2] = 0; | ||
1372 | sreq->sr_cmnd[3] = 0; | ||
1373 | sreq->sr_cmnd[4] = SCSI_REMOVAL_PREVENT; | ||
1374 | sreq->sr_cmnd[5] = 0; | ||
1375 | sreq->sr_data_direction = DMA_NONE; | ||
1376 | sreq->sr_bufflen = 0; | ||
1377 | sreq->sr_buffer = NULL; | ||
1378 | sreq->sr_allowed = 5; | ||
1379 | sreq->sr_done = scsi_eh_lock_done; | ||
1380 | sreq->sr_timeout_per_command = 10 * HZ; | ||
1381 | sreq->sr_cmd_len = COMMAND_SIZE(sreq->sr_cmnd[0]); | ||
1382 | |||
1383 | scsi_insert_special_req(sreq, 1); | ||
1384 | } | 1355 | } |
1385 | 1356 | ||
1386 | 1357 | ||