From 2aeeebd29e41f12f56fdc7e899428775e416f088 Mon Sep 17 00:00:00 2001 From: FUJITA Tomonori Date: Fri, 5 Dec 2008 15:25:21 +0900 Subject: [PATCH] --- yaml --- r: 124657 b: refs/heads/master c: ffb4349499c00cd8ec90cb896599789cc00a7415 h: refs/heads/master i: 124655: b4c6b883f26a8e1ffaea74b1297d0235c5a7099b v: v3 --- [refs] | 2 +- trunk/drivers/scsi/st.c | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 0e533a27a766..1aa4ef0bf974 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4deba245d0d6b2dc97cc4277c37f8519655d3afe +refs/heads/master: ffb4349499c00cd8ec90cb896599789cc00a7415 diff --git a/trunk/drivers/scsi/st.c b/trunk/drivers/scsi/st.c index 203f22e816c0..11341b717bba 100644 --- a/trunk/drivers/scsi/st.c +++ b/trunk/drivers/scsi/st.c @@ -533,6 +533,28 @@ st_do_scsi(struct st_request * SRpnt, struct scsi_tape * STp, unsigned char *cmd return SRpnt; } +static int st_scsi_kern_execute(struct st_request *streq, + const unsigned char *cmd, int data_direction, + void *buffer, unsigned bufflen, int timeout, + int retries) +{ + struct scsi_tape *stp = streq->stp; + int ret, resid; + + stp->buffer->cmdstat.have_sense = 0; + memcpy(streq->cmd, cmd, sizeof(streq->cmd)); + + ret = scsi_execute(stp->device, cmd, data_direction, buffer, bufflen, + streq->sense, timeout, retries, 0, &resid); + if (driver_byte(ret) & DRIVER_ERROR) + return -EBUSY; + + stp->buffer->cmdstat.midlevel_result = streq->result = ret; + stp->buffer->cmdstat.residual = resid; + stp->buffer->syscall_result = st_chk_result(stp, streq); + + return 0; +} /* Handle the write-behind checking (waits for completion). Returns -ENOSPC if write has been correct but EOM early warning reached, -EIO if write ended in