Skip to contentSkip to conversation

st: support ANSI end-of-volume processing

PATCH In review John W. Linville 2 participants 2 messages Jun 27, 2005

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 st: support ANSI end-of-volume processing

The ANSI labelled tape standard specifies that the EOD on tape must be preceeded by a trailer label. If during writing your application hits LEOT (Logical End Of Tape), it must be able to write the trailer label. However with the default tape driver (st), you cannot write anything after the LEOT. So the patch clears the error condition so that the application can write the trailer label (there is some space available on tape media between LEOT and PEOT=Physical End Of Tape).

---
Original patch by Fabien Collin. Description above by Jean-Philippe Baud. Patch monkeying by me... Honestly, I don't know a lot about this patch. But, I am told it "works"... If you have questions regarding this, send them to me and I'll get an answer for you.

 drivers/scsi/st.c |    1 +
 1 files changed, 1 insertion(+)
drivers/scsi/st.c +1 -0
@@ -3440,6 +3440,7 @@ static int st_ioctl(struct inode *inode,
 		}
 
 		STp->recover_reg = 0;		/* Clear after read */
+		STps->eof = ST_NOEOF;
 		retval = 0;
 		goto out;
 	}			/* End of MTIOCGET */
Signature · 2 lines
John W. Linville
[email protected]
#1 lore raw
Quoted 5 lines · John W. Linville

The ANSI labelled tape standard specifies that the EOD on tape must be preceeded by a trailer label. If during writing your application hits LEOT (Logical End Of Tape), it must be able to write the trailer label. However with the default tape driver (st), you cannot write anything after the LEOT.

This is not true. Quoting from linux/Documentation/scsi/st.txt:

"When the end of medium early warning is encountered, the current write is finished and the number of bytes is returned. The next write returns -1 and errno is set to ENOSPC. To enable writing a trailer, the next write is allowed to proceed and, if successful, the number of bytes is returned. After this, -1 and the number of bytes are alternately returned until the physical end of medium (or some other error) is encountered."

(Yes, this should be added to the man page ;-)

Quoted 4 lines

So the patch clears the error condition so that the application can write the trailer label (there is some space available on tape media between LEOT and PEOT=Physical End Of Tape).

If this new way is what users want and it does not break existing applications, it should be added. Especially if it is the way some other common system behaves. However, when the semantics are changed, the documentation in the kernel sources should also be updated.

Signature · 1 line
Kai