scsi_unprep_request(req); 
int scsi_queue_insert(struct scsi_cmnd *cmd, int reason){	struct Scsi_Host *host = cmd->device->host;	struct scsi_device *device = cmd->device;	struct request_queue *q = device->request_queue;	struct request *req = cmd->request;	unsigned long flags;	SCSI_LOG_MLQUEUE(1,		 printk("Inserting command %p into mlqueue\n", cmd));	/*	 * Set the appropriate busy bit for the device/host.	 *	 * If the host/device isn't busy, assume that something actually	 * completed, and that we should be able to queue a command now.	 *	 * Note that the prior mid-layer assumption that any host could	 * always queue at least one command is now broken.  The mid-layer	 * will implement a user specifiable stall (see	 * scsi_host.max_host_blocked and scsi_device.max_device_blocked)	 * if a command is requeued with no other commands outstanding	 * either for the device or for the host.	 */	if (reason == SCSI_MLQUEUE_HOST_BUSY)		host->host_blocked = host->max_host_blocked;	else if (reason == SCSI_MLQUEUE_DEVICE_BUSY)		device->device_blocked = device->max_device_blocked;	/*	 * Decrement the counters, since these commands are no longer	 * active on the host/device.	 */	scsi_device_unbusy(device);	/*	 * Requeue this command.  It will go before all other commands	 * that are already in the queue.	 *	 * NOTE: there is magic here about the way the queue is plugged if	 * we have no outstanding commands.	 * 	 * Although we *don't* plug the queue, we call the request	 * function.  The SCSI request function detects the blocked condition	 * and plugs the queue appropriately.         */	scsi_unprep_request(req);	spin_lock_irqsave(q->queue_lock, flags);	blk_requeue_request(q, req);	spin_unlock_irqrestore(q->queue_lock, flags);	scsi_run_queue(q);	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/59897dad98d63ac15e1e36fcc3a107c892b1826c/scsi_lib.c/buggy/drivers/scsi/scsi_lib.c