ahc_cmd_set_transaction_status(cmd, CAM_REQUEUE_REQ); ahc_linux_queue_cmd_complete(ahc, cmd); ahc_schedule_completeq(ahc); ahc_midlayer_entrypoint_unlock(ahc, &flags); return (0); } 
ahc_linux_queue(Scsi_Cmnd * cmd, void (*scsi_done) (Scsi_Cmnd *)){	struct	 ahc_softc *ahc;	struct	 ahc_linux_device *dev;	u_long	 flags;	ahc = *(struct ahc_softc **)cmd->device->host->hostdata;	/*	 * Save the callback on completion function.	 */	cmd->scsi_done = scsi_done;	ahc_midlayer_entrypoint_lock(ahc, &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 (ahc->platform_data->qfrozen != 0) {		ahc_cmd_set_transaction_status(cmd, CAM_REQUEUE_REQ);		ahc_linux_queue_cmd_complete(ahc, cmd);		ahc_schedule_completeq(ahc);		ahc_midlayer_entrypoint_unlock(ahc, &flags);		return (0);	}	dev = ahc_linux_get_device(ahc, cmd->device->channel, cmd->device->id,				   cmd->device->lun, /*alloc*/TRUE);	if (dev == NULL) {		ahc_cmd_set_transaction_status(cmd, CAM_RESRC_UNAVAIL);		ahc_linux_queue_cmd_complete(ahc, cmd);		ahc_schedule_completeq(ahc);		ahc_midlayer_entrypoint_unlock(ahc, &flags);		printf("%s: aic7xxx_linux_queue - Unable to allocate device!\n",		       ahc_name(ahc));		return (0);	}	cmd->result = CAM_REQ_INPROG << 16;	TAILQ_INSERT_TAIL(&dev->busyq, (struct ahc_cmd *)cmd, acmd_links.tqe);	if ((dev->flags & AHC_DEV_ON_RUN_LIST) == 0) {		TAILQ_INSERT_TAIL(&ahc->platform_data->device_runq, dev, links);		dev->flags |= AHC_DEV_ON_RUN_LIST;		ahc_linux_run_device_queues(ahc);	}	ahc_midlayer_entrypoint_unlock(ahc, &flags);	return (0);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/e4e360c325c90f7830baaa2a27cd7a1f2bdeb6b0/aic7xxx_osm.c/clean/drivers/scsi/aic7xxx/aic7xxx_osm.c