ahd_cmd_set_transaction_status(cmd, CAM_REQUEUE_REQ); ahd_linux_queue_cmd_complete(ahd, cmd); ahd_schedule_completeq(ahd); ahd_midlayer_entrypoint_unlock(ahd, &flags); return (0); 
return SCSI_MLQUEUE_HOST_BUSY; 
ahd_linux_queue(Scsi_Cmnd * cmd, void (*scsi_done) (Scsi_Cmnd *)){	struct	 ahd_softc *ahd;	struct	 ahd_linux_device *dev;	u_long	 flags;	ahd = *(struct ahd_softc **)cmd->device->host->hostdata;	/*	 * Save the callback on completion function.	 */	cmd->scsi_done = scsi_done;	ahd_midlayer_entrypoint_lock(ahd, &flags);	/*	 * Close the race of a command that was in the process of	 * being queued to us just as our simq was frozen.  Let	 * DV commands through so long as we are only frozen to	 * perform DV.	 */	if (ahd->platform_data->qfrozen != 0	 && AHD_DV_CMD(cmd) == 0) {		ahd_cmd_set_transaction_status(cmd, CAM_REQUEUE_REQ);		ahd_linux_queue_cmd_complete(ahd, cmd);		ahd_schedule_completeq(ahd);		ahd_midlayer_entrypoint_unlock(ahd, &flags);		return (0);	}	dev = ahd_linux_get_device(ahd, cmd->device->channel,				   cmd->device->id, cmd->device->lun,				   /*alloc*/TRUE);	if (dev == NULL) {		ahd_cmd_set_transaction_status(cmd, CAM_RESRC_UNAVAIL);		ahd_linux_queue_cmd_complete(ahd, cmd);		ahd_schedule_completeq(ahd);		ahd_midlayer_entrypoint_unlock(ahd, &flags);		printf("%s: aic79xx_linux_queue - Unable to allocate device!\n",		       ahd_name(ahd));		return (0);	}	if (cmd->cmd_len > MAX_CDB_LEN)		return (-EINVAL);	cmd->result = CAM_REQ_INPROG << 16;	TAILQ_INSERT_TAIL(&dev->busyq, (struct ahd_cmd *)cmd, acmd_links.tqe);	if ((dev->flags & AHD_DEV_ON_RUN_LIST) == 0) {		TAILQ_INSERT_TAIL(&ahd->platform_data->device_runq, dev, links);		dev->flags |= AHD_DEV_ON_RUN_LIST;		ahd_linux_run_device_queues(ahd);	}	ahd_midlayer_entrypoint_unlock(ahd, &flags);	return (0);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/60a13213840296b1e32d6781653a0eaa83d04382/aic79xx_osm.c/clean/drivers/scsi/aic7xxx/aic79xx_osm.c