Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[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>

+5 -12
+5 -12
drivers/scsi/scsi_error.c
··· 1451 1451 * @sdev: SCSI device to prevent medium removal 1452 1452 * 1453 1453 * Locking: 1454 - * We must be called from process context; scsi_allocate_request() 1455 - * may sleep. 1454 + * We must be called from process context. 1456 1455 * 1457 1456 * Notes: 1458 1457 * We queue up an asynchronous "ALLOW MEDIUM REMOVAL" request on the 1459 1458 * head of the devices request queue, and continue. 1460 - * 1461 - * Bugs: 1462 - * scsi_allocate_request() may sleep waiting for existing requests to 1463 - * be processed. However, since we haven't kicked off any request 1464 - * processing for this host, this may deadlock. 1465 - * 1466 - * If scsi_allocate_request() fails for what ever reason, we 1467 - * completely forget to lock the door. 1468 1459 */ 1469 1460 static void scsi_eh_lock_door(struct scsi_device *sdev) 1470 1461 { 1471 1462 struct request *req; 1472 1463 1464 + /* 1465 + * blk_get_request with GFP_KERNEL (__GFP_WAIT) sleeps until a 1466 + * request becomes available 1467 + */ 1473 1468 req = blk_get_request(sdev->request_queue, READ, GFP_KERNEL); 1474 - if (!req) 1475 - return; 1476 1469 1477 1470 req->cmd[0] = ALLOW_MEDIUM_REMOVAL; 1478 1471 req->cmd[1] = 0;