if (SRpnt->sr_request->rq_status != RQ_SCSI_DONE) SRpnt->sr_result |= (DRIVER_ERROR << 24); 
st_do_scsi(struct scsi_request * SRpnt, struct scsi_tape * STp, unsigned char *cmd,	   int bytes, int direction, int timeout, int retries, int do_wait){	unsigned char *bp;	if (SRpnt == NULL) {		SRpnt = scsi_allocate_request(STp->device, GFP_ATOMIC);		if (SRpnt == NULL) {			DEBC( printk(KERN_ERR "%s: Can't get SCSI request.\n",				     tape_name(STp)); );			if (signal_pending(current))				(STp->buffer)->syscall_result = (-EINTR);			else				(STp->buffer)->syscall_result = (-EBUSY);			return NULL;		}	}	init_completion(&STp->wait);	SRpnt->sr_use_sg = STp->buffer->do_dio || (bytes > (STp->buffer)->frp[0].length);	if (SRpnt->sr_use_sg) {		if (!STp->buffer->do_dio)			buf_to_sg(STp->buffer, bytes);		SRpnt->sr_use_sg = (STp->buffer)->sg_segs;		bp = (char *) &((STp->buffer)->sg[0]);	} else		bp = (STp->buffer)->b_data;	SRpnt->sr_data_direction = direction;	SRpnt->sr_cmd_len = 0;	SRpnt->sr_request->waiting = &(STp->wait);	SRpnt->sr_request->rq_status = RQ_SCSI_BUSY;	SRpnt->sr_request->rq_disk = STp->disk;	STp->buffer->cmdstat.have_sense = 0;	scsi_do_req(SRpnt, (void *) cmd, bp, bytes,		    st_sleep_done, timeout, retries);	if (do_wait) {		wait_for_completion(SRpnt->sr_request->waiting);		SRpnt->sr_request->waiting = NULL;		(STp->buffer)->syscall_result = st_chk_result(STp, SRpnt);	}	return SRpnt;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/f03a567054fea4f9d43c50ec91338266c0bd588d/st.c/clean/drivers/scsi/st.c