if (cmd->sc_data_direction == SCSI_DATA_READ || cmd->sc_data_direction == SCSI_DATA_WRITE) { 
if (cmd->sc_data_direction == DMA_FROM_DEVICE || cmd->sc_data_direction == DMA_TO_DEVICE) { 
static void ata_scsi_translate(struct ata_port *ap, struct ata_device *dev,			      struct scsi_cmnd *cmd,			      void (*done)(struct scsi_cmnd *),			      ata_xlat_func_t xlat_func){	struct ata_queued_cmd *qc;	u8 *scsicmd = cmd->cmnd;	VPRINTK("ENTER\n");	qc = ata_scsi_qc_new(ap, dev, cmd, done);	if (!qc)		return;	/* data is present; dma-map it */	if (cmd->sc_data_direction == SCSI_DATA_READ ||	    cmd->sc_data_direction == SCSI_DATA_WRITE) {		if (unlikely(cmd->request_bufflen < 1)) {			printk(KERN_WARNING "ata%u(%u): WARNING: zero len r/w req\n",			       ap->id, dev->devno);			goto err_out;		}		if (cmd->use_sg)			ata_sg_init(qc, cmd->request_buffer, cmd->use_sg);		else			ata_sg_init_one(qc, cmd->request_buffer,					cmd->request_bufflen);		qc->dma_dir = cmd->sc_data_direction;	}	qc->complete_fn = ata_scsi_qc_complete;	if (xlat_func(qc, scsicmd))		goto err_out;	/* select device, send command to hardware */	if (ata_qc_issue(qc))		goto err_out;	VPRINTK("EXIT\n");	return;err_out:	ata_qc_free(qc);	ata_bad_cdb(cmd, done);	DPRINTK("EXIT - badcmd\n");}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/be7db055dd7261522557046370f49160728e3847/libata-scsi.c/buggy/drivers/scsi/libata-scsi.c