Legato NetWorker Commands Index:
ansrdascdcode
cdi_block_limits
cdi_bsf
cdi_bsr
cdi_eod
cdi_filemark
cdi_fsf
cdi_fsr
cdi_get_config
cdi_get_status
cdi_inq
cdi_load_unload
cdi_locate
cdi_offline
cdi_rewind
cdi_set_compression
cdi_space
cdi_ta
cdi_tapesize
cdi_tur
changers
dasadmin
ddmgr
EMASS_silo
erase
generate_test_tape
hadump
hafs
hagentd
hagetconf
haprune
hascsi
hasubmit
hasys
hpflip
IBM_silo
ielem
inquire
jbconfig
jbexercise
jbverify
ldunld
lgtolic
lgtolmd
libcdi
libscsi
libsji
libstlemass
libstlibm
libstlstk
lrescan
lreset
lus_add_fp_devs
lusbinfo
lusdebug
mini_el
mm_data
mminfo
mmlocate
mmpool
mmrecov
msense
mt
ndmpjbconf
networker
nsr (1)
nsr (5)
nsr_archive_request
nsr_client
nsr_crash
nsr_data
nsr_device
nsr_directive
nsr_getdate
nsr_group
nsr_ize
nsr_jukebox
nsr_label
nsr_layout
nsr_license
nsr_migration
nsr_notification
nsr_policy
nsr_pool
nsr_regexp
nsr_resource
nsr_schedule
nsr_service
nsr_shutdown
nsr_stage
nsr_storage_node
nsr_support
nsr_usergroup
nsradmin
nsralist
nsrarchive
nsrcap
nsrcat
nsrck
nsrclone
nsrcnct
nsrd
nsrexec
nsrexecd
nsrhsmck
nsrhsmclear
nsrhsmd
nsrhsmls
nsrhsmnfs
nsrhsmrc
nsrhsmrecall
nsrib
nsriba
nsrim
nsrindexasm
nsrindexd
nsrinfo
nsrjb
nsrlic
nsrls
nsrmig
nsrmm
nsrmmd
nsrmmdbasm
nsrmmdbd
nsrmon
nsrndmp_clone
nsrndmp_recover
nsrndmp_save
nsrpmig
nsrports
nsrretrieve
nsrssc
nsrstage
nsrtrap
nsrwatch
nwadmin
nwarchive
nwbackup
nwrecover
nwretrieve
pathownerignore
pmode
preclntsave
pstclntsave
read_a_block
recover
relem
resource
save
savefs
savegrp
savepnpc
scanner
sjiielm
sjiinq
sjimm
sjirdp
sjirdtag
sjirelem
sjirjc
sjisn
sn
ssi
stk_eject
STK_silo
stli
sym2xdm
tapeexercise
tur
uasm
writebuf
* - Windows Only
* mt
* nsrlpr
* nsrperf
stli
stli - Standard Tape Library InterfaceDESCRIPTION
STLI is the documented interface for connecting tape libraries to Net-
Worker.
Tape libraries are often referred to as silos. Examples of tape
libraries are StorageTek ACSLS silos and the IBM 3494. Tape libraries
differ from other jukeboxes supported by NetWorker in two major points:
o The tape libraries have their own volume and slot management. The
volumes are accessed by NetWorker via their barcode labels. The
exact location of a given tape is unknown to NetWorker.
o The interface to the library for issuing requests like mount or
unmount of particular volumes differs from that of jukeboxes, which
are normally connected via a SCSI or V24 interface. Standard Tape
Library commands are transmitted to a Standard Tape Library server,
which receives these commands and invokes the appropriate library
actions. Usually, the connection between NetWorker and the Library
controller is over the network, although serial (RS-232) connections
are also used. The actual connection is hidden from NetWorker by the
STL library. NetWorker and other applications calling the STL server
are called library clients.
To keep applications independent of differing interfaces to various
tape library systems, an API called STLI (Standard Tape Library Inter-
face) has been defined, which is used by NetWorker to invoke library
requests. The STLI specifies a shared library with well defined func-
tions, that is dynamically linked to NetWorker. These STLI interface
libraries, which transform the STLI function calls to library-specific
calls to the proprietary tape library server, may be provided by Legato
or the manufacturers of the tape library.
Not all functions specified in this paper must be implemented in the
STLI library. These functions are the minimum necessary for a func-
tional library:
stl_open()
stl_close()
stl_mount()
stl_unmount()
Implementation of stl_error() is recommended for easier use of the
library and better troubleshooting.
If you wish to support dynamic device reservation these are the rele-
vant functions:
stl_reserve_dev()
stl_release_dev()
stl_dev_reservation()
Optional fucntions for added features:
stl_close()
Declaration:
int stl_close(char* stl);
Description:
Close the connection to the tape library.
<stl> is the handle returned by stl_open().
The return value on success is STL_ERR_NOERR. For error return
values see Appendix: Return Values.
stl_deposit_volume
Declaration:
int stl_deposit_volume(char *stl, char *volume, char *capname)
Description:
Causes the specified volume to be inserted into the library from
the specified cartridge access port (inport/export facility,
mailslot....)
<stl> is the handle returned by stl_open().
<volume> is the bar code of the volume to be deposited into the
library.
<capname> specifies the cartridge access port/inport-export
area/mailslot to be used to insert the volume into the library.
It is a character string, understood by the tape library as a
name for that device. This argument can be NULL, in which case
the default CAP will be used.
This function returns STL_ERR_NOERR if the volume is success-
fully inserted. STL_ERR_NOVOL is returned if the volume is not
present and was not inserted. Other return values are possible
if errors occur. See appendix for possible values.
NOTE: on some libraries, this function may not be needed.
o The IBM 3494 will automatically import any tapes placed into its
in/out area. There is no 'deposit' function in the 3494's API.
o StorageTek libraries with the CAP set to automatic mode behave the
same as the 3494. However, if their CAP is set to manual, then a
deposit call is required.
o On EMASS/Grau libraries, a single call to deposit one volume from the
EIF will deposit all available volumes. However, subsequent deposit
calls will return quickly and the error can be ignored.
stl_deposit_volumes
Declaration:
int stl_deposit_volumes(char *stl, char *volumes, char *capname)
with either a single volume specified or with a comma separated
list.
<stl> is the handle returned by stl_open().
<volumes> is a comma separated list of bar codes of the volumes
to be deposited into the library. There should be no extraneous
spaces added between the individual bar codes since the space
character (ASCII 32) is a valid bar code character itself.
<capname> specifies the cartridge access port/inport-export
area/mailslot to be used to insert the volume into the library.
It is a character string, which is understood by the tape
library as a name for that device. This argument can be NULL,
in which case the default CAP will be used.
This function returns STL_ERR_NOERR if the volume is success-
fully inserted. STL_ERR_NOVOL is returned if the volume is not
present and was not inserted. Other return values are possible
if errors occur. See Appendix: Return Values.
NOTE: on some libraries, this function may not be needed.
o The IBM 3494 will automatically import any tapes placed into its
in/out area. There is no 'deposit' function in the 3494's API.
o StorageTek libraries with the CAP set to automatic mode behave in the
same manner as the 3494. However, if their CAP is set to manual,
then a deposit call is required.
o On EMASS/Grau libraries, a single call to deposit one volume from the
EIF will in fact deposit all available volumes. However, subsequent
deposit calls will return quickly and the error can be ignored.
stl_dev_reservation()
Declaration:
int stl_dev_reservation(char *stl, char *device, int *state)
Description:
Get the reservation state of device <device>.
<stl> is the handle returned by stl_open().
<device> specifies from which device to get the reservation
state. It is a character string, understood by the tape library
as a name for that device.
*<state> returns the reservation state:
STL_DEV_FREE: Free
STL_DEV_RESERVED: Reserved for NetWorker's use
STL_DEV_OCCUPIED: Occupied by another host
Description:
Gives a printable error message belonging to the preceding STLI
function call. The function returns the address of a buffer
which contains a message describing the status of the last STLI
function call. These messages can be constant strings, for
instance, the messages contained in stl.h for error codes less
than 100. But these messages can also be built up with actual
parameters, which exactly describe the error situation.
Error and other status information should be maintained in
global static variables in the library, as this call is made
without any parameters.
The function returns NULL if no message available. See Appendix:
Return Values.
stl_mount()
Declaration:
int stl_mount(char* stl, char* volume, char* device);
Description:
Move volume <volume> into drive <drive>.
<stl> is the handle returned by stl_open().
<volume> is the bar code of the volume to be mounted.
<device> specifies the device, on which the volume shall be
mounted. It is a character string, understood by the tape
library as a name for that device.
This call may not return until the volume is loaded into the
drive and the drive is ready. The exact sequence is dependent
on the library. It can take several minutes to complete.
The return value on success is STL_ERR_NOERR. See Appendix:
Return Values.
stl_open()
Declaration:
int stl_open(char* server, char** stl);
Description:
Connect to the tape library.
<server> is a character string which contains all information
necessary to establish a connection to the tape library. The
information in this string is proprietary to the special type of
tape library. Generally it should be of the form:
[<host>] [<par1>=<val1> [<par2>=<val2>]...]
be used to hold the required configuration information.
The return value on success is STL_ERR_NOERR. See Appendix:
Return Values.
stl_query_volume
Declaration:
int stl_query_volume(char *stl, char *volume)
Description:
Queries a silo to establish the presence of a volume. This
function is currently used to verify the presence of a volume
before allocating that volume for use with NetWorker.
<stl> is the handle returned by stl_open().
<volume> is the bar code of the volume to be mounted.
This function returns STL_ERR_NOERR if the volume is present, or
STL_ERR_NOVOL if the volume is not present.
Other return values are possible if errors occur. See Appendix:
Return Values.
stl_release_dev()
Declaration:
int stl_release_dev(char *stl, char *device);
Description:
Release device <device>, which has previously been reserved by
stl_reserve_dev().
<stl> is the handle returned by stl_open().
<device> specifies the device to be released. It is a character
string, understood by the tape library as a name for that
device.
The return value on success is STL_ERR_NOERR. See Appendix:
Return Values.
stl_reserve_dev()
Declaration:
int stl_reserve_dev(char *stl, char *device);
Description:
Reserves device <device> for NetWorker's use.
<stl> is the handle returned by stl_open().
<device> specifies the device to be reserved. It is a character
string, understood by the tape library as a name for that
int stl_version(void)
Description:
Returns STLI version information for the STL library
This function returns the version of the STL library * 10.
I.e., it returns a value of 12 for an STL library that supports
the functions for STLI version 1.2.
STLI version 1.0 specified the following calls:
stl_close()
stl_dev_reservation()
stl_mount()
stl_open()
stl_release_dev()
stl_reserve_dev()
stl_unmount()
STLI version 1.1 added the following calls:
stl_query_volume()
stl_version()
STLI version 1.2 added the following calls:
stl_deposit_volume()
stl_withdraw_volume()
STLI version 1.3 added the following calls:
stl_deposit_volumes()
stl_withdraw_volumes()
Note that stl_version does not return a value that can be inter-
preted as an 'STL_' error. Attempting to do so will result in
unpredictable results.
stl_unmount()
Declaration:
int stl_unmount(char* stl, char* volume, char* device);
Description:
Remove volume <volume> from drive <drive>.
<stl> is the handle returned by stl_open().
<volume> is the bar code of the volume to be removed.
<device> specifies the device, from which the volume shall be
removed. It is a character string, understood by the tape
library as a name for that device.
Either <volume> or <device> can be NULL. If both values are
specified, they must be consistent.
stl_withdraw_volume
Declaration:
int stl_withdraw_volume(char *stl, char *volume, char *capname)
Description:
Causes the specified volume to be ejected from the library
through the specified cartridge access port (inport/export
facility, mailslot...).
<stl> is the handle returned by stl_open().
<volume> is the bar code of the volume to be withdrawn.
<capname> specifies the cartridge access port/inport-export
area/mailslot to be used to remove the volume from the silo. It
is a character string, understood by the tape library as a name
for that device. This argument can be NULL, in which case the
default CAP will be used.
This function returns STL_ERR_NOERR if the volume is success-
fully withdrawn from the library. STL_ERR_NOVOL is returned if
the volume is not present. STL_ERR_VOLBUSY is returned if the
volume is currently in use and cannot be withdrawn.
Other return values are possible if errors occur. See Appendix:
Return Values.
stl_withdraw_volumes
Declaration:
int stl_withdraw_volumes(char *stl, char *volumes, char *cap-
name)
Description:
Causes the specified volume to be ejected from the library
through the specified cartridge access port (inport/export
facility, mailslot....) This function will be used instead of
stl_withdraw_volume() if it is defined and stl_version returns
1.3 or greater. Therefore, it should be capable of functioning
with either a single volume specified or with a comma separated
list.
<stl> is the handle returned by stl_open().
<volumes> is a comma separated list of bar codes of the volumes
to be deposited into the library. There should be no extraneous
spaces added between the individual bar codes since the space
character (ASCII 32) is a valid bar code character itself.
<capname> specifies the cartridge access port/inport-export
area/mailslot to be used to remove the volume from the silo. It
is a character string, understood by the tape library as a name
for that device. This argument can be NULL, in which case the
default CAP will be used.
Appendix: Return Values
Return values 0 - 99 are reserved for common, library type independent
error codes. The header file stl.h defines the common return values
together with a short error message.
Return values greater 100 can be used by each STLI implementation for
proprietary error codes.
It is recommended, that a STLI implementation should map all error sit-
uations to the common STLI error codes and should provide the function
stl_error() for more detailed error messages. This allows NetWorker to
react on known error codes, but also to forward the more detailed error
messages via the user interface.
No proprietary error codes are allowed in situations, where the common
error codes STL_ERR_DEVEMPTY, STL_ERR_DEVFULL or STL_ERR_ALRDYMNTED
apply.
The currently defined return codes are:
Error value Meaning
-------------------------------------------------------
STL_ERR_NOERR
Successful call return - no error
STL_ERR_UNKNOWN
Error, no details available
STL_ERR_CONNECT
Cannot connect to tape library
STL_ERR_BUSY
Tape library busy, try later
STL_ERR_ACCESS
Permission denied (to access the library, the requested device,
volume or operation)
STL_ERR_NODEV
Device not known to the tape library or physically not available
STL_ERR_NOVOL
Volume not known to the tape library or physically not available
STL_ERR_DEVFULL
Device already loaded with another volume
STL_ERR_DEVEMPTY
Device empty
STL_ERR_DEVBUSY
Device busy
STL_ERR_ERRNO
Local UNIX error, see errno
STL_ERR_CONFIG
Request doesn't comply with tape library configuration
STL_ERR_DEVOCC
Device reserved by another host
STL_ERR_DEVRES
Device already reserved
STL_ERR_DEVNOTRES
Device not reserved
STL_ERR_NOTINST
STLI-Library is a dummy library
STL_ERR_NOTSUPP
Dummy function return
STL_ERR_ALRDYMNTED
Requested volume already mounted in requested device
SEE ALSO
nsrjb(1), nsr_jukebox(5), IBM_silo(1), EMASS_silo(1), STK_silo(1).
ADVERTISEMENT
Legato NetWorker 7.xMan(1) output converted with man2html, sed, awk
EMC Legato NetWorker Commands Reference