aac_io_done(cmd); 
cmd->scsi_done(cmd); 
static void synchronize_callback(void *context, struct fib *fibptr){	struct aac_synchronize_reply *synchronizereply;	struct scsi_cmnd *cmd;	cmd = context;	dprintk((KERN_DEBUG "synchronize_callback[cpu %d]: t = %ld.\n", 				smp_processor_id(), jiffies));	BUG_ON(fibptr == NULL);	synchronizereply = fib_data(fibptr);	if (le32_to_cpu(synchronizereply->status) == CT_OK)		cmd->result = DID_OK << 16 | 			COMMAND_COMPLETE << 8 | SAM_STAT_GOOD;	else {		struct scsi_device *sdev = cmd->device;		struct aac_dev *dev = (struct aac_dev *)sdev->host->hostdata;		u32 cid = ID_LUN_TO_CONTAINER(sdev->id, sdev->lun);		printk(KERN_WARNING 		     "synchronize_callback: synchronize failed, status = %d\n",		     le32_to_cpu(synchronizereply->status));		cmd->result = DID_OK << 16 | 			COMMAND_COMPLETE << 8 | SAM_STAT_CHECK_CONDITION;		set_sense((u8 *)&dev->fsa_dev[cid].sense_data,				    HARDWARE_ERROR,				    SENCODE_INTERNAL_TARGET_FAILURE,				    ASENCODE_INTERNAL_TARGET_FAILURE, 0, 0,				    0, 0);		memcpy(cmd->sense_buffer, &dev->fsa_dev[cid].sense_data,		  min(sizeof(dev->fsa_dev[cid].sense_data), 			  sizeof(cmd->sense_buffer)));	}	fib_complete(fibptr);	fib_free(fibptr);	aac_io_done(cmd);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/8e0c5ebde82b08f6d996e11983890fc4cc085fab/aachba.c/buggy/drivers/scsi/aacraid/aachba.c