print_command(SCpnt->cmnd); 
__scsi_print_command(SCpnt->cmnd); 
fas216_std_done(FAS216_Info *info, Scsi_Cmnd *SCpnt, unsigned int result){	info->stats.fins += 1;	SCpnt->result = result << 16 | info->scsi.SCp.Message << 8 |			info->scsi.SCp.Status;	fas216_log_command(info, LOG_CONNECT, SCpnt,		"command complete, result=0x%08x", SCpnt->result);	/*	 * If the driver detected an error, we're all done.	 */	if (host_byte(SCpnt->result) != DID_OK ||	    msg_byte(SCpnt->result) != COMMAND_COMPLETE)		goto done;	/*	 * If the command returned CHECK_CONDITION or COMMAND_TERMINATED	 * status, request the sense information.	 */	if (status_byte(SCpnt->result) == CHECK_CONDITION ||	    status_byte(SCpnt->result) == COMMAND_TERMINATED)		goto request_sense;	/*	 * If the command did not complete with GOOD status,	 * we are all done here.	 */	if (status_byte(SCpnt->result) != GOOD)		goto done;	/*	 * We have successfully completed a command.  Make sure that	 * we do not have any buffers left to transfer.  The world	 * is not perfect, and we seem to occasionally hit this.	 * It can be indicative of a buggy driver, target or the upper	 * levels of the SCSI code.	 */	if (info->scsi.SCp.ptr) {		switch (SCpnt->cmnd[0]) {		case INQUIRY:		case START_STOP:		case MODE_SENSE:			break;		default:			printk(KERN_ERR "scsi%d.%c: incomplete data transfer "				"detected: res=%08X ptr=%p len=%X CDB: ",				info->host->host_no, '0' + SCpnt->device->id,				SCpnt->result, info->scsi.SCp.ptr,				info->scsi.SCp.this_residual);			print_command(SCpnt->cmnd);			SCpnt->result &= ~(255 << 16);			SCpnt->result |= DID_BAD_TARGET << 16;			goto request_sense;		}	}done:	if (SCpnt->scsi_done) {		SCpnt->scsi_done(SCpnt);		return;	}	panic("scsi%d.H: null scsi_done function in fas216_done",		info->host->host_no);request_sense:	if (SCpnt->cmnd[0] == REQUEST_SENSE)		goto done;	fas216_log_target(info, LOG_CONNECT, SCpnt->device->id,			  "requesting sense");	memset(SCpnt->cmnd, 0, sizeof (SCpnt->cmnd));	SCpnt->cmnd[0] = REQUEST_SENSE;	SCpnt->cmnd[1] = SCpnt->device->lun << 5;	SCpnt->cmnd[4] = sizeof(SCpnt->sense_buffer);	SCpnt->cmd_len = COMMAND_SIZE(SCpnt->cmnd[0]);	SCpnt->SCp.buffer = NULL;	SCpnt->SCp.buffers_residual = 0;	SCpnt->SCp.ptr = (char *)SCpnt->sense_buffer;	SCpnt->SCp.this_residual = sizeof(SCpnt->sense_buffer);	SCpnt->SCp.Message = 0;	SCpnt->SCp.Status = 0;	SCpnt->request_bufflen = sizeof(SCpnt->sense_buffer);	SCpnt->sc_data_direction = SCSI_DATA_READ;	SCpnt->use_sg = 0;	SCpnt->tag = 0;	SCpnt->host_scribble = (void *)fas216_rq_sns_done;	/*	 * Place this command into the high priority "request	 * sense" slot.  This will be the very next command	 * executed, unless a target connects to us.	 */	if (info->reqSCpnt)		printk(KERN_WARNING "scsi%d.%c: loosing request command\n",			info->host->host_no, '0' + SCpnt->device->id);	info->reqSCpnt = SCpnt;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/1409277c4aad2e87ad27b2b8a6901ce78eaf8081/fas216.c/buggy/drivers/scsi/arm/fas216.c