From 5b45fef2846a7daa87d6e683403db47c6d29d93f Mon Sep 17 00:00:00 2001 From: Kai Makisara Date: Fri, 26 Jan 2007 00:38:39 +0200 Subject: [PATCH] --- yaml --- r: 46064 b: refs/heads/master c: 91614c054c9ffc26b47a5cb3135113aa0f6e6ff0 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/scsi/st.c | 19 +++++++++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index 7d94974f07d3..09dff56c1c68 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 477ffb9d8732f30e7ab2d20f6ed0c22bad37a4a5 +refs/heads/master: 91614c054c9ffc26b47a5cb3135113aa0f6e6ff0 diff --git a/trunk/drivers/scsi/st.c b/trunk/drivers/scsi/st.c index e016e0906e1a..488ec7948a57 100644 --- a/trunk/drivers/scsi/st.c +++ b/trunk/drivers/scsi/st.c @@ -2816,15 +2816,18 @@ static int st_int_ioctl(struct scsi_tape *STp, unsigned int cmd_in, unsigned lon if (cmd_in == MTWEOF && cmdstatp->have_sense && - (cmdstatp->flags & SENSE_EOM) && - (cmdstatp->sense_hdr.sense_key == NO_SENSE || - cmdstatp->sense_hdr.sense_key == RECOVERED_ERROR) && - undone == 0) { - ioctl_result = 0; /* EOF written successfully at EOM */ - if (fileno >= 0) - fileno++; + (cmdstatp->flags & SENSE_EOM)) { + if (cmdstatp->sense_hdr.sense_key == NO_SENSE || + cmdstatp->sense_hdr.sense_key == RECOVERED_ERROR) { + ioctl_result = 0; /* EOF(s) written successfully at EOM */ + STps->eof = ST_NOEOF; + } else { /* Writing EOF(s) failed */ + if (fileno >= 0) + fileno -= undone; + if (undone < arg) + STps->eof = ST_NOEOF; + } STps->drv_file = fileno; - STps->eof = ST_NOEOF; } else if ((cmd_in == MTFSF) || (cmd_in == MTFSFM)) { if (fileno >= 0) STps->drv_file = fileno - undone;