Date: Mon, 14 Dec 1998 09:13:06 -0800 (PST) From: Matthew Jacob <mjacob@feral.com> To: freebsd-current@FreeBSD.ORG Subject: Tape Driver Changes Proposed: Tape Early Warning Behaviour Message-ID: <Pine.LNX.4.04.9812140901020.2563-100000@feral-gw>
next in thread | raw e-mail | index | archive | help
(This may not be the correct forum for this discussion- but I wanted to
include *users* as well as *developers* of FreeBSD)
I'll throw this out for opinions- I'd like to make change (close to what I
did for NetBSD) to the default behaviour for how early warnings on writes
are handled.
The section below is from the man pages in NetBSD- I'd like to actually
make EARLY WARNING default behaviour. Opinions, please... I have the hood
open on the tape driver busily fixing(breaking) things so I'd like to get
a sense of what people would like before marching much further.
This is one of several changes under consideration.
The others for immediate implementation are:
+ forcing variable mode for tape devices unless quirked otherwise
(I have a test prototype of this already working)
+ correct implementation of 2 FM@EOD (only needed for tapes that
do *not* have a space to end of recorded media function
(basically only 1/2" Reel drives)
+ Hardware/SCSI/Logical Block reporting && positioning
+ SCSI error reporting via the MTIOCSTATUS command, possibly an
auxillary MTIO command to get full (all of) previous SCSI Sense
Data.
Down the road a little bit would be:
++ untangling the minor device as behaviour selector so that
ioctl's would not have to be used to select compression.
++ Persistent vs. per-mount device properties and reservation.
++ Proper handling of deferred errors
Anyway- here's the Early warning man page clip- please let me know what
y'all think:
EOM HANDLING
Attempts to write past EOM and how EOM is reported are handled slightly
differently based upon whether EARLY WARNING recognition is enabled in
the driver.
If EARLY WARNING recognitions is not enabled, then detection of EOM (as
reported in SCSI Sense Data with an EOM indicator) causes the write oper-
ation to be flagged with I/O error (EIO). This has the effect for the
user application of not knowing actually how many bytes were written
(since the return of the read(2) system call is set to -1).
If EARLY WARNING recognition is enabled, then detection of EOM has no im-
mediate effect except that the driver notes that EOM has been detected.
If the write completing didn't transfer all data that was requested, then
the residual count is returned to the user application. In any event, the
next attempt to write (if that is the next action the user application
takes) is immediately completed with no data transferred, and a residual
returned to the user application indicating that no data was transferred.
This is the traditional UNIX EOF indication. The state that EOM had been
seen is then cleared.
In either mode of operation, the driver does not prohibit the user appli-
cation from writing more data, if chooses to do so. This will continue up
until the physical end of media, which is usually signalled internally to
the driver as a CHECK CONDITION with the Sense Key set to VOLUME OVER-
FLOW. When this or any otherwise unhandled error occurs, an error return
of EIO will be transmitted to the user application. This does indeed
mean that if EARLY WARNING is enables and the device continues to set EOM
indicators prior to hitting physical end of media, that an indeterminate
number of 'short write returns' as described in the previous paragraph
will occur. However, the expected user application behaviour (in common
with other systems) is to close the tape and rewind and request another
tape upon the receipt of the first EOM indicator.
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.LNX.4.04.9812140901020.2563-100000>
