\section*{Testing Your Tape Drive With Bacula}
\label{_ChapterStart27}
-\index[general]{Testing Your Tape Drive With Bacula }
+\index[general]{Testing Your Tape Drive With Bacula}
\addcontentsline{toc}{section}{Testing Your Tape Drive With Bacula}
This chapter is concerned with testing and configuring your tape drive to make
\label{summary}
\subsection*{Summary of Steps to Take to Get Your Tape Drive Working}
-\index[general]{Working!Summary of Steps to Take to Get Your Tape Drive }
-\index[general]{Summary of Steps to Take to Get Your Tape Drive Working }
+\index[general]{Working!Summary of Steps to Take to Get Your Tape Drive}
+\index[general]{Summary of Steps to Take to Get Your Tape Drive Working}
\addcontentsline{toc}{subsection}{Summary of Steps to Take to Get Your Tape
Drive Working}
\normalsize
It isn't necessary to run the autochanger part of the test at this time, but
-do not go past this point until the basic test succeeds.
-\item Run the btape {\bf fill} command, preferrably with two volumes. This
+do not go past this point until the basic test succeeds. If you do have
+an autochanger, please be sure to read the
+\ilink{Autochanger chapter}{_ChapterStart18} of this manual.
+
+\item Run the btape {\bf fill} command, preferably with two volumes. This
can take a long time. If you have an autochanger and it is configured, Bacula
- will automatically use it. If you do not have it configured, you can manual
-issue the appopriate {\bf mtx} command, or press the autochanger buttons to
-change the tape when requested to do so.
+ will automatically use it. If you do not have it configured, you can manually
+ issue the appopriate {\bf mtx} command, or press the autochanger buttons to
+ change the tape when requested to do so.
\item FreeBSD users, run the {\bf tapetest} program, and make sure your
system is patched if necessary. See below for more details.
\item Run Bacula, and backup a reasonably small directory, say 60 Megabytes.
completed. In particular, you may want to look at the
\ilink{ Tips for Resolving Problems}{problems1} section below.
+\label{NoTapeInDrive}
+\subsubsection*{Problems When no Tape in Drive}
+\index[general]{Problems When no Tape in Drive}
+\addcontentsline{toc}{subsubsection}{Problems When no Tape in Drive}
+When Bacula was first written the Linux 2.4 kernel permitted opening the
+drive whether or not there was a tape in the drive. Thus the Bacula code is
+based on the concept that if the drive cannot be opened, there is a serious
+problem, and the job is failed.
+
+With version 2.6 of the Linux kernel, if there is no tape in the drive, the
+OS will wait 2 minutes (default) then return a failure, and consequently,
+Bacula version 1.36 and below will fail the job. This is important to keep
+in mind, because if you use and option such as {\bf Offline on Unmount =
+yes}, there will be a point when there is no tape in the drive, and if
+another job starts or if Bacula asks the operator to mount a tape, when
+Bacula attempts to open the drive (about a 20 minute delay), it will fail
+and Bacula will fail the job.
+
+In version 1.38.x, the Bacula code partially gets around this problem -- at
+least in the initial open of the drive. However, functions like Polling
+the drive do not work correctly if there is no tape in the drive.
+Providing you do not use {\bf Offline on Unmount = yes}, you should not
+experience job failures as mentioned above. If you do experience such
+failures, you can also increase the {\bf Maximum Open Wait} time interval,
+which will give you more time to mount the next tape before the job is
+failed.
+
+
+
\subsubsection*{Specifying the Configuration File}
-\index[general]{File!Specifying the Configuration }
-\index[general]{Specifying the Configuration File }
+\index[general]{File!Specifying the Configuration}
+\index[general]{Specifying the Configuration File}
\addcontentsline{toc}{subsubsection}{Specifying the Configuration File}
Starting with version 1.27, each of the tape utility programs including the
(actually, the only part of the configuration file that {\bf btape} needs is
the {\bf Device} resource definitions). This permits {\bf btape} to find the
configuration parameters for your archive device (generally a tape drive).
-Without those parameters, the testing and utility programs do not no how to
+Without those parameters, the testing and utility programs do not know how to
properly read and write your drive. By default, they use {\bf bacula-sd.conf}
in the current directory, but you may specify a different configuration file
using the {\bf -c} option.
\subsubsection*{Specifying a Device Name For a Tape}
-\index[general]{Tape!Specifying a Device Name For a }
-\index[general]{Specifying a Device Name For a Tape }
+\index[general]{Tape!Specifying a Device Name For a}
+\index[general]{Specifying a Device Name For a Tape}
\addcontentsline{toc}{subsubsection}{Specifying a Device Name For a Tape}
{\bf btape} {\bf device-name} where the Volume can be found. In the case of a
specifying Volume names.
\subsubsection*{Specifying a Device Name For a File}
-\index[general]{File!Specifying a Device Name For a }
-\index[general]{Specifying a Device Name For a File }
+\index[general]{File!Specifying a Device Name For a}
+\index[general]{Specifying a Device Name For a File}
\addcontentsline{toc}{subsubsection}{Specifying a Device Name For a File}
If you are attempting to read or write an archive file rather than a tape, the
\subsection*{btape}
\label{btape1}
-\index[general]{Btape }
+\index[general]{Btape}
\addcontentsline{toc}{subsection}{btape}
This program permits a number of elementary tape operations via a tty command
option to specify where.
The physical device name or the Device resource name must be specified on the
-command line, and that this same device name must be present in the Storage
+command line, and this same device name must be present in the Storage
daemon's configuration file read by {\bf btape}
\footnotesize
-b <file> specify bootstrap file
-c <file> set configuration file to file
-d <nn> set debug level to nn
+ -p proceed inspite of I/O errors
-s turn off signals
-v be verbose
-? print this message.
\normalsize
\subsubsection*{Using btape to Verify your Tape Drive}
-\index[general]{Using btape to Verify your Tape Drive }
-\index[general]{Drive!Using btape to Verify your Tape }
+\index[general]{Using btape to Verify your Tape Drive}
+\index[general]{Drive!Using btape to Verify your Tape}
\addcontentsline{toc}{subsubsection}{Using btape to Verify your Tape Drive}
An important reason for this program is to ensure that a Storage daemon
your tape drive.
\subsubsection*{Linux SCSI Tricks}
-\index[general]{Tricks!Linux SCSI }
-\index[general]{Linux SCSI Tricks }
+\index[general]{Tricks!Linux SCSI}
+\index[general]{Linux SCSI Tricks}
\addcontentsline{toc}{subsubsection}{Linux SCSI Tricks}
You can find out what SCSI devices you have by doing:
\end{verbatim}
\normalsize
+The above represents first an autochanger and second a simple
+tape drive. The HP changer (the first entry) uses the same SCSI channel
+for data and for control, so in Bacula, you would use:
+\footnotesize
+\begin{verbatim}
+Archive Device = /dev/nst0
+Changer Device = /dev/sg0
+\end{verbatim}
+\normalsize
+
If you want to remove the SDT-10000 device, you can do so as root with:
\footnotesize
where the 2 0 4 0 are the Host, Channel, Id, and Lun as seen on the output
from {\bf cat /proc/scsi/scsi}. Note, the Channel must be specified as
numeric.
-\label{problems1}
+Below is a slightly more complicated output, which is a single autochanger
+with two drives, and which operates the changer on a different channel
+from from the drives:
+
+\footnotesize
+\begin{verbatim}
+Attached devices:
+Host: scsi0 Channel: 00 Id: 00 Lun: 00
+ Vendor: ATA Model: WDC WD1600JD-75H Rev: 08.0
+ Type: Direct-Access ANSI SCSI revision: 05
+Host: scsi2 Channel: 00 Id: 04 Lun: 00
+ Vendor: HP Model: Ultrium 2-SCSI Rev: F6CH
+ Type: Sequential-Access ANSI SCSI revision: 03
+Host: scsi2 Channel: 00 Id: 05 Lun: 00
+ Vendor: HP Model: Ultrium 2-SCSI Rev: F6CH
+ Type: Sequential-Access ANSI SCSI revision: 03
+Host: scsi2 Channel: 00 Id: 06 Lun: 00
+ Vendor: OVERLAND Model: LXB Rev: 0106
+ Type: Medium Changer ANSI SCSI revision: 02
+\end{verbatim}
+\normalsize
+
+The above tape drives are accessed on /dev/nst0 and /dev/nst1, while
+the control channel for those two drives is /dev/sg3.
+
+
+
+\label{problems1}
\subsection*{Tips for Resolving Problems}
-\index[general]{Problems!Tips for Resolving }
-\index[general]{Tips for Resolving Problems }
+\index[general]{Problems!Tips for Resolving}
+\index[general]{Tips for Resolving Problems}
\addcontentsline{toc}{subsection}{Tips for Resolving Problems}
\label{CannotRestore}
-
\subsubsection*{Bacula Saves But Cannot Restore Files}
-\index[general]{Files!Bacula Saves But Cannot Restore }
-\index[general]{Bacula Saves But Cannot Restore Files }
+\index[general]{Files!Bacula Saves But Cannot Restore}
+\index[general]{Bacula Saves But Cannot Restore Files}
\addcontentsline{toc}{subsubsection}{Bacula Saves But Cannot Restore Files}
If you are getting error messages such as:
tested).
\end{enumerate}
-\label{opendevice}
+If you are getting error messages such as:
+\footnotesize
+\begin{verbatim}
+Volume data error at 0:0!
+Block checksum mismatch in block=0 len=32625 calc=345678 blk=123456
+\end{verbatim}
+\normalsize
+
+You are getting tape read errors, and this is most likely due to
+one of the following things:
+\begin{enumerate}
+\item An old or bad tape.
+\item A dirty drive that needs cleaning (particularly for DDS drives).
+\item A loose SCSI cable.
+\item Old firmware in your drive. Make sure you have the latest firmware
+ loaded.
+\item Computer memory errors.
+\item Over-clocking your CPU.
+\item A bad SCSI card.
+\end{enumerate}
+
+\label{opendevice}
\subsubsection*{Bacula Cannot Open the Device}
-\index[general]{Device!Bacula Cannot Open the }
-\index[general]{Bacula Cannot Open the Device }
+\index[general]{Device!Bacula Cannot Open the}
+\index[general]{Bacula Cannot Open the Device}
\addcontentsline{toc}{subsubsection}{Bacula Cannot Open the Device}
If you get an error message such as:
\label{IncorrectFiles}
\subsubsection*{Incorrect File Number}
-\index[general]{Number!Incorrect File }
-\index[general]{Incorrect File Number }
+\index[general]{Number!Incorrect File}
+\index[general]{Incorrect File Number}
\addcontentsline{toc}{subsubsection}{Incorrect File Number}
When Bacula moves to the end of the medium, it normally uses the {\bf
retrieve the current file position from the {\bf mt\_fileno} field. Some SCSI
tape drivers will use a fast means of seeking to the end of the medium and in
doing so, they will not know the current file position and hence return a {\bf
--1}. As a consequence, if you get {\bf ``This is NOT correct!''} in the
+-1}. As a consequence, if you get {\bf "This is NOT correct!"} in the
positioning tests, this may be the cause. You must correct this condition in
order for Bacula to work.
\subsubsection*{Incorrect Number of Blocks or Positioning Errors during btape
Testing}
\index[general]{Testing!Incorrect Number of Blocks or Positioning Errors
-during btape }
+during btape}
\index[general]{Incorrect Number of Blocks or Positioning Errors during btape
-Testing }
+Testing}
\addcontentsline{toc}{subsubsection}{Incorrect Number of Blocks or Positioning
Errors during btape Testing}
below for the details on checking and setting the default drive block size.
To recover files from tapes written in fixed block mode, see below.
-\label{TapeModes}
+\label{TapeModes}
\subsubsection*{Ensuring that the Tape Modes Are Properly Set -- {\bf Linux
Only}}
-\index[general]{Ensuring that the Tape Modes Are Properly Set -- Linux Only }
-\index[general]{Only!Ensuring that the Tape Modes Are Properly Set -- Linux }
+\index[general]{Ensuring that the Tape Modes Are Properly Set -- Linux Only}
+\index[general]{Only!Ensuring that the Tape Modes Are Properly Set -- Linux}
\addcontentsline{toc}{subsubsection}{Ensuring that the Tape Modes Are Properly
Set -- Linux Only}
If you have a modern SCSI tape drive and you are having problems with the {\bf
test} command as noted above, it may be that some program has set one or more
-of the your SCSI driver's options to non-default values. For example, if your
+of your SCSI driver's options to non-default values. For example, if your
driver is set to work in SysV manner, Bacula will not work correctly because
it expects BSD behavior. To reset your tape drive to the default values, you
can try the following, but {\bf ONLY} if you have a SCSI tape drive on a {\bf
\end{verbatim}
\normalsize
-If you would like to know what stoptions you have set before making any of the
+If you would like to know what options you have set before making any of the
changes noted above, you can now view them on Linux systems, thanks to a tip
provided by Willem Riede. Do the following:
in variable block mode, it will attempt to set your drive appropriately. All
OSes permit setting variable block mode, but some OSes do not permit setting
the other modes that Bacula needs to function properly.
-\label{compression}
+\label{compression}
\subsubsection*{Checking and Setting Tape Hardware Compression and Blocking
Size}
\index[general]{Checking and Setting Tape Hardware Compression and Blocking
-Size }
+Size}
\index[general]{Size!Checking and Setting Tape Hardware Compression and
-Blocking }
+Blocking}
\addcontentsline{toc}{subsubsection}{Checking and Setting Tape Hardware
Compression and Blocking Size}
and of course, if you use a zero instead of the one at the end, you will turn
it off.
-You may also want to ensure that no prior program has set the default block
-size, as happened to one user, by explicitly turning it off with:
-
-\footnotesize
-\begin{verbatim}
-mt -f /dev/nst0 defblksize 0
-\end{verbatim}
-\normalsize
-
If you have built the {\bf mtx} program in the {\bf depkgs} package, you can
use tapeinfo to get quite a bit of information about your tape drive even if
it is not an autochanger. This program is called using the SCSI control
\normalsize
where the {\bf DataCompEnabled: yes} means that tape hardware compression is
-turned on. You can see it turn on and off (yes|no) by using the {\bf mt}
+turned on. You can turn it on and off (yes|no) by using the {\bf mt}
commands given above. Also, this output will tell you if the {\bf BlockSize}
is non-zero and hence set for a particular block size. Bacula is not likely to
work in such a situation because it will normally attempt to write blocks of
On FreeBSD, this would be something like: {\bf mt \ -f \ /dev/nsa0 \ blocksize
\ 0}.
+On some operating systems with some tape drives, the amount of data that
+can be written to the tape and whether or not compression is enabled is
+determined by the density usually the {\bf mt \ -f \ /dev/nst0 setdensity xxx} command.
+Often {\bf mt \ -f \ /dev/nst0 \ status} will print out the current
+density code that is used with the drive. Most systems, but unfortunately
+not all, set the density to the maximum by default. On some systems, you
+can also get a list of all available density codes with:
+{\bf mt \ -f \ /dev/nst0 \ densities} or a similar {\bf mt} command.
+Note, for DLT and SDLT devices, no-compression versus compression is very
+often controlled by the density code. On FreeBSD systems, the compression
+mode is set using {\bf mt \ -f \ /dev/nsa0 \ comp xxx} where xxx is the
+mode you want. In general, see {\bf man mt} for the options available on
+your system.
+
+
If your tape drive requires fixed block sizes (very unusual), you can use the
following records:
\label{FreeBSDTapes}
\subsubsection*{Tape Modes on FreeBSD}
-\index[general]{FreeBSD!Tape Modes on }
-\index[general]{Tape Modes on FreeBSD }
+\index[general]{FreeBSD!Tape Modes on}
+\index[general]{Tape Modes on FreeBSD}
\addcontentsline{toc}{subsubsection}{Tape Modes on FreeBSD}
On most FreeBSD systems such as 4.9 and most tape drives, Bacula should run
configuration is shown below, but does not work with all tape drives. Please
test carefully before putting either into production.
-Note, for FreeBSD 4.10-RELEASE, using a Sony TSL11000 L100 DDS4 w/Autochanger
-set to variable block size and DCLZ compression, Brian McDonald reports that
-to get Bacula to append correctly between Bacula executions, the correct
-values to use are:
+Note, for FreeBSD 4.10-RELEASE, using a Sony TSL11000 L100 DDS4 with an
+autochanger set to variable block size and DCLZ compression, Brian McDonald
+reports that to get Bacula to append correctly between Bacula executions,
+the correct values to use are:
\footnotesize
\begin{verbatim}
at the end of the tape, which works much more efficiently and reliably with
modern tape drives.
+Finally, here is a Device configuration that Danny Butroyd reports to work
+correctly with the Overland Powerloader tape library using LT0-2 and
+FreeBSD 5.4-Stable:
+
+\footnotesize
+\begin{verbatim}
+# Overland Powerloader LT02 - 17 slots single drive
+Device {
+ Name = Powerloader
+ Media Type = LT0-2
+ Archive Device = /dev/nsa0
+ AutomaticMount = yes;
+ AlwaysOpen = yes;
+ RemovableMedia = yes;
+ RandomAccess = no;
+ Changer Command = "/usr/local/sbin/mtx-changer %c %o %S %a %d"
+ Changer Device = /dev/pass2
+ AutoChanger = yes
+ Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'"
+
+ # FreeBSD Specific Settings
+ Offline On Unmount = no
+ Hardware End of Medium = no
+ BSF at EOM = yes
+ Backward Space Record = no
+ Fast Forward Space File = no
+ TWO EOF = yes
+}
+\end{verbatim}
+\normalsize
+
+
\subsubsection*{Determining What Tape Drives and Autochangers You Have on
FreeBSD}
\index[general]{FreeBSD!Determining What Tape Drives and Autochangers You Have
-on }
+}
\index[general]{Determining What Tape Drives and Autochangers You Have on
-FreeBSD }
+FreeBSD}
\addcontentsline{toc}{subsubsection}{Determining What Tape Drives and
Autochangers You Have on FreeBSD}
\label{onstream}
\subsubsection*{Using the OnStream driver on Linux Systems}
-\index[general]{Using the OnStream driver on Linux Systems }
-\index[general]{Systems!Using the OnStream driver on Linux }
+\index[general]{Using the OnStream driver on Linux Systems}
+\index[general]{Systems!Using the OnStream driver on Linux}
\addcontentsline{toc}{subsubsection}{Using the OnStream driver on Linux
Systems}
Bacula version 1.33 (not 1.32x) is now working and ready for testing with the
OnStream kernel osst driver version 0.9.14 or above. Osst is available from:
-\elink{http://sourceforge.net/projects/osst/}{http://sourceforge.net/projects/%
-osst/}.
+\elink{http://sourceforge.net/projects/osst/}
+{http://sourceforge.net/projects/osst/}.
To make Bacula work you must first load the new driver then, as root, do:
\end{verbatim}
\normalsize
-\label{fill}
+\subsection*{Hardware Compresson on EXB-8900}
+\index[general]{Hardware Compression on EXB-8900}
+\index[general]{EXB-8900!Hardware Compression}
+\addcontentsline{to}{subsection}{Hardware Compression on EXB-8900}
+To active, check, or disable the hardware compression feature
+on an EXB-8900, use the exabyte MammothTool. You can get it here:
+\elink{http://www.exabyte.com/support/online/downloads/index.cfm}
+{http://www.exabyte.com/support/online/downloads/index.cfm}.
+There is a solaris version of this tool. With option -C 0 or 1 you
+can disable or activate compression. Start this tool without any
+options for a small reference.
-\subsubsection*{Using btape to Simulate Bacula Filling a Tape}
-\index[general]{Using btape to Simulate Bacula Filling a Tape }
-\index[general]{Tape!Using btape to Simulate Bacula Filling a }
-\addcontentsline{toc}{subsubsection}{Using btape to Simulate Bacula Filling a
+\label{fill}
+\subsubsection*{Using btape to Simulate Filling a Tape}
+\index[general]{Using btape to Simulate Filling a Tape}
+\index[general]{Tape!Using btape to Simulate Filling a}
+\addcontentsline{toc}{subsubsection}{Using btape to Simulate Filling a
Tape}
Because there are often problems with certain tape drives or systems when end
recover it. Note, there is also a single tape option as noted below, which you
should use rather than the two tape test. See below for more details.
-This can be an extremely time consuming process (here is is about 6 hours) to
+This can be an extremely time consuming process (here it is about 6 hours) to
fill a full tape. Note, that btape writes random data to the tape when it is
filling it. This has two consequences: 1. it takes a bit longer to generate
the data, especially on slow CPUs. 2. the total amount of data is
\label{RecoveringFiles}
\subsection*{Recovering Files Written to Tape With Fixed Block Sizes}
-\index[general]{Recovering Files Written to Tape With Fixed Block Sizes }
-\index[general]{Sizes!Recovering Files Written to Tape With Fixed Block }
+\index[general]{Recovering Files Written to Tape With Fixed Block Sizes}
+\index[general]{Sizes!Recovering Files Written to Tape With Fixed Block}
\addcontentsline{toc}{subsection}{Recovering Files Written to Tape With Fixed
Block Sizes}
VolBlock} lines in the file. When the file is re-written, answer the question,
and Bacula will run without using block positioning, and it should recover
your files.
-\label{BlockModes}
+\label{BlockModes}
\subsection*{Tape Blocking Modes}
-\index[general]{Modes!Tape Blocking }
-\index[general]{Tape Blocking Modes }
+\index[general]{Modes!Tape Blocking}
+\index[general]{Tape Blocking Modes}
\addcontentsline{toc}{subsection}{Tape Blocking Modes}
SCSI tapes may either be written in {\bf variable} or {\bf fixed} block sizes.
the Job to the correct size. Bacula expects variable tape block size drives to
behave as follows: Each write to the drive results in a single record being
written to the tape. Each read returns a single record. If you request less
-byte than are in the record, only those number of bytes will be returned, but
+bytes than are in the record, only those number of bytes will be returned, but
the entire logical record will have been read (the next read will retrieve the
next record). Thus data from a single write is always returned in a single
read, and sequentially written records are returned by sequential reads.
Bacula expects fixed block size tape drives to behave as follows: If a write
length is greater than the physical block size of the drive, the write will be
-written as two blocks each of the fixed physical size. This a single write may
+written as two blocks each of the fixed physical size. This single write may
become multiple physical records on the tape. (This is not a good situation).
According to the documentation, one may never write an amount of data that is
not the exact multiple of the blocksize (it is not specified if an error
assumes that each write causes a single record to be written, and that it can
sequentially recover each of the blocks it has written by using the same
number of sequential reads as it had written.
+
+\subsection*{Details of Tape Modes}
+\index[general]{Modes!Details}
+\index[general]{Details of Tape Modes}
+\addcontentsline{toc}{subsection}{Details of Tape Modes}
+Rudolf Cejka has provided the following information concerning
+certain tape modes and MTEOM.
+
+\begin{description}
+\item[Tape level]
+ It is always possible to position filemarks or blocks, whereas
+ positioning to the end-of-data is only optional feature, however it is
+ implemented very often. SCSI specification also talks about optional
+ sequential filemarks, setmarks and sequential setmarks, but these are not
+ implemented so often. Modern tape drives keep track of file positions in
+ built-in chip (AIT, LTO) or at the beginning of the tape (SDLT), so there
+ is not any speed difference, if end-of-data or filemarks is used (I have
+ heard, that LTO-1 from all 3 manufacturers do not use its chip for file
+ locations, but a tape as in SDLT case, and I'm not sure about LTO-2 and
+ LTO-3 case). However there is a big difference, that end-of-data ignores
+ file position, whereas filemarks returns the real number of skipped
+ files, so OS can track current file number just in filemarks case.
+
+\item[OS level]
+ Solaris does use just SCSI SPACE Filemarks, it does not support SCSI
+ SPACE End-of-data. When MTEOM is called, Solaris does use SCSI SPACE
+ Filemarks with count = 1048576 for fast mode, and combination of SCSI
+ SPACE Filemarks with count = 1 with SCSI SPACE Blocks with count = 1 for
+ slow mode, so EOD mark on the tape on some older tape drives is not
+ skipped. File number is always tracked for MTEOM.
+
+ Linux does support both SCSI SPACE Filemarks and End-of-data: When MTEOM
+ is called in MT\_ST\_FAST\_MTEOM mode, SCSI SPACE Filemarks with count =
+ 8388607 is used. In the other case, SCSI SPACE End-of-data is used.
+ There is no real slow mode like in Solaris - I just expect, that for
+ older tape drives Filemarks may be slower than End-of-data, but not so
+ much as in Solaris slow mode. File number is tracked for MTEOM just
+ without MT\_ST\_FAST\_MTEOM - when MT\_ST\_FAST\_MTEOM is used, it is not.
+
+ FreeBSD does support both SCSI SPACE Filemarks and End-of-data, but when
+ MTEOD (MTEOM) is called, SCSI SPACE End-of-data is always used. FreeBSD
+ never use SCSI SPACE Filemarks for MTEOD. File number is never tracked
+ for MTOED.
+
+\item[Bacula level]
+ When {\bf Hardware End of Medium = Yes} is used, MTEOM is called, but it
+ does not mean, that hardware End-of-data must be used. When Hardware End
+ of Medium = No, if Fast Forward Space File = Yes, MTFSF with count =
+ 32767 is used, else Block Read with count = 1 with Forward Space File
+ with count = 1 is used, which is really very slow.
+
+\item [Hardware End of Medium = Yes|No]
+ The name of this option is misleading and is the source of confusion,
+ because it is not the hardware EOM, what is really switched here.
+
+ If I use Yes, OS must not use SCSI SPACE End-of-data, because Bacula
+ expects, that there is tracked file number, which is not supported by
+ SCSI specification. Instead, the OS have to use SCSI SPACE Filemarks.
+
+ If I use No, an action depends on Fast Forward Space File.
+
+ Considering {\bf Hardware End of Medium = no}
+ and {\bf Fast Forward Space File = no}
+ When I set the two to no, file positioning was very slow
+ on my LTO-3:
+\begin{verbatim}
+ HEOM = no, FFSF = no: ~ 10 - 100 minutes
+\end{verbatime}
+
+while even with {\bf Hardware End of Medium = no} but
+{\bf Fast Forward Space File = yes}, the time is 10 to
+100 times faster.
+\begin{verbatim}
+ HEOM = no, FFSF = yes: ~ 1 minute
+\end{verbatim}
+
+\end{description}
+
+\subsection*{Autochanger Errors}
+\index[general]{Errors!Autochanger}
+\index[general]{Autochanger Errors}
+\addcontentsline{toc}{subsection}{Autochanger Errors}
+
+If you are getting errors such as:
+
+\footnotesize
+\begin{verbatim}
+3992 Bad autochanger "load slot 1, drive 1": ERR=Child exited with code 1.
+\end{verbatim}
+\normalsize
+
+and you are running your Storage daemon as non-root, then most likely
+you are having permissions problems with the control channel. Running
+as root, set permissions on /dev/sgX so that the userid and group of
+your Storage daemon can access the device. You need to ensure that you
+all access to the proper control device, and if you don't have any
+SCSI disk drives (including SATA drives), you might want to change
+the permissions on /dev/sg*.