[SCSI] fix up scsi_eh_lock_door()
The Documentation is incorrect (we removed some functions referred to), and none of the bug warnings now apply. Additionally remove the spurious check on the return from blk_get_request() which can't fail if __GFP_WAIT is passed in. Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
This commit is contained in:
Родитель
477e608c03
Коммит
91bc31fb3b
|
@ -1451,28 +1451,21 @@ static void eh_lock_door_done(struct request *req, int uptodate)
|
|||
* @sdev: SCSI device to prevent medium removal
|
||||
*
|
||||
* Locking:
|
||||
* We must be called from process context; scsi_allocate_request()
|
||||
* may sleep.
|
||||
* We must be called from process context.
|
||||
*
|
||||
* Notes:
|
||||
* We queue up an asynchronous "ALLOW MEDIUM REMOVAL" request on the
|
||||
* head of the devices request queue, and continue.
|
||||
*
|
||||
* Bugs:
|
||||
* scsi_allocate_request() may sleep waiting for existing requests to
|
||||
* be processed. However, since we haven't kicked off any request
|
||||
* processing for this host, this may deadlock.
|
||||
*
|
||||
* If scsi_allocate_request() fails for what ever reason, we
|
||||
* completely forget to lock the door.
|
||||
*/
|
||||
static void scsi_eh_lock_door(struct scsi_device *sdev)
|
||||
{
|
||||
struct request *req;
|
||||
|
||||
/*
|
||||
* blk_get_request with GFP_KERNEL (__GFP_WAIT) sleeps until a
|
||||
* request becomes available
|
||||
*/
|
||||
req = blk_get_request(sdev->request_queue, READ, GFP_KERNEL);
|
||||
if (!req)
|
||||
return;
|
||||
|
||||
req->cmd[0] = ALLOW_MEDIUM_REMOVAL;
|
||||
req->cmd[1] = 0;
|
||||
|
|
Загрузка…
Ссылка в новой задаче