Ref: 11640071
Title: How Contiguous Memory is Borrowed from CIOSYS
Date: 4/20/90

Copyright 3Com Corporation, 1991.  All rights reserved.

3+Backup allows a 16 KB boundary for EMS and always uses EMS from
CIOSYS in multiples of three; thus, 3+Backup always uses EMS in
48 KB chunks (3 x 16 KB = 48 KB).  3+Backup gets contiguous
memory from CIOSYS, divided into three equal-size buffers for
3+Backup's usage.

Reading from the server, all three buffers are used as follows:

1.  Buffer 1 is filled.  When it is full, the data is written to
tape.

2.  While buffer 1 is being written, buffer 2 is filled, then
written to tape.

3.  While buffer 2 is being written, buffer 3 is filled, then
written to tape.

All three buffers are used as a circular queue.  Once 3+Backup
writes data to the second buffer, any errors that occurred in the
write of the first buffer will then return an error code.  At
that point, you will know if you need to re-issue the write of
buffer 1 (that is, if it ran out of tape and you need to swap
tapes).  If you need to swap tapes, all three buffers will need
to be (re)written to tape.

Files can be split across more than one tape.  The first block of
each tape, whether or not it is the first tape of the backup,
contains a 512 KB Index Block (IB).

Byte-range lock files are opened to 3+Backup (read only).

File marks are not data blocks, they are hardware marks.  They
are not used to separate files by 3+Backup.  File marks occur
whenever any error occurs while backing up the file.  Usually,
this is a file access error, resulting in 0 length files, but not
always.

Always wait five minutes after CIOSYS loads before you perform a
backup, a restore, or a DIR /F.  A feature put into CIOSYS after
version 1.1 prevents services from creating new threads during
initialization, and allows enough time for initialization.
Unfortunately, backups, restores, and DIR /F operations, which
all require borrowing CIOSYS buffers, create another thread that
causes CIOSYS to hang the system if they are run too soon after
CIOSYS loads.
