B Api Using
B Api Using
Version 7.1.1
Note:
Before using this information and the product it supports, read the information in Notices on page 209.
Contents
About this publication
. . . . . . . . v
|
|
.
.
.
.
.
.
.
.
.
.
.
.
. v
. v
. v
.
.
. 1
. 3
.
.
.
.
5
6
7
8
.
.
.
.
.
.
14
14
16
16
17
18
. 21
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
22
23
23
24
24
25
25
26
28
30
30
31
33
34
35
36
36
37
37
37
38
. 38
39
41
41
42
43
45
48
50
53
54
54
57
59
60
63
63
64
68
69
70
71
71
72
Chapter 4. Understanding
interoperability . . . . . . . . . . . 75
Backup-archive client interoperability. . . . .
Naming your API objects . . . . . . . .
Backup-archive client commands you can use
with the API . . . . . . . . . . . .
Operating system interoperability . . . . . .
Backing up multiple nodes with client node proxy
support. . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 75
. 75
. 77
. 78
. 78
81
. 81
. 81
iii
dsmEndTxn . . . . .
dsmEndTxnEx . . . .
dsmGetData . . . . .
dsmGetBufferData. . .
dsmGetNextQObj . . .
dsmGetObj . . . . .
dsmGroupHandler . .
dsmInit . . . . . .
dsmInitEx . . . . .
dsmLogEvent . . . .
dsmLogEventEx . . .
dsmQueryAccess . . .
dsmQueryApiVersion. .
dsmQueryApiVersionEx .
dsmQueryCliOptions . .
dsmQuerySessInfo. . .
dsmQuerySessOptions .
dsmRCMsg . . . . .
dsmRegisterFS . . . .
dsmReleaseBuffer . . .
dsmRenameObj. . . .
dsmRequestBuffer . . .
dsmRetentionEvent . .
dsmSendBufferData . .
dsmSendData . . . .
dsmSendObj. . . . .
dsmSetAccess . . . .
dsmSetUp . . . . .
dsmTerminate . . . .
dsmUpdateFS . . . .
dsmUpdateObj . . . .
dsmUpdateObjEx . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
101
102
103
104
105
108
109
110
113
117
118
119
120
120
121
122
123
124
125
126
126
128
129
130
131
132
135
136
138
138
139
140
A
B
C
D
E
F
G
H
I.
J.
K
L
M
N
O
P
Q
R
S
T
U
V
W
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
iv
. 211
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
213
215
216
217
219
220
220
221
222
222
222
223
224
225
226
226
228
228
229
231
232
232
233
Index . . . . . . . . . . . . . . . 235
Glossary . . . . . . . . . . . . . 213
Trademarks .
. 211
Publications
The Tivoli Storage Manager product family includes IBM Tivoli Storage
FlashCopy Manager, IBM Tivoli Storage Manager for Space Management, IBM
Tivoli Storage Manager for Databases, and several other storage management
products from IBM Tivoli.
To view IBM product documentation, see http://www.ibm.com/support/
knowledgecenter/.
Description
autoexec.ncf
hsmgui.exe
DSMI_DIR
dsmQuerySessInfo
timeformat
vi
Example
Description
dateformat
maxcmdretries
A plus sign between two keys indicates that you press both keys at the
same time.
|
|
The IBM Tivoli Storage Manager API for Version 7.1.1 contains many new features
and changes.
|
|
Changed and new information is indicated by a vertical bar (|) to the left of the
change. Ensure that you are using the correct edition for the level of the product.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Added option to disable security protocols that are lower than TLS 1.2
In order to comply with new US federal requirements for new
cryptographic standards, the ability to restrict SSL protocols to TLS 1.2 or
above is available. If you want to disable security protocols that are lower
than TLS 1.2, add the ssldisablelegacytls yes option to the client options
file or select Require TLS 1.2 or above on the Communications tab in the
backup-archive client preferences editor. Selecting this check box can
prevent spoofing attacks by malicious programs that accept lower-level
protocol connections even if the Tivoli Storage Manager server does not.
vii
viii
Windows
Description
dsm.sys file
not applicable
(client system
options)
2
Option string
Option string
(client options)
(all options)
Windows
Description
API configuration
file
API
configuration
file
(client options)
(all options)
dsm.opt file
dsm.opt file
(client options)
(all options)
Windows
DSMI_CONFIG
DSMI_DIR
DSMI_LOG
Description
README_api_enu
README file
dsmrc.h
dsmapitd.h
dsmapips.h
dsmapifp.h
release.h
Table 3. Files that you need to build the UNIX or Linux API sample application (continued)
File names
dapibkup.c
dapidata.h
dapiinit.c
dapint64.h
dapint64.c
dapipref.c
dapiproc.c
dapiproc.h
Description
dapipw.c
dapiqry.c
dapirc.c
dapismp.c
dapitype.h
dapiutil.h
dapiutil.c
makesmp[64].xxx
callmt1.c
callmt2.c
callmtu1.c
callmtu2.c
libApiDS.xx
libApiDS64.xx, or
libApiTSM64.xx
dsmgrp.c
callevnt.c
callhold.c
callret.c
callbuff.c
dpsthread.c
Table 4. Files for building the Windows 32bit API sample application
File names
Description
api.txt
README file
tsmapi.dll
adsmv3.dll
API DLLs
dsmrc.h
dsmapitd.h
dsmapips.h
dsmapifp.h
dsmapidl.h
release.h
dapidata.h
dapint64.h
dapitype.h
dapiutil.h
tsmapi.lib
Implicit library
dapibkup.c
dapiinit.c
dapint64.c
dapipref.c
dapiproc.c
dapiproc.h
makesmp.mak
callmt1.c
callmt2.c
callmtu1.c
callmtu2.c
dsmgrp.c
callevnt.c
callhold.c
callret.c
callbuff.c
dpsthread.c
v Use the Microsoft C/C++ Compiler Version 15 and the makefile makesmp64.mak
to compile the API sample application dapismp. You might have to adjust the
makefiles to fit your environment, specifically the library or the include
directories.
v After you compile the application, run the sample application by issuing the
command dapismp from the api64\samprun directory.
v Choose from the list of options displayed that are displayed. Ensure that you
run the sign-on action before you run any other actions.
v Always prefix the file space, high-level, and low-level names with the correct
path delimiter (\) when you enter the name, for example: \myfilespace. You
must use this prefix even when you specify the asterisk (*) wildcard character.
For Windows operating systems, the source files that you must have to build the
sample application are listed in Table 5. The sample application is included in the
API package. For your convenience, a precompiled executable (dapismp.exe) is also
included.
Table 5. Files for building the Windows 64-bit API sample application
File names
Description
api.txt
README file
tsmapi64.dll
API DLLs
dsmrc.h
dsmapitd.h
dsmapips.h
dsmapifp.h
dsmapidl.h
release.h
dapidata.h
dapint64.h
dapitype.h
dapiutil.h
tsmapi64.lib
Implicit library
dapibkup.c
dapiinit.c
dapint64.c
dapipref.c
dapiproc.c
dapiproc.h
dapipw.c
dapiqry.c
dapirc.c
dapismp64.c
dapiutil.c
dynaload.c
makesmpx64.mak
(Windows x64)
makesmp64.mak
(Windows IA64)
callmt1.c
callmt2.c
callmtu164.c
callmtu264.c
dpsthread.c
Table 5. Files for building the Windows 64-bit API sample application (continued)
10
File names
Description
dsmgrp.c
callevnt.c
callhold.c
callret.c
callbuff.c
Considerations
Setting locale
The application must set the locale before the API is called. To set the locale to the default
value, add the following code to the application:
setlocale(LC_ALL,"");
To set the locale to another value, use the same call with the proper locale in the second
parameter. Check for specifics in the documentation for each operating system that you are
using.
11
Considerations
Session control
12
Considerations
Operation sequence
The Tivoli Storage Manager server locks file space database entries during some operations.
The following rules apply when you are designing Tivoli Storage Manager API applications:
v Queries lock the file space during the entire transaction.
v The query lock can be shared with other query operations, so multiple query operations
on the same file space can execute concurrently.
v The following operations are used to modify the Tivoli Storage Manager server database
(DB Chg): send, get, rename, update, and delete.
v Completion of a DB Chg operation requires a file space lock during the database change at
the end of the transaction.
v Multiple DB Chg operations on the same file space can execute concurrently. There might
be a delay while the sequence waits for the lock at the end transaction.
v The query lock cannot be shared with DB Chg operations. A DB Chg operation delays the
beginning of a query on the same file space, so design your applications to separate and
serialize queries from DB Chg operations on the same file space.
Object naming
Object grouping
Group objects logically by using file spaces. A file space is a container on the server that
provides a grouping category for the objects. The API queries all file spaces during the
initial sign-on and also during queries, so the number of file spaces must be restricted. A
reasonable assumption is that an application sets up 20 - 100 file spaces per node. The API
can cater for more file spaces, but each file space incurs an overhead for the session. To
create a more granular separation, use the directory object in the application.
Object handling
Do not store objectID values to use for future restores. These values are not guaranteed to
be persistent during the life of the object.
During a restore, pay special attention to the restore order. After the query, sort on this value
before the restore. If you are using multiple types of serial media, then access the different
types of media in separate sessions. For more information, see the following topic:
Selecting and sorting objects by restore order on page 65
Management class
Consider how much control the application must have over the management class that is
associated with the application objects. You can define include statements, or you can specify
a name on the dsmSendObj function call.
Object size
Tivoli Storage Manager needs to know a size estimate for each object. Consider how your
application estimates the size of an object. An overestimation of the object size is better than
an underestimation.
13
Description
Windows
The message files must be at the same level as the library (DLL). The
Trusted Communication Agent module (dsmtca) is not used.
UNIX or
Linux
The API library, the Trusted Communication Agent module (dsmtca), and
the message files must be at the same level.
The dsmQueryApiVersionEx call returns the version of the API library that is
installed on the end user workstation. You can then compare the returned value
with the version of the API that the application client is using.
The API version number of the application client is entered in the compiled object
code as a set of four constants defined in dsmapitd.h:
14
DSM_API_VERSION
DSM_API_RELEASE
DSM_API_LEVEL
DSM_API_SUB_LEVEL
stVersion;
version;
release;
level;
subLevel;
/*
/*
/*
/*
/*
Structure version
API version
API release
API level
API sub level
*/
*/
*/
*/
*/
dsmApiVersionEx apiLibVer;
memset(&apiLibVer,0x00,sizeof(dsmApiVersionEx));
dsmQueryApiVersionEx(&apiLibVer);
/* check for compatibility problems */
dsInt16_t appVersion= 0, libVersion = 0;
appVersion=(DSM_API_VERSION * 10000)+(DSM_API_RELEASE * 1000) +
(DSM_API_LEVEL * 100) + (DSM_API_SUBLEVEL);
libVersion = (apiLibVer.version * 10000) + (apiLibVer.release * 1000) +
(apiLibVer.level * 100) + (apiLibVer.subLevel);
if (libVersion < appVersion)
{
printf("\n***********************************************************\n");
printf("The TSM API library is lower than the application version\n");
printf("Install the current library version.\n");
printf("*************************************************************\n");
return 0;
}
printf("* API Library Version = %d.%d.%d.%d
apiLibVer.version,
apiLibVer.release,
apiLibVer.level,
apiLibVer.subLevel);
*\n",
15
Using multithreading
The multithreaded API permits applications to create multiple sessions with the
Tivoli Storage Manager server within the same process. The API can be entered
again. Any calls can run in parallel from within different threads.
Note: When you run applications that assume a multithreaded API, use the
dsmQueryAPIVersionEx call.
To run the API in multithreaded mode, set the mtflag value to
DSM_MULTITHREAD on the dsmSetUp call. The dsmSetUp call must be the first call
after the dsmQueryAPIVersionEx call. This call must return before any thread calls
the dsmInitEx call. When all threads complete processing, enter a call to
dsmCleanUp. The primary process should not end before all the threads complete
processing. See callmt1.c in the sample application.
Restriction: The default for the API is single-thread mode. If an application does
not call dsmSetUp with the mtflag value set to DSM_MULTITHREAD, the API
permits only one session for each process.
For UNIX or Linux for versions 3.1.6 through version 4.1.2, you cannot use the
Trusted Communication Agent in multithread mode. If you want to set the
passwordaccess option to generate, you must be an -Authorized user. For version
4.2 and beyond, this is no longer true.
Once dsmSetUp successfully completes, the application can begin multiple threads
and enter multiple dsmInitEx calls. Each dsmInitEx call returns a handle for that
session. Any subsequent calls on that thread for that session must use that handle
value. Certain values are process-wide, environmental variables (values that are set
on dsmSetUp). Each dsmInitEx call parses options again. Each thread can run with
different options by specifying an overwrite file or an options string on the
dsmInitEx call. This enables different threads to go to different servers, or use
different node names.
Recommendation: On HP, set the thread stack to 64K or greater. The default value
of the thread stack (32K) might not be sufficient
To permit application users to have a LAN-free session, use dsmSetUp mtFlag
DSM_MULTITHREAD in your application. This is necessary even if the application is
single threaded. This flag activates the threading necessary for the Tivoli Storage
Manager LAN-free interface.
16
You can use the child process, Trusted Communication Agent (TCA) if the
passwordaccess option is set to generate. When the TCA is used, Tivoli Storage
Manager uses the SIGCLD signal. If your application uses the SIGCLD signal, be
aware of potential interference from Tivoli Storage Manager and how SIGCLD is
used. For more information about using the TCA, see Session security on page
18.
17
Session security
Tivoli Storage Manager, a session-based system, has security components that
permit applications to start sessions in a secure manner. These security measures
prohibit unauthorized access to the server and help to insure system integrity.
Every session that is started with the server must complete a sign-on process,
requires a password. When the password is coupled with the node name of the
client, it insures proper authorization when connecting to the server. The
application client provides this password to the API to start the session.
Two methods of password processing are available: passwordaccess=prompt or
passwordaccess=generate. If you use the passwordaccess=prompt option, you must
include the password value on each dsmInitEx call. Or, you can supply the node
name and owner name on the dsmInitEx call.
Passwords have expiration times associated with them. If a dsmInitEx call fails
with a password-expired return code (DSM_RC_REJECT_VERIFIER_EXPIRED), the
application client must enter the dsmChangePW call using the handle that is returned
by dsmInitEx. This updates the password before the session can be established
successfully. The example in Figure 4 on page 21 demonstrates the procedure to
change a password by using dsmChangePW. The login owner must be root or Tivoli
Storage Manager-Authorized to change the password.
The second method, passwordaccess=generate, encrypts and stores the password
value in a file. The node name and owner name cannot be supplied on the
dsmInitEx call, and the system default values are used. This protects the security of
the password file. When the password expires, the generate parameter creates a
new one and updates the password file automatically.
Note:
1. If two different physical machines have the same Tivoli Storage Manager node
name or multiple paths are defined on one node using several server stanzas,
passwordaccess=generate might only work for the stanza which is used first
after password expiration. During the first client-server contact, the user is
prompted for the same password for each server stanza separately, and for each
18
19
dsmApiVersionEx * apiApplVer;
char
*node;
char
*owner;
char
*pw;
char
*confFile = NULL;
char
*options = NULL;
dsInt16_t
rc = 0;
dsUint32_t
dsmHandle;
dsmInitExIn_t initIn;
dsmInitExOut_t initOut;
char
*userName;
char
*userNamePswd;
memset(&initIn, 0x00, sizeof(dsmInitExIn_t));
memset(&initOut, 0x00, sizeof(dsmInitExOut_t));
memset(&apiApplVer,0x00,sizeof(dsmapiVersionEx));
apiApplVer.version = DSM_API_VERSION; /* Set the applications compile */
apiApplVer.release = DSM_API_RELEASE; /* time version.
*/
apiApplVer.level
= DSM_API_LEVEL;
apiApplVer.subLevel= DSM_API_SUBLEVEL;
printf("Doing signon for node %s, owner %s, with password %s\n", node,owner,pw);
initIn.stVersion = dsmInitExInVersion;
initIn.dsmApiVersionP = &apiApplVer
initIn.clientNodeNameP = node;
initIn.clientOwnerNameP = owner ;
initIn.clientPasswordP = pw;
initIn.applicationTypeP = "Sample-API AIX";
initIn.configfile = confFile;
initIn.options = options;
initIn.userNameP = userName;
initIn.userPasswordP = userNamePswd;
rc = dsmInitEx(&dsmHandle, &initIn, &initOut);
if (rc == DSM_RC_REJECT_VERIFIER_EXPIRED)
{
printf("*** Password expired. Select Change Password.\n");
return(rc);
}
else if (rc)
{
printf("*** Init failed: ");
rcApiOut(dsmHandle, rc); /* Call function to print error message */
dsmTerminate(dsmHandle);
/* clean up memory blocks */
return(rc);
}
20
*/
rc = dsmChangePW(dsmHandle,current_pw,new_pw1);
if (rc)
{
printf("*** Password change failed. Rc =
}
else
{
printf("*** Your new password has been accepted and updated.\n");
}
return 0;
group1
applA
3. Instruct the users of the application to use the TSM-Authorized name to log in.
Tivoli Storage Manager verifies that the login ID matches the application
executable owner before it permits access to the protected password file.
4. Set the passworddir option in the dsm.sys file to point to a directory where this
user has read/write access. For example, enter the following line in the server
stanza of the dsm.sys file:
passworddir /home/user1
5. Create the password file and ensure that the TSM -Authorized user owns the
file.
6. Log on as user1 and run app1A.
7. Call dsmSetUp and pass in argv.
Chapter 3. Considerations for designing an application
21
Where:
v admin_name is the administrative user name.
v password is the admin password.
2. Define the authority level. Users with system or policy authority also have
client owner authority.
Grant Authority admin_name classes authority node
Where:
v admin_name is the administrative user.
v classes is the node.
v authority has one of the following levels of authority:
owner: full backup and restore authority for the node
node: single node
domain: group of nodes
3. Define access to a single node.
Register Node
node_name
password
userid
Where:
v node_name is the client user node
v password is the client user node password
v userid is the administrative user name
When the application uses the administrative user, the dsmInitEx function is called
with the userName and userNamePswd parameters.
dsmInitEx
clientNodeName = NULL
clientOwnerName = NULL
clientPassword = NULL
userName = administrative user name
userNamePswd = administrative user password
You can set the passwordaccess option to generate or prompt. With either
parameter, the userNamePswd value starts the session. When the session starts, any
backup or restore process can occur for that node.
22
23
client should publish its file space names so that end users can identify the objects
for include-exclude statements, if necessary.
Note: On Windows platforms, a drive letter is associated with a file space. When
you register or update a file space, you must supply the drive letter. Because the
include-exclude list refers to the drive letter, you must keep track of each letter and
its associated file space. In the sample program dapismp, the drive letter is set to
"G" by default.
See Chapter 2, Building and running the sample API application, on page 5 for
more information on the sample programs.
Object type
The object type identifies the object as either a file or a directory. A file is an object
that contains both attributes and binary data, and a directory is an object that
contains only attributes.
Table 8 shows what the application client would code is for object names by
platform.
Table 8. Application object name examples by platform
24
Platform
UNIX or Linux
/myfs/highlev/lowlev
Windows
"myvol\\highlev\\lowlev"
Note: On a Windows platform, a double backslash translates into a
single backslash, because a backslash is the escape character. File space
names start with a slash on the UNIX or Linux platform, but do not
start with a slash on the Windows platform.
Object owner
User access
(empty string)
Yes
NULL
Specific name
Yes
Specific name
(empty string)
No
Specific name
Same name
Yes
Specific name
Different name
No
Type
Node
User
Path
Backup
Node B
User B
/db/*/*
These options are set for this session. Any queries access the file spaces, and files
of Node A. Backups and archives are not permitted. Only query, restore, and
retrieve processes are permitted from the file spaces for which User B has access. If
the application tries to execute any operation using a dsmBeginTxn (for examples,
backup or update) while signed in with a -fromnode or -fromowner option set, then
Chapter 3. Considerations for designing an application
25
Definition
fstype
The file space type. This field is a character string that the
application client sets.
fsAttr[platform].fsInfo
capacity
occupancy
backStartDate
The time stamp when the latest backup started (set by sending a
dsmUpdateFS call).
backCompleteDate
Using capacity and occupancy depends on the application client. Some applications
might not need information about the size of the file space, in which case these
fields can default to 0. For more information about querying file spaces, see
Querying the Tivoli Storage Manager system on page 33.
After a file space is registered with the system, you can back up or archive objects
at any time. To update the occupancy and the capacity fields of the file space after
26
a backup or archive operation, call dsmUpdateFS. This call ensures that the values
for the occupancy and capacity of the file system are current. You can also update
the fsinfo, backupstart, and backupcomplete fields.
If you want to monitor your last backup dates, enter a dsmUpdateFS call before you
start the backup. Set the update action to DSM_FSUPD_BACKSTARTDATE. This
forces the server to set the backStartDate field of the file space to the current time.
After the backup is complete for that file space, enter a dsmUpdateFS call with the
update action that is set to DSM_FSUPD_BACKCOMPLETEDATE. This call creates
a time stamp on the end of the backup.
If a file space is no longer needed, you can delete it with the dsmDeleteFS
command. On the UNIX or Linux platform, only the root user or TSM-authorized
user can delete file spaces.
The examples in Figure 5 demonstrate how to use the three file space calls for
UNIX or Linux. For an example of how to use the three file space calls for
Windows, see the sample program code that is installed on your system.
/*
dsInt16
regFSData
char
char
*/
rc;
fsData;
fsName[DSM_MAX_FSNAME_LENGTH];
smpAPI[] = "Sample-API";
strcpy(fsName,"/home/tallan/text");
memset(&fsData,0x00,sizeof(fsData));
fsData.stVersion = regFSDataVersion;
fsData.fsName = fsName;
fsData.fsType = smpAPI;
strcpy(fsData.fsAttr.unixFSAttr.fsInfo,"Sample API FS Info");
fsData.fsAttr.unixFSAttr.fsInfoLength =
strlen(fsData.fsAttr.unixFSAttr.fsInfo) + 1;
fsData.occupancy.hi=0;
fsData.occupancy.lo=100;
fsData.capacity.hi=0;
fsData.capacity.lo=300;
rc = dsmRegisterFS(dsmHandle,fsData);
if (rc == DSM_RC_FS_ALREADY_REGED) rc = DSM_RC_OK;
if (rc)
{
printf("Filespace registration failed: ");
rcApiOut(dsmHandle, rc);
free(bkup_buff);
return (RC_SESSION_FAILED);
}
/* already done */
27
updFilespace;
/* for update FS */
updFilespace.stVersion = dsmFSUpdVersion;
updFilespace.fsType = 0;
/* no change */
updFilespace.occupancy.hi = 0;
updFilespace.occupancy.lo = 50;
updFilespace.capacity.hi = 0;
updFilespace.capacity.lo = 200;
strcpy(updFilespace.fsAttr.unixFSAttr.fsInfo,
"My update for filespace") ;
updFilespace.fsAttr.unixFSAttr.fsInfoLength =
strlen(updFilespace.fsAttr.unixFSAttr.fsInfo);
updAction = DSM_FSUPD_FSINFO |
DSM_FSUPD_OCCUPANCY |
DSM_FSUPD_CAPACITY;
rc = dsmUpdateFS (handle,fsName,&updFilespace,updAction);
printf("dsmUpdateFS rc=%d\n", rc);
/*
*/
28
Description
Management Class
The name of the management class that was bound to the object. The application client can
send the dsmBeginQuery call to determine all attributes of this management class.
Informs you if a backup copy group exists for this management class. If a backup
operation is being performed and a backup copy group does not exist, this object cannot
be sent to Tivoli Storage Manager storage. You receive an error code if you attempted to
send it using the dsmSendObj call.
Backup Copy
Destination
This field identifies the Tivoli Storage Manager storage pool to which the data is sent. If
you are performing a multiple object backup transaction, all copy destinations within that
transaction must be the same. If an object has a different copy destination than previous
objects in the transaction, end the current transaction and begin a new transaction before
you can send the object. You receive an error code if you attempt to send objects to
different copy destinations within the same transaction.
Informs you if an archive copy group exists for this management class. If an archive
operation is being performed and an archive copy group does not exist, this object cannot
be sent to Tivoli Storage Manager storage. You receive an error code if you attempted to
send it using the dsmSendObj call.
Archive Copy
Destination
This field identifies the Tivoli Storage Manager storage pool to which the data are sent. If
you are performing a multiple object archive transaction, all copy destinations within that
transaction must be the same. If an object has a different copy destination than previous
objects in the transaction, end the current transaction and begin a new transaction before
you send the object. You receive an error code if you attempt to send objects to different
copy destinations within the same transaction.
29
send_type;
dsmHandle;
objName;
/* structure containing the object name
MCBindKey; /* management class information
*dest;
/* save destination value
*/
*/
*/
switch (send_type)
{
case (Backup_Send) :
rc = dsmBindMC(dsmHandle,&objName,stBackup,&MCBindKey);
dest = MCBindKey.backup_copy_dest;
break;
case (Archive_Send) :
rc = dsmBindMC(dsmHandle,&objName,stArchive,&MCBindKey);
dest = MCBindKey.archive_copy_dest;
break;
default : ;
}
if (rc)
{
printf("*** dsmBindMC failed: ");
rcApiOut(dsmHandle, rc);
rc = (RC_SESSION_FAILED);
return;
}
30
31
SERVERNAME srvr1.ret
TCPPORT
TCPSERVERADDRESS
COMMMETHOD
ENABLEARCHIVERETENTIONPROTECTION
1500
node.domain.company.com
TCPIP
YES
32
PENDING state, and get the object ID. In a pending state, the retentionInitiated
field in the qryRespArchiveData structure indicates DSM_ARCH_RETINIT_PENDING.
5. Issue a dsmBeginTxn call, then issue a dsmRetentionEvent call with the list of
objects, followed by a dsmEventType: eventRetentionActivate call. If the
number of objects exceeds the value of maxObjPerTxn, use multiple transactions.
Restriction: You can issue only one dsmRetentionEvent call per transaction.
6. Query the objects to confirm that the retention is activated. If retention is
initiated, the retentionInitiated field in the qryRespArchiveData structure has
a value of I.
33
dsmBeginQuery
dsmEndQuery
In Query
dsmGetNextQObj
Figure 9. State diagram for general queries
dsmBeginQuery
More
objects?
No
dsmEndQuery
Yes
dsmGetNextQObj
34
dsInt16
qryMCData
DataBlk
qryRespMCDetailData
char
dsBool_t
dsUint32_t
rc;
qMCData;
qData;
qRespMCData, *mcResp;
*mc, *s;
done = bFalse;
qry_item;
*/
*/
*/
*/
/* Set parameters
qData.stVersion =
qData.bufferLen =
qData.bufferPtr =
*/
qRespMCData.stVersion = qryRespMCDetailDataVersion;
Server efficiency
Use these guidelines when you retrieve from, or send objects to, the Tivoli Storage
Manager server.
v When you retrieve objects from the Tivoli Storage Manager server, follow these
guidelines:
Chapter 3. Considerations for designing an application
35
Retrieve data in the restore order that is provided by the Tivoli Storage
Manager server. The restore order is especially important for tape devices,
because retrieving data that is not ordered can result in tape rewinds and
mounts.
Even when data is stored on a disk device, you can save time when the
retrieves are ordered.
Perform as much work as possible in a single Tivoli Storage Manager server
session.
Do not start and stop multiple sessions.
v When you send objects to the Tivoli Storage Manager server, follow these
guidelines:
Send multiple objects in a single transaction.
Avoid sending one object per transaction, especially when the data is sent
directly to a tape device. Part of the tape device transaction is to ensure that
the data in the RAM buffers of the tape is written to media.
Related concepts:
Selecting and sorting objects by restore order on page 65
Related information:
Starting or ending a session on page 17
36
Tivoli Storage Manager limits the number of objects that can be sent in a multiple
object transaction. To find this limit, call dsmQuerySessInfo and examine the
maxObjPerTxn field. This field displays the value of the TXNGroupmax option that is
set on your server.
The application client must keep track of the objects sent within a transaction to
perform retry processing or error processing if the transaction ends prematurely.
Either the server or the client can stop a transaction at any time. The application
client must be prepared to handle sudden transaction ends that it did not start.
File aggregation
Tivoli Storage Manager servers use a function that is called file aggregation. With
file aggregation, all objects sent in a single transaction are stored together, which
saves space and improves performance. You can still query and restore the objects
separately.
To use this function, all of the objects in a transaction should have the same file
space name. If the file space name changes within a transaction, the server closes
the existing aggregated object and begins a new one.
Simultaneous-write operations
You can configure Tivoli Storage Manager server storage pools to write
simultaneously to a primary storage pool and copy storage pool or pools during a
backup or archive. Use this configuration to create multiple copies of the object.
If a simultaneous-write operation fails, the return code on the dsmEndTxn function
might be DSM_RC_ABORT_STGPOOL_COPY_CONT_NO, which indicates that the write to
one of the copy storage pools failed, and the Tivoli Storage Manager storage pool
option COPYCONTINUE was set to NO. The application terminates and the problem
must be resolved by the Tivoli Storage Manager server administrator.
For more information about setting up simultaneous-write operations, see Tivoli
Storage Manager Administrator's Guide.
37
Description
tcpbuffsize
Specifies the size of the TCP buffer. The default value is 31 KB. To
enhance performance, set the value to 32 KB.
tcpnodelay
API parameter
Description
DataBlk
Each dsmSendData call is synchronous and does not return until the data
transferred to the API in the dataBlkPtr is flushed to the network. The API adds a
4-byte overhead to each transaction buffer that is placed on the network.
For example, when the transaction buffer size is 32 KB and the application DataBlk
buffer size is 31 KB, then each application DataBlk buffer fits in a communications
buffer and can be flushed immediately. However, if the application DataBlk buffer
is exactly 32 KB, and because the API is adding 4 bytes per transaction buffer, two
flushes are required; one of 32 KB and one of 4 bytes. Also, if you set the
tcpnodelay option to no, flushing the 4 bytes might take up to 200 milliseconds.
38
PERFMONTCPSERVERADDRESS
The PERFMONTCPSERVERADDRESS option specifies the host name or IP address
of the system where the client performance monitor is installed.
Supported clients
This option is platform independent and is supported for all clients.
Options file
Set this option in the client options file (dsm.opt or dsm.sys).
Syntax
PERFMONTCPServeraddress server
Parameters
server
The server host name or IP address of the system that has the client
performance monitor installed (this is the same server that runs the
Administration Center).
Examples
Options file:
PERFMONTCPSERVERADDRESS 131.222.10.5
Command line:
This option cannot be set using the command line.
39
PERFMONTCPPORT
The port number that the client performance monitor listens on for performance
data from the clients.
Supported clients
This option is platform independent and is supported for all clients.
Options file
Set this option in the client options file (dsm.opt or dsm.sys).
Syntax
5129
PERFMONTCPPort
port
Parameters
port
The port that is monitored for client performance data. Port 5129 is the default
port.
Examples
Options file:
PERFMONTCPPPORT 5000
Command line:
This option cannot be set using the command line.
PERFMONCOMMTIMEOUT
Specifies the maximum time, in seconds, that the dsmTerminate call waits for
performance data to arrive after a session is ended.
Supported clients
This option is platform independent and is supported for all clients.
Options file
Set this option in the client options file (dsm.opt or dsm.sys).
Syntax
30
PERFMONCOMMtimeout
seconds
Parameters
seconds
The time to wait for remaining performance data to arrive, before ending the
session.
40
Examples
Options file:
PERFMONCOMMTIMEOUT 60
Command line:
This option cannot be set using the command line.
41
Description
VEREXISTS
VERDELETED
RETEXTRA
RETONLY
If backup versions each have a unique name, such as using a time stamp in the
name, then versioning does not happen automatically: every object is active. Active
objects never expire, so an application would be responsible for deactivating these
with the dsmDeleteObj call. In this situation, the application would need the
deactivated objects to expire as soon as possible. The user would define a backup
copy group with VERDELETED=0 and RETONLY=0.
The archive component of the Tivoli Storage Manager system permits objects to be
stored on the server with retention or expiration period controls instead of version
control. Each object stored is unique, even though its name might be the same as
an object already archived. Archive objects have a description field associated with
the metadata that can be used during query to identify a specific object.
Every object on a Tivoli Storage Manager server is assigned a unique object ID.
The persistence of the original value is not guaranteed during the life of an object
(specifically, after an export or import). Therefore, an application should not query
and save the original object ID for use on later restores. Rather, an application
should save the object name and insert date. You can use this information during a
restore to query objects and verify the insert date. Then, the current object ID can
be used to restore the object.
Compression
Configuration options on a given node and the dsmSendObj objCompressed option,
determine whether Tivoli Storage Manager compresses the object during a send.
Also, objects with a sizeEstimate less than DSM_MIN_COMPRESS_SIZE are never
compressed.
If the object is compressed already (objCompressed=bTrue), it is not compressed
again. If it is not compressed, Tivoli Storage Manager decides whether to compress
the object, based on the values of the compression option that is set by the Tivoli
Storage Manager administrator and that is set in the API configuration sources.
The Tivoli Storage Manager server administrator can affect compression behavior
with the register node command (compression=yes, no, or client-determined). If
this is client-determined, then the compression behavior is determined by the
compression option value in the configuration sources.
Some types of data, such as data that is already compressed, might actually get
bigger when processed with the compression algorithm. When this happens, the
return code DSM_RC_COMPRESS_GREW is generated. If you realize that this
might happen, but you want the send operation to continue anyway, tell the end
users to specify the following option in their options file:
COMPRESSAlways Yes
42
The dsmRequestBuffer function can be called multiple times, up to the value that is
specified by the numTsmBuffers option. An application can have two threads: a
producer thread that fills buffers with data; and a consumer thread that sends
those buffers to Tivoli Storage Manager with the dsmSendBufferData call. When a
dsmRequestBuffer call is issued and the numTsmBuffers is reached, the
dsmRequestBuffer call blocks until a buffer is released. The buffer release can
happen by either calling dsmSendBufferData, which sends and releases a buffer or
by calling dsmReleaseBuffer. For more information, see callbuff.c in the API
sample directory.
Chapter 3. Considerations for designing an application
43
If at any point there is a failure in the send, the application must release all the
buffers that are held and terminate the session. For example:
If failure
for each TSM buffer held by application
call dsmReleaseBuffer
dsmTerminate
If an application calls dsmTerminate and a buffer is still held, the API does not exit.
The following code is returned: DSM_RC_CANNOT_EXIT_MUST_RELEASE_BUFFER. If the
application cannot release the buffer, the application must exit the process to force
a cleanup.
44
...process data...
dsmReleaseBuffer
dsmEndGetObj
dsmEndGetData
API encryption
Two methods are available to encrypt data: application-managed encryption and
Tivoli Storage Manager client encryption.
Select and use only one of these methods to encrypt data. The methods are
mutually exclusive and if you encrypt data by using both methods, you will be
unable to restore or retrieve some data. For example, assume that an application
uses application-managed encryption to encrypt object A, and then uses Tivoli
Storage Manager client encryption to encrypt object B. During a restore operation,
if the application sets the option to use Tivoli Storage Manager client encryption
and it tries to restore both objects, only object B can be restored; object A cannot be
restored because it was encrypted by the application, not by the client.
Regardless of the encryption method that is used, the Tivoli Storage Manager must
enable password authentication. By default, the server uses SET AUTHENTICATION
ON.
|
|
|
|
|
|
The API uses either AES 128-bit or AES 256-bit encryption. AES 256-bit data
encryption provides a higher level of data encryption than AES 128-bit data
encryption. Files that are backed up by using AES 256-bit encryption cannot be
restored with an earlier client. Encryption can be enabled with or without
compression. If you use encryption, you cannot use the partial object restore and
retrieve and buffer copy elimination functions.
Application-managed encryption
With application-managed encryption, the application provides the key password
to the API (using key DSM_ENCRYPT_USER) and it is the application's
responsibility to manage the key password.
Remember: If the encryption key is not saved, and you forgot the key, your data
is unrecoverable.
The application provides the key password in the dsmInitEx call and must provide
the proper key password at restore time.
Chapter 3. Considerations for designing an application
45
Note: If the key password is lost, there is no way to restore the data.
The same key password must be used for backup and restore (or archive and
retrieve) of the same object. This method does not have a Tivoli Storage Manager
server level dependency. To set up this method, the application needs to follow
these steps:
1. Set the bEncryptKeyEnabled variable to bTrue in the call to dsmInitEx, and set
the encryptionPasswordP variable to point to a string with the encrypt key
password.
2. Set the include.encrypt for the objects to encrypt. For example, to encrypt all
data, set:
include.encrypt /.../* (UNIX)
and
include.encrypt *\...\* (Windows)
3. Set ENCRYPTKEY=PROMPT|SAVE in the option string that is passed to the API in the
dsmInitEx call on Windows. This option can also be set in dsm.opt (Windows)
or dsm.sys (UNIX or Linux).
Note: By default, the encryptkey option is set to prompt. This setting ensures that
the key does not get stored automatically. If encryptkey save is specified, the key is
stored by Tivoli Storage Manager on the local machine but then only one key can
be valid for all Tivoli Storage Manager operations with the same node name.
After a send of an object, the dsmEndSendObjEx specifies whether an object was
encrypted and which method was used. Possible values in the encryptionType
field:
v DSM_ENCRYPT_NO
v DSM_ENCRYPT_USER
v DSM_ENCRYPT_CLIENTENCRKEY
The following table lists the API encryption types, prerequisites, and functions
available.
Table 13. API encryption types, prerequisites, and functions available
|
|
|
Type
Prerequisite
Function available
ENCRYPTIONTYPE
None
EncryptKey=save
None
EncryptKey=prompt
None
EncryptKey=generate
None
EnableClientEncryptKey
None
API only
Note: It is advised that the server has authentication turned ON. If authentication is
turned OFF, the key is not encrypted, but the data is still encrypted. However, this
is not recommended.
Table 14 on page 47 shows how both Authorized Users and non-Authorized Users
can encrypt or decrypt data during a backup or restore operation, depending on
the value that is specified for the passwordaccess option. The TSM.PWD file must
exist to perform the following authorized-user and non-authorized-user operations.
46
The authorized user creates the TSM.PWD file and sets the encryptkey option to
save and the passwordaccess option to generate.
Table 14. Encrypting or decrypting data with application managed key on UNIX or Linux
Operation
Authorized
user backup
Authorized
user restore
Nonauthorized
user backup
Nonauthorized
user restore
passwordaccess
option
encryptkey option
Result
generate
save
Data encrypted.
generate
prompt
prompt
save
prompt
prompt
generate
save
Data encrypted.
generate
prompt
prompt
save
prompt
prompt
generate
save
Data encrypted.
generate
prompt
prompt
save
prompt
prompt
generate
save
Data encrypted.
generate
prompt
prompt
save
prompt
prompt
47
This is the simpler method to implement, where one random encryption key is
generated per session and it is stored on the Tivoli Storage Manager server with
the object in the server database. During restore, the stored key is used for
decryption. Using this method, the management of the key is the responsibility of
Tivoli Storage Manager, and the application does not have to deal with the key at
all. It is also important to note that since the key is stored in the server database, it
is always required to have a valid Tivoli Storage Manager database for a restore of
an encrypted object. When the key is transmitted between the API and the server,
it is also encrypted. The transmission of the key is secure, and when the key is
stored in the Tivoli Storage Manager server database it is encrypted. The only time
that the key is placed in the clear with the export data stream is when a node's
data are exported between servers.
To enable Tivoli Storage Manager client encryption, do the following things:
1. Specify -ENABLECLIENTENCRYPTKEY=YES in the option string that is passed to the
API on the dsmInitEx call or set the option in the system option file dsm.opt
(Windows) or dsm.sys (UNIX or Linux).
2. Set the include.encrypt for the objects to encrypt. For example, to encrypt all
data, set:
include.encrypt /.../* (UNIX)
and
include.encrypt *\...\* (Windows)
Data deduplication
Data deduplication is a method of reducing storage needs by eliminating
redundant data.
Overview
Two types of data deduplication are available on Tivoli Storage Manager: client-side
data deduplication and server-side data deduplication.
Client-side data deduplication is a data deduplication technique that is used on the
backup-archive client to remove redundant data during backup and archive
processing before the data is transferred to the Tivoli Storage Manager server.
Using client-side data deduplication can reduce the amount of data that is sent
over a local area network.
Server-side data deduplication is a data deduplication technique that is done by the
server. The Tivoli Storage Manager administrator can specify the data
deduplication location (client or server) to use with the DEDUP parameter on the
REGISTER NODE or UPDATE NODE server command.
Enhancements
With client-side data deduplication, you can:
v Exclude specific files on a client from data deduplication.
v Enable a data deduplication cache that reduces network traffic between the
client and the server. The cache contains extents that were sent to the server in
previous incremental backup operations. Instead of querying the server for the
existence of an extent, the client queries its cache.
48
Specify a size and location for a client cache. If an inconsistency between the
server and the local cache is detected, the local cache is removed and
repopulated.
Note: For applications that use the Tivoli Storage Manager API, the data
deduplication cache must not be used because of the potential for backup
failures caused by the cache being out of sync with the Tivoli Storage Manager
server. If multiple, concurrent Tivoli Storage Manager client sessions are
configured, there must be a separate cache configured for each session.
v Enable both client-side data deduplication and compression to reduce the
amount of data that is stored by the server. Each extent is compressed before it
is sent to the server. The trade-off is between storage savings and the processing
power that is required to compress client data. In general, if you compress and
deduplicate data on the client system, you are using approximately twice as
much processing power as data deduplication alone.
The server can work with deduplicated, compressed data. In addition,
backup-archive clients earlier than V6.2 can restore deduplicated, compressed
data.
Client-side data deduplication uses the following process:
v The client creates extents. Extents are parts of files that are compared with other
file extents to identify duplicates.
v The client and server work together to identify duplicate extents. The client
sends non-duplicate extents to the server.
v Subsequent client data-deduplication operations create new extents. Some or all
of those extents might match the extents that were created in previous
data-deduplication operations and sent to the server. Matching extents are not
sent to the server again.
Benefits
Client-side data deduplication provides several advantages:
v It can reduce the amount of data that is sent over the local area network (LAN).
v The processing power that is required to identify duplicate data is offloaded
from the server to client nodes. Server-side data deduplication is always enabled
for deduplication-enabled storage pools. However, files that are in the
deduplication-enabled storage pools and that were deduplicated by the client,
do not require additional processing.
v The processing power that is required to remove duplicate data on the server is
eliminated, allowing space savings on the server to occur immediately.
Client-side data deduplication has a possible disadvantage. The server does not
have whole copies of client files until you back up the primary storage pools that
contain client extents to a non-deduplicated copy storage pool. (Extents are parts of
a file that are created during the data-deduplication process.) During storage pool
backup to a non-deduplicated storage pool, client extents are reassembled into
contiguous files.
By default, primary sequential-access storage pools that are set up for data
deduplication must be backed up to non-deduplicated copy storage pools before
they can be reclaimed and before duplicate data can be removed. The default
ensures that the server has copies of whole files at all times, in either a primary
storage pool or a copy storage pool.
49
Important: For further data reduction, you can enable client-side data
deduplication and compression together. Each extent is compressed before it is sent
to the server. Compression saves space, but it increases the processing time on the
client workstation.
The following options pertain to data deduplication:
v
v
v
v
v
v
Deduplication
Dedupcachepath
Dedupcachesize
Enablededupcache
Exclude.dedup
Include.dedup
50
51
Related reference:
Deduplication option
52
53
Application failover
When the Tivoli Storage Manager server becomes unavailable because of an
outage, applications that use the API can automatically fail over to a secondary
server for data recovery.
The Tivoli Storage Manager server that the client and API connects to during
normal production processes is called the primary server. When the primary server
is set up for node replication, that server is also known as the source replication
server. The client node data on the source replication server can be replicated to the
target replication server. This server is also known as the secondary server, and is the
server that the client automatically fails over to when the primary server fails.
The client and API must be configured for automated client failover, and must
connect to a Tivoli Storage Manager V7.1 server that replicates client node data.
The configuration for the API is the same as the configuration for the
backup-archive client.
During normal operations, connection information for the secondary server is
automatically sent to the client from the primary server during the logon process.
The secondary server information is automatically saved to the client options file.
Each time the client application logs on to the Tivoli Storage Manager server, it
attempts to contact the primary server. If the primary server is unavailable, the
application automatically fails over to the secondary server by using the secondary
server information in the client options file. In failover mode, the application can
query the secondary server and restore or retrieve replicated data.
You must back up the application at least one time to the primary server. The API
can fail over to the secondary server to recover data only if the data from the client
node was replicated from the primary server to the secondary server.
For more information about automated client failover, see "Automated client
failover configuration and use" in IBM Knowledge Center at: (http://
www.ibm.com/support/knowledgecenter/SSGSG7_7.1.1/com.ibm.itsm.client.doc/
c_cfg_autoclientfailover.html).
54
Status information
Type
Definition
lastReplStartDate
Type
Definition
lastReplCmpltDate
lastBackOpDateFromServer
lastBackOpDateFromLocal
55
query session
dsmQuerySessInfo Values:
Server Information:
Server name
: TARGET
Server Host
: 123.45.6.79
Server port
: 1500
Server date
: 2013/5/21 14:13:32
Server type
: Windows
Server version: 7.1.0.0
Server Archive Retention Protection : NO
Replication Server Infomation
Home Server name
: MINE
Replication Server name : TARGET
Host
: 123.45.6.79
Port
: 1501
Fail over status
: Connected to replication server
Client Information:
Client node type
: Unix
Client filespace delimiter: /
Client hl & ll delimiter : /
Client compression
: Client determined (3u)
Client archive delete
: Client can delete archived objects
Client backup delete
: Client CANNOT delete backup objects
Maximum objects in multiple object transactions: 4096
Lan free Enabled
: NO
Deduplication
: Server Only
General session info:
Node
: KHOYT
Access Node
:
Owner
:
API Config file:
Policy Information:
Domain name
: STANDARD
Policyset name
: STANDARD
Policy activation date
: 0/0/0 0:0:0
Default management class
: STANDARD
Backup retention grace period : 30 days
Archive retention grace period: 365 days
2013/5/21 21:3:2
2013/5/21 21:3:3
Server
Last backup store date
: 2013/5/21 21:18:25
Last archive store date : 0/0/0 0:0:0
Last HSM store date
: 0/0/0 0:0:0
FSINFO : Sample API FS Info
Related reference:
dsmGetNextQObj on page 105
56
Local
2013/5/21 21:18:25
0/0/0 0:0:0
0/0/0 0:0:0
dsmBeginTxn
dsmBindMC *
dsmDeleteObj
In Transaction
dsmSendObj
dsmEndSendObj
dsmEndSendObjEx
In Send Object
dsmSendData
* May be inside or outside of a transaction
57
Start
dsmBeginTxn
Yes
BindMC
Done?
Yes
No
More
objects?
No
Idle
State
dsmBindMC
Yes
Send
Object?
No
More
objects
in txn?
No
dsmEndTxn
Yes
dsmSendObj
More
data?
No
dsmEndSendObj
Yes
dsmSendData
The primary feature in these two diagrams is the loop between the following API
calls from within a transaction:
v
v
v
v
dsmBindMC
dsmSendObj
dsmSendData
dsmEndSendObj
The dsmBindMC call is unique in that you can start it from inside or outside of a
transaction boundary. You can also start it from a different transaction, if required.
The only requirement for the dsmBindMC call is that it is made prior to backing up
or archiving an object. If the object that you are backing up or archiving is not
associated with a management class, an error code is returned from dsmSendObj. In
this situation, the transaction is ended by calling dsmEndTxn (this error condition is
not shown in the flowchart).
The flowchart illustrates how an application would use multiple object
transactions. It shows where decision points can be placed to determine if the
object that is sent fits within the transaction or whether to start a new transaction.
58
59
if ((rc = dsmBeginTxn(dsmHandle)) )
{
printf("*** dsmBeginTxn failed: ");
rcApiOut(dsmHandle, rc);
return;
}
*/
*/
*/
*/
File grouping
The Tivoli Storage Manager API has a logical file grouping protocol that relates
several individual objects together. You can reference and manage these groups as
a logical group on the server. A logical group requires that all group members and
the group leader belong to the same node and file space on the server.
60
Each logical group has a group leader. If the group leader is deleted, the group is
deleted. You cannot delete a member that is part of a group. Expiration of all
members in a group is dependent on the group leader. For example, if a member is
marked for expiration, the member does not expire unless the group leader
expires. However, if a member is not marked for expiration, and the group leader
is expired, then all members are expired.
File groups contain backup data only, and cannot contain archive data. Archive
objects can use the Archive Description field to facilitate a type of grouping if
required by an application.
The dsmGroupHandler call groups the operations. The dsmGroupHandler function
must be called from within a transaction. Most group error conditions are caught
on either the dsmEndTxnl or dsmEndTxnEx calls.
The out structure in dsmEndTxnEx includes a new field, groupLeaderObjId. This field
contains the object ID of the group leader if a group was opened in that
transaction. You can create a group across more than one transaction. A group is
not committed, or saved, on the server until a close is performed. The
dsmGroupHandler is an interface that can accept five different operations. They
include:
v DSM_GROUP_ACTION_OPEN
v DSM_GROUP_ACTION_CLOSE
v DSM_GROUP_ACTION_ADD
v DSM_GROUP_ACTION_ASSIGNTO
v DSM_GROUP_ACTION_REMOVE
Table 16 lists the dsmGroupHandler function call actions:
Table 16. dsmGroupHanlder functions
Action
Description
OPEN
The OPEN action creates a group. The next object that is sent becomes the
group leader. The group leader cannot have content. All objects after the
first object become members that are added to the group. To create a
group, open a group and pass in a unique string to identify the group.
This unique identifier allows several groups with the same name to be
opened. After the group is opened, the next object that is sent is the group
leader. All other objects that are sent are group members.
CLOSE
The CLOSE action commits and saves an open group. To close the group,
pass in the object name and the unique string that is used in the open
operation. The application must check for open groups and, if necessary,
close or delete the groups. A group is not committed or saved until the
group is closed. A CLOSE action fails in the following conditions:
v The group that you are trying to close has the same name as an existing
open group.
v A management class incompatibility exists between the current closed
group and the new group to be closed of the same name. In this case,
complete the following steps:
1. Query the previous closed group.
2. If the management class of the existing closed group is different
from the management class associated with the current open group,
issue a dsmUpdateObject with type DSM_BACKUPD_MC. This
command updates the existing group to the new management class.
3. Issue the CLOSE action.
61
Description
ADD
The ADD action appends an object to a group. All objects that are sent
after the ADD action are assigned to the group.
ASSIGNTO
The ASSIGNTO action permits the client to assign objects that exist on the
server to the declared peer group. This transaction sets up the PEER group
relationship. The ASSIGNTO action is similar to the ADD action, with the
following exceptions:
v The ADD action applies to objects within an in-flight transaction.
v The ASSIGNTO action applies to an object that is on the server.
REMOVE
groupLeaderObjId.lo
objType
Result
NULL
grpLdrObjId.hi
grpLdrObjId.lo
grpLdrObjId.hi
grpLdrObjId.lo
objType
62
dsmBeginTxn
dsmGroupHandler (PEER, OPEN, leader, uniqueId)
dsmBeginSendObj
dsmEndSendObj
dsmEndTxnEx (With objId of leader)
Loop for multiple txns
{
dsmBeginTxn
dsmGroupHandler (PEER, ADD, member, groupLeaderObjID)
Loop for multiple objects
{
dsmBeginSendObj
Loop for data
{
dsmSendData
}
dsmEndSendObj
}
dsmEndTxn
}
dmBeginTxn
dsmGroupHandler(CLOSE)
dsmEndTxn
For a code example, see the sample group program dsmgrp.c that is included in
the API sampsrc directory.
The byte offset into the object from which to begin returning data.
Chapter 3. Considerations for designing an application
63
64
Description
copyId
restoreOrderExt
You must keep some or all of the query information for later processing. Keep the
copyId and restoreOrderExt fields because they are needed for the actual restore
operation. You must also keep any other information needed to open a data file or
identify a destination.
Call dsmEndQuery to finish the query operation.
SortOrder;
===================================================================
Chapter 3. Considerations for designing an application
65
66
67
dsmEndGetData
In Get Data
dsmGetObj
dsmEndGetObj
In Get Object
dsmGetData
Figure 17. State diagram for restore and retrieve operations
68
Start
Idle
State
No
Sort desired objects
by restore order
Yes
Another
list?
dsmBeginGetData
dsmGetObj
Yes
No
More
data?
dsmEndGetObj
More
objects?
No
dsmEndGetData
Yes
dsmGetData
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
69
case (Restore_Get) :
rc = dsmBeginGetData(dsmHandle,bFalse,gtBackup,&getList);
break;
case (Retrieve_Get) :
rc = dsmBeginGetData(dsmHandle,bFalse,gtArchive,&getList);
break;
default : ;
}
if (rc)
{
printf("*** dsmBeginGetData failed: ");
rcApiOut(dsmHandle, rc);
return rc;
}
/* Get each object from the list and verify whether it is on the */
/* server. If so, initialize structures with object attributes for */
/* data validation checks. When done, call dsmGetObj.
*/
rc = dsmGetObj(dsmHandle,objId,&dataBlk);
done = bFalse;
while(!done)
{
if (
(rc == DSM_RC_MORE_DATA)
|| (rc == DSM_RC_FINISHED))
{
if (rc == DSM_RC_MORE_DATA)
{
dataBlk.numBytes = 0;
rc = dsmGetData(dsmHandle,&dataBlk);
}
else
done = bTrue;
}
else
{
printf("*** dsmGetObj or dsmGetData failed: ");
rcApiOut(dsmHandle, rc);
done = bTrue;
}
} /* while */
rc = dsmEndGetObj(dsmHandle);
/* check rc from dsmEndGetObj */
/* check rc from dsmEndGetData */
rc = dsmEndGetData(dsmHandle);
return 0;
70
To select a backup object, set dsmSendType to stBackup. For backed-up objects, only
the active copy is updated.
For a backed-up object, the application can update the following fields:
v Management class
v Object information
v Owner
Logging events
An API application can log event messages to central locations. The application can
direct logging to the Tivoli Storage Manager server, the local machine, or both. The
dsmLogEventEx function call is performed in a session. To view messages logged on
the server, use the query actlog command through the administrative client.
Use the Tivoli Storage Manager client option, errorlogretention, to prune the
client error log file if the application writes numerous client messages to the client
log dsmLogType, either logLocal or logBoth.
For more information about Tivoli Storage Manager logs, see the Tivoli Storage
Manager Administrator's Reference.
71
72
dsmSetUp
dsmCleanUp
dsmQueryCliOptions (optional)
dsmQueryApiVersion
dsmInit
or dsmInitEx
dsmTerminate
dsmReleaseBuffer
dsmQuerySessOptions
dsmRegisterFS
dsmBindMC
dsmUpdateFS
dsmDeleteFS
dsmChangePW
In
Session
dsmQuerySessInfo
dsmSetAccess
dsmQueryAccess
dsmLogEvent
dsmLogEventEx
dsmDeleteAccess
dsmUpdateObj
dsmUpdateObjEx
dsmBeginTxn
dsmEndTxn
dsmBeginGetData
dsmEndTxnEx
dsmBindMc*
dsmGroupHandler
In
Transaction
dsmRenameObj
dsmEndGetData
dsmEndGetDataEx
dsmBeginQuery dsmEndQuery
In Query
dsmDeleteObj
dsmSendObj dsmEndSendObj or
dsmEndSendObjEx
In
Send Object
dsmSendData
dsmGetObj
dsmEndGetObj
dsmGetNextQObj
In Get Object
dsmGetData
dsmReleaseBuffer
dsmRequestBuffer
dsmSendBufferData
dsmGetBufferData
73
74
75
When you refer to /a, objects that are related only to file space /a are displayed. To
view objects that are related to /a/b, you must specify /a/b as the file space name.
After you register both file spaces, if you back up object b into file space /a, then a
query for /a/b continues to display objects that are related only to file space /a/b.
The exception to this restriction occurs in file space references when you attempt to
query or delete file spaces with the API. In both cases, the file space names do not
have to be fully qualified if you use a wildcard character. For example, /a* refers
to both /a and /a/b.
Tip: If interoperability is important for you, then avoid file space names that
overlap.
On Windows systems, enclose file space names in braces { } for API objects when
you access the objects from the backup-archive command line interface. Windows
operating systems automatically place file space names in uppercase letters when
you register or refer the names. However, this automatic function does not occur
for the remainder of the object name specification. If you want full interoperability,
place the high-level qualifier and the low-level qualifier in uppercase letters in the
application when you back up API objects. If your application does not uppercase
high-level qualifiers (directory names) and low-level qualifiers (file names) before it
sends objects to the server, you will be unable to access the objects directly by
name through the backup-archive client.
For example, if an object is stored on the server as {"FileSpacename"}\TEST\
MYDIRNAME\file.txt, you cannot directly restore or query the file.txt object
because your application did not uppercase the file name before the file was
copied to the server. The only way to manipulate these objects is to use wildcard
characters. For example, to query \TEST\MYDIRNAME\file.txt, a backup-archive
client user must use wildcard characters for all parts of the object name that were
not uppercased before they were sent to the server. The following command must
be used to query this file.txt file:
dsmc query backup {"FileSpaceName"}\TEST\MYDIRNAME\*
If any other of the other qualifiers are also saved in lowercase text, those qualifiers
must also be queried by using wildcards. For example, to query an object that is
stored as {"FileSpaceName"}\TEST\mydirname\file.txt, use the following
command:
dsmc query backup {"FileSpaceName"}\TEST\*\*
The examples that follow demonstrate these concepts. In both Windows and UNIX
or Linux environments, you do not have to specify either the complete high-level
or low-level qualifier. However, if you do not specify the complete qualifier, then
you must use the wildcard character.
Platform
Example
Windows
To query all backed-up files in file space MYFS, enter the following string:
dsmc q ba "{MYFS}\*\*"
You must use at least one asterisk (*) for each of the high-level and
low-level qualifiers.
76
Platform
Example
UNIX or
Linux
To query all backed-up files in file space /A, enter the following string:
dsmc q ba "/A/*/*"
You must use at least one asterisk (*) for each of the high-level and
low-level qualifiers.
Table 19 describes the commands that you can use with API objects.
Table 19. Backup-archive client commands you can use with API objects
Command
Description
Delete
Archive
Archived files that the current user owns can be deleted. The set access
command settings have no effect on this command.
Delete
Filespace
Query
From the backup-archive command line, you can query backed up and
archived API objects and objects that other users own, or that exist on other
nodes. See Naming your API objects on page 75 for information about
querying API objects.
Use the existing fromowner option to query objects that a different user
owns for which the set access permission has been given. Use the existing
fromnode option to query objects that exist on another node for which the
set access permission has been given. For more information, see
dsmInitEx on page 113.
Restore
Retrieve
Note: Use these commands only for exception situations. API objects that
are encrypted using the application managed key can be restored or
retrieved if the encryption key is known or saved in the password file or
registry. API objects encrypted by using transparent encryption cannot be
restored or retrieved by using the backup-archive client.
These commands return data as bit files that are created by using default
file attributes. You can restore or retrieve API objects that other users own,
or that are from a different node. The set access command determines
which objects qualify.
Set Access
The set access command permits users to manage API objects that another
user owns, or that are from another node.
77
78
6. If the application is using user encryption of data, not TSMENCRKEY, ensure that
all nodes use the same encryption key. You must use the same encryption key
for all files that are backed up in the shared node environment.
79
80
Setting up Unicode
To set up and use Unicode you must perform a particular procedure so the API
registers a Unicode file space on the server and all file names in that file space
become Unicode strings.
Note: You cannot store Unicode and non-Unicode file names in the same file
space.
1. Compile the code with the -DUNICODE flag.
2. All strings in your application must be wchar strings.
3. Follow the structures in the tsmapitd.h file, and the function definitions in the
tsmapifp.h file for calls to the API.
4. Set the useUnicode flag to bTrue on the tsmInitEx function call. Any new file
space is registered as a Unicode file space.
When you send data to previously registered, non-Unicode file spaces, the API
continues to send file names as non-Unicode. Rename the old file spaces on the
server to fsname_old and start a new Unicode file space for new data. The API
Copyright IBM Corp. 1993, 2014
81
restores non-Unicode data from the old file spaces. Use the bIsUnicode field in the
tsmQryRespFSData structure that is returned on a query file space to determine
whether or not a file space is Unicode.
Each dsmXXX function call has a matching tsmXXX function call. The difference
between the two are the structures that are used. All tsm structures have dsChar_t
types for string values when they are compiled with the UNICODE flag. The
dsChar_r maps to wchar. There is no other difference between these interfaces.
Note: Use either one interface or the other. Do not mix the dsm and tsm interfaces.
Ensure that you use the Tivoli Storage Manager structures and Tivoli Storage
Manager version definitions.
Some constants continue to be defined in the dsmapitd.h file, so you need both the
dsmapitd.h and the tsmapitd.h files when you compile.
You can use the Tivoli Storage Manager interface on other operating systems, such
as UNIX or Linux, but on these operating systems, the dsChar_t type maps to char
because Unicode is supported on Windows only. You can write only one variation
of the application and compile on more than one operating system using the Tivoli
Storage Manager interface. If you are writing a new application, use the Tivoli
Storage Manager interface.
If you are upgrading an existing application:
1. Convert the dsm structures and calls to the Tivoli Storage Manager interface.
2. Migrate existing file spaces.
3. Back up new file spaces with the useUnicode flag set to true.
Note: After you use a Unicode-enabled client to access a node, you cannot connect
to the same node name with an older version of the API or with an API from
another operating system. If your application uses cross-platform capability, do not
use the Unicode flag. There is no cross-platform support between Unicode and
non-Unicode operating systems.
When you enable the useUnicode flag, all string structures are treated as Unicode
strings. On the server, only the following fields are true Unicode:
v File space name
v High level
v Low level
v Archive description
All remaining fields convert to mbcs in the local code page before they are sent to
the server. Fields, such as nodename, are wchar strings. They must be valid in the
current locale. For example, on a Japanese machine, you can back up files with
Chinese names, but the node name must be a valid string in Japanese. The option
file remains in the current code page. If you need to create a Unicode
include-exclude list, use the inclexcl option with a file name and create a Unicode
file with Unicode patterns in it. For more information, see the Tivoli Storage
Manager Backup-Archive Client Installation and Users Guide for your operating
system.
82
Description
Purpose
Syntax
Contains the actual C code for the function call. This code is copied from the
UNIX or Linux version of the dsmapifp.h header file. See Appendix C, API
function definitions source file, on page 197.
This file differs slightly on other operating systems. Application programmers
for other operating systems should check their version of the header file,
dsmapifp.h, for the exact syntax of the API definitions.
Parameters Describes each parameter in the function call, identifying it as either input (I)
or output (O), depending on how it is used. Some parameters are designated
as both input and output (I/O). The data types that are referenced in this
section are defined in the dsmapitd.h header file. See Appendix B, API type
definitions source files, on page 155.
Return
codes
Contains a list of the return codes that are specific to the function call. General
system errors, such as communication errors, server problems, or user errors
that might appear on any call are not listed. The return codes are defined in
the dsmrc.h header file. See Appendix A, API return codes source file:
dsmrc.h, on page 143.
See Tivoli Storage Manager Client Messages and Application Programming Interface
Return Codes for detailed explanations of API return codes.
Description
dsmBeginGetData on page
85
dsmBeginQuery on page 87
dsmBeginTxn on page 91
dsmBindMC on page 92
dsmChangePW on page 93
dsmCleanUp on page 94
dsmDeleteAccess on page
95
dsmDeleteFS on page 95
dsmDeleteObj on page 96
dsmEndGetData on page 98
dsmEndGetDataEx on page
98
83
Description
dsmEndGetObj on page 99
dsmEndQuery on page 99
dsmEndSendObj on page
100
dsmEndSendObjEx on page
100
dsmGetBufferData on page
104
dsmGetNextQObj on page
105
Obtains the requested object data from the data stream and
places it in the caller's buffer.
dsmGroupHandler on page
109
Logs a user message to the server log file, to the local error
log, or to both.
dsmLogEventEx on page
118
Logs a user message to the server log file, to the local error
log, or to both.
dsmQueryAccess on page
119
dsmQueryApiVersion on
page 120
dsmQueryApiVersionEx on
page 120
dsmQueryCliOptions on
page 121
dsmQuerySessInfo on page
122
dsmQuerySessOptions on
page 123
dsmReleaseBuffer on page
126
84
Description
dsmRequestBuffer on page
128
dsmRetentionEvent on page Sends a list of object IDs to the server with a retention
129
event operation to be performed on these objects.
dsmSendBufferData on page Sends data from a Tivoli Storage Manager-allocated buffer.
130
dsmSendData on page 131
dsmUpdateObjEx on page
140
dsmBeginGetData
The dsmBeginGetData function call starts a restore or retrieve operation on a list of
objects in storage. This list of objects is contained in the dsmGetList structure. The
application creates this list with values from the query that preceded a call to
dsmBeginGetData.
The caller first must use the restore order fields that are obtained from the object
query to sort the list that is contained in this call. This ensures that the objects are
restored from storage in the most efficient way possible without rewinding or
remounting data tapes.
When getting whole objects, the maximum dsmGetList.numObjID is
DSM_MAX_GET_OBJ. When getting partial objects, the maximum is
DSM_MAX_PARTIAL_GET_OBJ.
Follow the call to dsmBeginGetData with one or more calls to dsmGetObj to obtain
each object within the list. After each object is obtained, or additional data for the
object is not needed, the dsmEndGetObj call is sent.
When all objects are obtained, or the dsmEndGetObj is canceled, the dsmEndGetData
call is sent. You then can start the cycle again.
85
Syntax
dsInt16_t dsmBeginGetData (dsUint32_t
dsBool_t
mountWait,
dsmGetType
getType,
dsmGetList *dsmGetObjListP);
dsmHandle,
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
dsBool_t mountWait (I)
A Boolean true or false value indicates whether or not the application client
waits for offline media to be mounted if the data that is needed is currently
offline. If mountWait is true, the application waits for the server to mount the
required media. The application waits until the media is mounted or the
request is cancelled.
dsmGetType getType (I)
An enumerated type consisting of gtBackup and gtArchive that indicates what
type of object to get.
dsmGetList *dsmGetObjListP (I)
The structure that contains information about the objects or partial objects to
restore or retrieve. The structure points to a list of object IDs and, in the case of
a partial object restore or retrieve, a list of associated offsets and lengths. If
your application uses the partial object restore or retrieve function, set the
dsmGetList.stVersion field to dsmGetListPORVersion. In a partial object restore
or retrieve, you cannot compress data while sending it. To enforce this, set
ObjAttr.objCompressed to bTrue.
See Figure 19 on page 69 and Appendix B, API type definitions source files,
on page 155 for more information on this structure.
See Partial object restore or retrieve on page 63 for more information on
partial object restore or retrieve.
Return codes
The return code numbers are provided in parentheses ( ).
Table 21. Return codes for dsmBeginGetData
Return code
Explanation
DSM_RC_ABORT_INVALID_OFFSET (33) The offset that was specified during a partial object retrieve is greater
than the length of the object.
DSM_RC_ABORT_INVALID_LENGTH
(34)
The length that was specified during a partial object retrieve is greater
than the length of the object, or the offset in addition to the length
extends past the end of the object.
DSM_RC_NO_MEMORY (102)
DSM_RC_NUMOBJ_EXCEED (2029)
DSM_RC_OBJID_NOTFOUND (2063)
The object ID was not found. The object was not restored.
DSM_RC_WRONG_VERSION_PARM
(2065)
The API version of the application client is different from the Tivoli
Storage Manager library version.
86
dsmBeginQuery
The dsmBeginQuery function call starts a query request to the server for information
about data, file spaces, and management classes.
Specifically, dsmBeginQuery can query:
v Archived data
v Backed-up data
v Active backed-up data
v File spaces
v Management classes
The query data that is returned from the call is obtained by one or more calls to
dsmGetNextQObj. When the query is complete, the dsmEndQuery call is sent.
Syntax
dsInt16_t dsmBeginQuery (dsUint32_t
dsmQueryType queryType,
dsmQueryBuff *queryBuffer);
dsmHandle,
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
dsmQueryType queryType (I)
Identifies the type of query to run. Assign one of the following options:
qtArchive
Queries archived objects.
qtBackup
Queries backed-up objects.
qtBackupActive
Queries active, backed-up objects only for the entire file space name
that you pass. This query is called a fast path and is an efficient way
to query active objects from storage.
Prerequisite: You must be logged on as a root user on a UNIX or
Linux operating system.
qtFilespace
Queries registered file spaces.
qtMC
Queries defined management classes.
qtBackupGroups
Queries groups that are closed.
qtOpenGroups
Queries groups that are open.
qtProxyNodeAuth
Queries nodes to which this node can proxy.
Chapter 6. API function calls
87
qtProxyNodePeer
Queries peer nodes with the same target.
dsmQueryBuff *queryBuffer (I)
Identifies a pointer to a buffer that is mapped to a particular data structure.
This structure is associated with the query type that you pass. These structures
contain the selection criteria for each query type. Complete the fields in each
structure to specify the scope of the query that you want to run. The stVersion
field in each structure contains the structure version number.
The data structures and their related fields include the following items:
qryArchiveData
objName
The complete object name. You can use a wildcard character,
such as an asterisk (*) or a question mark (?), in the high-level
or low-level portion of the name. An asterisk matches zero or
more characters, and a question mark matches one character.
The objType field of objName can have one of the following
values:
v DSM_OBJ_FILE
v DSM_OBJ_DIRECTORY
v DSM_OBJ_ANY_TYPE
For more information about high-level and low-level names,
see the following topic: High-level and low-level names on
page 24.
owner
The owner name of the object.
insDateLowerBound
The lower boundary for the insert date that the object was
archived. To obtain the default lower boundary, set the year
component to DATE_MINUS_INFINITE.
insDateUpperBound
The upper boundary for the insert date that the object was
archived. To obtain the default upper boundary, set the year
component to DATE_PLUS_INFINITE.
expDateLowerBound
The lower boundary for the expiration date. The default values
for both expiration date fields are the same as for the insert
date fields.
expDateUpperBound
The upper boundary for the expiration date.
descr
The archive description. Enter an asterisk (*) to search all
descriptions.
qryBackupData
objName
88
The call does not return DEF because that object as deleted
prior to the point-in-time value.
qryABackupData
objName
The complete object name. You can use a wildcard character,
such as an asterisk (*) or a question mark (?), in the high-level
or low-level portion of the name. An asterisk matches zero or
more characters, and a question mark matches one character.
The objType field of objName can have one of the following
values:
v DSM_OBJ_FILE
v DSM_OBJ_DIRECTORY
v DSM_OBJ_ANY_TYPE
89
90
targetNodeName
The target node name.
peerNodeName
The peer node name.
hlAddress
The peer address of the high-level name.
llAddress
The peer address of the low-level name.
Return codes
The following table describes the return codes for the dsmBeginQuery function call.
Table 22. Return codes for dsmBeginQuery
Return code
Explanation
DSM_RC_NO_MEMORY
102
DSM_RC_FILE_SPACE_NOT_FOUND
124
DSM_RC_NO_POLICY_BLK
2007
DSM_RC_INVALID_OBJTYPE
2010
DSM_RC_INVALID_OBJOWNER
2019
DSM_RC_INVALID_OBJSTATE
2024
DSM_RC_WRONG_VERSION_PARM
2065
dsmBeginTxn
The dsmBeginTxn function call begins one or more Tivoli Storage Manager
transactions that begin a complete action; either all the actions succeed or none
succeed. An action can be either a single call or a series of calls. For example, a
dsmSendObj call that is followed by a number of dsmSendData calls can be
considered a single action. Similarly, a dsmSendObj call with a dataBlkPtr that
indicates a data area containing the object to back up is also considered a single
action.
Try to group more than one object together in a single transaction for data transfer
operations. Grouping objects results in significant performance improvements in
the Tivoli Storage Manager system. From both a client and a server perspective, a
certain amount of overhead is incurred by starting and ending each transaction.
There are limits to what you can perform within a single transaction. These
restrictions include:
v A maximum number of objects that you can send or delete in a single
transaction. This limit is located in the data that dsmQuerySessInfo returns in the
ApiSessInfo.maxObjPerTxn field. This corresponds to the TxnGroupMax server
option.
v All objects that are sent to the server (either backup or archive) within a single
transaction must have the same copy destination that is defined in the
Chapter 6. API function calls
91
management class binding for the object. This value is located in the data that
dsmBindMC returns in the mcBindKey.backup_copy_dest or
mcBindKey.archive_copy_dest fields.
With the API, either the application client can monitor and control these
restrictions, or the API can monitor these restrictions. If the API is monitoring
restrictions, appropriate return codes from the API calls inform the application
client when one or more restrictions are reached.
Always match a dsmBeginTxn call with a dsmEndTxn call to optimize the set of
actions within a pair of dsmBeginTxn and dsmEndTxn calls.
Syntax
dsInt16_t dsmBeginTnx
(dsUint32_t dsmHandle);
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
Return codes
The return code numbers are provided in parentheses ( ).
Table 23. Return codes for dsmBeginTxn
Return code
Explanation
DSM_RC_ABORT_NODE_NOT_AUTHORIZED
(36)
dsmBindMC
The dsmBindMC function call associates, or binds, a management class to the passed
object. The object is passed through the include-exclude list that is pointed to in
the options file. If a match is not found in the Include list for a specific
management class, the default management class is assigned. The Exclude list can
prevent objects from a backup but not from an archive.
The application client can use the parameters that are returned in the mcBindKey
structure to determine if this object should be backed up or archived, or whether a
new transaction must be started because of different copy destinations. See
dsmBeginTxn for more information.
Call dsmBindMC before you call dsmSendObj because every object must have a
management class associated with it. This call can be performed within a
transaction or outside of a transaction. For example, within a multiple object
transaction, if dsmBindMC indicates that the object has a different copy destination
than the previous object, the transaction must be ended and a new transaction
started. In this case, another dsmBindMC is not required because one has already
been performed for this object.
Syntax
dsInt16_t dsmBindMC (dsUint32_t
dsmObjName *objNameP,
dsmSendType sendType,
mcBindKey
*mcBindKeyP);
92
dsmHandle,
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
dsmObjName *objNameP (I)
A pointer to the structure that contains the file space name, high-level object
name, low-level object name, and object type.
dsmSendType sendType (I)
Identifies whether this management class bind is performed for archive or
backup sends. The possible values for this call include:
Name
stBackup
Description
A backup object
stArchive An archive object
stBackupMountWait
A backup object
stArchiveMountWait
An archive object
For the dsmBindMC call, stBackup and stBackupMountWait are equivalent, and
stArchive and stArchiveMountWait are equivalent.
mcBindKey *mcBindKeyP (O)
This is the address of an mcBindKey structure where the management class
information is returned. The application client can use the information that is
returned here to determine if this object fits within a multiple object
transaction, or to perform a management class query on the management class
that is bound to the object.
Return codes
The return code numbers are provided in parentheses ( ).
Table 24. Return codes for dsmBindMC
Return code
Explanation
DSM_RC_NO_MEMORY (102)
DSM_RC_INVALID_PARM (109)
DSM_RC_TL_EXCLUDED (185)
DSM_RC_INVALID_OBJTYPE (2010)
DSM_RC_INVALID_SENDTYPE (2022)
DSM_RC_WRONG_VERSION_PARM (2065)
dsmChangePW
The dsmChangePW function call changes a Tivoli Storage Manager password. On a
multiple-user operating system such as UNIX or Linux, only the root user or the
TSM-Authorized user can use this call.
On Windows operating systems, you can specify the password in the dsm.opt file.
In this situation, dsmChangePW does not update the dsm.opt file. After the call to
dsmChangePW is made, you must update the dsm.opt file separately.
93
Syntax
dsInt16_t dsmChangePW
char
*oldPW,
char
*newPW);
(dsUint32_t
dsmHandle,
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
char *oldPW (I)
The old password of the caller. The maximum length is
DSM_MAX_VERIFIER_LENGTH.
char *newPW (I)
The new password of the caller. The maximum length is
DSM_MAX_VERIFIER_LENGTH.
Return codes
The return code numbers are provided in parentheses ( ).
Table 25. Return codes for dsmChangePW
Return code
Explanation
DSM_RC_ABORT_BAD_VERIFIER (6)
DSM_RC_AUTH_FAILURE (137)
DSM_RC_NEWPW_REQD (2030)
DSM_RC_OLDPW_REQD (2031)
DSM_RC_PASSWD_TOOLONG (2103)
DSM_RC_NEED_ROOT (2300)
dsmCleanUp
The dsmCleanUp function call is used if dsmSetUp was called. The dsmCleanUp
function call should be called after dsmTerminate. You cannot make any other calls
after you call dsmCleanUp.
There are no return codes that are specific to this call.
Syntax
dsInt16_t DSMLINKAGE dsmCleanUp
(dsBool_t
mtFlag);
Parameters
dsBool_t mtFlag (I)
This parameter specifies that the API was used either in a single thread or a
multithread mode. Possible values include:
94
v DSM_SINGLETHREAD
v DSM_MULTITHREAD
dsmDeleteAccess
The dsmDeleteAccess function call deletes current authorization rules for backup
versions or archived copies of your objects. When you delete an authorization rule,
you revoke the access a user has to any files that are specified by the rule.
When you use dsmDeleteAccess, you can only delete one rule at a time. Obtain the
rule ID through the dsmQueryAccess command.
There are no return codes that are specific to this call.
Syntax
dsInt16_t DSMLINKAGE dsmDeleteAccess
(dsUint32_t
dsmHandle,
dsUint32_t
ruleNum) ;
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
dsUint32_t ruleNum (I)
The rule ID for the access rule that is deleted. This value is obtained from a
dsmQueryAccess function call.
dsmDeleteFS
The dsmDeleteFS function call deletes a file space from storage. To delete a file
space, you must have the appropriate permissions that your Tivoli Storage
Manager administrator gave you. To determine whether you have the necessary
permissions, call dsmQuerySessInfo. This function call returns a data structure of
type ApiSessInfo, that includes two fields, archDel and backDel.
Note:
v On a UNIX or Linux operating system, only a root user or a TSM-Authorized
user can delete a file space.
v If the file space that you need to delete contains backup versions, you must have
backup delete authority (backDel = BACKDEL_YES). If the file space contains
archive copies, you must have archive delete authority (archDel =
ARCHDEL_YES). If the file space contains both backup versions and archive
copies, you must have both types of delete authority.
v When using an archive manager server, a file space cannot actually be removed.
This function call returns rc=0 even though the file space was not actually
deleted. The only way to verify that the file space has been deleted is to issue a
filespace query to the server.
v The Tivoli Storage Manager server delete file space function is a background
process. If errors other than those detected before passing a return code happen,
they are recorded in the Tivoli Storage Manager server log.
Syntax
dsInt16_t dsmDeleteFS (dsUint32_t
char
*fsName,
unsigned char repository);
dsmHandle,
95
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
char *fsName (I)
A pointer to the file space name to delete. The wildcard character is not
permitted.
unsigned char repository (I)
Indicates whether the file space to delete is a backup repository, archive
repository, or both. The possible values for this field include:
DSM_ARCHIVE_REP
DSM_BACKUP_REP
DSM_REPOS_ALL
/* archive repository
*/
/* backup repository
*/
/* all repository types */
Return codes
The return code numbers are provided in parentheses ( ).
Table 26. Return codes for dsmDeleteFS
Return code
Explanation
DSM_RC_ABORT_NOT_AUTHORIZED (27)
DSM_RC_INVALID_REPOS (2015)
DSM_RC_FSNAME_NOTFOUND (2060)
DSM_RC_NEED_ROOT (2300)
dsmDeleteObj
The dsmDeleteObj function call inactivates backup objects, deletes backup objects,
or it deletes archive objects in storage. The dtBackup type inactivates the currently
active backup copy only. The dtBackupID type removes from the server whichever
object ID is specified. Call this function from within a transaction.
See dsmBeginTxn for more information.
Before you send dsmDeleteObj, send the query sequence that is described in
Querying the Tivoli Storage Manager system on page 33 to obtain the
information for delInfo. The call to dsmGetNextQObj returns a data structure named
qryRespBackupData for backup queries or qryRespArchiveData for archive queries.
These data structures contain the information that you need for delInfo.
The value of maxObjPerTxn determines the maximum number of objects that you
can delete in a single transaction. To obtain this value, call dsmQuerySessInfo.
Note: Your node must have the appropriate permission that your Tivoli Storage
Manager administrator set. To delete archive objects, you must have archive delete
authority. You do not need backup delete authority to inactivate a backup object.
Syntax
dsInt16_t dsmDeleteObj (dsUint32_t
dsmDelType delType,
dsmDelInfo delInfo)
96
dsmHandle,
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
dsmDelType delType (I)
Indicates what type of object (backup or archive) to delete. Possible values
include:
Name
dtArchive
Description
The object to delete was previously archived.
dtBackup
To use this delete type, you must have a Tivoli Storage Manager
server, V3.7.4 or later.
The object to inactivate was previously backed up.
dtBackupID
To use this delete type, you must have a Tivoli Storage Manager
server, V3.7.3 or later.
The object to delete was previously backed up.
To use this delete type, you must have a Tivoli Storage Manager
server, V3.7.3 or later.
Attention: Using this delType with objID removes the backup
object from the server. Only an owner of an object can delete it.
You can delete any version (active or inactive) of an object. The
server reconciles the versions. If you delete an active version of an
object, the first inactive version becomes active. If you delete an
inactive version of an object, all older versions will advance. The
node must be registered with backDel permission.
Return codes
The return code numbers are provided in parentheses ( ).
Table 27. Return codes for dsmDeleteObj
Return code
Explanation
DSM_RC_FS_NOT_REGISTERED (2061)
DSM_RC_WRONG_VERSION_PARM (2065)
97
dsmEndGetData
The dsmEndGetData function call ends a dsmBeginGetData session that obtains
objects from storage.
The dsmEndGetData function call starts after all objects that you want to restore are
processed, or ends the get process prematurely. Call dsmEndGetData to end a
dsmBeginGetData session before you can continue other processing.
Depending on when dsmEndGetData is called, the API might need to finish
processing a partial data stream before the process can be stopped. The caller,
therefore, should not expect an immediate return from this call. Use dsmTerminate
if the application needs to close the session and end the restore immediately.
There are no return codes that are specific to this call.
Syntax
dsInt16_t dsmEndGetData
(dsUint32_t dsmHandle);
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
dsmEndGetDataEx
The dsmEndGetDataEx function call provides the total of LAN-free bytes that were
sent. It is an extension of the dsmEndGetData function call.
Syntax
There are no return codes that are specific to this call.
dsInt16_t dsmEndGetDataEx (dsmEndGetDataExIn_t * dsmEndGetDataExInP,
dsmEndGetDataExOut_t * dsmEndGetDataExOutP);
Parameters
dsmEndGetDataExIn_t *dsmEndGetDataExInP (I)
Passes the end get object dsmHandle that identifies the session and associates
it with subsequent calls.
dsmEndGetDataExOut_t *dsmEndGetDataExOutP (O)
This structure contains this input parameter:
totalLFBytesRecv
The total LAN-free bytes that are received.
98
dsmEndGetObj
The dsmEndGetObj function call ends a dsmGetObj session that obtains data for a
specified object.
Start the dsmEndGetObj call after an end of data is received for the object. This
indicates that all data was received, or that no more data will be received for this
object. Before you can start another dsmGetObj call, you must call dsmEndGetObj.
Depending on when dsmEndGetObj is called, the API might need to finish
processing a partial data stream before the process can stop. Do not expect an
immediate return from this call.
Syntax
dsInt16_t dsmEndGetObj
(dsUint32_t dsmHandle);
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
Return codes
The return code numbers are provided in parentheses ( ).
Table 28. Return codes for dsmEndGetObj
Return code
Explanation
DSM_RC_NO_MEMORY (102)
dsmEndQuery
The dsmEndQuery function call signifies the end of a dsmBeginQuery action. The
application client sends dsmEndQuery to complete a query. This call either is sent
after all query responses are obtained through dsmGetNextQObj, or it is sent to end
a query before all data are returned.
Note: The Tivoli Storage Manager continues to send the query data from the
server to the client in this case, but the API discards any remaining data.
Once a dsmBeginQuery is sent, a dsmEndQuery must be sent before any other activity
can start.
There are no return codes that are specific to this call.
Syntax
dsInt16_t dsmEndQuery
(dsUint32_t dsmHandle);
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
99
dsmEndSendObj
The dsmEndSendObj function call indicates the end of data that is sent to storage.
Enter the dsmEndSendObj function call to indicate the end of data from the
dsmSendObj and dsmSendData calls. A protocol violation occurs if this is not
performed. The exception to this rule is if you call dsmEndTxn to end the
transaction. Doing this discards all data that was sent for the transaction.
Syntax
dsInt16_t dsmEndSendObj
(dsUint32_t dsmHandle);
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
Return codes
The return code numbers are provided in parentheses ( ).
Table 29. Return codes for dsmEndSendObj
Return code
Explanation
DSM_RC_NO_MEMORY (102)
dsmEndSendObjEx
The dsmEndSendObjEx function call provides additional information regarding the
number of bytes processed. The information includes: total bytes sent, compression
information, lan-free bytes, and deduplication information.
The dsmEndSendObjEx function call is an extension of the dsmEndSendObj function
call.
Syntax
dsInt16_t dsmEndSendObjEx (dsmEndSendObjExIn_t *dsmEndSendObjExInP,
dsmEndSendObjExOut_t *dsmEndSendObjExOutP);
Parameters
dsmEndSendObjExIn_t *dsmEndSendObjExInP (I)
This parameter passes the end send object dsmHandle that identifies the
session and associates it with subsequent calls.
dsmEndSendObjExOut_t *dsmEndSendObjExOutP (O)
This parameter passes the end send object information:
Name
totalBytesSent
objCompressed
totalCompressedSize
totalLFBytesSent
objDeduplicated
totalDedupSize
100
Description
The total number of bytes that are read from the application.
A flag that displays if the object was compressed.
The total byte size after compression.
The total LAN-free bytes that were sent.
A flag that displays if the object was deduplicated by the API.
Total bytes sent after deduplication.
Return codes
The return code numbers are provided in parentheses ( ).
Table 30. Return codes for dsmEndSendObjEx
Return code
Explanation
DSM_RC_NO_MEMORY (102)
dsmEndTxn
The dsmEndTxn function call ends a Tivoli Storage Manager transaction. Pair the
dsmEndTxn function call with dsmBeginTxn to identify the call or set of calls that are
considered a transaction. The application client can specify on the dsmEndTxn call
whether the transaction must be committed or ended.
Perform all of the following calls within the bounds of a transaction:
v dsmSendObj
v dsmSendData
v dsmEndSendObj
v dsmDeleteObj
Syntax
dsInt16_t dsmEndTxn (dsUint32_t
dsUint8_t
vote,
dsUint16_t *reason);
dsmHandle,
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
dsUint8_t vote (I)
Indicates whether the application client commits all the actions that are done
between the previous dsmBeginTxn call and this call. The following values are
possible:
DSM_VOTE_COMMIT
DSM_VOTE_ABORT
101
Return codes
The return code numbers are provided in parentheses ( ).
Table 31. Return codes for dsmEndTxn
Return code
Explanation
DSM_RC_ABORT_CRC_FAILED (236)
The CRC that was received from the server does not match the
CRC that was calculated by the client.
DSM_RC_INVALID_VOTE
(2011)
DSM_RC_CHECK_REASON_CODE (2302)
DSM_RC_ABORT_STGPOOL_COPY_CONT_NO (241)
The write to one of the copy storage pools failed, and the Tivoli
Storage Manager storage pool option COPYCONTINUE is set to NO.
The transaction terminates.
DSM_RC_ABORT_RETRY_SINGLE_TXN
(242)
v The next storage pool has a different copy storage pool list.
v The operation is switched to this pool in the middle of a
transaction.
.
dsmEndTxnEx
The dsmEndTxnEx function call provides group leader object ID information for you
to use with the dsmGroupHandler function call. It is an extension of the dsmEndTxn
function call.
Syntax
dsInt16_t dsmEndTxnEx (dsmEndTxnExIn_t *dsmEndTxnExInP
dsmEndTxnExOut_t *dsmEndTxnExOutP);
Parameters
dsmEndTxnExIn_t *dsmEndTxnExInP (I)
This structure contains the following parameters:
dsmHandle
The handle that identifies the session and associates it with subsequent
Tivoli Storage Manager calls.
dsUint8_t vote (I)
Indicates whether or not the application client commits all the actions that
are done between the previous dsmBeginTxn call and this call. The possible
values are:
DSM_VOTE_COMMIT
DSM_VOTE_ABORT
Use DSM_VOTE_ABORT only if your application has found a reason to stop the
transaction.
dsmEndTxnExOut_t *dsmEndTxnExOutP (O)
This structure contains the following parameters:
102
Return codes
The return code numbers are provided in parentheses ( ).
Table 32. Return codes for dsmEndTxnEx
Return code
Explanation
DSM_RC_INVALID_VOTE (2011)
DSM_RC_CHECK_REASON_CODE (2302)
DSM_RC_ABORT_STGPOOL_COPY_CONT_NO
(241)
The write to one of the copy storage pools failed, and the Tivoli
Storage Manager storage pool option COPYCONTINUE was set
to NO. The transaction terminates.
DSM_RC_ABORT_RETRY_SINGLE_TXN (242)
dsmGetData
The dsmGetData function call obtains a byte stream of data from Tivoli Storage
Manager and places it in the caller's buffer. The application client calls dsmGetData
when there is more data to receive from a previous dsmGetObj or dsmGetData call.
Syntax
dsInt16_t dsmGetData (dsUint32_t
DataBlk *dataBlkPtr);
dsmHandle,
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
DataBlk *dataBlkPtr (I/O)
Points to a structure that includes both a pointer to the buffer for the data that
is received and the size of the buffer. On return, this structure contains the
103
Return codes
The return code numbers are provided in parentheses ( ).
Table 33. Return codes for dsmGetData
Return code
Explanation
DSM_RC_ABORT_INVALID_OFFSET
(33)
The offset that was specified during a partial object retrieve is greater than
the length of the object.
DSM_RC_ABORT_INVALID_LENGTH
(34)
The length that was specified during a partial object retrieve is greater
than the length of the object, or the offset in addition to the length extends
beyond the end of the object.
DSM_RC_FINISHED (121)
Finished processing. The last buffer was received. Check numBytes for the
amount of data and then call Tivoli Storage ManagerdsmEndGetObj.
DSM_RC_NULL_DATABLKPTR (2001)
DSM_RC_ZERO_BUFLEN (2008)
DSM_RC_NULL_BUFPTR (2009)
DSM_RC_WRONG_VERSION_PARM
(2065)
The application client's API version is different from the Tivoli Storage
Manager library version.
DSM_RC_MORE_DATA (2200)
dsmGetBufferData
The dsmGetBufferData function call receives a byte stream of data from the Tivoli
Storage Manager through a Tivoli Storage Manager buffer. After each call the
application needs to copy the data and release the buffer through a call to
dsmReleaseBuffer. If the number of buffers held by the application equals the
numTsmBuffers specified in the dsmInitEx call, the dsmGetBufferData function
blocks until a dsmReleaseBuffer is called.
Syntax
dsInt16_t
dsmGetBufferData
(getDatatExIn_t
getDataExOut_t
*dsmGetBufferDataExInP,
*dsmGetBufferDataExOutP) ;
Parameters
getDataExIn_t * dsmGetBufferDataExInP (I)
This structure contains the following input parameter.
dsUint32_t dsmHandle
The handle that identifies the session and associates it with a previous
dsmInitEx call.
getDataExOut_t * dsmGetBufferDataExOutP (0)
This structure contains the following output parameters.
dsUint8_t tsmBufferHandle(0)
The handle that identifies the buffer received.
char *dataPtr(0)
The address to which Tivoli Storage Manager data was written.
dsUint32_t numBytes(0)
Actual number of bytes written by Tivoli Storage Manager.
104
Return codes
The return code numbers are provided in parentheses ( ).
Table 34. Return codes for dsmGetBufferData
Return code
Explanation
DSM_RC_BAD_CALL_SEQUENCE (2041)
DSM_RC_OBJ_ENCRYPTED (2049)
DSM_RC_OBJ_COMPRESSED (2048)
DSM_RC_BUFF_ARRAY_ERROR (2045)
dsmGetNextQObj
The dsmGetNextQObj function call gets the next query response from a previous
dsmBeginQuery call and places the response in the caller buffer.
The dsmGetNextQObj call is called one or more times. Each time the function is
called, either a single query record is retrieved, or an error or a DSM_RC_FINISHED
reason code is returned. If DSM_RC_FINISHED is returned, there is no more data to
process. When all query data is retrieved, or if no more query data is needed, send
the dsmEndQuery call to end the query process.
The dataBlkPtr parameter must point to a buffer that is defined with the
qryResp*Data structure type. The context in which dsmGetNextQObj is called
determines the type of structure that is entered on the query response.
Syntax
dsInt16_t dsmGetNextQObj (dsUint32_t
DataBlk *dataBlkPtr);
dsmHandle,
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
DataBlk *dataBlkPtr (I/O)
Points to a structure that includes both a pointer to the buffer for the data to
be received and the size of the buffer. This buffer is the qryResp*Data response
structure. On return, this structure contains the number of bytes that is
transferred. The structure that is associated with each type of query is
described in the following table. For more information about the type
definition of DataBlk, see the following topic: Appendix B, API type
definitions source files, on page 155.
105
Response structure
qtArchive
qryRespArchiveData
qtBackup
qryRespBackupData
restoreOrderExt
Is of type dsUint16_t. Sort on this
field when several objects are
restored on a dsmBeginGetData call.
An example of sorting code for this
call is in the API sample,
dapiqry.c. For a sorting example,
see the following topic: Figure 16
on page 65.
sizeEstimate
Contains the value that is passed
on a previous dsmSendObj call.
mediaClass
Can have a value of MEDIA_FIXED if
the object is on disk or
MEDIA_LIBRARY if the object is on
tape.
clientDeduplicated
Indicates whether this object is
deduplicated by the client.
106
qtBackupActive
qryARespBackupData
qtBackupGroups
qryRespBackupData
qtOpenGroups
qryRespBackupData
dsBool_t isGroupLeader
If true, signifies this object is a
group leader.
dsBool_t isOpenGroup;
If true, signifies this group is open
and not complete.
Response structure
qtFilespace
qryRespFSData
qtMC
qryRespMCData
qryRespMCDetailData
qtProxyNodeAuth
qryRespProxyNodeData
targetNodeName
peerNodeName
hlAddress
llAddress
qtProxyNodePeer
qryRespProaxyNodeData
targetNodeName
peerNodeName
hlAddress
llAddress
Return codes
The following table describes the return codes for the dsmGetNextQObj function call.
Table 36. Return codes for the dsmGetNextQObj function call
Return code
DSM_RC_ABORT_NO_MATCH
DSM_RC_FINISHED
121
DSM_RC_UNKNOWN_FORMAT
122
107
Table 36. Return codes for the dsmGetNextQObj function call (continued)
Return code
DSM_RC_COMM_PROTOCOL_ERROR
136
DSM_RC_NULL_DATABLKPTR
2001
DSM_RC_INVALID_MCNAME
2025
DSM_RC_BAD_CALL_SEQUENCE
2041
DSM_RC_WRONG_VERSION_PARM
2065
DSM_RC_MORE_DATA
2200
DSM_RC_BUFF_TOO_SMALL
2210
dsmGetObj
The dsmGetObj function call obtains the requested object data from the Tivoli
Storage Manager data stream and places it in the caller's buffer. The dsmGetObj call
uses the object ID to obtain the next object or partial object from the data stream.
The data for the indicated object is placed in the buffer to which DataBlk points. If
more data is available, you must make one or more calls to dsmGetData to receive
the remaining object data until a return code of DSM_RC_FINISHED is returned.
Check the numBytes field in DataBlk to see whether any data remains in the buffer.
Objects should be asked for in the order that they were listed on the
dsmBeginGetData call in the dsmGetList parameter. The exception is when the
application client needs to pass over an object in the data stream to get to an object
later in the list. If the object that is indicated by the object ID is not the next object
in the stream, the data stream is processed until the object is located, or the stream
is completed. Use this feature with care, because it might be necessary to process
and discard large amounts of data to locate the requested object.
Note: If dsmGetObj returns a failure code (NOT FINISHED or MORE_DATA), the
session needs to be terminated to abort the restore operation. This is especially
important when using encryption and receiving a RC_ENC_WRONG_KEY. A new
session with the proper key must be started.
Syntax
dsInt16_t dsmGetObj (dsUint32_t dsmHandle,
ObjID
*objIdP,
DataBlk *dataBlkPtr);
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
ObjID *objIdP (I)
A pointer to the ID of the object to restore.
DataBlk *dataBlkPtr (I/O)
A pointer to the buffer where the restored data are placed.
108
Return codes
The return code numbers are provided in parentheses ( ).
Table 37. Return codes for dsmGetObj
Return code
Explanation
DSM_RC_ABORT_INVALID_OFFSET (33)
DSM_RC_ABORT_INVALID_LENGTH (34)
DSM_RC_FINISHED (121)
DSM_RC_WRONG_VERSION_PARM (2065)
DSM_RC_MORE_DATA (2200)
RC_ENC_WRONG_KEY (4580)
The key provided in the dsmInitEx call, or the saved key, does
not match the key that was used to encrypt this object.
Terminate the session and provide the proper key.
dsmGroupHandler
The dsmGroupHandler function call performs an action on a logical file group
depending on the input that is given. The client relates a number of individual
objects together to reference and manage on the Tivoli Storage Manager server as a
logical group.
Note: For more information, see File grouping on page 60.
Syntax
dsInt16_t dsmGroupHandler (dsmGroupHandlerIn_t
dsmGroupHandlerOut_t
*dsmGroupHandlerInP,
*dsmGroupHandlerOutP);
Parameters
dsmGroupHandlerIn_t *dsmGroupHandlerInP (I)
Passes group attributes to the API.
groupType
The type of the group. Values include:
v DSM_GROUPTYPE_PEER - peer group
actionType
The action to be executed. Values include:
v DSM_GROUP_ACTION_OPEN - creates a new group
v DSM_GROUP_ACTION_CLOSE - commits and saves an open group
v DSM_GROUP_ACTION_ADD - appends to a group
v DSM_GROUP_ACTION_ASSIGNTO - assigns to another group
v DSM_GROUP_ACTION_REMOVE- removes a member from a group
memberType.
The group type of the object. Values include:
v DSM_MEMBERTYPE_LEADER - group leader
v DSM_MEMBERTYPE_MEMBER - group member
*uniqueGroupTagP
A unique string ID that is associated with a group.
Chapter 6. API function calls
109
leaderObjId
The Object ID for the group leader.
*objNameP
A pointer to the object name of the group leader.
memberObjList
A list of objects to remove or assign.
dsmGroupHandlerOut_t *dsmGroupHandlerOutP (O)
Passes the address of the structure that the API completes. The structure
version number is returned.
Return codes
The return code numbers are provided in parentheses ( ).
Table 38. Return codes for dsmGroupHandler
Return code
Explanation
DSM_RC_ABORT_INVALID_GROUP_ACTION
(237)
dsmInit
The dsmInit function call starts an API session and connects the client to Tivoli
Storage Manager storage. The application client can have only one active session
open at a time. To open another session with different parameters, use the
dsmTerminate call first to end the current session.
To permit cross-node query and restore or retrieve, use the -fromnode and
-fromowner string options. See Accessing objects across nodes and owners on
page 25 for more information.
Syntax
dsInt16_t dsmInit (dsUint32_t
dsmApiVersion *dsmApiVersionP,
char
*clientNodeNameP,
char
*clientOwnerNameP,
char
*clientPasswordP,
char
*applicationType,
char
*configfile,
char
*options);
*dsmHandle,
Parameters
dsUint32_t *dsmHandle (O)
The handle that identifies this initialization session and associates it with
subsequent Tivoli Storage Manager calls.
dsmApiVersion *dsmApiVersionP (I)
A pointer to the data structure identifying the version of the API that the
application client is using for this session. The structure contains the values of
the three constants, DSM_API_VERSION, DSM_API_RELEASE, and
DSM_API_LEVEL, that are set in the dsmapitd.h file. A previous call to
dsmQueryApiVersion must be performed to ensure that compatibility exists
between the application client API version and the version of the API library
that is installed on the user's workstation.
110
111
Return codes
The return code numbers are provided in parentheses ( ).
Table 39. Return codes for dsmInit
Return code
Explanation
DSM_RC_ABORT_SYSTEM_ERROR (1)
The server has detected a system error and has notified the clients.
DSM_RC_REJECT_VERIFIER_EXPIRED
(52)
DSM_RC_REJECT_ID_UNKNOWN (53)
DSM_RC_AUTH_FAILURE (137)
DSM_RC_NO_STARTING_DELIMITER
(148)
DSM_RC_NEEDED_DIR_DELIMITER (149) A directory delimiter is needed immediately before and after the match
directories meta-string (...) and one was not located.
DSM_RC_NO_PASS_FILE (168)
DSM_RC_UNMATCHED_QUOTE (177)
DSM_RC_NLS_CANT_OPEN_TXT (0610)
DSM_RC_INVALID_OPT (400)
DSM_RC_INVALID_DS_HANDLE (2014)
DSM_RC_NO_OWNER_REQD (2032)
112
Explanation
DSM_RC_NO_NODE_REQD (2033)
DSM_RC_WRONG_VERSION (2064)
The API version for the application client has a higher value than the
Tivoli Storage Manager version.
DSM_RC_PASSWD_TOOLONG (2103)
DSM_RC_NO_OPT_FILE (2220)
DSM_RC_INVALID_KEYWORD (2221)
DSM_RC_PATTERN_TOO_COMPLEX
(2222)
DSM_RC_NO_HOST_ADDR (2226)
DSM_RC_MACHINE_SAME (2227)
The nodename that is defined in the options file cannot be the same as
the system host name.
DSM_RC_NO_API_CONFIGFILE (2228)
DSM_RC_NO_INCLEXCL_FILE (2229)
DSM_RC_NO_SYS_OR_INCLEXCL (2230)
Either the dsm.sys file or the include-exclude file was not found.
dsmInitEx
The dsmInitEx function call starts an API session using the additional parameters
that permit extended verification.
Syntax
dsInt16_t
dsmInitEx
(dsUint32_t
dsmInitExIn_t
dsmInitExOut_t
*dsmHandleP,
*dsmInitExInP,
*dsmInitExOutP) ;
Parameters
dsUint32_t *dsmHandleP (O)
The handle that identifies this initialization session and associates it with
subsequent Tivoli Storage Manager calls.
dsmInitExIn_t *dsmInitExInP
This structure contains the following input parameters:
dsmApiVersion *dsmApiVersionP (I)
This parameter is a pointer to the data structure that identifies the version
of the API that the application client is using for this session. The structure
contains the values of the four constants, DSM_API_VERSION,
DSM_API_RELEASE, DSM_API_LEVEL, and DSM_API_SUBLEVEL that
are set in the dsmapitd.h file. A previous call to dsmQueryApiVersionEx
must be performed to ensure that compatibility exists between the API
version of the application client and the version of the API library installed
on the user's workstation.
char *clientNodeNameP (I)
This parameter is a pointer to the node for the Tivoli Storage Manager
session. All sessions must have a node name associated with them. The
113
114
115
Return codes
The return code numbers are provided in parentheses ( ).
Table 40. Return codes for dsmInitEx
Return code
Explanation
DSM_RC_ABORT_SYSTEM_ERROR (1)
The Tivoli Storage Manager server has detected a system error and has
notified the clients.
DSM_RC_REJECT_VERIFIER_EXPIRED
(52)
Password has expired and must be updated. The next call must be
dsmChangePW with the handle returned on this call.
DSM_RC_REJECT_ID_UNKNOWN (53)
DSM_RC_TA_COMM_DOWN (103)
DSM_RC_AUTH_FAILURE (137)
DSM_RC_NO_STARTING_DELIMITER
(148)
DSM_RC_NEEDED_DIR_DELIMITER
(149)
DSM_RC_NO_PASS_FILE (168)
DSM_RC_UNMATCHED_QUOTE (177)
DSM_RC_NO_NODE_REQD (2033)
DSM_RC_WRONG_VERSION (2064)
Application client's API version has a higher value than the Tivoli Storage
Manager version.
DSM_RC_PASSWD_TOOLONG (2103)
DSM_RC_NO_OPT_FILE (2220)
DSM_RC_INVALID_KEYWORD (2221)
116
Explanation
DSM_RC_PATTERN_TOO_COMPLEX
(2222)
DSM_RC_NO_CLOSING_BRACKET
(2223)
DSM_RC_INVALID_SERVER (2225)
DSM_RC_NO_HOST_ADDR (2226)
DSM_RC_MACHINE_SAME (2227)
The nodename defined in the options file cannot be the same as the
system host name.
DSM_RC_NO_API_CONFIGFILE (2228)
DSM_RC_NO_INCLEXCL_FILE (2229)
DSM_RC_NO_SYS_OR_INCLEXCL
(2230)
dsmLogEvent
The dsmLogEvent function call logs a user message (ANE4991 I) to the server log
file, to the local error log, or to both. A structure of type logInfo is passed in the
call. This call must be performed while at InSession state inside a session. Do not
perform it within a send, get, or query. To retrieve messages logged on the server,
use the query actlog command through the administrative client.
Note:
v See the summary state diagram, Figure 20 on page 73.
v
See the Tivoli Storage Manager Administrator's Reference for more information.
Syntax
dsInt16_t dsmLogEvent
(dsUint32_t
dsmHandle,
logInfo
*logInfoP);
Parameters
dsUint32_t dsmHandle(I)
The handle that associates this call with a previous dsmInitEx call.
logInfo *logInfoP (I)
Passes the message and destination. The application client is responsible for
allocating storage for the structure.
The fields in the logInfo structure are:
message
The text of the message to be logged. This must be a null-ended string.
The maximum length is DSM_MAX_RC_MSG_LENGTH.
dsmLogtype
Specifies where to log the message. Possible values include: logServer,
logLocal, logBoth.
117
Return codes
The return code numbers are provided in parentheses ( ).
Table 41. Return codes for dsmLogEvent
Return code
Explanation
DSM_RC_STRING_TOO_LONG (2120)
dsmLogEventEx
The dsmLogEventEx function call logs a user message to the server log file, to the
local error log, or to both. This call must be made while at an InSession state
within a session. The call cannot be made within a send, get, or query call.
Summary state diagram: For an overview of the session interactions, see the
summary state diagram in the following topic:
Figure 20 on page 73
The severity determines the Tivoli Storage Manager message number. To view
messages that are logged on the server, use the query actlog command through
the administrative client. Use the Tivoli Storage Manager client option,
errorlogretention, to prune the client error log file if the application generates
numerous client messages written to the client log, dsmLogType either logLocal or
logBoth. For more information, see the Tivoli Storage Manager Administrator's
Reference.
Syntax
extern dsInt16_t DSMLINKAGE dsmLogEventEx(
dsUint32_t
dsmHandle,
dsmLogExIn_t
*dsmLogExInP,
dsmLogExOut_t
*dsmLogExOutP
);
Parameters
dsUint32_t dsmHandle(I)
The handle that associates this call with a previous dsmInitEx call.
dsmLogExIn_t *dsmLogExInP
This structure contains the input parameters.
dsmLogSeverity severity;
This parameter is the event severity. The possible values are:
logSevInfo,
logSevWarning,
logSevError,
logSevSevere
/*
/*
/*
/*
information
warning
Error
severe
ANE4990
ANE4991
ANE4992
ANE4993
*/
*/
*/
*/
char appMsgID[8];
This parameter is a string to identify the specific application message. A
suitable format is three characters that are followed by four numbers, for
example: DSM0250.
dsmLogType logType;
This parameter specifies where to direct the event. The parameter has the
following possible values:
v logServer
118
v logLocal
v logBoth
char *message;
This parameter is the text of the event message to log. The text must be a
null-ended string. The maximum length is DSM_MAX_RC_MSG_LENGTH.
Important: Messages that go to the server must be in English. Non-English
messages do not display correctly.
dsmLogExOut_t *dsmLogExOutP
This structure contains the output parameters. Currently, there are no output
parameters.
Return codes
The return code numbers are provided in parentheses ( ).
Table 42. Return codes for dsmLogEventEx
Return code
Explanation
DSM_RC_STRING_TOO_LONG (2120)
dsmQueryAccess
The dsmQueryAccess function call queries the server for all access authorization
rules for either backup versions or archived copies of your objects. A pointer to an
array of access rules is passed in to the call, and the completed array is returned. A
pointer to the number of rules is passed in to indicate how many rules are in the
array.
There are no return codes that are specific to this call.
Syntax
dsInt16_t DSMLINKAGE dsmQueryAccess
(dsUint32_t
qryRespAccessData
dsUint16_t
dsmHandle),
**accessListP,
*numberOfRules) ;
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
qryRespAccessData **accessListP (O)
A pointer to an array of qryRespAccessData elements that the API library
allocates. Each element corresponds to an access rule. The number of elements
in the array is returned in the numberOfRules parameter. The information that
is returned in each qryRespAccessData element includes the following:
Name
ruleNumber
AccessType
Node
Owner
objName
Description
The ID for the access rule. This identifies the rule for deletion.
The backup or archive type.
The node on which you gave access.
The user to whom you gave access.
The high-level, or low-level file space descriptors.
119
dsmQueryApiVersion
The dsmQueryApiVersion function call performs a query request for the API library
version that the application client accesses.
All updates to the API are made in an upward-compatible format. Any application
client with an API version or release less than, or equal to, the API library on the
end user's workstation operates without change. Be aware before you proceed that
should the dsmQueryApiVersion call return a version or version release older than
that of the application clients, some API calls might be enhanced in a manner that
is not supported by the end user's older version of the API.
The application API version number is stored in the dsmapitd.h header file as
constants DSM_API_VERSION, DSM_API_RELEASE, and DSM_API_LEVEL.
There are no return codes that are specific to this call.
Syntax
void dsmQueryApiVersion
(dsmApiVersion *apiVersionP);
Parameters
dsmApiVersion *apiVersionP (O)
This parameter is a pointer to the structure that contains the API library
version, release, and level components. For example, if the library is version
1.1.0, then, after returning from the call, the fields of the structure contain the
following values:
dsmApiVersionP->version
dsmApiVersionP->release
dsmApiVersionP->level
= 1
= 1
= 0
dsmQueryApiVersionEx
The dsmQueryApiVersionEx function call performs a query request for the API
library version that the application client accesses.
All updates to the API are made in an upward-compatible format. Any application
client that has an API version or release less than or equal to the API library on the
end user's workstation operates without change. See Summary of Code Changes in
the README_api_enu file for exceptions to upward compatibility. If the
dsmQueryApiVersionEx call returns a version or version release that is different from
that of the application client, be aware before you proceed that some API calls
might be enhanced in a manner that is not supported by the end user's older
version of the API.
The application API version number is stored in the dsmapitd.h header file as
constants DSM_API_VERSION, DSM_API_RELEASE, DSM_API_LEVEL, and
DSM_API_SUBLEVEL.
There are no return codes that are specific to this call.
Syntax
void dsmQueryApiVersionEx (dsmApiVersionEx *apiVersionP);
120
Parameters
dsmApiVersionEx *apiVersionP (O)
This parameter is a pointer to the structure that contains the API library's
version, release, level, and sublevel components. For example, if the library is
Version 5.5.0.0, then, after returning from the call, the fields of the structure
contain the following values:
v ApiVersionP->version = 5
v ApiVersionP->release = 5
v ApiVersionP->level
= 0
v ApiVersionP->subLevel = 0
dsmQueryCliOptions
The dsmQueryCliOptions function call queries important option values in the user's
option files. A structure of type optStruct is passed in the call and contains the
information. This call is performed before dsmInitEx is called, and it determines
the setup before the session.
Note: For more information about options, see the Tivoli Storage Manager
Backup-Archive Client Installation and Users Guide for your operating system.
There are no return codes that are specific to this call.
Syntax
dsInt16_t dsmQueryCliOptions
(optStruct
*optstructP);
Parameters
optStruct *optstructP (I/O)
This parameter passes the address of the structure that the API completes. The
application client is responsible for allocating storage for the structure. On
successful return, the appropriate information is entered in the fields in the
structure.
The following information is returned in the optStruct structure:
Name
dsmiDir
dsmiConfig
serverName
commMethod
serverAddress
nodeName
compression
passwordAccess
Description
The value of the environment DSMI_DIR variable.
The client option file as specified by the DSMI_CONFIG
environment variable.
The name of the Tivoli Storage Manager server.
The communication method selected. See the #defines for
DSM_COMM_* in the dsmapitd.h file.
The address of the server that is based on the communication
method.
The client node (machine) name.
This field provides information regarding the compression option.
The values are: bTrue for generate, and bFalse for prompt.
121
dsmQuerySessInfo
The dsmQuerySessInfo function call starts a query request to Tivoli Storage
Manager for information related to the operation of the specified session in
dsmHandle. A structure of type ApiSessInfo is passed in the call, with all available
session related information entered. This call is started after a successful dsmInitEx
call.
The information that is returned in the ApiSessInfo structure includes the
following:
v Server information: port number, date and time, and type
v Client defaults: application type, delete permissions, delimiters, and transaction
limits
v Session information: login ID, and owner
v Policy data: domain, active policy set, and retention grace period
See Appendix B, API type definitions source files, on page 155 for information
about the content of the structure that is passed and each field within it.
Syntax
dsInt16_t dsmQuerySessInfo (dsUint32_t
ApiSessInfo
*SessInfoP);
dsmHandle,
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
ApiSessInfo *SessInfoP (I/O)
This parameter passes the address of the structure that the API enters. The
application client is responsible for allocating storage for the structure and for
completing the field entries that indicate the version of the structure that is
used. On successful return, the fields in the structure are completed with the
appropriate information. The adsmServerName is the name that is given in the
define server command on the Tivoli Storage Manager server. If the
archiveRetentionProtection field is true, the server is enabled for retention
protection.
Return codes
The return code numbers are provided in parentheses ( ).
Table 43. Return codes for dsmQuerySessInfo
Return code
Explanation
DSM_RC_NO_SESS_BLK (2006)
DSM_RC_NO_POLICY_BLK (2007)
DSM_RC_WRONG_VERSION_PARM
(2065)
122
dsmQuerySessOptions
The dsmQuerySessOptions function call queries important option values that are
valid in the specified session in dsmHandle. A structure of type optStruct is passed
in the call and contains the information.
This call is started after a successful dsmInitEx call. The values that are returned
might be different from the values returned on a dsmQueryCliOptions call,
depending on values that are passed to the dsmInitEx call, primarily optString,
and optFile. For information about option precedence, see Understanding
configuration and options files on page 1.
There are no return codes that are specific to this call.
Syntax
dsInt16_t dsmQuerySessOptions
(dsUint32_t
dsmHandle,
optStruct
*optstructP);
Parameters
dsUint32_t dsmhandle(I)
The handle that associates this call with a previous dsmInitEx call.
optStruct *optstructP (I/O)
This parameter passes the address of the structure that the API completes. The
application client is responsible for allocating storage for the structure. On
successful return, the fields in the structure are completed with the appropriate
information.
The information returned in the optStruct structure is:
Name
dsmiDir
dsmiConfig
serverName
commMethod
serverAddress
nodeName
compression
compressAlways
passwordAccess
Description
The value of the DSMI_DIR environment variable.
The dsm.opt file that the DSMI_CONFIG environment variable
specifies.
The name of the Tivoli Storage Manager server stanza in the
options file.
The communication method that was selected. See the #defines for
DSM_COMM_* in the dsmapitd.h file.
The address of the server that is based on the communication
method.
The name of the client's node (machine).
The value of the compression option (bTrue=on and bFalse=off).
The value of the compressalways option (bTrue=on and
bFalse=off).
Value bTrue for generate, and bFalse for prompt.
For more information about options, see the Tivoli Storage Manager
Backup-Archive Client Installation and Users Guide for your operating system.
123
dsmRCMsg
The dsmRCMsg function call obtains the message text that is associated with an API
return code.
The msg parameter displays the message prefix return code in parentheses ( ),
followed by the message text. For example, a call to dsmRCMsg might return the
following:
ANS0264E (RC2300) Only root user can execute dsmChangePW or dsmDeleteFS.
For some languages where characters are different in ANSII and OEM code pages,
it might be necessary to convert strings from ANSII to OEM before printing them
out (for example, Eastern European single-byte character sets). The following is an
example:
dsmRCMsg(dsmHangle, rc, msgBuf);
#ifdef WIN32
#ifndef WIN64
CharToOemBuff(msgBuf, msgBuf, strlen(msgBuf));
#endif
#endif
printf("
Syntax
dsInt16_t dsmRCMsg (dsUint32_t
dsInt16_t
dsmRC,
char
*msg);
dsmHandle,
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
dsInt16_t dsmRC (I)
The API return code of the associated message text. The API return codes are
listed in the dsmrc.h file. See Appendix A, API return codes source file:
dsmrc.h, on page 143 for more information.
char *msg (O)
This parameter is the message text that is associated with the return code,
dsmRC. The caller is responsible for allocating enough space for the message
text.
The maximum length for msg is defined as DSM_MAX_RC_MSG_LENGTH.
On platforms that have National Language Support and a choice of language
message files, the API returns a message string in the national language.
Return codes
The return code numbers are provided in parentheses ( ).
Table 44. Return codes for dsmRCMsg
Return code
Explanation
DSM_RC_NULL_MSG (2002)
DSM_RC_INVALID_RETCODE (2021)
DSM_RC_NLS_CANT_OPEN_TXT (0610)
124
dsmRegisterFS
The dsmRegisterFS function call registers a new file space with the Tivoli Storage
Manager server. Register a file space first before you can back up any data to it.
Application clients should not use the same file space names that a backup-archive
client would use.
v On UNIX or Linux, run the df command for these names.
v On Windows, these names are generally the volume labels that are associated
with the different drives on your system.
Syntax
dsInt16_t dsmRegisterFS (dsUint32_t
regFSData
*regFilespaceP);
dsmHandle,
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
regFSData *regFilespaceP (I)
This parameter passes the name of the file space and associated information
that you need to register with the Tivoli Storage Manager server.
Note: The fstype field includes the prefix, API:. All file space queries
display this string. For example, if the user passes myfstype for fstype in
dsmRegisterFS, the actual value string on the server is returned as
API:myfstype when queried. This prefix distinguishes API objects from
backup-archive objects.
The usable area for fsInfo is now DSM_MAX_USER_FSINFO_LENGTH.
Return codes
The return code numbers are provided in parentheses ( ).
Table 45. Return codes for dsmRegisterFS
Return code
Explanation
DSM_RC_INVALID_FSNAME (2016)
DSM_RC_INVALID_DRIVE_CHAR (2026)
DSM_RC_NULL_FSNAME (2027)
DSM_RC_FS_ALREADY_REGED (2062)
DSM_RC_WRONG_VERSION_PARM (2065)
DSM_RC_FSINFO_TOOLONG (2106)
125
dsmReleaseBuffer
The dsmReleaseBuffer function returns a buffer to Tivoli Storage Manager. The
application calls dsmReleaseBuffer after a dsmGetDataEx was called and the
application has moved all the data out of the buffer and is ready to release it.
dsmReleaseBuffer requires that dsmInitEx was called with the UseTsmBuffers set to
btrue and a non-zero value was provided for numTsmBuffers. dsmReleaseBuffer
should also be called if the application is about to call dsmTerminate and it still
holds Tivoli Storage Manager buffers.
dsmReleaseBufferSyntax
dsInt16_t
dsmReleaseBuffer
(releaseBufferIn_t
releaseBufferOut_t
*dsmReleaseBufferInP,
*dsmReleaseBufferOutP) ;
Parameters
releaseBufferIn_t * dsmReleaseBufferInP (I)
This structure contains the following input parameters.
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
dsUint8_t tsmBufferHandle(I)
The handle that identifies this buffer.
char *dataPtr(I)
The address to which the application is written.
Return codes
The return code numbers are provided in parentheses ( ).
Table 46. Return codes for dsmReleaseBuffer
Return code
Explanation
DSM_RC_BAD_CALL_SEQUENCE
DSM_RC_INVALID_TSMBUFFER
DSM_RC_BUFF_ARRAY_ERROR
dsmRenameObj
The dsmRenameObj function call renames the high-level or low-level object name.
For backup objects, pass in the current object name and changes either for
high-level or low-level object names. For archive objects, pass in the current object
file space name and object ID, and changes either for high-level or low-level object
names. Use this function call within dsmBeginTxn and dsmEndTxn calls.
The merge flag determines whether or not a duplicate backup object name is
merged with the existing backups. If the new name corresponds to an existing
object and merge is true, the current object is converted to the new name and it
becomes the active version of the new name while the existing active object that
had that name becomes the top most inactive copy of the object. If the new name
corresponds to an existing object and merge is false, the function then returns the
return code, DSM_RC_ABORT_DUPLICATE_OBJECT.
Note: Only the owner of the object can rename it.
126
Syntax
dsInt16_t dsmRenameObj
(dsmRenameIn_t
dsmRenameOut_t
*dsmRenameInP,
*dsmRenameOutP);
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
dsmRenameIn_t *dsmRenameInP
This structure contains the input parameters.
dsUint8_t repository (I);
This parameter indicates whether the file space to delete is in the backup
repository or the archive repository.
dsmObjName *objNameP (I);
This parameter is a pointer to the structure that contains the current file
space name, high-level object name, low-level object name, and object type.
char newHl [DSM_MAX_HL_LENGTH + 1];
This parameter specifies the new high-level name.
char newLl [DSM_MAX_LL_LENGTH + 1];
This parameter specifies the new low-level name.
dsBool_t merge;
This parameter determines whether or not a backup object is merged with
duplicate named objects. The values are either true or false.
ObjID;
The object ID for archive objects.
dsmRenameOut_t *dsmRnameOutP
This structure contains the output parameters.
Note: Currently, there are no output parameters.
Return codes
The return code numbers are provided in parentheses ( ).
Table 47. Return codes for dsmRenameObj
Return code
Explanation
DSM_RC_ABORT_MERGE_ERROR (45)
DSM_RC_ABORT_DUPLICATE_OBJECT (32)
DSM_RC_ABORT_NO_MATCH (2)
DSM_RC_REJECT_SERVER_DOWNLEVEL (58)
127
dsmRequestBuffer
The dsmRequestBuffer function returns a buffer to Tivoli Storage Manager. The
application calls dsmRequestBuffer after a dsmGetDataEx was called and the
application has moved all the data out of the buffer and is ready to release it.
dsmReleaseBuffer requires that dsmInitEx was called with the UseTsmBuffers set to
btrue and a non-zero value was provided for numTsmBuffers. dsmReleaseBuffer
should also be called if the application is about to call dsmTerminate and it still
holds Tivoli Storage Manager buffers.
Syntax
dsInt16_t
dsmRequestBuffer
(getBufferIn_t
getBufferOut_t
*dsmRequestBufferInP,
*dsmRequestBufferOutP) ;
Parameters
getBufferIn_t * dsmRequestBufferInP (I)
This structure contains the following input parameter:
dsUint32_t dsmHandle
The handle that identifies the session and associates it with a previous
dsmInitEx call.
getBufferOut_t *dsmRequestBufferOut P (0)
This structure contains the output parameters.
dsUint8_t tsmBufferHandle(0)
The handle that identifies this buffer.
char *dataPtr(0)
The address to which application is written.
dsUint32_t *bufferLen(0)
Maximum number of bytes that can be written to this buffer.
Return codes
The return code numbers are provided in parentheses ( ).
Table 48. Return codes for dsmRequestBuffer
Return code
Explanation
DSM_RC_BAD_CALL_SEQUENCE (33)
DSM_RC_SENDDATA_WITH_ZERO_SIZE (34)
DSM_RC_BUFF_ARRAY_ERROR (121)
128
dsmRetentionEvent
The dsmRetentionEvent function call sends a list of object IDs to the server, with a
retention event operation to be performed on these objects. Use this function call
within dsmBeginTxn and dsmEndTxn calls.
Note: The Tivoli Storage Manager server must be at the Version 5.2.2.0 level or
higher for this function to work.
The maximum number of objects in a call is limited to the value of maxObjPerTxn
that is returned in the ApisessInfo structure from a dsmQuerySessInfo call.
Only an owner of an object can send an event on that object.
The following events are possible:
eventRetentionActivate
Can be issued only for objects that are bound to an event based
management class. Sending this event activates the event for this object
and the state of the retention for this object changes from
DSM_ARCH_RETINIT_PENDING to DSM_ARCH_RETINIT_STARTED.
eventHoldObj
This event issues a retention or deletion hold on the object so that, until a
release is issued, the object is not expired and cannot be deleted.
eventReleaseObj
This event can only be issued for an object that has a value of
DSM_ARCH_HELD_TRUE in the objectHeld field and removes the hold
on the object resuming the original retention policy.
Before you send dsmRetentionEvent, send the query sequence that is described in
Querying the Tivoli Storage Manager system on page 33 to obtain the
information for the object. The call to dsmGetNextQObj returns a data structure
named qryRespArchiveData for archive queries. This data structure contains the
information that is needed for dsmRetentionEvent.
Syntax
extern dsInt16_t DSMLINKAGE dsmRetentionEvent(
dsmRetentionEventIn_t
*ddsmRetentionEventInP,
dsmRetentionEventOut_t
*dsmRetentionEventOutP
);
Parameters
dsmRetentionEventIn_t *dsmRetentionEventP
This structure contains the following input parameters:
dsUint16_t stVersion;
This parameter indicates the structure version.
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
dsmEventType_t evenType (I);
This parameter indicates the event type. See the beginning of this section
for the meaning of these possible values: eventRetentionActivate,
eventHoldObj, eventReleaseObj
129
dsmObjList_t objList;
This parameter indicates a list of object IDs to signal.
Return codes
The return code numbers are provided in parentheses ( ).
Table 49. Return codes for dsmRetentionEvent
Return code
Explanation
DSM_RC_ABORT_NODE_NOT_AUTHORIZED
(36)
DSM_RC_ABORT_TXN_LIMIT_EXCEEDED (249)
DSM_RC_ABORT_OBJECT_ALREADY_HELD
(250)
DSM_RC_REJECT_SERVER_DOWNLEVEL (58)
dsmSendBufferData
The dsmSendBufferData function call sends a byte stream of data to Tivoli Storage
Manager through a buffer that was provided in a previous dsmReleaseBuffer call.
The application client can pass any type of data for storage on the server. Usually
this data are file data, but it is not limited to file data. You can call
dsmSendBufferData several times, if the byte stream of data that you are sending is
large. Regardless of whether the call succeeds or fails, the buffer is released.
Note: When using useTsmBuffers, even if an object is included for compression,
the object is not compressed.
Syntax
dsInt16_t
dsmSendBufferData
(sendBufferDataIn_t
sendBufferDataOut_t
*dsmSendBufferDataExInP,
*dsmSendBufferDataOutP) ;
Parameters
sendBufferDataIn_t * dsmSendBufferDataInP (I)
This structure contains the following input parameters.
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
dsUint8_t tsmBufferHandle(I)
The handle that identifies the buffer to send.
char *dataPtr(I)
The address to which application data was written.
dsUint32_t numBytes(I)
The actual number of bytes written by the application (should always be
less than the value provided in dsmReleaseBuffer).
130
Return codes
The return code numbers are provided in parentheses ( ).
Table 50. Return codes for dsmSendBufferData
Return code
Explanation
DSM_RC_BAD_CALL_SEQUENCE (2041)
DSM_RC_INVALID_TSMBUFFER (2042)
DSM_RC_BUFF_ARRAY_ERROR (2045)
DSM_RC_TOO_MANY_BYTES (2043)
The value of numBytes is bigger than the size of the buffer provided in
the dsmReleaseBuffer call.
dsmSendData
The dsmSendData function call sends a byte stream of data to Tivoli Storage
Manager through a buffer. The application client can pass any type of data for
storage on the server. Usually, these data are file data, but are not limited to such.
You can call dsmSendData several times, if the byte stream of data that you want to
send is large.
Note: The application client cannot reuse the buffer that is specified in
dsmSendData until the dsmSendData call returns.
Note: If Tivoli Storage Manager returns code 157 (DSM_RC_WILL_ABORT), start a
call to dsmEndSendObj and then to dsmEndTxn with a vote of DSM_VOTE_COMMIT.
The application should then receive return code 2302
(DSM_RC_CHECK_REASON_CODE) and pass the reason code back to the
application user. This informs the user why the server is ending the transaction.
Syntax
dsInt16_t dsmSendData (dsUint32_t
DataBlk *dataBlkPtr);
dsmHandle,
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
DataBlk *dataBlkPtr (I/O)
This parameter points to a structure that includes both a pointer to the buffer
from which the data are to be sent, as well as the size of the buffer. On return,
this structure contains the number of bytes that is actually transferred. See
Appendix B, API type definitions source files, on page 155 for the type
definition.
Return codes
The return code numbers are provided in parentheses ( ).
Table 51. Return codes for dsmSendData
Return code
Explanation
DSM_RC_NO_COMPRESS_MEMORY (154)
131
Explanation
DSM_RC_COMPRESS_GREW (155)
DSM_RC_WILL_ABORT (157)
DSM_RC_WRONG_VERSION_PARM (2065)
DSM_RC_NEEDTO_ENDTXN (2070)
DSM_RC_OBJ_EXCLUDED (2080)
DSM_RC_OBJ_NOBCG (2081)
The object has no backup copy group and will not be sent to the
server.
DSM_RC_OBJ_NOACG (2082)
The object has no archive copy group and is not sent to the
server.
DSM_RC_SENDDATA_WITH_ZERO_SIZE (2107)
dsmSendObj
The dsmSendObj function call starts a request to send a single object to storage.
Multiple dsmSendObj calls and associated dsmSendData calls can be made within the
bounds of a transaction for performance reasons.
The dsmSendObj call processes the data for the object as a byte stream passed in
memory buffers. The dataBlkPtr parameter in the dsmSendObj call permits the
application client to either:
v Pass the data and the attributes (the attributes are passed through the
objAttrPtr ) of the object in a single call.
v Specify part of the object data through the dsmSendObj call and the remainder of
the data through one or more dsmSendData calls.
Alternatively, the application client can specify only the attributes through the
dsmSendObj call and specify the object data through one or more calls to
dsmSendData. For this method, set dataBlkPtr to NULL on the dsmSendObj call.
Note: For certain object types, byte stream data might not be associated with the
data; for example, a directory entry with no extended attributes.
Before dsmSendObj is called, a preceding dsmBindMC call must be made to properly
bind a management class to the object that you want to back up or archive. The
API keeps this binding so that it can associate the proper management class with
the object when it is sent to the server. If you permit the management class that is
bound on a dsmSendObj call to default for an object type of directory
(DSM_OBJ_DIRECTORY), the default might not be the default management class.
Instead, the management class with the greatest retention time is used. If more
than one management class exists with this retention time, the first one that is
encountered is used.
Follow all object data that is sent to storage with a dsmEndSendObj call. If you do
not have object data to send to the server, or all data was contained within the
dsmSendObj call, start a dsmEndSendObj call before you can start another dsmSendObj
call. If multiple data sends were required through the dsmSendData call, the
dsmEndSendObj follows the last send to indicate the state change.
132
Syntax
dsInt16_t dsmSendObj (dsUint32_t
dsmSendType sendType,
void
*sendBuff,
dsmObjName *objNameP,
ObjAttr
*objAttrPtr,
DataBlk
*dataBlkPtr);
dsmHandle,
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
dsmSendType sendType (I)
This parameter specifies the type of send that is being performed. Possible
values include:
Name
stBackup
stArchive
stBackupMountWait
stArchiveMountWait
Description
A backup object that is sent to the server.
An archive object that is sent to the server.
A backup object for which you want the server to wait until the
necessary device, such as a tape, is mounted.
An archive object for which you want the server to wait until
the necessary device, such as a tape, is mounted.
Note: Use the MountWait types if there is any possibility that your application
user might send data to a tape.
void *sendBuff (I)
This parameter is a pointer to a structure that contains other information
specific to the sendType on the call. Currently, only a sendType of stArchive has
an associated structure. This structure is called sndArchiveData and it contains
the archive description.
dsmObjName *objNameP (I)
This parameter is a pointer to the structure that contains the file space name,
high-level object name, low-level object name, and object type. See Object
names and IDs on page 23 for more information.
ObjAttr *objAttrPtr (I)
This parameter passes object attributes of interest to the application. See
Appendix B, API type definitions source files, on page 155 for the type
definition.
The attributes are:
v owner refers to the owner of the object. Determining whether the owner is
declared to be a specific name or an empty string is important when getting
the object back from Tivoli Storage Manager storage. See Accessing objects
as session owner on page 25 for more information.
Chapter 6. API function calls
133
v sizeEstimate is a best estimate of the total size of the data object to send to
the server. Be as accurate as possible on this size, because the server uses
this attribute for efficient space allocation and object placement within its
storage resources.
If the size estimate that you specified is significantly smaller than the actual
number of bytes that are sent, the server might have difficulty allocating
enough space and end the transaction with a reason code of 11
(DSM_RS_ABORT_NO_REPOSIT_SPACE).
Note: The size estimate is for the total size of the data object in bytes.
Objects with a size smaller than DSM_MIN_COMPRESS_SIZE do not
compress.
If your object has no bit data (only the attribute information from this call),
the sizeEstimate should be zero.
Note: Starting with Version 5.1.0, the copy destination within a transaction
is not checked for consistency on zero-length objects.
v objCompressed is a Boolean value that states whether or not the object data
have already been compressed.
If the object is compressed (object compressed=bTrue), Tivoli Storage
Manager does not try to compress it again. If it is not compressed, Tivoli
Storage Manager decides whether to compress the object, based on the
values of the compression option set by the Tivoli Storage Manager
administrator and set in the API configuration sources.
If your application plans to use partial object restore or retrieve, you cannot
compress the data while sending it. To enforce this, set
ObjAttr.objCompressed to bTrue.
v objInfo saves information about the particular object.
Note: Information is not stored here automatically. When this attribute is
used, the attribute, objInfoLength, also must be set to show the length of
objInfo.
mcNameP contains the name of a management class that overrides the
management class that is obtained from dsmBindMC.
v disableDeduplication is a Boolean value. When it is set to true, this object
is not deduplicated by the client.
Return codes
The return code numbers are provided in parentheses ( ).
Table 52. Return codes for dsmSendObj
Return code
Explanation
DSM_RC_NO_COMPRESS_MEMORY
(154)
134
Explanation
DSM_RC_COMPRESS_GREW (155)
DSM_RC_WILL_ABORT (157)
DSM_RC_TL_NOACG (186)
The management class for this file does not have a valid copy group for
the send type.
DSM_RC_NULL_OBJNAME (2000)
DSM_RC_NULL_OBJATTRPTR (2004)
DSM_RC_INVALID_OBJTYPE (2010)
DSM_RC_INVALID_OBJOWNER (2019)
DSM_RC_INVALID_SENDTYPE (2022)
DSM_RC_WILDCHAR_NOTALLOWED
(2050)
DSM_RC_FS_NOT_REGISTERED (2061)
DSM_RC_WRONG_VERSION_PARM
(2065)
DSM_RC_NEEDTO_ENDTXN (2070)
DSM_RC_OBJ_EXCLUDED (2080)
DSM_RC_OBJ_NOBCG (2081)
The object has no backup copy group, and it is not sent to the server.
DSM_RC_OBJ_NOACG (2082)
The object has no archive copy group, and it is not sent to the server.
DSM_RC_DESC_TOOLONG (2100)
DSM_RC_OBJINFO_TOOLONG (2101)
DSM_RC_HL_TOOLONG (2102)
DSM_RC_NEEDTO_CALL_BINDMC
(2301)
dsmSetAccess
The dsmSetAccess function call gives other users or nodes access to backup
versions or archived copies of your objects, access to all your objects, or access to a
selective set. When you give access to another user, that user can query, restore, or
retrieve your files. This command supports wildcards for the following fields: fs,
hl, ll, node, owner.
Note: You cannot give access to both backup versions and archive copies by using
a single command. You must specify either backup or archive.
Syntax
dsInt16_t DSMLINKAGE dsmSetAccess
(dsUint32_t
dsmHandle,
dsmSetAccessType
accessType,
dsmObjName
*objNameP,
char
*node,
char
*owner);
135
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
dsmAccessType accessType (I)
This parameter specifies the type of objects for which you want to give access.
Possible values include:
Name
atBackup
atArchive
Description
Specifies that access is being set to backup objects.
Specifies that the access is being set for archive objects.
Return codes
The return code numbers are provided in parentheses ( ).
Table 53. Return codes for dsmSetAccess
Return code
Explanation
DSM_RC_INVALID_ACCESS_TYPE (2110)
DSM_RC_FILE_SPACE_NOT_FOUND (124)
DSM_RC_QUERY_COMM_FAILURE (2111)
DSM_RC_NO_FILES_BACKUP (2112)
DSM_RC_NO_FILES_ARCHIVE (2113)
DSM_RC_INVALID_SETACCESS (2114)
dsmSetUp
The dsmSetUp function call overwrites environment variable values. Call dsmSetUp
before dsmInitEx. The values that were passed in the envSetUp structure overwrite
any existing environment variables or defaults. If you specify NULL for a field,
values are taken from the environment. If you do not set a value, the values are
taken from the defaults.
Note:
1. If you use dsmSetUp, always call dsmTerminate before dsmCleanUp.
2. API instrumentation can only be activated if the testflag INSTRUMENT: API is
set in the configuration file and the dsmSetUp or dsmCleanUp calls are used in
the application.
136
Syntax
dsInt16_t DSMLINKAGE dsmSetUp
(dsBool_t
mtFlag,
envSetUp
*envSetUpP);
Parameters
dsBool_t mtFlag (I)
This parameter specifies if the API will be used in a single thread, or a
multithread mode. Values include:
DSM_SINGLETHREAD
DSM_MULTITHREAD
Note: The multithread flag must be on for LAN-free data transfer to occur.
envSetUp *envSetUpP(I)
This parameter is a pointer to the structure that holds the overwrite values.
Specify NULL if you do not want to override existing environment variables.
The fields in the envSetUp structure include:
Name
dsmiDir
dsmiConfig
dsmiLog
argv
logName
inclExclCaseSensitive
Description
A fully-qualified directory path that contains a message file on
UNIX or Linux. It also specifies the dsmtca and the dsm.sys
directories.
The fully-qualified name of the client options file.
The fully-qualified path of the error log directory.
Pass the argv[0] name of the calling program if the application
must run as TSM-Authorized. See Setting the passwordaccess
option to generate without TCA on page 21 for more
information.
The file name for an error log if the application does not use
dsierror.log.
Indicates whether include/exclude rules are case-sensitive or
case-insensitive. This parameter can be used on Windows only,
it is ignored elsewhere.
Return codes
The return code numbers are provided in parentheses ( ).
Table 54. Return codes for dsmSetUp
Return code
Explanation
DSM_RC_ACCESS_DENIED (106)
DSM_RC_INVALID_OPT (0400)
DSM_RC_NO_HOST_ADDR (0405)
DSM_RC_NO_OPT_FILE (0406)
DSM_RC_MACHINE_SAME (0408)
DSM_RC_INVALID_SERVER (0409)
The system options file does not contain the SERVERNAME option.
DSM_RC_INVALID_KEYWORD (0410)
DSM_RC_PATTERN_TOO_COMPLEX (0411)
137
Explanation
DSM_RC_NO_CLOSING_BRACKET (0412)
DSM_RC_NLS_CANT_OPEN_TXT (0610)
DSM_RC_NLS_INVALID_CNTL_REC (0612)
DSM_RC_NOT_ADSM_AUTHORIZED (0927) You must be the TSM-Authorized user to have multithreading and
passwordaccess generate.
DSM_RC_NO_INCLEXCL_FILE (2229)
DSM_RC_NO_SYS_OR_INCLEXCL (2230)
dsmTerminate
The dsmTerminate function call ends a session with the Tivoli Storage Manager
server and cleans up the Tivoli Storage Manager environment.
Syntax
There are no return codes that are specific for this call.
dsInt16_t dsmTerminate (dsUint32_t dsmHandle);
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
dsmUpdateFS
The dsmUpdateFS function call updates a file space in Tivoli Storage Manager
storage. This update ensures that the Tivoli Storage Manager administrator has a
current record of your file space.
Syntax
dsInt16_t dsmUpdateFS (dsUint32_t
char
*fs,
dsmFSUpd
*fsUpdP,
dsUint32_t
fsUpdAct);
dsmHandle,
Parameters
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
char *fs (I)
This parameter is a pointer to the file space name.
dsmFSUpd *fsUpdP (I)
This parameter is a pointer to the structure that has the correct fields for the
update that you want. Complete only those fields that need updating.
dsUint32_t fsUpdAct (I)
A 2-byte bit map that indicates which of the fields to update. The bit masks
have the following values:
v DSM_FSUPD_FSTYPE
v DSM_FSUPD_FSINFO
138
v
v
v
v
Important: For Windows operating systems, the drive letter value from
dsmDOSAttrib is also updated when FSINFO is selected.
DSM_FSUPD_OCCUPANCY
DSM_FSUPD_CAPACITY
DSM_FSUPD_BACKSTARTDATE
DSM_FSUPD_BACKCOMPLETEDATE
For a description of these bit masks, see the DSM_FSUPD definitions in the
following topic: Appendix B, API type definitions source files, on page 155.
Return codes
The following table lists return codes for the dsmUpdateFS function call.
Table 55. Return codes for dsmUpdateFS
Return code
Description
DSM_RC_FS_NOT_REGISTERED
2061
DSM_RC_WRONG_VERSION_PARM 2065
2106
DSM_RC_FSINFO_TOOLONG
dsmUpdateObj
The dsmUpdateObj function call updates the meta information associated with an
active backup or archive object already on the server. The application bit data is
not affected. To update an object, you must give a specific non-wildcard name. To
update an archived object, set the dsmSendType to stArchive. Only the latest named
archive object is updated.
You can only start the dsmUpdateObj call in the session state; it cannot be called
inside a transaction because it performs its own transaction. And, you can update
only one object at a time.
Note: On a UNIX or Linux operating system, if you change the owner field, you
cannot query or restore the object unless you are the root user.
Syntax
dsInt16_t dsmUpdateObj
(dsUint32_t
dsmHandle,
dsmSendType
sendType,
void
*sendBuff,
dsmObjName
*objNameP,
ObjAttr
*objAttrPtr, /* objInfo */
dsUint16_t
objUpdAct); /* action bit vector */
Parameters
The field descriptions are the same as those in dsmSendObj, with the following
exceptions:
dsmObjName *objNameP (I)
You cannot use a wildcard.
ObjAttr *objAttrPtr (I)
The objCompressed field is ignored for this call.
Chapter 6. API function calls
139
Return codes
The return code numbers are provided in parentheses ( ).
Table 56. Return codes for dsmUpdateObj
Return code
Explanation
DSM_RC_INVALID_ACTION (2232)
Invalid action.
DSM_RC_FS_NOT_REGISTERED (2061)
DSM_RC_ABORT_NO_MATCH (2)
dsmUpdateObjEx
The dsmUpdateObjEx function call updates the meta information that is associated
with an active backup or archive object that is on the server. The application bit
data is not affected. To update an object, you must specify a non-wildcard name,
or you can specify the object ID to update a specific archived object. You cannot
use wildcard characters when specifying the name. To update a backup object, set
the dsmSendType parameter to stBackup. To update an archived object, set the
dsmSendType parameter to stArchive.
140
You can only start the dsmUpdateObjEx call in the session state; it cannot be called
inside a transaction because it performs its own transaction. You can update only
one object at a time.
Remember: On a UNIX or Linux operating system, if you change the owner field,
you cannot query or restore the object unless you are the root user. Only the
current active version of a backup object can be updated.
Syntax
dsInt16_t dsmUpdateObjEx
(dsmUpdateObjExIn_t
*dsmUpdateObjExInP,
dsmUpdateObjExOut_t *dsmUpdateObjExOutP);
Parameters
dsmUpdateObjExIn_t *dsmUpdateObjExInP
This structure contains the following input parameters:
dsUint16_t stVersion (I)
The current version of the structure that is used.
dsUint32_t dsmHandle (I)
The handle that associates this call with a previous dsmInitEx call.
dsmSendType sendType (I)
The type of send that is being performed. The value can be:
stBackup
A backup object that is sent to the server.
stArchive
An archive object that is sent to the server.
dsmObjName *objNameP (I)
A pointer to the structure that contains the filespace name, high-level
object name, low-level object name, and object type. You cannot use a
wildcard.
ObjAttr *objAttrPtr (I)
Passes object attributes to the application. The values that are updated
depend on the flags in the objUpdAct field. The objCompressed attribute is
ignored for this call.
The attributes are:
v owner changes the owner if a new name is entered.
v sizeEstimate is the actual amount of data that is sent in bytes. The
value is stored in the Tivoli Storage Manager meta data for future use.
v objCompressed is a Boolean value that states whether or not the object
data have already been compressed.
v objInfo is an attribute that contains the new information to be placed in
the objInfo field. Set the objInfoLength to the length of the new
objInfo.
v mcNameP contains the name of a management class that overrides the
management class that is obtained from dsmBindMC.
dsUint32_t objUpdAct
Specifies the bit masks and actions for objUpdAct are:
DSM_BACKUPD_MC
Updates the management class for the object.
Chapter 6. API function calls
141
DSM_BACKUPD_OBJINFO
Updates the information object (objInfo), the length of the
information object (objInfoLength), and the amount of data that is
sent (sizeEstimate) for the backup object.
DSM_BACKUPD_OWNER
Updates the owner for the backup object.
DSM_ARCHUPD_DESCR
Updates the Description field for the archive object. Enter the
value for the new description through the sendBuff parameter.
DSM_ARCHUPD_OBJINFO
Updates the information object (objInfo), the length of the
information object (objInfoLength), and the amount of data that is
sent (sizeEstimate) for the archive object.
DSM_ARCHUPD_OWNER
Updates the owner of the archive object.
ObjID archObjId
Specifies the unique object ID for a specific archive object. Because multiple
archive objects can have the same name, this parameter identifies a specific
one. You can obtain the object ID by using a query archive call.
dsmUpdateObjExOut_t *dsmUpdateObjExOutP
This structure contains the output parameter:
dsUint16_t stVersion (I)
The current version of the structure that is used.
Return codes
The return code numbers are provided in parentheses ( ) in the following table.
Table 57. Return codes for dsmUpdateObjEx
Return code
Explanation
DSM_RC_INVALID_ACTION (2012)
Invalid action.
DSM_RC_FS_NOT_REGISTERED (2061)
DSM_RC_ABORT_NO_MATCH (2)
142
0 /* successful completion
0 /* successful completion
*/
*/
-1 /* unsuccessful completion */
1
2
3
4
5
6
7
8
9
10
11
DSM_RS_ABORT_NO_STO_SPACE_SKIP
12
13
14
15
16
17
18
143
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
DSM_RS_ABORT_FS_NOT_DEFINED
DSM_RS_ABORT_NODE_ALREADY_DEFED
DSM_RS_ABORT_NO_DEFAULT_DOMAIN
DSM_RS_ABORT_INVALID_NODENAME
DSM_RS_ABORT_INVALID_POL_BIND
DSM_RS_ABORT_DEST_NOT_DEFINED
DSM_RS_ABORT_WAIT_FOR_SPACE
DSM_RS_ABORT_NOT_AUTHORIZED
DSM_RS_ABORT_RULE_ALREADY_DEFED
DSM_RS_ABORT_NO_STOR_SPACE_STOP
20
21
22
23
24
25
26
27
28
29
#define DSM_RS_ABORT_LICENSE_VIOLATION
30
#define DSM_RS_ABORT_EXTOBJID_ALREADY_EXISTS 31
#define DSM_RS_ABORT_DUPLICATE_OBJECT
32
#define
#define
#define
#define
#define
#define
#define
DSM_RS_ABORT_INVALID_OFFSET
DSM_RS_ABORT_INVALID_LENGTH
DSM_RS_ABORT_STRING_ERROR
DSM_RS_ABORT_NODE_NOT_AUTHORIZED
DSM_RS_ABORT_RESTART_NOT_POSSIBLE
DSM_RS_ABORT_RESTORE_IN_PROGRESS
DSM_RS_ABORT_SYNTAX_ERROR
33
34
35
36
37
38
39
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
DSM_RS_ABORT_DATA_SKIPPED
DSM_RS_ABORT_EXCEED_MAX_MP
DSM_RS_ABORT_NO_OBJSET_MATCH
DSM_RS_ABORT_PVR_ERROR
DSM_RS_ABORT_BAD_RECOGTOKEN
DSM_RS_ABORT_MERGE_ERROR
DSM_RS_ABORT_FSRENAME_ERROR
DSM_RS_ABORT_INVALID_OPERATION
DSM_RS_ABORT_STGPOOL_UNDEFINED
DSM_RS_ABORT_INVALID_DATA_FORMAT
DSM_RS_ABORT_DATAMOVER_UNDEFINED
40
41
42
43
44
45
46
47
48
49
50
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
DSM_RS_ABORT_INVALID_MOVER_TYPE
231
DSM_RS_ABORT_ITEM_IN_USE
232
DSM_RS_ABORT_LOCK_CONFLICT
233
DSM_RS_ABORT_SRV_PLUGIN_COMM_ERROR
234
DSM_RS_ABORT_SRV_PLUGIN_OS_ERROR
235
DSM_RS_ABORT_CRC_FAILED
236
DSM_RS_ABORT_INVALID_GROUP_ACTION
237
DSM_RS_ABORT_DISK_UNDEFINED
238
DSM_RS_ABORT_BAD_DESTINATION
239
DSM_RS_ABORT_DATAMOVER_NOT_AVAILABLE 240
DSM_RS_ABORT_STGPOOL_COPY_CONT_NO
241
DSM_RS_ABORT_RETRY_SINGLE_TXN
242
DSM_RS_ABORT_TOC_CREATION_FAIL
243
DSM_RS_ABORT_TOC_LOAD_FAIL
244
DSM_RS_ABORT_PATH_RESTRICTED
245
DSM_RS_ABORT_NO_LANFREE_SCRATCH
246
DSM_RS_ABORT_INSERT_NOT_ALLOWED
247
DSM_RS_ABORT_DELETE_NOT_ALLOWED
248
DSM_RS_ABORT_TXN_LIMIT_EXCEEDED
249
DSM_RS_ABORT_OBJECT_ALREADY_HELD
250
DSM_RS_ABORT_INVALID_CHUNK_REFERENCE 254
DSM_RS_ABORT_DESTINATION_NOT_DEDUP
255
DSM_RS_ABORT_DESTINATION_POOL_CHANGED 257
DSM_RS_ABORT_NOT_ROOT
258
/* RETURN CODE */
#define DSM_RC_ABORT_SYSTEM_ERROR
#define DSM_RC_ABORT_NO_MATCH
#define DSM_RC_ABORT_BY_CLIENT
144
DSM_RS_ABORT_SYSTEM_ERROR
DSM_RS_ABORT_NO_MATCH
DSM_RS_ABORT_BY_CLIENT
#define
#define
#define
#define
#define
#define
#define
DSM_RC_ABORT_ACTIVE_NOT_FOUND
DSM_RC_ABORT_NO_DATA
DSM_RC_ABORT_BAD_VERIFIER
DSM_RC_ABORT_NODE_IN_USE
DSM_RC_ABORT_EXPDATE_TOO_LOW
DSM_RC_ABORT_DATA_OFFLINE
DSM_RC_ABORT_EXCLUDED_BY_SIZE
DSM_RS_ABORT_ACTIVE_NOT_FOUND
DSM_RS_ABORT_NO_DATA
DSM_RS_ABORT_BAD_VERIFIER
DSM_RS_ABORT_NODE_IN_USE
DSM_RS_ABORT_EXPDATE_TOO_LOW
DSM_RS_ABORT_DATA_OFFLINE
DSM_RS_ABORT_EXCLUDED_BY_SIZE
#define DSM_RC_ABORT_NO_REPOSIT_SPACE
#define DSM_RC_ABORT_NO_STO_SPACE_SKIP
DSM_RS_ABORT_NO_STO_SPACE_SKIP
DSM_RS_ABORT_NO_STO_SPACE_SKIP
#define
#define
#define
#define
#define
#define
#define
DSM_RC_ABORT_MOUNT_NOT_POSSIBLE
DSM_RC_ABORT_SIZESTIMATE_EXCEED
DSM_RC_ABORT_DATA_UNAVAILABLE
DSM_RC_ABORT_RETRY
DSM_RC_ABORT_NO_LOG_SPACE
DSM_RC_ABORT_NO_DB_SPACE
DSM_RC_ABORT_NO_MEMORY
DSM_RS_ABORT_MOUNT_NOT_POSSIBLE
DSM_RS_ABORT_SIZESTIMATE_EXCEED
DSM_RS_ABORT_DATA_UNAVAILABLE
DSM_RS_ABORT_RETRY
DSM_RS_ABORT_NO_LOG_SPACE
DSM_RS_ABORT_NO_DB_SPACE
DSM_RS_ABORT_NO_MEMORY
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
DSM_RC_ABORT_FS_NOT_DEFINED
DSM_RC_ABORT_NODE_ALREADY_DEFED
DSM_RC_ABORT_NO_DEFAULT_DOMAIN
DSM_RC_ABORT_INVALID_NODENAME
DSM_RC_ABORT_INVALID_POL_BIND
DSM_RC_ABORT_DEST_NOT_DEFINED
DSM_RC_ABORT_WAIT_FOR_SPACE
DSM_RC_ABORT_NOT_AUTHORIZED
DSM_RC_ABORT_RULE_ALREADY_DEFED
DSM_RC_ABORT_NO_STOR_SPACE_STOP
DSM_RS_ABORT_FS_NOT_DEFINED
DSM_RS_ABORT_NODE_ALREADY_DEFED
DSM_RS_ABORT_NO_DEFAULT_DOMAIN
DSM_RS_ABORT_INVALID_NODENAME
DSM_RS_ABORT_INVALID_POL_BIND
DSM_RS_ABORT_DEST_NOT_DEFINED
DSM_RS_ABORT_WAIT_FOR_SPACE
DSM_RS_ABORT_NOT_AUTHORIZED
DSM_RS_ABORT_RULE_ALREADY_DEFED
DSM_RS_ABORT_NO_STOR_SPACE_STOP
#define DSM_RC_ABORT_LICENSE_VIOLATION
DSM_RS_ABORT_LICENSE_VIOLATION
#define DSM_RC_ABORT_EXTOBJID_ALREADY_EXISTS DSM_RS_ABORT_EXTOBJID_ALREADY_EXISTS
#define DSM_RC_ABORT_DUPLICATE_OBJECT
DSM_RS_ABORT_DUPLICATE_OBJECT
#define DSM_RC_ABORT_INVALID_OFFSET
#define DSM_RC_ABORT_INVALID_LENGTH
DSM_RS_ABORT_INVALID_OFFSET
DSM_RS_ABORT_INVALID_LENGTH
#define
#define
#define
#define
#define
DSM_RC_ABORT_STRING_ERROR
DSM_RC_ABORT_NODE_NOT_AUTHORIZED
DSM_RC_ABORT_RESTART_NOT_POSSIBLE
DSM_RC_ABORT_RESTORE_IN_PROGRESS
DSM_RC_ABORT_SYNTAX_ERROR
DSM_RS_ABORT_STRING_ERROR
DSM_RS_ABORT_NODE_NOT_AUTHORIZED
DSM_RS_ABORT_RESTART_NOT_POSSIBLE
DSM_RS_ABORT_RESTORE_IN_PROGRESS
DSM_RS_ABORT_SYNTAX_ERROR
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
DSM_RC_ABORT_DATA_SKIPPED
DSM_RC_ABORT_EXCEED_MAX_MP
DSM_RC_ABORT_NO_OBJSET_MATCH
DSM_RC_ABORT_PVR_ERROR
DSM_RC_ABORT_BAD_RECOGTOKEN
DSM_RC_ABORT_MERGE_ERROR
DSM_RC_ABORT_FSRENAME_ERROR
DSM_RC_ABORT_INVALID_OPERATION
DSM_RC_ABORT_STGPOOL_UNDEFINED
DSM_RC_ABORT_INVALID_DATA_FORMAT
DSM_RC_ABORT_DATAMOVER_UNDEFINED
DSM_RS_ABORT_DATA_SKIPPED
DSM_RS_ABORT_EXCEED_MAX_MP
DSM_RS_ABORT_NO_OBJSET_MATCH
DSM_RS_ABORT_PVR_ERROR
DSM_RS_ABORT_BAD_RECOGTOKEN
DSM_RS_ABORT_MERGE_ERROR
DSM_RS_ABORT_FSRENAME_ERROR
DSM_RS_ABORT_INVALID_OPERATION
DSM_RS_ABORT_STGPOOL_UNDEFINED
DSM_RS_ABORT_INVALID_DATA_FORMAT
DSM_RS_ABORT_DATAMOVER_UNDEFINED
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
DSM_RC_ABORT_INVALID_MOVER_TYPE
DSM_RC_ABORT_ITEM_IN_USE
DSM_RC_ABORT_LOCK_CONFLICT
DSM_RC_ABORT_SRV_PLUGIN_COMM_ERROR
DSM_RC_ABORT_SRV_PLUGIN_OS_ERROR
DSM_RC_ABORT_CRC_FAILED
DSM_RC_ABORT_INVALID_GROUP_ACTION
DSM_RC_ABORT_DISK_UNDEFINED
DSM_RC_ABORT_BAD_DESTINATION
DSM_RC_ABORT_DATAMOVER_NOT_AVAILABLE
DSM_RC_ABORT_STGPOOL_COPY_CONT_NO
DSM_RC_ABORT_RETRY_SINGLE_TXN
DSM_RS_ABORT_INVALID_MOVER_TYPE
DSM_RS_ABORT_ITEM_IN_USE
DSM_RS_ABORT_LOCK_CONFLICT
DSM_RS_ABORT_SRV_PLUGIN_COMM_ERROR
DSM_RS_ABORT_SRV_PLUGIN_OS_ERROR
DSM_RS_ABORT_CRC_FAILED
DSM_RS_ABORT_INVALID_GROUP_ACTION
DSM_RS_ABORT_DISK_UNDEFINED
DSM_RS_ABORT_BAD_DESTINATION
DSM_RS_ABORT_DATAMOVER_NOT_AVAILABLE
DSM_RS_ABORT_STGPOOL_COPY_CONT_NO
DSM_RS_ABORT_RETRY_SINGLE_TXN
Appendix A. API return codes source file: dsmrc.h
145
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
DSM_RC_ABORT_TOC_CREATION_FAIL
DSM_RS_ABORT_TOC_CREATION_FAIL
DSM_RC_ABORT_TOC_LOAD_FAIL
DSM_RS_ABORT_TOC_LOAD_FAIL
DSM_RC_ABORT_PATH_RESTRICTED
DSM_RS_ABORT_PATH_RESTRICTED
DSM_RC_ABORT_NO_LANFREE_SCRATCH
DSM_RS_ABORT_NO_LANFREE_SCRATCH
DSM_RC_ABORT_INSERT_NOT_ALLOWED
DSM_RS_ABORT_INSERT_NOT_ALLOWED
DSM_RC_ABORT_DELETE_NOT_ALLOWED
DSM_RS_ABORT_DELETE_NOT_ALLOWED
DSM_RC_ABORT_TXN_LIMIT_EXCEEDED
DSM_RS_ABORT_TXN_LIMIT_EXCEEDED
DSM_RC_ABORT_OBJECT_ALREADY_HELD
DSM_RS_ABORT_OBJECT_ALREADY_HELD
DSM_RC_ABORT_INVALID_CHUNK_REFERENCE DSM_RS_ABORT_INVALID_CHUNK_REFERENCE
DSM_RC_ABORT_DESTINATION_NOT_DEDUP
DSM_RS_ABORT_DESTINATION_NOT_DEDUP
DSM_RC_ABORT_DESTINATION_POOL_CHANGED DSM_RS_ABORT_DESTINATION_POOL_CHANGED
DSM_RC_ABORT_NOT_ROOT
DSM_RS_ABORT_NOT_ROOT
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
DSM_RC_USER_ABORT
101
DSM_RC_NO_MEMORY
102
DSM_RC_TA_COMM_DOWN
2021
DSM_RC_FILE_NOT_FOUND
104
DSM_RC_PATH_NOT_FOUND
105
DSM_RC_ACCESS_DENIED
106
DSM_RC_NO_HANDLES
107
DSM_RC_FILE_EXISTS
108
DSM_RC_INVALID_PARM
109
DSM_RC_INVALID_HANDLE
110
DSM_RC_DISK_FULL
111
DSM_RC_PROTOCOL_VIOLATION 113
DSM_RC_UNKNOWN_ERROR
114
DSM_RC_UNEXPECTED_ERROR
115
DSM_RC_FILE_BEING_EXECUTED 116
DSM_RC_DIR_NO_SPACE
117
DSM_RC_LOOPED_SYM_LINK
118
#define
#define
#define
#define
#define
DSM_RC_FILE_NAME_TOO_LONG 119 /*
DSM_RC_FILE_SPACE_LOCKED
120 /*
DSM_RC_FINISHED
121 /*
DSM_RC_UNKNOWN_FORMAT
122 /*
DSM_RC_NO_AUTHORIZATION
123 /*
146
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
#define
#define
#define
#define
#define
DSM_RC_FILE_SPACE_NOT_FOUND 124/*
DSM_RC_TXN_ABORTED
125 /*
DSM_RC_SUBDIR_AS_FILE
126 /*
DSM_RC_PROCESS_NO_SPACE
127 /*
DSM_RC_PATH_TOO_LONG
128 /*
#define DSM_RC_NOT_COMPRESSED
129 /*
#define DSM_RC_TOO_MANY_BITS
130 /*
#define DSM_RC_SYSTEM_ERROR
131 /*
#define DSM_RC_NO_SERVER_RESOURCES 132 /*
#define DSM_RC_FS_NOT_KNOWN
133 /*
#define DSM_RC_NO_LEADING_DIRSEP
#define DSM_RC_WILDCARD_DIR
134 /*
135 /*
#define
#define
#define
#define
136
137
138
139
DSM_RC_COMM_PROTOCOL_ERROR
DSM_RC_AUTH_FAILURE
DSM_RC_TA_NOT_VALID
DSM_RC_KILLED
#define DSM_RC_RETRY
/*
/*
/*
/*
#define DSM_RC_WOULD_BLOCK
#define
#define
#define
#define
#define
#define
#define
DSM_RC_NO_COMPRESS_MEMORY
DSM_RC_COMPRESS_GREW
DSM_RC_INV_COMM_METHOD
DSM_RC_WILL_ABORT
DSM_RC_FS_WRITE_LOCKED
DSM_RC_SKIPPED_BY_USER
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
154
155
156
157
158
159
*/
to
*/
*/
*/
*/
*/
*/
*/
/*
/*
/*
/*
/*
/*
147
*/
/*---------------------------------------------------------------------------*/
/* Return codes for the Trusted Communication Agent
*/
/*---------------------------------------------------------------------------*/
#define DSM_RC_TCA_NOT_ROOT
161 /* Access to TA is denied
*/
#define DSM_RC_TCA_ATTACH_SHR_MEM_ERR 200 /* Error attaching shared memory */
#define DSM_RC_TCA_SHR_MEM_BLOCK_ERR
200 /* Shared memory block error
*/
#define DSM_RC_TCA_SHR_MEM_IN_USE
200 /* Shared memory block error
*/
#define DSM_RC_TCA_SHARED_MEMORY_ERROR 200 /* Shared memory block error
*/
#define DSM_RC_TCA_SEGMENT_MISMATCH
200 /* Shared memory block error
*/
#define DSM_RC_TCA_FORK_FAILED
292 /* Error forking off TCA process
*/
#define DSM_RC_TCA_DIED
294 /* TCA died unexpectedly
*/
#define DSM_RC_TCA_INVALID_REQUEST 295 /* Invalid request sent to TCA
*/
#define DSM_RC_TCA_SEMGET_ERROR
297 /* Error getting semaphores
*/
#define DSM_RC_TCA_SEM_OP_ERROR
298 /* Error in semaphore set or wait
*/
#define DSM_RC_TCA_NOT_ALLOWED
299 /* TCA not allowed (multi thread)
*/
/*---------------------------------------------------------------------------*/
/* 400-430 for options
*/
/*---------------------------------------------------------------------------*/
#define DSM_RC_INVALID_OPT
400 /* invalid option
*/
#define DSM_RC_NO_HOST_ADDR
405 /* Not enuf info to connect server */
#define DSM_RC_NO_OPT_FILE
406 /* No default user configuration file*/
#define DSM_RC_MACHINE_SAME
408 /* -MACHINENAME same as real name
*/
#define DSM_RC_INVALID_SERVER
409 /* Invalid server name from client */
#define DSM_RC_INVALID_KEYWORD
410 /* Invalid option keyword
*/
#define DSM_RC_PATTERN_TOO_COMPLEX
411 /* Cant match Include/Exclude entry*/
#define DSM_RC_NO_CLOSING_BRACKET
412 /* Missing closing bracket inc/excl */
#define DSM_RC_OPT_CLIENT_NOT_ACCEPTING 417/* Client doesnt accept this option
from the server
*/
#define DSM_RC_OPT_CLIENT_DOES_NOT_WANT 418/* Client doesnt want this value
from the server
*/
#define DSM_RC_OPT_NO_INCLEXCL_FILE 419
/* inclexcl file not found
*/
#define DSM_RC_OPT_OPEN_FAILURE
420
/* cant open file
*/
#define DSM_RC_OPT_INV_NODENAME
421/* used for Windows if nodename=local
machine when CLUSTERNODE=YES
*/
#define DSM_RC_OPT_NODENAME_INVALID 423/* generic invalid nodename
*/
#define DSM_RC_OPT_ERRORLOG_CONFLICT 424/* both logmax & retention specified */
#define DSM_RC_OPT_SCHEDLOG_CONFLICT 425/* both logmax & retention specified */
#define DSM_RC_CANNOT_OPEN_TRACEFILE 426/* cannot open trace file
*/
148
#define DSM_RC_CANNOT_OPEN_LOGFILE
427/* cannot open error log file
#define DSM_RC_OPT_SESSINIT_LF_CONFLICT 428/* both sessioninit=server and
enablelanfree=yes are specified*/
#define DSM_RC_OPT_OPTION_IGNORE
429/* option will be ignored
#define DSM_RC_OPT_DEDUP_CONFLICT
430/* cannot open error log file
#define DSM_RC_OPT_HSMLOG_CONFLICT 431/* both logmax & retention specified
*/
*/
*/
*/
/*---------------------------------------------------------------------------*/
/* 600 to 610 for volume label codes
*/
/*---------------------------------------------------------------------------*/
#define DSM_RC_DUP_LABEL
600 /* duplicate volume label found
*/
#define DSM_RC_NO_LABEL
601 /* drive has no label
*/
/*---------------------------------------------------------------------------*/
/* Return codes for message file processing
*/
/*---------------------------------------------------------------------------*/
#define DSM_RC_NLS_CANT_OPEN_TXT
610 /* error trying to open msg txt file */
#define DSM_RC_NLS_CANT_READ_HDR
611 /* error trying to read header
*/
#define DSM_RC_NLS_INVALID_CNTL_REC 612 /* invalid control record
*/
#define DSM_RC_NLS_INVALID_DATE_FMT 613 /* invalid default date format
*/
#define DSM_RC_NLS_INVALID_TIME_FMT 614 /* invalid default time format
*/
#define DSM_RC_NLS_INVALID_NUM_FMT 615 /* invalid default number format
*/
/*---------------------------------------------------------------------------*/
/* Return codes 620-630 are reserved for log message return codes
*/
/*---------------------------------------------------------------------------*/
#define DSM_RC_LOG_CANT_BE_OPENED 620 /* error trying to open error log
*/
#define DSM_RC_LOG_ERROR_WRITING_TO_LOG 621 /* error occurred writing to
log file
*/
#define DSM_RC_LOG_NOT_SPECIFIED
622 /* no error log file was specified
*/
/*---------------------------------------------------------------------------*/
/* Return codes 900-999 TSM CLIENT ONLY
*/
/*---------------------------------------------------------------------------*/
#define DSM_RC_NOT_ADSM_AUTHORIZED 927 /* Must be ADSM authorized to perform*/
/* action : root user or pwd auth
*/
#define DSM_RC_REJECT_USERID_UNKNOWN 940 /* userid unknown on server
*/
#define DSM_RC_FILE_IS_SYMLINK
959 /* errorlog or trace is a symbolic
link
*/
#define DSM_RC_DIRECT_STORAGE_AGENT_UNSUPPORTED 961 /* Direct connection to SA not supported */
#define DSM_RC_FS_NAMESPACE_DOWNLEVEL 963 /* Long namespace has been removed from
from the Netware volume */
#define DSM_RC_CONTINUE_NEW_CONSUMER
972 /* Continue processing using a new consumer */
#define DSM_RC_CONTINUE_NEW_CONSUMER_NODEDUP
973 /* Continue processing using a new consumer no dedup*/
#define
#define
#define
#define
#define
DSM_RC_SERVER_SUPPORTS_FUNC
994 /*
DSM_RC_SERVER_AND_SA_SUPPORT_FUNC 995
DSM_RC_SERVER_DOWNLEVEL_FUNC
996 /*
DSM_RC_STORAGEAGENT_DOWNLEVEL 997 /*
DSM_RC_SERVER_AND_SA_DOWNLEVEL 998 /*
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
149
/*---------------------------------------------------------------------------*/
/* Return codes (-71)-(-90) are reserved for CommTSM error codes
*/
/*---------------------------------------------------------------------------*/
#define DSM_RC_TSM_FAILURE
-71 /* TSM communications failure
*/
#define DSM_RC_TSM_ABORT
-72 /* Session aborted abnormally
*/
/*comm3270 error codes - no longer used*/
#define DSM_RC_COMM_TIMEOUT
2021
/*
#define DSM_RC_EMULATOR_INACTIVE 2021
/*
#define DSM_RC_BAD_HOST_ID
2021
/*
#define DSM_RC_HOST_SESS_BUSY
2021
/*
#define DSM_RC_3270_CONNECT_FAILURE 2021 /*
#define DSM_RC_NO_ACS3ELKE_DLL
2021
/*
#define DSM_RC_EMULATOR_ERROR
2021
/*
#define DSM_RC_EMULATOR_BACKLEVEL 2021
/*
#define DSM_RC_CKSUM_FAILURE
2021
/*
no
no
no
no
no
no
no
no
no
-151
-152
-155
-158
-159
-160
-161
/*
/*
/*
/*
/*
/*
/*
longer
longer
longer
longer
longer
longer
longer
longer
longer
for
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
Windows
no longer
no longer
no longer
no longer
no longer
no longer
no longer
no longer
no longer
no longer
no longer
no longer
no longer
no longer
no longer
-190
/* CPIC
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
2021
2021
2021
2021
2021
2021
2021
2021
2021
2021
2021
2021
2021
2021
2021
2021
2021
150
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
used
used
used
used
used
used
used
used
used
used
used
used
used
used
used
used
used
used
used
used
used
used
used
used
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
longer
longer
longer
longer
longer
longer
longer
longer
longer
longer
longer
longer
longer
longer
longer
longer
longer
used
used
used
used
used
used
used
used
used
used
used
used
used
used
used
used
used
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
#define
#define
#define
#define
DSM_RC_CPIC_MISSING_LU
DSM_RC_CPIC_MISSING_TP
DSM_RC_CPIC_SNA6000_LOAD_FAIL
DSM_RC_CPIC_STARTUP_FAILURE
2021
2021
2021
2021
/*
/*
/*
/*
no
no
no
no
longer
longer
longer
longer
used
used
used
used
*/
*/
*/
*/
/*---------------------------------------------------------------------------*/
/* Return codes -300 to -307 are reserved for IPX/SPX communications
*/
/*---------------------------------------------------------------------------*/
#define DSM_RC_TLI_ERROR
2021 /* no longer used
*/
#define DSM_RC_IPXSPX_FAILURE
2021 /* no longer used
*/
#define DSM_RC_TLI_DLL_MISSING
2021 /* no longer used
*/
#define DSM_RC_DLL_LOADFAILURE
2021 /* no longer used
*/
#define DSM_RC_DLL_FUNCTION_LOADFAILURE
2021 /* no longer used
*/
#define DSM_RC_IPXCONN_REFUSED
2021 /* no longer used
*/
#define DSM_RC_IPXCONN_TIMEDOUT
2021 /* no longer used
*/
#define DSM_RC_IPXADDR_UNREACHABLE
2021 /* no longer used
*/
#define DSM_RC_CPIC_MISSING_DLL
2021 /* no longer used
*/
#define DSM_RC_CPIC_DLL_LOADFAILURE
2021 /* no longer used
*/
#define DSM_RC_CPIC_FUNC_LOADFAILURE
2021 /* no longer used
*/
/*=== Shared Memory Protocol error codes
#define DSM_RC_SHM_TCPIP_FAILURE
#define DSM_RC_SHM_FAILURE
#define DSM_RC_SHM_NOTAUTH
===*/
-450
-451
-452
#define DSM_RC_NULL_OBJNAME
#define DSM_RC_NULL_DATABLKPTR
#define DSM_RC_NULL_MSG
*/
*/
*/
#define DSM_RC_NULL_OBJATTRPTR
*/
#define
#define
#define
#define
DSM_RC_NO_SESS_BLK
DSM_RC_NO_POLICY_BLK
DSM_RC_ZERO_BUFLEN
DSM_RC_NULL_BUFPTR
2006
2007
2008
2009
/*
/*
/*
/*
no server
no policy
bufferLen
bufferPtr
*/
*/
*/
*/
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
DSM_RC_INVALID_OBJTYPE
DSM_RC_INVALID_VOTE
DSM_RC_INVALID_ACTION
DSM_RC_INVALID_DS_HANDLE
DSM_RC_INVALID_REPOS
DSM_RC_INVALID_FSNAME
DSM_RC_INVALID_OBJNAME
DSM_RC_INVALID_LLNAME
DSM_RC_INVALID_OBJOWNER
DSM_RC_INVALID_ACTYPE
DSM_RC_INVALID_RETCODE
DSM_RC_INVALID_SENDTYPE
DSM_RC_INVALID_PARAMETER
DSM_RC_INVALID_OBJSTATE
DSM_RC_INVALID_MCNAME
DSM_RC_INVALID_DRIVE_CHAR
DSM_RC_NULL_FSNAME
DSM_RC_INVALID_HLNAME
2010
2011
2012
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
session
hdr
is zero
is NULL
info
info
for dataBlkPtr
for dataBlkPtr
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
#define DSM_RC_NUMOBJ_EXCEED
*/
#define
#define
#define
#define
#define
#define
2030
2031
2032
2033
2034
2035
*/
*/
*/
*/
*/
*/
DSM_RC_NEWPW_REQD
DSM_RC_OLDPW_REQD
DSM_RC_NO_OWNER_REQD
DSM_RC_NO_NODE_REQD
DSM_RC_KEY_MISSING
DSM_RC_KEY_BAD
#define DSM_RC_BAD_CALL_SEQUENCE
#define DSM_RC_INVALID_TSMBUFFER
#define DSM_RC_TOO_MANY_BYTES
/*
/*
/*
/*
/*
/*
151
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
DSM_RC_MUST_RELEASE_BUFFER
DSM_RC_BUFF_ARRAY_ERROR
DSM_RC_INVALID_DATABLK
DSM_RC_ENCR_NOT_ALLOWED
DSM_RC_OBJ_COMPRESSED
DSM_RC_OBJ_ENCRYPTED
DSM_RC_WILDCHAR_NOTALLOWED
DSM_RC_POR_NOT_ALLOWED
DSM_RC_NO_ENCRYPTION_KEY
DSM_RC_ENCR_CONFLICT
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
#define
#define
#define
#define
#define
#define
DSM_RC_FSNAME_NOTFOUND
DSM_RC_FS_NOT_REGISTERED
DSM_RC_FS_ALREADY_REGED
DSM_RC_OBJID_NOTFOUND
DSM_RC_WRONG_VERSION
DSM_RC_WRONG_VERSION_PARM
2060
2061
2062
2063
2064
2065
/*
/*
/*
/*
/*
/*
*/
*/
*/
*/
*/
*/
#define DSM_RC_NEEDTO_ENDTXN
#define DSM_RC_OBJ_EXCLUDED
#define DSM_RC_OBJ_NOBCG
#define DSM_RC_OBJ_NOACG
#define DSM_RC_APISYSTEM_ERROR
#define
#define
#define
#define
#define
#define
#define
#define
DSM_RC_DESC_TOOLONG
DSM_RC_OBJINFO_TOOLONG
DSM_RC_HL_TOOLONG
DSM_RC_PASSWD_TOOLONG
DSM_RC_FILESPACE_TOOLONG
DSM_RC_LL_TOOLONG
DSM_RC_FSINFO_TOOLONG
DSM_RC_SENDDATA_WITH_ZERO_SIZE
2100
2101
2102
2103
2104
2105
2106
2107
/*
/*
/*
/*
/*
/*
/*
/*
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
#define DSM_RC_MORE_DATA
*/
#define DSM_RC_BUFF_TOO_SMALL
#define DSM_RC_NO_API_CONFIGFILE
2228 /*specified API confg file not found*/
#define DSM_RC_NO_INCLEXCL_FILE
2229 /* specified inclexcl file not found*/
#define DSM_RC_NO_SYS_OR_INCLEXCL 2230 /* either dsm.sys or inclexcl file
specified in dsm.sys not found
*/
#define DSM_RC_REJECT_NO_POR_SUPPORT 2231 /* server doesnt have POR support*/
#define
#define
#define
#define
DSM_RC_NEED_ROOT
2300 /* API caller must be root
*/
DSM_RC_NEEDTO_CALL_BINDMC 2301 /* dsmBindMC must be called first
*/
DSM_RC_CHECK_REASON_CODE
2302 /* check reason code from dsmEndTxn */
DSM_RC_NEEDTO_ENDTXN_DEDUP_SIZE_EXCEEDED 2303 /* max dedup bytes exceeded */
/*=== return codes 2400 - 2410 used by lic file see agentrc.h ===*/
/*=== return codes 2410 - 2430 used by Oracle agent see agentrc.h ===*/
#define DSM_RC_ENC_WRONG_KEY
4580 /* the key provided is incorrect
#define DSM_RC_ENC_NOT_AUTHORIZED 4582 /* user is not allowed to decrypt
#define DSM_RC_ENC_TYPE_UNKNOWN
4584 /* encryption type unknown
152
*/
*/
*/
/*=============================================================================
Return codes (4600)-(4624) are reserved for clustering
=============================================================================*/
#define DSM_RC_CLUSTER_INFO_LIBRARY_NOT_LOADED
4600
#define DSM_RC_CLUSTER_LIBRARY_INVALID
4601
#define DSM_RC_CLUSTER_LIBRARY_NOT_LOADED
4602
#define DSM_RC_CLUSTER_NOT_MEMBER_OF_CLUSTER
4603
#define DSM_RC_CLUSTER_NOT_ENABLED
4604
#define DSM_RC_CLUSTER_NOT_SUPPORTED
4605
#define DSM_RC_CLUSTER_UNKNOWN_ERROR
4606
/*=============================================================================
Return codes (5701)-(5749) are reserved for proxy
=============================================================================*/
#define DSM_RC_PROXY_REJECT_NO_RESOURCES
5702
#define DSM_RC_PROXY_REJECT_DUPLICATE_ID
5705
#define DSM_RC_PROXY_REJECT_ID_IN_USE
5710
#define DSM_RC_PROXY_REJECT_INTERNAL_ERROR
5717
#define DSM_RC_PROXY_REJECT_NOT_AUTHORIZED
5722
#define DSM_RC_PROXY_INVALID_FROMNODE
5746
#define DSM_RC_PROXY_INVALID_SERVERFREE
5747
#define DSM_RC_PROXY_INVALID_CLUSTER
5748
#define DSM_RC_PROXY_INVALID_FUNCTION
5749
/*=============================================================================
Return codes 5801 - 5849 are reserved for cryptography/security
=============================================================================*/
#define
#define
#define
#define
#define
#define
#define
DSM_RC_CRYPTO_ICC_ERROR
DSM_RC_CRYPTO_ICC_CANNOT_LOAD
DSM_RC_SSL_NOT_SUPPORTED
DSM_RC_SSL_INIT_FAILED
DSM_RC_SSL_KEYFILE_OPEN_FAILED
DSM_RC_SSL_KEYFILE_BAD_PASSWORD
DSM_RC_SSL_BAD_CERTIFICATE
5801
5802
5803
5804
5805
5806
5807
/*=============================================================================
Return codes 6300 - 6399 are reserved for client-side deduplication
=============================================================================*/
#define DSM_RC_DIGEST_VALIDATION_ERROR
6300 /* End-to-end digest validation err */
#define DSM_RC_DATA_FINGERPRINT_ERROR
6301 /* Failure in Rabin fingeprinting
*/
#define DSM_RC_DATA_DEDUP_ERROR
6302 /* Error converting data into chunks */
#endif /* _H_DSMRC */
153
154
155
156
+-------------------------------------------------------------------------*/
#define DSM_OBJ_COMPRESSED_UNKNOWN
0
#define DSM_OBJ_COMPRESSED_YES
1
#define DSM_OBJ_COMPRESSED_NO
2
/*---------------------------------------------------------------------+
| Definitions for "group type" field in tsmGrouphandlerIn_t
|
+---------------------------------------------------------------------*/
#define
#define
#define
#define
DSM_GROUPTYPE_NONE
DSM_GROUPTYPE_RESERVED1
DSM_GROUPTYPE_PEER
DSM_GROUPTYPE_RESERVED2
0x00
0x01
0x02
0x03
/*
/*
/*
/*
*/
*/
*/
*/
/*---------------------------------------------------------------------+
| Definitions for "member type" field in tsmGrouphandlerIn_t
|
+---------------------------------------------------------------------*/
#define
#define
DSM_MEMBERTYPE_LEADER
DSM_MEMBERTYPE_MEMBER
0x01
0x02
/* group leader
/* group member
*/
*/
/*---------------------------------------------------------------------+
| Definitions for "operation type" field in tsmGrouphandlerIn_t
|
+---------------------------------------------------------------------*/
#define DSM_GROUP_ACTION_BEGIN
0x01
#define DSM_GROUP_ACTION_OPEN
0x02 /* create new group
*/
#define DSM_GROUP_ACTION_CLOSE
0x03 /* commit and save an open group */
#define DSM_GROUP_ACTION_ADD
0x04 /* Append to a group */
#define DSM_GROUP_ACTION_ASSIGNTO
0x05 /* Assign to a another group */
#define DSM_GROUP_ACTION_REMOVE
0x06 /* remove a member from a group */
/*-------------------------------------------------------------------------+
| Values for copySer in DetailCG structures for Query Mgmt Class response |
+-------------------------------------------------------------------------*/
#define Copy_Serial_Static
1
/*Copy Serialization Static
*/
#define Copy_Serial_Shared_Static
2
/*Copy Serialization Shared Static*/
#define Copy_Serial_Shared_Dynamic 3
/*Copy Serialization Shared Dynamic*/
#define Copy_Serial_Dynamic
4
/*Copy Serialization Dynamic
*/
/*-------------------------------------------------------------------------+
| Values for copyMode in DetailCG structures for Query Mgmt Class response |
+-------------------------------------------------------------------------*/
#define Copy_Mode_Modified
1
/*Copy Mode Modified
*/
#define Copy_Mode_Absolute
2
/*Copy Mode Absolute
*/
/*-------------------------------------------------------------------------+
| Values for objState in qryBackupData structure
|
+-------------------------------------------------------------------------*/
#define DSM_ACTIVE
0x01
/* query only active objects
*/
#define DSM_INACTIVE
0x02
/* query only inactive objects
*/
#define DSM_ANY_MATCH
0xFF
/* query all backup objects
*/
/*-------------------------------------------------------------------------+
| Boundary values for dsmDate.year field in qryArchiveData structure
|
+-------------------------------------------------------------------------*/
#define DATE_MINUS_INFINITE
0x0000
/* lowest boundary
*/
#define DATE_PLUS_INFINITE
0xFFFF
/* highest upper boundary */
/*-------------------------------------------------------------------------+
| Bits masks for update action parameter on dsmUpdateFS()
|
+-------------------------------------------------------------------------*/
#define DSM_FSUPD_FSTYPE
((unsigned) 0x00000002)
#define DSM_FSUPD_FSINFO
((unsigned) 0x00000004)
#define DSM_FSUPD_BACKSTARTDATE
((unsigned) 0x00000008)
#define DSM_FSUPD_BACKCOMPLETEDATE
((unsigned) 0x00000010)
#define DSM_FSUPD_OCCUPANCY
((unsigned) 0x00000020)
#define DSM_FSUPD_CAPACITY
((unsigned) 0x00000040)
#define DSM_FSUPD_RESERVED1
((unsigned) 0x00000100)
/*-------------------------------------------------------------------------+
Appendix B. API type definitions source files
157
((unsigned) 0x00000001)
((unsigned) 0x00000002)
((unsigned) 0x00000004)
/*-------------------------------------------------------------------------+
| Values for repository parameter on dsmDeleteFS()
|
+-------------------------------------------------------------------------*/
#define DSM_ARCHIVE_REP
0x0A
/* archive repository
*/
#define DSM_BACKUP_REP
0x0B
/* backup repository
*/
#define DSM_REPOS_ALL
0x01
/* all respository types
*/
/*-------------------------------------------------------------------------+
| Values for vote parameter on dsmEndTxn()
|
+-------------------------------------------------------------------------*/
#define DSM_VOTE_COMMIT 1
/* commit current transaction
*/
#define DSM_VOTE_ABORT
2
/* roll back current transaction */
/*-------------------------------------------------------------------------+
| Values for various flags returned in ApiSessInfo structure.
|
+-------------------------------------------------------------------------*/
/* Client compression field codes */
#define COMPRESS_YES
1
/* client must compress data
*/
#define COMPRESS_NO
2
/* client must NOT compress data
*/
#define COMPRESS_CD
3
/* client determined
*/
/* Archive delete permission codes. */
#define ARCHDEL_YES
1
/* archive delete allowed
#define ARCHDEL_NO
2
/* archive delete NOT allowed
*/
*/
*/
*/
/*-------------------------------------------------------------------------+
Values for various flags returned in optStruct structure.
|
-------------------------------------------------------------------------*/
#define DSM_PASSWD_GENERATE 1
#define DSM_PASSWD_PROMPT
0
#define DSM_COMM_TCP
#define DSM_COMM_NAMEDPIPE
#define DSM_COMM_SHM
1
2
3
/* tcpip
*/
/* Named pipes */
/* Shared Memory */
/* obsolete commmethods */
#define DSM_COMM_PVM_IUCV
12
#define DSM_COMM_3270
12
#define DSM_COMM_IUCV
12
#define DSM_COMM_PWSCS
12
#define DSM_COMM_SNA_LU6_2 12
#define DSM_COMM_IPXSPX
12
/* For IPX/SPX support */
#define DSM_COMM_NETBIOS
12
/* NETBIOS */
#define DSM_COMM_400COMM
12
#define DSM_COMM_CLIO
12
/* CLIO/S */
/*-------------------------------------------------------------------------+
| Values for userNameAuthorities in dsmInitEx for future use
|
+-------------------------------------------------------------------------*/
#define DSM_USERAUTH_NONE
((dsInt16_t)0x0000)
#define DSM_USERAUTH_ACCESS
((dsInt16_t)0x0001)
#define DSM_USERAUTH_OWNER
((dsInt16_t)0x0002)
#define DSM_USERAUTH_POLICY
((dsInt16_t)0x0004)
#define DSM_USERAUTH_SYSTEM
((dsInt16_t)0x0008)
/*-------------------------------------------------------------------------+
158
0x30
/* future use */
#define MEDIA_SHELF
0x40
/* future use */
#define MEDIA_OFFSITE
0x50
/* future use */
#define MEDIA_UNAVAILABLE
0xF0
/*-------------------------------------------------------------------------+
| Type definition for partial object data for dsmBeginGetData()
|
+-------------------------------------------------------------------------*/
typedef struct
{
dsUint16_t
stVersion;
/* Structure version
dsStruct64_t
partialObjOffset;
/* offset into object to begin reading
dsStruct64_t
partialObjLength;
/* amount of object to read
} PartialObjData ;
/* partial object data
*/
#define PartialObjDataVersion 1
/*
*/
*/
*/
*/
/*-------------------------------------------------------------------------+
| Type definition for date structure
|
+-------------------------------------------------------------------------*/
typedef struct
{
dsUint16_t
year;
/* year, 16-bit integer (e.g., 1990)
dsUint8_t
month;
/* month, 8-bit integer (1 - 12)
dsUint8_t
day;
/* day. 8-bit integer (1 - 31)
dsUint8_t
hour;
/* hour, 8-bit integer (0 - 23)
dsUint8_t
minute;
/* minute, 8-bit integer (0 - 59)
dsUint8_t
second;
/* second, b-bit integer (0 - 59)
}dsmDate ;
*/
*/
*/
*/
*/
*/
/*-------------------------------------------------------------------------+
| Type definition for Object ID on dsmGetObj() and in dsmGetList structure|
+-------------------------------------------------------------------------*/
typedef dsStruct64_t ObjID ;
/*-------------------------------------------------------------------------+
| Type definition for dsmQueryBuff on dsmBeginQuery()
|
Appendix B. API type definitions source files
159
+-------------------------------------------------------------------------*/
typedef void dsmQueryBuff ;
/*-------------------------------------------------------------------------+
| Type definition for dsmGetType parameter on dsmBeginGetData()
|
+-------------------------------------------------------------------------*/
typedef enum
{
gtBackup = 0x00,
/* Backup processing type
*/
gtArchive
/* Archive processing type */
} dsmGetType ;
/*-------------------------------------------------------------------------+
| Type definition for dsmQueryType parameter on dsmBeginQuery()
|
+-------------------------------------------------------------------------*/
typedef enum
{
qtArchive = 0x00,
/* Archive query type
*/
qtBackup,
/* Backup query type
*/
qtBackupActive,
/* Fast query for active backup files */
qtFilespace,
/* Filespace query type
*/
qtMC,
/* Mgmt. class query type
*/
qtReserved1,
/* future use
*/
qtReserved2,
/* future use
*/
qtReserved3,
/* future use
*/
qtReserved4,
/* future use
*/
qtBackupGroups,
/* group leaders in a specific fs
*/
qtOpenGroups,
/* Open groups in a specific fs
*/
qtReserved5,
/* future use
*/
qtProxyNodeAuth,
/* nodes that his node can proxy to */
qtProxyNodePeer,
/* Peer nodes with the same target
*/
qtReserved6,
/* future use
*/
qtReserved7,
/* future use
*/
qtReserved8
/* future use
*/
}dsmQueryType ;
/*-------------------------------------------------------------------------+
| Type definition sendType parameter on dsmBindMC() and dsmSendObj()
|
+-------------------------------------------------------------------------*/
typedef enum
{
stBackup = 0x00,
/* Backup processing type
*/
stArchive,
/* Archive processing type */
stBackupMountWait,
/* Backup processing with mountwait on */
stArchiveMountWait
/* Archive processing with mountwait on */
}dsmSendType ;
/*-------------------------------------------------------------------------+
| Type definition for delType parameter on dsmDeleteObj()
|
+-------------------------------------------------------------------------*/
typedef enum
{
dtArchive = 0x00,
/* Archive delete type */
dtBackup,
/* Backup delete (deactivate) type */
dtBackupID
/* Backup delete (remove)
type */
}dsmDelType ;
/*-------------------------------------------------------------------------+
| Type definition sendType parameter on dsmSetAccess()
|
+-------------------------------------------------------------------------*/
typedef enum
{
atBackup = 0x00,
/* Backup processing type
*/
atArchive
/* Archive processing type */
}dsmAccessType;
/*-------------------------------------------------------------------------+
| Type definition for API Version on dsmInit() and dsmQueryApiVersion() |
+-------------------------------------------------------------------------*/
typedef struct
160
{
dsUint16_t version;
dsUint16_t release;
dsUint16_t level;
}dsmApiVersion;
/* API version
/* API release
/* API level
*/
*/
*/
/*-------------------------------------------------------------------------+
| Type definition for API Version on dsmInit() and dsmQueryApiVersion() |
+-------------------------------------------------------------------------*/
typedef struct
{
dsUint16_t stVersion;
/* Structure version
*/
dsUint16_t version;
/* API version
*/
dsUint16_t release;
/* API release
*/
dsUint16_t level;
/* API level
*/
dsUint16_t subLevel;
/* API sub level
*/
dsmBool_t unicode;
/* API unicode?
*/
}dsmApiVersionEx;
#define apiVersionExVer
/*-------------------------------------------------------------------------+
| Type definition for Application Version on dsmInit()
|
+-------------------------------------------------------------------------*/
typedef struct
{
dsUint16_t stVersion;
/* Structure version
*/
dsUint16_t applicationVersion;
/* application version number */
dsUint16_t applicationRelease;
/* application release number */
dsUint16_t applicationLevel;
/* application level number
*/
dsUint16_t applicationSubLevel; /* application sub level number */
} dsmAppVersion;
#define appVersionVer
/*-------------------------------------------------------------------------+
| Type definition for object name used on BindMC, Send, Delete, Query
|
+-------------------------------------------------------------------------*/
typedef struct S_dsmObjName
{
char
fs[DSM_MAX_FSNAME_LENGTH + 1] ;
/* Filespace name
char
hl[DSM_MAX_HL_LENGTH + 1] ;
/* High level name
char
ll[DSM_MAX_LL_LENGTH + 1] ;
/* Low level name
dsUint8_t objType;
/* for object type values, see defines above
}dsmObjName;
*/
*/
*/
*/
/*-------------------------------------------------------------------------+
| Type definition for Backup delete info on dsmDeleteObj()
|
+-------------------------------------------------------------------------*/
typedef struct
{
dsUint16_t
stVersion ;
/* structure version
*/
dsmObjName
*objNameP ;
/* object name
*/
dsUint32_t
copyGroup ;
/* copy group
*/
}delBack ;
#define
delBackVersion
/*-------------------------------------------------------------------------+
| Type definition for Archive delete info on dsmDeleteObj()
|
+-------------------------------------------------------------------------*/
typedef struct
{
dsUint16_t
stVersion ;
/* structure version
*/
dsStruct64_t
objId ;
/* object ID
*/
}delArch ;
#define
delArchVersion
1
Appendix B. API type definitions source files
161
/*-------------------------------------------------------------------------+
| Type definition for Backup ID delete info on dsmDeleteObj()
|
+-------------------------------------------------------------------------*/
typedef struct
{
dsUint16_t
stVersion ;
/* structure version
*/
dsStruct64_t
objId ;
/* object ID
*/
}delBackID;
#define
delBackIDVersion
/*-------------------------------------------------------------------------+
| Type definition for delete info on dsmDeleteObj()
|
+-------------------------------------------------------------------------*/
typedef union
{
delBack
backInfo ;
delArch
archInfo ;
delBackID backIDInfo ;
}dsmDelInfo ;
/*-------------------------------------------------------------------------+
| Type definition for Object Attribute parameter on dsmSendObj()
|
+-------------------------------------------------------------------------*/
typedef struct
{
dsUint16_t stVersion;
/* Structure version */
char
owner[DSM_MAX_OWNER_LENGTH + 1]; /* object owner */
dsStruct64_t sizeEstimate;
/* Size estimate in bytes of the object */
dsmBool_t
objCompressed;
/* Is object already compressed? */
dsUint16_t objInfoLength;
/* length of object-dependent info */
char
*objInfo;
/* object-dependent info */
char
*mcNameP;
/* mgmnt class name for override */
dsmBool_t
disableDeduplication;
/* force no dedup for this object */
}ObjAttr;
#define ObjAttrVersion
/*-------------------------------------------------------------------------+
| Type definition for mcBindKey returned on dsmBindMC()
|
+-------------------------------------------------------------------------*/
typedef struct
{
dsUint16_t stVersion;
/* structure version
*/
char
mcName[DSM_MAX_MC_NAME_LENGTH + 1];
/* Name of mc bound to object. */
dsmBool_t
backup_cg_exists;
/* True/false */
dsmBool_t
archive_cg_exists;
/* True/false */
char
backup_copy_dest[DSM_MAX_CG_DEST_LENGTH + 1];
/* Backup copy dest. name */
char
archive_copy_dest[DSM_MAX_CG_DEST_LENGTH + 1];
/* Arch copy dest.name */
}mcBindKey;
#define mcBindKeyVersion
/*-------------------------------------------------------------------------+
| Type definition for object list on dsmBeginGetData()
|
+-------------------------------------------------------------------------*/
typedef struct
{
dsUint16_t
stVersion ;
/* structure version
*/
dsUint32_t
numObjId ;
/* number of object IDs in the list */
ObjID
*objId ;
/* list of object IDs to restore*/
PartialObjData *partialObjData;
/*list of partial obj data info */
}dsmGetList ;
162
#define dsmGetListVersion
#define dsmGetListPORVersion
2
3
/*-------------------------------------------------------------------------+
| Type definition for DataBlk used to Get or Send data
|
+-------------------------------------------------------------------------*/
typedef struct
{
dsUint16_t stVersion ;
/* structure version
*/
dsUint32_t bufferLen;
/* Length of buffer passed below */
dsUint32_t numBytes;
/* Actual number of bytes read from */
/* or written to the buffer */
char
*bufferPtr;
/* Data buffer */
dsUint32_t numBytesCompressed;
/* on send actual bytes compressed */
dsUint16_t reserved;
/* for future use
*/
}DataBlk;
#define DataBlkVersion
/*-------------------------------------------------------------------------+
| Type definition for Mgmt Class queryBuffer on dsmBeginQuery()
|
+-------------------------------------------------------------------------*/
typedef struct S_qryMCData
{
dsUint16_t stVersion;
/* structure version */
char
*mcName;
/* Mgmt class name */
/* single name to get one or empty string to get all*/
dsmBool_t
mcDetail;
/* Want details or not? */
}qryMCData;
#define qryMCDataVersion
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
163
dsmBool_t
reserved;
dsmBool_t
bDeduplicate;
}backupDetailCG;
*/
*/
/*-------------------------------------------------------------------------+
| Type definition for Query Mgmt Class detail response on dsmGetNextQObj()|
+-------------------------------------------------------------------------*/
typedef struct S_qryRespMCDetailData
{
dsUint16_t
stVersion;
/* structure version */
char
mcName[DSM_MAX_MC_NAME_LENGTH + 1];
/* mc name */
char
mcDesc[DSM_MAX_MC_DESCR_LENGTH + 1]; /*mc description */
archDetailCG
archDet;
/* Archive copy group detail */
backupDetailCG backupDet;
/* Backup copy group detail */
}qryRespMCDetailData;
#define qryRespMCDetailDataVersion
/*-------------------------------------------------------------------------+
| Type definition for Query Mgmt Class summary response on dsmGetNextQObj()|
+-------------------------------------------------------------------------*/
typedef struct S_qryRespMCData
{
dsUint16_t
stVersion;
/* structure version */
char
mcName[DSM_MAX_MC_NAME_LENGTH + 1];
/* mc name */
char
mcDesc[DSM_MAX_MC_DESCR_LENGTH + 1];
/* mc description */
}qryRespMCData;
#define qryRespMCDataVersion
/*-------------------------------------------------------------------------+
| Type definition for Archive queryBuffer on dsmBeginQuery()
|
+-------------------------------------------------------------------------*/
typedef struct S_qryArchiveData
{
dsUint16_t
stVersion;
/* structure version */
dsmObjName
*objName;
/* Full dsm name of object */
char
*owner;
/* owner name */
/* for maximum date boundaries, see defines above */
dsmDate
insDateLowerBound;
/* low bound archive insert date */
dsmDate
insDateUpperBound;
/* hi bound archive insert date */
dsmDate
expDateLowerBound;
/* low bound expiration date */
dsmDate
expDateUpperBound;
/* hi bound expiration date */
char
*descr;
/* archive description */
} qryArchiveData;
#define qryArchiveDataVersion
*/
*/
*/
/*-------------------------------------------------------------------------+
| Type definition for Query Archive response on dsmGetNextQObj()
|
+-------------------------------------------------------------------------*/
typedef struct S_qryRespArchiveData
{
dsUint16_t
stVersion;
/* structure version */
164
dsmObjName
objName;
/* Filespace name qualifier */
dsUint32_t
copyGroup;
/* copy group number */
char
mcName[DSM_MAX_MC_NAME_LENGTH + 1];
/* mc name */
char
owner[DSM_MAX_OWNER_LENGTH + 1];
/* owner name */
dsStruct64_t
objId;
/* Unique copy id */
dsStruct64_t
reserved;
/* backward compatability */
dsUint8_t
mediaClass;
/* media access class */
dsmDate
insDate;
/* archive insertion date */
dsmDate
expDate;
/* expiration date for object */
char
descr[DSM_MAX_DESCR_LENGTH + 1]; /* archive description */
dsUint16_t
objInfolen;
/* length of object-dependent info*/
char
objInfo[DSM_MAX_OBJINFO_LENGTH]; /*object-dependent info */
dsUint160_t
restoreOrderExt;
/* restore order */
dsStruct64_t
sizeEstimate;
/* size estimate stored by user*/
dsUint8_t
compressType;
/* Compression flag*/
dsUint8_t
retentionInitiated;
/* object waiting on retention event*/
dsUint8_t
objHeld; /*object is on retention "hold" see values above*/
dsUint8_t
encryptionType;
/* type of encryption */
dsmBool_t
clientDeduplicated;
/* obj deduplicated by API*/
}qryRespArchiveData;
#define qryRespArchiveDataVersion
/*-------------------------------------------------------------------------+
| Type definition for Archive sendBuff parameter on dsmSendObj()
|
+-------------------------------------------------------------------------*/
typedef struct S_sndArchiveData
{
dsUint16_t stVersion;
/* structure version */
char
*descr;
/* archive description */
}sndArchiveData;
#define sndArchiveDataVersion
/*-------------------------------------------------------------------------+
| Type definition for Backup queryBuffer on dsmBeginQuery()
|
+-------------------------------------------------------------------------*/
typedef struct S_qryBackupData
{
dsUint16_t stVersion;
/* structure version */
dsmObjName *objName;
/* full dsm name of object */
char
*owner;
/* owner name */
dsUint8_t
objState;
/* object state selector */
dsmDate
pitDate;
/* Date value for point in time restore */
/* for possible values, see defines above */
}qryBackupData;
#define qryBackupDataVersion
typedef struct
{
dsUint8_t
reserved1;
dsStruct64_t reserved2;
} reservedInfo_t;
/*-------------------------------------------------------------------------+
| Type definition for Query Backup response on dsmGetNextQObj()
|
+-------------------------------------------------------------------------*/
typedef struct S_qryRespBackupData
{
dsUint16_t
stVersion;
/* structure version
dsmObjName
objName;
/* full dsm name of object
dsUint32_t
copyGroup;
/* copy group number
char
mcName[DSM_MAX_MC_NAME_LENGTH + 1];
/* mc name
char
owner[DSM_MAX_OWNER_LENGTH + 1];
/* owner name
dsStruct64_t
objId;
/* Unique object id
dsStruct64_t
reserved;
/* backward compatability
dsUint8_t
mediaClass;
/* media access class
dsUint8_t
objState;
/* Obj state, active, etc.
dsmDate
insDate;
/* backup insertion date
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
165
dsmDate
expDate;
/* expiration date for object */
dsUint16_t
objInfolen;
/* length of object-dependent info*/
char
objInfo[DSM_MAX_OBJINFO_LENGTH]; /*object-dependent info */
dsUint160_t
restoreOrderExt;
/* restore order */
dsStruct64_t
sizeEstimate;
/* size estimate stored by user */
dsStruct64_t
baseObjId;
dsUint16_t
baseObjInfolen;
/* length of base object-dependent info*/
dsUint8_t
baseObjInfo[DSM_MAX_OBJINFO_LENGTH]; /* base object-dependent info */
dsUint160_t
baseRestoreOrder;
/* restore order */
dsUint32_t
fsID;
dsUint8_t
compressType;
dsmBool_t
isGroupLeader;
dsmBool_t
isOpenGroup;
dsUint8_t
reserved1;
/* for future use */
dsmBool_t
reserved2;
/* for future use */
dsUint16_t
reserved3;
/* for future use */
reservedInfo_t *reserved4;
/* for future use */
dsUint8_t
encryptionType;
/* type of encryption */
dsmBool_t
clientDeduplicated;
/* obj deduplicated by API*/
}qryRespBackupData;
#define qryRespBackupDataVersion
/*-------------------------------------------------------------------------+
| Type definition for Active Backup queryBuffer on dsmBeginQuery()
|
| Notes: For the active backup query, only the fs (filespace) and objType
|
fields of objName need be set. objType can only be set to
|
DSM_OBJ_FILE or DSM_OBJ_DIRECTORY. DSM_OBJ_ANY_TYPE will not
|
find a match on the query.
+-------------------------------------------------------------------------*/
typedef struct S_qryABackupData
{
dsUint16_t
stVersion;
/* structure version */
dsmObjName
*objName;
/* Only fs and objtype used */
}qryABackupData;
#define qryABackupDataVersion
/*-------------------------------------------------------------------------+
| Type definition for Query Active Backup response on dsmGetNextQObj()
|
+-------------------------------------------------------------------------*/
typedef struct S_qryARespBackupData
{
dsUint16_t stVersion;
/* structure version */
dsmObjName objName;
/* full dsm name of object */
dsUint32_t copyGroup;
/* copy group number */
char
mcName[DSM_MAX_MC_NAME_LENGTH + 1];/*management class name*/
char
owner[DSM_MAX_OWNER_LENGTH + 1];
/* owner name */
dsmDate
insDate;
/* backup insertion date */
dsUint16_t objInfolen;
/* length of object-dependent info*/
char
objInfo[DSM_MAX_OBJINFO_LENGTH]; /*object-dependent info */
}qryARespBackupData;
#define qryARespBackupDataVersion
/*-------------------------------------------------------------------------+
| Type definition for Backup queryBuffer on dsmBeginQuery()
|
+-------------------------------------------------------------------------*/
typedef struct qryBackupGroups
{
dsUint16_t
stVersion;
/* structure version */
dsUint8_t
groupType;
char
*fsName;
char
*owner;
dsStruct64_t groupLeaderObjId;
dsUint8_t
objType;
dsmBool_t
noRestoreOrder;
dsmBool_t
noGroupInfo;
}qryBackupGroups;
166
#define qryBackupGroupsVersion 2
/*-------------------------------------------------------------------------+
| Type definition for proxynode queryBuffer on dsmBeginQuery()
|
+-------------------------------------------------------------------------*/
typedef struct qryProxyNodeData
{
dsUint16_t stVersion;
/* structure version */
char
*targetNodeName;
/* target node name */
}qryProxyNodeData;
#define qryProxyNodeDataVersion
/*-------------------------------------------------------------------------+
| Type definition for qryRespProxyNodeData parameter used on dsmGetNextQObj()|
+-------------------------------------------------------------------------*/
typedef struct
{
dsUint16_t
stVersion ;
char
targetNodeName[DSM_MAX_ID_LENGTH+1];
char
peerNodeName[DSM_MAX_ID_LENGTH+1];
char
hlAddress[DSM_MAX_ID_LENGTH+1];
char
llAddress[DSM_MAX_ID_LENGTH+1];
}qryRespProxyNodeData;
#define qryRespProxyNodeDataVersion
/*
/*
/*
/*
/*
structure version
target node name
Peer node name
peer hlAddress
peer hlAddress
*/
*/
*/
*/
*/
/*-------------------------------------------------------------------------+
| Type definition for WINNT and OS/2 Filespace attributes
|
+-------------------------------------------------------------------------*/
typedef struct
{
char
driveLetter ;
/* drive letter for filespace
*/
dsUint16_t fsInfoLength;
/* fsInfo length used
*/
char
fsInfo[DSM_MAX_FSINFO_LENGTH];/*caller-determined data */
}dsmDosFSAttrib ;
/*-------------------------------------------------------------------------+
| Type definition for UNIX Filespace attributes
|
+-------------------------------------------------------------------------*/
typedef struct
{
dsUint16_t fsInfoLength;
/* fsInfo length used
*/
char
fsInfo[DSM_MAX_FSINFO_LENGTH];/*caller-determined data */
}dsmUnixFSAttrib ;
/*-------------------------------------------------------------------------+
| Type definition for NetWare Filespace attributes
|
+-------------------------------------------------------------------------*/
typedef dsmUnixFSAttrib dsmNetwareFSAttrib;
/*-------------------------------------------------------------------------+
| Type definition for Filespace attributes on all Filespace calls
|
+-------------------------------------------------------------------------*/
typedef union
{
dsmNetwareFSAttrib netwareFSAttr;
dsmUnixFSAttrib
unixFSAttr ;
dsmDosFSAttrib
dosFSAttr ;
}dsmFSAttr ;
/*-------------------------------------------------------------------------+
| Type definition for fsUpd parameter on dsmUpdateFS()
+-------------------------------------------------------------------------*/
typedef struct S_dsmFSUpd
{
Appendix B. API type definitions source files
167
dsUint16_t
char
dsStruct64_t
dsStruct64_t
dsmFSAttr
}dsmFSUpd ;
stVersion ;
*fsType ;
occupancy ;
capacity ;
fsAttr ;
#define dsmFSUpdVersion
/*
/*
/*
/*
/*
structure version
filespace type
occupancy estimate
capacity estimate
platform specific attributes
*/
*/
*/
*/
*/
/*-------------------------------------------------------------------------+
| Type definition for Filespace queryBuffer on dsmBeginQuery()
|
+-------------------------------------------------------------------------*/
typedef struct S_qryFSData
{
dsUint16_t stVersion;
/* structure version */
char
*fsName;
/* File space name */
}qryFSData;
#define qryFSDataVersion
/*-------------------------------------------------------------------------+
| Type definition for Query Filespace response on dsmGetNextQObj()
|
+-------------------------------------------------------------------------*/
typedef struct S_qryRespFSData
{
dsUint16_t
stVersion;
/* structure version */
char
fsName[DSM_MAX_FSNAME_LENGTH + 1];
/* Filespace name */
char
fsType[DSM_MAX_FSTYPE_LENGTH + 1] ;
/* Filespace type */
dsStruct64_t
occupancy;
/* Occupancy est. in bytes.*/
dsStruct64_t
capacity;
/* Capacity est. in bytes. */
dsmFSAttr
fsAttr ;
/* platform specific attributes */
dsmDate
backStartDate;
/* start backup date
*/
dsmDate
backCompleteDate;
/* end backup Date
*/
dsmDate
reserved1;
/* For future use
*/
dsmDate
lastReplStartDate;
/* The last time replication was started */
dsmDate
lastReplCmpltDate;
/* The last time replication completed */
/* (could have had a failure,
*/
/*
but it still completes)
*/
dsmDate
lastBackOpDateFromServer; /* The last store time stamp the client */
/*
saved on the server
*/
dsmDate
lastArchOpDateFromServer; /* The last store time stamp the client */
/*
saved on the server
*/
dsmDate
lastSpMgOpDateFromServer; /* The last store time stamp the client */
/*
saved on the server
*/
dsmDate
lastBackOpDateFromLocal; /* The last store time stamp the client */
/*
saved on the Local
*/
dsmDate
lastArchOpDateFromLocal; /* The last store time stamp the client */
/*
saved on the Local
*/
dsmDate
lastSpMgOpDateFromLocal; /* The last store time stamp the client */
/*
saved on the Local
*/
dsInt32_t
failOverWriteDelay;
/* Minutes for client to wait before allowed */
/* to store to this Repl srvr, Specail codes: */
/* NO_ACCESS(-1), ACCESS_RDONLY (-2)
*/
}qryRespFSData;
#define qryRespFSDataVersion 4
/*-------------------------------------------------------------------------+
| Type definition for regFilespace parameter on dsmRegisterFS()
+-------------------------------------------------------------------------*/
typedef struct S_regFSData
{
dsUint16_t
stVersion;
/* structure version
char
*fsName;
/* Filespace name */
char
*fsType;
/* Filespace type */
dsStruct64_t
occupancy;
/* Occupancy est. in bytes.
dsStruct64_t
capacity;
/* Capacity est. in bytes.
dsmFSAttr
fsAttr ;
/* platform specific attributes
}regFSData;
168
*/
*/
*/
*/
#define regFSDataVersion
/*-------------------------------------------------------------------------+
| Type definition for dedupType used in apisessInfo
|
+-------------------------------------------------------------------------*/
typedef enum
{
dedupServerOnly= 0x00,
/* dedup only done on server
*/
dedupClientOrServer
/* dedup can be done on client or server */
}dsmDedupType ;
/*-------------------------------------------------------------------------+
| Type definition for fail over configuration and status
-------------------------------------------------------------------------*/
typedef enum
{
failOvrNotConfigured = 0x00,
failOvrConfigured,
failOvrConnectedToReplServer
}dsmFailOvrCfgType ;
/*-------------------------------------------------------------------------+
| Type definition for session info response on dsmQuerySessionInfo()
|
+-------------------------------------------------------------------------*/
typedef struct
{
dsUint16_t
stVersion;
/* Structure version
*/
/*------------------------------------------------------------------*/
/*
Server information
*/
/*------------------------------------------------------------------*/
char
serverHost[DSM_MAX_SERVERNAME_LENGTH+1];
/* Network host name of DSM server */
dsUint16_t
serverPort;
/* Server comm port on host
*/
dsmDate
serverDate;
/* Servers date/time
*/
char
serverType[DSM_MAX_SERVERTYPE_LENGTH+1];
/* Servers execution platform
*/
dsUint16_t
serverVer;
/* Servers version number
*/
dsUint16_t
serverRel;
/* Servers release number
*/
dsUint16_t
serverLev;
/* Servers level number
*/
dsUint16_t
serverSubLev;
/* Servers sublevel number
*/
/*------------------------------------------------------------------*/
/*
Client Defaults
*/
/*------------------------------------------------------------------*/
char
nodeType[DSM_MAX_PLATFORM_LENGTH+1]; /*node/application type*/
char
fsdelim;
/* File space delimiter
*/
char
hldelim;
/* Delimiter betw highlev & lowlev */
dsUint8_t
compression;
/* Compression flag
*/
dsUint8_t
archDel;
/* Archive delete permission
*/
dsUint8_t
backDel;
/* Backup delete permission
*/
dsUint32_t
maxBytesPerTxn;
/* for future use
*/
dsUint16_t
maxObjPerTxn;
/* The max objects allowed in a txn */
/*------------------------------------------------------------------*/
/*
Session Information
*/
/*------------------------------------------------------------------*/
char
id[DSM_MAX_ID_LENGTH+1];
/* Sign-in id node name
*/
char
owner[DSM_MAX_OWNER_LENGTH+1]; /* Sign-in owner
*/
/* (for multi-user platforms)
*/
char
confFile[DSM_PATH_MAX + DSM_NAME_MAX +1];
/* len is platform dep
*/
/* dsInit name of appl config file */
dsUint8_t opNoTrace;
/* dsInit option - NoTrace = 1
*/
/*------------------------------------------------------------------*/
/*
Policy Data
*/
/*------------------------------------------------------------------*/
char
domainName[DSM_MAX_DOMAIN_LENGTH+1]; /* Domain name
*/
char
policySetName[DSM_MAX_PS_NAME_LENGTH+1];
/* Active policy set name
*/
dsmDate
polActDate;
/* Policy set activation date
*/
char
dfltMCName[DSM_MAX_MC_NAME_LENGTH+1];/* Default Mgmt Class */
dsUint16_t
gpBackRetn;
/* Grace-period backup retention
*/
Appendix B. API type definitions source files
169
dsUint16_t
char
dsmBool_t
dsStruct64_t
dsmBool_t
dsmDedupType
char
gpArchRetn;
/* Grace-period archive retention */
adsmServerName[DSM_MAX_SERVERNAME_LENGTH+1]; /* adsm server name */
archiveRetentionProtection; /* is server Retention protection enabled */
maxBytesPerTxn_64;
/* for future use
*/
lanFreeEnabled;
/* lan free option is set
*/
dedupType;
/* server or clientOrServer
*/
accessNode[DSM_MAX_ID_LENGTH+1];
/* as node node name
*/
/*------------------------------------------------------------------*/
/*
Replication and fail over information
*/
/*------------------------------------------------------------------*/
dsmFailOvrCfgType failOverCfgType; /* status of fail over */
char
replServerName[DSM_MAX_SERVERNAME_LENGTH+1]; /* repl server name */
char
homeServerName[DSM_MAX_SERVERNAME_LENGTH+1]; /* home server name */
char
replServerHost[DSM_MAX_SERVERNAME_LENGTH+1]; /* Network host name of DSM server
dsInt32_t
replServerPort;
/* Server comm port on host
}ApiSessInfo;
#define ApiSessInfoVersion
/*-------------------------------------------------------------------------+
| Type definition for Query options response on dsmQueryCliOptions()
|
|
and dsmQuerySessOptions()
|
+-------------------------------------------------------------------------*/
typedef struct
{
char
char
char
dsInt16_t
char
char
dsmBool_t
dsmBool_t
dsmBool_t
}optStruct ;
/*-------------------------------------------------------------------------+
| Type definition for LogType used in logInfo
|
+-------------------------------------------------------------------------*/
typedef enum
{
logServer = 0x00,
/* log msg only to server
*/
logLocal,
/* log msg only to local error log */
logBoth,
/* log msg to server and to local error log */
logNone
}dsmLogType ;
/*-------------------------------------------------------------------------+
| Type definition for logInfo parameter used on dsmLogEvent()
|
+-------------------------------------------------------------------------*/
typedef struct
{
char
*message;
dsmLogType logType;
}logInfo;
/*-------------------------------------------------------------------------+
| Type definition for qryRespAccessData parameter used on dsmQueryAccess()|
+-------------------------------------------------------------------------*/
typedef struct
{
dsUint16_t
char
170
stVersion ;
node[DSM_MAX_ID_LENGTH+1];
/* structure version
/* node name
*/
*/
*/
*/
char
dsmObjName
dsmAccessType
dsUint32_t
}qryRespAccessData;
owner[DSM_MAX_OWNER_LENGTH+1];
objName ;
accessType;
ruleNumber ;
#define qryRespAccessDataVersion
/*
/*
/*
/*
owner
object name
archive or backup
Access rule id
*/
*/
*/
*/
/*-------------------------------------------------------------------------+
| Type definition for envSetUp parameter on dsmSetUp()
+-------------------------------------------------------------------------*/
typedef struct S_envSetUp
{
dsUint16_t
stVersion;
/* structure version */
char
dsmiDir[DSM_PATH_MAX + DSM_NAME_MAX +1];
char
dsmiConfig[DSM_PATH_MAX + DSM_NAME_MAX +1];
char
dsmiLog[DSM_PATH_MAX + DSM_NAME_MAX +1];
char
**argv; /* for executables name argv[0] */
char
logName[DSM_NAME_MAX +1];
dsmBool_t
reserved1;
/* for future use */
dsmBool_t
reserved2;
/* for future use */
}envSetUp;
#define envSetUpVersion
/*-------------------------------------------------------------------------+
| Type definition for dsmInitExIn_t
+-------------------------------------------------------------------------*/
typedef struct dsmInitExIn_t
{
dsUint16_t
stVersion;
/* structure version */
dsmApiVersionEx
*apiVersionExP;
char
*clientNodeNameP;
char
*clientOwnerNameP;
char
*clientPasswordP;
char
*userNameP;
char
*userPasswordP;
char
*applicationTypeP;
char
*configfile;
char
*options;
char
dirDelimiter;
dsmBool_t
useUnicode;
dsmBool_t
bCrossPlatform;
dsmBool_t
bService;
dsmBool_t
bEncryptKeyEnabled;
char
*encryptionPasswordP;
dsmBool_t
useTsmBuffers;
dsUint8_t
numTsmBuffers;
dsmAppVersion
*appVersionP;
}dsmInitExIn_t;
#define dsmInitExInVersion 5
/*-------------------------------------------------------------------------+
| Type definition for dsmInitExOut_t
+-------------------------------------------------------------------------*/
typedef struct dsmInitExOut_t
{
dsUint16_t
stVersion;
/* structure version */
dsInt16_t
userNameAuthorities;
dsInt16_t
infoRC;
/* error return code if encountered */
char
adsmServerName[DSM_MAX_SERVERNAME_LENGTH+1];
dsUint16_t
serverVer;
/* Servers version number
*/
dsUint16_t
serverRel;
/* Servers release number
*/
dsUint16_t
serverLev;
/* Servers level number
*/
dsUint16_t
serverSubLev; /* Servers sublevel number
*/
dsmBool_t
char
char
171
}dsmInitExOut_t;
#define dsmInitExOutVersion 3
/*-------------------------------------------------------------------------+
| Type definition for LogType used in logInfo
|
+-------------------------------------------------------------------------*/
typedef enum
{
logSevInfo = 0x00,
/* information ANE4991 */
logSevWarning,
/* warning
ANE4992 */
logSevError,
/* Error
ANE4993 */
logSevSevere,
/* severe
ANE4994 */
logSevLicense,
/* License
ANE4995 */
logSevTryBuy
/* try Buy
ANE4996 */
}dsmLogSeverity ;
/*-------------------------------------------------------------------------+
| Type definition for dsmLogExIn_t
+-------------------------------------------------------------------------*/
typedef struct dsmLogExIn_t
{
dsUint16_t
stVersion; /* structure version */
dsmLogSeverity
severity;
char
appMsgID[8];
dsmLogType
logType;
/* log type : local, server, both */
char
*message;
/* text of message to be logged */
char
appName[DSM_MAX_PLATFORM_LENGTH];
char
osPlatform[DSM_MAX_PLATFORM_LENGTH];
char
appVersion[DSM_MAX_PLATFORM_LENGTH];
}dsmLogExIn_t;
#define dsmLogExInVersion 2
/*-------------------------------------------------------------------------+
| Type definition for dsmlogExOut_t
+-------------------------------------------------------------------------*/
typedef struct dsmLogExOut_t
{
dsUint16_t
stVersion; /* structure version */
}dsmLogExOut_t;
#define dsmLogExOutVersion 1
/*-------------------------------------------------------------------------+
| Type definition for dsmRenameIn_t
+-------------------------------------------------------------------------*/
typedef struct dsmRenameIn_t
{
dsUint16_t
stVersion;
/* structure version */
dsUint32_t
dsmHandle;
/* handle for session */
dsUint8_t
repository;
/* Backup or Archive */
dsmObjName
*objNameP ;
/* object name */
char
newHl[DSM_MAX_HL_LENGTH + 1]; /* new High level name */
char
newLl[DSM_MAX_LL_LENGTH + 1]; /* new Low level name */
dsmBool_t
merge;
/* merge into existing name*/
ObjID
objId;
/* objId for Archive */
}dsmRenameIn_t;
#define dsmRenameInVersion 1
/*-------------------------------------------------------------------------+
| Type definition for dsmRenameOut_t
+-------------------------------------------------------------------------*/
typedef struct dsmRenameOut_t
{
dsUint16_t
stVersion;
/* structure version */
}dsmRenameOut_t;
172
#define dsmRenameOutVersion 1
/*-------------------------------------------------------------------------+
| Type definition for dsmEndSendObjExIn_t
+-------------------------------------------------------------------------*/
typedef struct dsmEndSendObjExIn_t
{
dsUint16_t
stVersion;
/* structure version */
dsUint32_t
dsmHandle;
/* handle for session */
}dsmEndSendObjExIn_t;
#define dsmEndSendObjExInVersion 1
/*-------------------------------------------------------------------------+
| Type definition for dsmEndSendObjExOut_t
+-------------------------------------------------------------------------*/
typedef struct dsmEndSendObjExOut_t
{
dsUint16_t
stVersion;
/* structure version */
dsStruct64_t
totalBytesSent;
/* total bytes read from app */
dsmBool_t
objCompressed;
/* was object compressed */
dsStruct64_t
totalCompressSize;
/* total size after compress */
dsStruct64_t
totalLFBytesSent;
/* total bytes sent Lan Free */
dsUint8_t
encryptionType;
/* type of encryption used */
dsmBool_t
objDeduplicated;
/* was object processed for dist. data dedup */
dsStruct64_t
totalDedupSize;
/* total size after de-dup */
}dsmEndSendObjExOut_t;
#define dsmEndSendObjExOutVersion 3
/*-------------------------------------------------------------------------+
| Type definition for dsmGroupHandlerIn_t
+-------------------------------------------------------------------------*/
typedef struct dsmGroupHandlerIn_t
{
dsUint16_t
stVersion;
/* structure version */
dsUint32_t
dsmHandle;
/* handle for session */
dsUint8_t
groupType;
/* Type of group
*/
dsUint8_t
actionType;
/* Type of group operation
*/
dsUint8_t
memberType;
/* Type of member: Leader or member
*/
dsStruct64_t
leaderObjId;
/* OBJID of the groupleader when manipulating a member */
char
*uniqueGroupTagP; /* Unique group identifier
*/
dsmObjName
*objNameP ;
/* group leader object name */
dsmGetList
memberObjList;
/* list of objects to remove, assign
*/
}dsmGroupHandlerIn_t;
#define dsmGroupHandlerInVersion 1
/*-------------------------------------------------------------------------+
| Type definition for dsmGroupHandlerExOut_t
+-------------------------------------------------------------------------*/
typedef struct dsmGroupHandlerOut_t
{
dsUint16_t
stVersion;
/* structure version */
}dsmGroupHandlerOut_t;
#define dsmGroupHandlerOutVersion 1
/*-------------------------------------------------------------------------+
| Type definition for dsmEndTxnExIn_t
+-------------------------------------------------------------------------*/
typedef struct dsmEndTxnExIn_t
{
dsUint16_t
stVersion;
/* structure version */
dsUint32_t
dsmHandle;
/* handle for session */
dsUint8_t
vote;
}dsmEndTxnExIn_t;
#define dsmEndTxnExInVersion 1
173
/*-------------------------------------------------------------------------+
| Type definition for dsmEndTxnExOut_t
+-------------------------------------------------------------------------*/
typedef struct dsmEndTxnExOut_t
{
dsUint16_t
stVersion;
/* structure version
*/
dsUint16_t
reason;
/* reason code
*/
dsStruct64_t
groupLeaderObjId;
/* groupLeader obj id returned on */
/* DSM_ACTION_OPEN
*/
dsUint8_t
reserved1;
/* future use
*/
dsUint16_t
reserved2;
/* future use
*/
}dsmEndTxnExOut_t;
#define dsmEndTxnExOutVersion 1
/*-------------------------------------------------------------------------+
| Type definition for dsmEndGetDataExIn_t
+-------------------------------------------------------------------------*/
typedef struct dsmEndGetDataExIn_t
{
dsUint16_t
stVersion;
/* structure version */
dsUint32_t
dsmHandle;
/* handle for session */
}dsmEndGetDataExIn_t;
#define dsmEndGetDataExInVersion 1
/*-------------------------------------------------------------------------+
| Type definition for dsmEndGetDataExOut_t
+-------------------------------------------------------------------------*/
typedef struct dsmEndGetDataExOut_t
{
dsUint16_t
stVersion;
/* structure version
*/
dsUint16_t
reason;
/* reason code
*/
dsStruct64_t totalLFBytesRecv; /* total lan free bytes recieved */
}dsmEndGetDataExOut_t;
#define dsmEndGetDataExOutVersion 1
/*-------------------------------------------------------------------------+
| Type definition for object list on dsmRetentionEvent()
|
+-------------------------------------------------------------------------*/
typedef struct dsmObjList
{
dsUint16_t
stVersion;
/* structure version
*/
dsUint32_t
numObjId;
/* number of object IDs in the list */
ObjID
*objId;
/* list of object IDs to signal
*/
}dsmObjList_t ;
#define dsmObjlistVersion 1
/*-------------------------------------------------------------------------+
| Type definition eventType used on dsmRetentionEvent
|
+--------------------------------------------------------------------------*/
typedef enum
{
eventRetentionActivate = 0x00,
/* signal the server that the event has occured */
eventHoldObj,
/* suspend delete/expire of the object
*/
eventReleaseObj
/* Resume normal delete/expire processing
*/
}dsmEventType_t;
/*-------------------------------------------------------------------------+
| Type definition for on dsmRetentionEvent()
|
+-------------------------------------------------------------------------*/
typedef struct dsmRetentionEventIn_t
{
dsUint16_t
stVersion;
/* structure version */
dsUint32_t
dsmHandle;
/* session Handle
*/
dsmEventType_t
eventType;
/* Event type
*/
dsmObjList_t
objList;
/* object ID
*/
}dsmRetentionEventIn_t;
174
#define dsmRetentionEventInVersion 1
/*-------------------------------------------------------------------------+
| Type definition for on dsmRetentionEvent()
|
+-------------------------------------------------------------------------*/
typedef struct dsmRetentionEventOut_t
{
dsUint16_t
stVersion ;
/* structure version
*/
}dsmRetentionEventOut_t;
#define dsmRetentionEventOutVersion 1
/*-------------------------------------------------------------------------+
| Type definition for on dsmRequestBuffer()
+-------------------------------------------------------------------------*/
typedef struct requestBufferIn_t
{
dsUint16_t
stVersion;
/* structure version */
dsUint32_t
dsmHandle;
/* session Handle
*/
}requestBufferIn_t;
#define requestBufferInVersion 1
/*-------------------------------------------------------------------------+
| Type definition for on dsmRequestBuffer()
|
+-------------------------------------------------------------------------*/
typedef struct requestBufferOut_t
{
dsUint16_t
stVersion ;
/* structure version */
dsUint8_t
tsmBufferHandle;
/* handle to tsm Data buffer */
char
*dataPtr;
/* Address to write data to */
dsUint32_t
bufferLen;
/* Max length of data to be written */
}requestBufferOut_t;
#define requestBufferOutVersion 1
/*-------------------------------------------------------------------------+
| Type definition for on dsmReleaseBuffer()
|
+-------------------------------------------------------------------------*/
typedef struct releaseBufferIn_t
{
dsUint16_t
stVersion;
/* structure version */
dsUint32_t
dsmHandle;
/* session Handle
*/
dsUint8_t
tsmBufferHandle;
/* handle to tsm Data buffer */
char
*dataPtr;
/* Address to write data to */
}releaseBufferIn_t;
#define releaseBufferInVersion 1
/*-------------------------------------------------------------------------+
| Type definition for on dsmReleaseBuffer()
|
+-------------------------------------------------------------------------*/
typedef struct releaseBufferOut_t
{
dsUint16_t
stVersion ;
/* structure version */
}releaseBufferOut_t;
#define releaseBufferOutVersion 1
/*-------------------------------------------------------------------------+
| Type definition for on dsmGetBufferData()
+-------------------------------------------------------------------------*/
typedef struct getBufferDataIn_t
{
dsUint16_t
stVersion;
/* structure version */
dsUint32_t
dsmHandle;
/* session Handle
*/
}getBufferDataIn_t;
175
#define getBufferDataInVersion 1
/*-------------------------------------------------------------------------+
| Type definition for on dsmGetBufferData()
|
+-------------------------------------------------------------------------*/
typedef struct getBufferDataOut_t
{
dsUint16_t
stVersion ;
/* structure version */
dsUint8_t
tsmBufferHandle;
/* handle to tsm Data buffer */
char
*dataPtr;
/* Address of actual data to read */
dsUint32_t
numBytes;
/* Actual number of bytes to read from dataPtr*/
}getBufferDataOut_t;
#define getBufferDataOutVersion 1
/*-------------------------------------------------------------------------+
| Type definition for on dsmSendBufferData()
|
+-------------------------------------------------------------------------*/
typedef struct sendBufferDataIn_t
{
dsUint16_t
stVersion;
/* structure version */
dsUint32_t
dsmHandle;
/* session Handle
*/
dsUint8_t
tsmBufferHandle;
/* handle to tsm Data buffer */
char
*dataPtr;
/* Address of actual data to send */
dsUint32_t
numBytes;
/* Actual number of bytes to send from dataPtr*/
}sendBufferDataIn_t;
#define sendBufferDataInVersion 1
/*-------------------------------------------------------------------------+
| Type definition for on dsmSendBufferData()
+-------------------------------------------------------------------------*/
typedef struct sendBufferDataOut_t
{
dsUint16_t
stVersion ;
/* structure version */
}sendBufferDataOut_t;
#define sendBufferDataOutVersion 1
/*-------------------------------------------------------------------------+
| Type definition for dsmUpdateObjExIn_t
+-------------------------------------------------------------------------*/
typedef struct dsmUpdateObjExIn_t
{
dsUint16_t
stVersion;
/* structure version */
dsUint32_t
dsmHandle;
/* session Handle
*/
dsmSendType
sendType;
/* send type back/arch */
char
*descrP;
/* archive description */
dsmObjName
*objNameP;
/* objName
*/
ObjAttr
*objAttrPtr;
/* attribute
*/
dsUint32_t
objUpdAct;
/* update action
*/
ObjID
archObjId;
/* objId for archive */
}dsmUpdateObjExIn_t;
#define dsmUpdateObjExInVersion 1
/*-------------------------------------------------------------------------+
| Type definition for dsmUpdateObjExOut_t
+-------------------------------------------------------------------------*/
typedef struct dsmUpdateObjExOut_t
{
dsUint16_t
stVersion;
/* structure version */
}dsmUpdateObjExOut_t;
#define dsmUpdateObjExOutVersion 1
#if (_OPSYS_TYPE == DS_WINNT) && !defined(_WIN64)
#pragma pack()
#endif
176
#ifdef _MAC
#pragma options align=reset
#endif
#endif /* _H_DSMAPITD */
/***********************************************************************
* Tivoli Storage Manager
*
* API Client Component
*
*
*
* (C) Copyright IBM Corporation 1993,2010
*
***********************************************************************/
/**************************************************************************
* Header File Name: tsmapitd.h
*
* Environment:
************************************************
*
** This is a platform-independent source file **
*
*
************************************************
*
* Design Notes:
This file contains basic data types and constants
*
includable by all client source files. The constants
*
within this file should be set properly for the
*
particular machine and operating system on which the
*
client software is to be run.
*
*
Platform specific definitions are included in dsmapips.h
*
* Descriptive-name: Definitions for Tivoli Storage manager API constants
*-------------------------------------------------------------------------*/
#ifndef _H_TSMAPITD
#define _H_TSMAPITD
/*=== set the structure alignment to pack the structures ===*/
#if _OPSYS_TYPE == DS_WINNT
#ifdef _WIN64
#pragma pack(8)
#else
#pragma pack(1)
#endif
#endif
#ifdef _MAC
#pragma options align = packed
#endif
/*==============================================================
Win32 applications using the tsm interface must use the
-DUNICODE flag during compilation.
==============================================================*/
#if _OPSYS_TYPE == DS_WINNT && !defined(DSMAPILIB)
#ifndef UNICODE
#error "Win32 applications using the TSM interface MUST be compiled with the -DUNICODE flag"
#endif
#endif
/*==============================================================
Mac OS X applications using the tsm interface must use the
-DUNICODE flag during compilation.
==============================================================*/
#if _OPSYS_TYPE == DS_MACOS && !defined(DSMAPILIB)
#ifndef UNICODE
#error "Mac OS X applications using the TSM interface MUST be compiled with the -DUNICODE flag"
#endif
#endif
Appendix B. API type definitions source files
177
/*-------------------------------------------------------------------------+
| Type definition for dsmGetType parameter on tsmBeginGetData()
|
+-------------------------------------------------------------------------*/
typedef enum
{
gtTsmBackup = 0x00,
/* Backup processing type
*/
gtTsmArchive
/* Archive processing type
*/
} tsmGetType ;
/*-------------------------------------------------------------------------+
| Type definition for dsmQueryType parameter on tsmBeginQuery()
|
+-------------------------------------------------------------------------*/
typedef enum
{
qtTsmArchive = 0x00,
/* Archive query type
*/
qtTsmBackup,
/* Backup query type
*/
qtTsmBackupActive,
/* Fast query for active backup files */
qtTsmFilespace,
/* Filespace query type
*/
qtTsmMC,
/* Mgmt. class query type
*/
qtTsmReserved1,
/* future use
*/
qtTsmReserved2,
/* future use
*/
qtTsmReserved3,
/* future use
*/
qtTsmReserved4,
/* future use
*/
qtTsmBackupGroups,
/* All group leaders in a specific filespace */
qtTsmOpenGroups,
/* All group members associated with a leader */
qtTsmReserved5,
/* future use
*/
qtTsmProxyNodeAuth,
/* nodes that this node can proxy to
*/
qtTsmProxyNodePeer,
/* peer nodes under this target node */
qtTsmReserved6,
/* future use
*/
qtTsmReserved7,
/* future use
*/
qtTsmReserved8
/* future use
*/
} tsmQueryType ;
/*-------------------------------------------------------------------------+
| Type definition sendType parameter on tsmBindMC() and tsmSendObj()
|
+-------------------------------------------------------------------------*/
typedef enum
{
stTsmBackup = 0x00,
/* Backup processing type
*/
stTsmArchive,
/* Archive processing type
*/
stTsmBackupMountWait,
/* Backup processing with mountwait on
*/
stTsmArchiveMountWait
/* Archive processing with mountwait on */
} tsmSendType ;
/*-------------------------------------------------------------------------+
| Type definition for delType parameter on tsmDeleteObj()
|
+-------------------------------------------------------------------------*/
typedef enum
{
dtTsmArchive = 0x00,
/* Archive delete type */
dtTsmBackup,
/* Backup delete (deactivate) type */
dtTsmBackupID
/* Backup delete (remove)
type */
} tsmDelType ;
/*-------------------------------------------------------------------------+
| Type definition sendType parameter on tsmSetAccess()
|
+-------------------------------------------------------------------------*/
typedef enum
{
atTsmBackup = 0x00,
/* Backup processing type
*/
atTsmArchive
/* Archive processing type
*/
}tsmAccessType;
/*-------------------------------------------------------------------------+
| Type definition for Overwrite parameter on tsmSendObj()
+-------------------------------------------------------------------------*/
178
typedef enum
{
owIGNORE = 0x00,
owYES,
owNO
}tsmOwType;
/*-------------------------------------------------------------------------+
| Type definition for API Version on tsmInit() and tsmQueryApiVersion()
|
+-------------------------------------------------------------------------*/
typedef struct
{
dsUint16_t stVersion;
/* Structure version
*/
dsUint16_t version;
/* API version
*/
dsUint16_t release;
/* API release
*/
dsUint16_t level;
/* API level
*/
dsUint16_t subLevel;
/* API sub level
*/
dsmBool_t unicode;
/* API unicode?
*/
} tsmApiVersionEx;
#define tsmApiVersionExVer
/*-------------------------------------------------------------------------+
| Type definition for Application Version on tsmInit()
|
+-------------------------------------------------------------------------*/
typedef struct
{
dsUint16_t
stVersion;
/* Structure version
*/
dsUint16_t
applicationVersion;
/* application version number
*/
dsUint16_t
applicationRelease;
/* application release number
*/
dsUint16_t
applicationLevel;
/* application level number
*/
dsUint16_t
applicationSubLevel; /* application sub level number */
} tsmAppVersion;
#define tsmAppVersionVer
/*-------------------------------------------------------------------------+
| Type definition for object name used on BindMC, Send, Delete, Query
|
+-------------------------------------------------------------------------*/
typedef struct tsmObjName
{
dsChar_t
fs[DSM_MAX_FSNAME_LENGTH + 1] ;
/* Filespace name
dsChar_t
hl[DSM_MAX_HL_LENGTH + 1] ;
/* High level name
dsChar_t
ll[DSM_MAX_LL_LENGTH + 1] ;
/* Low level name
dsUint8_t objType;
/* for object type values, see defines above
dsChar_t
dirDelimiter;
} tsmObjName;
*/
*/
*/
*/
/*-------------------------------------------------------------------------+
| Type definition for Backup delete info on dsmDeleteObj()
|
+-------------------------------------------------------------------------*/
typedef struct tsmDelBack
{
dsUint16_t
stVersion ;
/* structure version
*/
tsmObjName
*objNameP ;
/* object name
*/
dsUint32_t
copyGroup ;
/* copy group
*/
} tsmDelBack ;
#define
tsmDelBackVersion
/*-------------------------------------------------------------------------+
| Type definition for Archive delete info on dsmDeleteObj()
|
+-------------------------------------------------------------------------*/
typedef struct
Appendix B. API type definitions source files
179
{
dsUint16_t
dsStruct64_t
} tsmDelArch ;
#define
stVersion ;
objId ;
tsmDelArchVersion
/* structure version
/* object ID
*/
*/
/*-------------------------------------------------------------------------+
| Type definition for Backup ID delete info on dsmDeleteObj()
|
+-------------------------------------------------------------------------*/
typedef struct
{
dsUint16_t
stVersion ;
/* structure version
*/
dsStruct64_t
objId ;
/* object ID
*/
} tsmDelBackID;
#define
tsmDelBackIDVersion
/*-------------------------------------------------------------------------+
| Type definition for delete info on dsmDeleteObj()
|
+-------------------------------------------------------------------------*/
typedef union
{
tsmDelBack
backInfo ;
tsmDelArch
archInfo ;
tsmDelBackID backIDInfo;
} tsmDelInfo ;
/*-------------------------------------------------------------------------+
| Type definition for Object Attribute parameter on dsmSendObj()
|
+-------------------------------------------------------------------------*/
typedef struct tsmObjAttr
{
dsUint16_t
stVersion;
/* Structure version
*/
dsChar_t
owner[DSM_MAX_OWNER_LENGTH + 1];
/* object owner
*/
dsStruct64_t sizeEstimate;
/* Size estimate in bytes of the object */
dsmBool_t
objCompressed;
/* Is object already compressed?
*/
dsUint16_t
objInfoLength;
/* length of object-dependent info
*/
char
*objInfo;
/* object-dependent info byte buffer */
dsChar_t
*mcNameP;
/* mgmnt class name for override
*/
tsmOwType
reserved1;
/* for future use
*/
tsmOwType
reserved2;
/* for future use
*/
dsmBool_t
disableDeduplication;
/* force no dedup for this object */
} tsmObjAttr;
#define tsmObjAttrVersion 4
/*-------------------------------------------------------------------------+
| Type definition for mcBindKey returned on dsmBindMC()
|
+-------------------------------------------------------------------------*/
typedef struct tsmMcBindKey
{
dsUint16_t stVersion;
/* structure version
*/
dsChar_t
mcName[DSM_MAX_MC_NAME_LENGTH + 1];
/* Name of mc bound to object. */
dsmBool_t backup_cg_exists;
/* True/false */
dsmBool_t archive_cg_exists;
/* True/false */
dsChar_t
backup_copy_dest[DSM_MAX_CG_DEST_LENGTH + 1];
/* Backup copy dest. name */
dsChar_t
archive_copy_dest[DSM_MAX_CG_DEST_LENGTH + 1];
/* Arch copy dest.name */
} tsmMcBindKey;
#define tsmMcBindKeyVersion
/*-------------------------------------------------------------------------+
180
/*-------------------------------------------------------------------------+
| Type definition for Archive Copy Group details on Query MC response
|
+-------------------------------------------------------------------------*/
typedef struct tsmArchDetailCG
{
dsChar_t
cgName[DSM_MAX_CG_NAME_LENGTH + 1];
/* Copy group name */
dsUint16_t
frequency;
/* Copy (archive) frequency */
dsUint16_t
retainVers;
/* Retain version */
dsUint8_t
copySer;
/* for copy serialization values, see defines */
dsUint8_t
copyMode;
/* for copy mode values, see defines above */
dsChar_t
destName[DSM_MAX_CG_DEST_LENGTH + 1];
/* Copy dest name */
dsmBool_t
bLanFreeDest;
/* Destination has lan free path?
*/
dsmBool_t
reserved;
/* Not currently used */
dsUint8_t
retainInit;
/* possible values see dsmapitd.h */
dsUint16_t
retainMin;
/* if retInit is EVENT num of days */
dsmBool_t
bDeduplicate;
/* destination has dedup enabled
*/
}tsmArchDetailCG;
/*-------------------------------------------------------------------------+
| Type definition for Backup Copy Group details on Query MC response
|
+-------------------------------------------------------------------------*/
typedef struct tsmBackupDetailCG
{
dsChar_t
cgName[DSM_MAX_CG_NAME_LENGTH + 1];
/* Copy group name */
dsUint16_t
frequency;
/* Backup frequency */
dsUint16_t
verDataExst;
/* Versions data exists */
dsUint16_t
verDataDltd;
/* Versions data deleted */
dsUint16_t
retXtraVers;
/* Retain extra versions */
dsUint16_t
retOnlyVers;
/* Retain only versions */
dsUint8_t
copySer;
/* for copy serialization values, see defines */
dsUint8_t
copyMode;
/* for copy mode values, see defines above */
dsChar_t
destName[DSM_MAX_CG_DEST_LENGTH + 1];
/* Copy dest name */
dsmBool_t
bLanFreeDest;
/* Destination has lan free path?
*/
dsmBool_t
reserved;
/* Not currently used */
dsmBool_t
bDeduplicate;
/* destination has dedup enabled
*/
}tsmBackupDetailCG;
/*-------------------------------------------------------------------------+
| Type definition for Query Mgmt Class detail response on dsmGetNextQObj()|
+-------------------------------------------------------------------------*/
typedef struct tsmQryRespMCDetailData
{
dsUint16_t
stVersion;
/* structure version */
dsChar_t
mcName[DSM_MAX_MC_NAME_LENGTH + 1];
/* mc name */
dsChar_t
mcDesc[DSM_MAX_MC_DESCR_LENGTH + 1]; /*mc description */
archDetailCG
archDet;
/* Archive copy group detail */
backupDetailCG backupDet;
/* Backup copy group detail */
} tsmQryRespMCDetailData;
#define tsmQryRespMCDetailDataVersion
/*-------------------------------------------------------------------------+
| Type definition for Query Mgmt Class summary response on dsmGetNextQObj()|
Appendix B. API type definitions source files
181
+-------------------------------------------------------------------------*/
typedef struct tsmQryRespMCData
{
dsUint16_t
stVersion;
/* structure version */
dsChar_t
mcName[DSM_MAX_MC_NAME_LENGTH + 1];
/* mc name */
dsChar_t
mcDesc[DSM_MAX_MC_DESCR_LENGTH + 1];
/* mc description */
}tsmQryRespMCData;
#define tsmQryRespMCDataVersion
/*-------------------------------------------------------------------------+
| Type definition for Archive queryBuffer on tsmBeginQuery()
|
+-------------------------------------------------------------------------*/
typedef struct tsmQryArchiveData
{
dsUint16_t
stVersion;
/* structure version */
tsmObjName
*objName;
/* Full dsm name of object */
dsChar_t
*owner;
/* owner name */
/* for maximum date boundaries, see defines above */
dsmDate
insDateLowerBound;
/* low bound archive insert date */
dsmDate
insDateUpperBound;
/* hi bound archive insert date */
dsmDate
expDateLowerBound;
/* low bound expiration date */
dsmDate
expDateUpperBound;
/* hi bound expiration date */
dsChar_t
*descr;
/* archive description */
} tsmQryArchiveData;
#define tsmQryArchiveDataVersion
/*-------------------------------------------------------------------------+
| Type definition for Query Archive response on dsmGetNextQObj()
|
+-------------------------------------------------------------------------*/
typedef struct tsmQryRespArchiveData
{
dsUint16_t
stVersion;
/* structure version */
tsmObjName
objName;
/* Filespace name qualifier */
dsUint32_t
copyGroup;
/* copy group number */
dsChar_t
mcName[DSM_MAX_MC_NAME_LENGTH + 1];
/* mc name */
dsChar_t
owner[DSM_MAX_OWNER_LENGTH + 1];
/* owner name */
dsStruct64_t
objId;
/* Unique copy id */
dsStruct64_t
reserved;
/* backward compatability */
dsUint8_t
mediaClass;
/* media access class */
dsmDate
insDate;
/* archive insertion date */
dsmDate
expDate;
/* expiration date for object */
dsChar_t
descr[DSM_MAX_DESCR_LENGTH + 1];
/* archive description */
dsUint16_t
objInfolen;
/* length of object-dependent info*/
dsUint8_t
objInfo[DSM_MAX_OBJINFO_LENGTH]; /*object-dependent info */
dsUint160_t
restoreOrderExt;
/* restore order */
dsStruct64_t
sizeEstimate;
/* size estimate stored by user*/
dsUint8_t
compressType;
/* Compression flag */
dsUint8_t
retentionInitiated; /* object waiting on retention event */
dsUint8_t
objHeld; /* object is on "hold" see dsmapitd.h for values */
dsUint8_t
encryptionType;
/* type of encryption */
dsmBool_t
clientDeduplicated;
/* obj deduplicated by API*/
} tsmQryRespArchiveData;
#define tsmQryRespArchiveDataVersion
/*-------------------------------------------------------------------------+
| Type definition for Archive sendBuff parameter on dsmSendObj()
|
+-------------------------------------------------------------------------*/
typedef struct tsmSndArchiveData
{
dsUint16_t
stVersion;
/* structure version */
dsChar_t
*descr;
/* archive description */
} tsmSndArchiveData;
#define tsmSndArchiveDataVersion
182
/*-------------------------------------------------------------------------+
| Type definition for Backup queryBuffer on dsmBeginQuery()
|
+-------------------------------------------------------------------------*/
typedef struct tsmQryBackupData
{
dsUint16_t
stVersion;
/* structure version */
tsmObjName
*objName;
/* full dsm name of object */
dsChar_t
*owner;
/* owner name */
dsUint8_t
objState;
/* object state selector */
dsmDate
pitDate;
/* Date value for point in time restore */
/* for possible values, see defines above */
dsUint32_t reserved1;
dsUint32_t reserved2;
} tsmQryBackupData;
#define tsmQryBackupDataVersion
/*-------------------------------------------------------------------------+
| Type definition for Query Backup response on dsmGetNextQObj()
|
+-------------------------------------------------------------------------*/
typedef struct tsmQryRespBackupData
{
dsUint16_t
stVersion;
/* structure version */
tsmObjName
objName;
/* full dsm name of object */
dsUint32_t
copyGroup;
/* copy group number */
dsChar_t
mcName[DSM_MAX_MC_NAME_LENGTH + 1];
/* mc name */
dsChar_t
owner[DSM_MAX_OWNER_LENGTH + 1];
/* owner name */
dsStruct64_t
objId;
/* Unique object id */
dsStruct64_t
reserved;
/* backward compatability */
dsUint8_t
mediaClass;
/* media access class */
dsUint8_t
objState;
/* Obj state, active, etc. */
dsmDate
insDate;
/* backup insertion date */
dsmDate
expDate;
/* expiration date for object */
dsUint16_t
objInfolen;
/* length of object-dependent info*/
dsUint8_t
objInfo[DSM_MAX_OBJINFO_LENGTH]; /*object-dependent info */
dsUint160_t
restoreOrderExt;
/* restore order */
dsStruct64_t
sizeEstimate;
/* size estimate stored by user */
dsStruct64_t
baseObjId;
dsUint16_t
baseObjInfolen;
/* length of base object-dependent info*/
dsUint8_t
baseObjInfo[DSM_MAX_OBJINFO_LENGTH]; /* base object-dependent info */
dsUint160_t
baseRestoreOrder;
/* restore order */
dsUint32_t
fsID;
dsUint8_t
compressType;
dsmBool_t
isGroupLeader;
dsmBool_t
isOpenGroup;
dsUint8_t
reserved1;
/* for future use */
dsmBool_t
reserved2;
/* for future use */
dsUint16_t
reserved3;
/* for future use */
reservedInfo_t *reserved4;
/* for future use */
dsUint8_t
encryptionType;
/* type of encryption */
dsmBool_t
clientDeduplicated;
/* obj deduplicated by API*/
} tsmQryRespBackupData;
#define tsmQryRespBackupDataVersion
/*-------------------------------------------------------------------------+
| Type definition for Active Backup queryBuffer on dsmBeginQuery()
|
| Notes: For the active backup query, only the fs (filespace) and objType
|
fields of objName need be set. objType can only be set to
|
DSM_OBJ_FILE or DSM_OBJ_DIRECTORY. DSM_OBJ_ANY_TYPE will not
|
find a match on the query.
+-------------------------------------------------------------------------*/
typedef struct tsmQryABackupData
{
dsUint16_t
stVersion;
/* structure version */
Appendix B. API type definitions source files
183
tsmObjName
*objName;
} tsmQryABackupData;
#define tsmQryABackupDataVersion
/*-------------------------------------------------------------------------+
| Type definition for Query Active Backup response on dsmGetNextQObj()
|
+-------------------------------------------------------------------------*/
typedef struct tsmQryARespBackupData
{
dsUint16_t stVersion;
/* structure version */
tsmObjName objName;
/* full dsm name of object */
dsUint32_t copyGroup;
/* copy group number */
dsChar_t
mcName[DSM_MAX_MC_NAME_LENGTH + 1];/*management class name*/
dsChar_t
owner[DSM_MAX_OWNER_LENGTH + 1];
/* owner name */
dsmDate
insDate;
/* backup insertion date */
dsUint16_t objInfolen;
/* length of object-dependent info*/
dsUint8_t objInfo[DSM_MAX_OBJINFO_LENGTH]; /*object-dependent info */
} tsmQryARespBackupData;
#define tsmQryARespBackupDataVersion
/*-------------------------------------------------------------------------+
| Type definition for Backup queryBuffer on dsmBeginQuery()
|
+-------------------------------------------------------------------------*/
typedef struct tsmQryBackupGroups
{
dsUint16_t
stVersion;
/* structure version */
dsUint8_t
groupType;
dsChar_t
*fsName;
dsChar_t
*owner;
dsStruct64_t groupLeaderObjId;
dsUint8_t
objType;
dsUint32_t reserved1;
dsUint32_t reserverd2;
dsmBool_t
noRestoreOrder;
dsmBool_t
noGroupInfo;
} tsmQryBackupGroups;
#define tsmQryBackupGroupsVersion 3
/*-------------------------------------------------------------------------+
| Type definition for proxynode queryBuffer on tsmBeginQuery()
|
+-------------------------------------------------------------------------*/
typedef struct tsmQryProxyNodeData
{
dsUint16_t stVersion;
/* structure version */
dsChar_t
*targetNodeName;
/* target node name
*/
}tsmQryProxyNodeData;
#define tsmQryProxyNodeDataVersion
/*-------------------------------------------------------------------------+
| Type definition for qryRespProxyNodeData parameter used on tsmGetNextQObj()|
+-------------------------------------------------------------------------*/
typedef struct tsmQryRespProxyNodeData
{
dsUint16_t
stVersion ;
dsChar_t
targetNodeName[DSM_MAX_ID_LENGTH+1];
dsChar_t
peerNodeName[DSM_MAX_ID_LENGTH+1];
dsChar_t
hlAddress[DSM_MAX_ID_LENGTH+1];
dsChar_t
llAddress[DSM_MAX_ID_LENGTH+1];
}tsmQryRespProxyNodeData;
#define tsmQryRespProxyNodeDataVersion
184
/*
/*
/*
/*
/*
structure version
target node name
peer node name
peer hlAddress
peer llAddress
*/
*/
*/
*/
*/
/*-------------------------------------------------------------------------+
| Type definition for WINNT and OS/2 Filespace attributes
|
+-------------------------------------------------------------------------*/
typedef struct tsmDosFSAttrib
{
osChar_t
driveLetter ;
/* drive letter for filespace
*/
dsUint16_t
fsInfoLength;
/* fsInfo length used
*/
osChar_t
fsInfo[DSM_MAX_FSINFO_LENGTH];/*caller-determined data */
} tsmDosFSAttrib ;
/*-------------------------------------------------------------------------+
| Type definition for UNIX Filespace attributes
|
+-------------------------------------------------------------------------*/
typedef struct tsmUnixFSAttrib
{
dsUint16_t
fsInfoLength;
/* fsInfo length used
*/
osChar_t
fsInfo[DSM_MAX_FSINFO_LENGTH];/*caller-determined data */
} tsmUnixFSAttrib ;
/*-------------------------------------------------------------------------+
| Type definition for NetWare Filespace attributes
|
+-------------------------------------------------------------------------*/
typedef tsmUnixFSAttrib tsmNetwareFSAttrib;
/*-------------------------------------------------------------------------+
| Type definition for Filespace attributes on all Filespace calls
|
+-------------------------------------------------------------------------*/
typedef union
{
tsmNetwareFSAttrib netwareFSAttr;
tsmUnixFSAttrib
unixFSAttr ;
tsmDosFSAttrib
dosFSAttr ;
} tsmFSAttr ;
/*-------------------------------------------------------------------------+
| Type definition for fsUpd parameter on dsmUpdateFS()
+-------------------------------------------------------------------------*/
typedef struct
tsmFSUpd
{
dsUint16_t
stVersion ;
/* structure version
*/
dsChar_t
*fsType ;
/* filespace type
*/
dsStruct64_t
occupancy ;
/* occupancy estimate
*/
dsStruct64_t
capacity ;
/* capacity estimate
*/
tsmFSAttr
fsAttr ;
/* platform specific attributes
*/
} tsmFSUpd ;
#define tsmFSUpdVersion
/*-------------------------------------------------------------------------+
| Type definition for Filespace queryBuffer on dsmBeginQuery()
|
+-------------------------------------------------------------------------*/
typedef struct tsmQryFSData
{
dsUint16_t stVersion;
/* structure version */
dsChar_t
*fsName;
/* File space name */
} tsmQryFSData;
#define tsmQryFSDataVersion
/*-------------------------------------------------------------------------+
| Type definition for Query Filespace response on dsmGetNextQObj()
|
+-------------------------------------------------------------------------*/
typedef struct tsmQryRespFSData
{
dsUint16_t
stVersion;
/* structure version
dsChar_t
fsName[DSM_MAX_FSNAME_LENGTH + 1]; /* Filespace name
dsChar_t
fsType[DSM_MAX_FSTYPE_LENGTH + 1] ; /* Filespace type
*/
*/
*/
185
dsStruct64_t
dsStruct64_t
tsmFSAttr
dsmDate
dsmDate
dsmDate
dsmBool_t
dsUint32_t
dsmDate
dsmDate
occupancy;
capacity;
fsAttr ;
backStartDate;
backCompleteDate;
reserved1
;
bIsUnicode;
fsID;
lastReplStartDate;
lastReplCmpltDate;
dsmDate
lastBackOpDateFromServer;
dsmDate
lastArchOpDateFromServer;
dsmDate
lastSpMgOpDateFromServer;
dsmDate
lastBackOpDateFromLocal;
dsmDate
lastArchOpDateFromLocal;
dsmDate
lastSpMgOpDateFromLocal;
dsInt32_t
failOverWriteDelay;
/*
/*
/*
/*
/*
/*
*/
*/
*/
*/
*/
*/
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
} tsmQryRespFSData;
#define tsmQryRespFSDataVersion 5
/*-------------------------------------------------------------------------+
| Type definition for regFilespace parameter on dsmRegisterFS()
+-------------------------------------------------------------------------*/
typedef struct tsmRegFSData
{
dsUint16_t
stVersion;
/* structure version */
dsChar_t
*fsName;
/* Filespace name */
dsChar_t
*fsType;
/* Filespace type */
dsStruct64_t
occupancy;
/* Occupancy est. in bytes. */
dsStruct64_t
capacity;
/* Capacity est. in bytes. */
tsmFSAttr
fsAttr ;
/* platform specific attributes */
} tsmRegFSData;
#define tsmRegFSDataVersion
/*-------------------------------------------------------------------------+
| Type definition for session info response on dsmQuerySessionInfo()
|
+-------------------------------------------------------------------------*/
typedef struct
{
dsUint16_t
stVersion;
/* Structure version
*/
/*------------------------------------------------------------------*/
/*
Server information
*/
/*------------------------------------------------------------------*/
dsChar_t
serverHost[DSM_MAX_SERVERNAME_LENGTH+1];
/* Network host name of DSM server */
dsUint16_t
serverPort;
/* Server comm port on host
dsmDate
serverDate;
/* Servers date/time
dsChar_t
serverType[DSM_MAX_SERVERTYPE_LENGTH+1];
/* Servers execution platform
*/
dsUint16_t
serverVer;
/* Servers version number
dsUint16_t
serverRel;
/* Servers release number
dsUint16_t
serverLev;
/* Servers level number
dsUint16_t
serverSubLev;
/* Servers sublevel number
/*------------------------------------------------------------------*/
/*
Client Defaults
*/
186
*/
*/
*/
*/
*/
*/
/*------------------------------------------------------------------*/
dsChar_t
nodeType[DSM_MAX_PLATFORM_LENGTH+1]; /*node/application type*/
dsChar_t
fsdelim;
/* File space delimiter
*/
dsChar_t
hldelim;
/* Delimiter betw highlev & lowlev */
dsUint8_t
compression;
/* Compression flag
*/
dsUint8_t
archDel;
/* Archive delete permission
*/
dsUint8_t
backDel;
/* Backup delete permission
*/
dsUint32_t
maxBytesPerTxn;
/* for future use
*/
dsUint16_t
maxObjPerTxn;
/* The max objects allowed in a txn */
/*------------------------------------------------------------------*/
/*
Session Information
*/
/*------------------------------------------------------------------*/
dsChar_t
id[DSM_MAX_ID_LENGTH+1];
/* Sign-in id node name
*/
dsChar_t
owner[DSM_MAX_OWNER_LENGTH+1]; /* Sign-in owner
*/
/* (for multi-user platforms)
*/
dsChar_t
confFile[DSM_PATH_MAX + DSM_NAME_MAX +1];
/* len is platform dep
*/
/* dsInit name of appl config file */
dsUint8_t
opNoTrace;
/* dsInit option - NoTrace = 1
*/
/*------------------------------------------------------------------*/
/*
Policy Data
*/
/*------------------------------------------------------------------*/
dsChar_t
domainName[DSM_MAX_DOMAIN_LENGTH+1]; /* Domain name
*/
dsChar_t
policySetName[DSM_MAX_PS_NAME_LENGTH+1];
/* Active policy set name
*/
dsmDate
polActDate;
/* Policy set activation date
*/
dsChar_t
dfltMCName[DSM_MAX_MC_NAME_LENGTH+1];/* Default Mgmt Class */
dsUint16_t
gpBackRetn;
/* Grace-period backup retention
*/
dsUint16_t
gpArchRetn;
/* Grace-period archive retention
*/
dsChar_t
adsmServerName[DSM_MAX_SERVERNAME_LENGTH+1]; /* adsm server name */
dsmBool_t
archiveRetentionProtection; /* is server Retention protection enabled */
dsUint64_t
maxBytesPerTxn_64;
/* for future use
*/
dsmBool_t
lanFreeEnabled;
/* lan free option is set
*/
dsmDedupType
dedupType;
/* server or clientOrServer
*/
dsChar_t
accessNode[DSM_MAX_ID_LENGTH+1];
/* as node node name
*/
/*------------------------------------------------------------------*/
/*
Replication and fail over information
*/
/*------------------------------------------------------------------*/
dsmFailOvrCfgType failOverCfgType; /* status of fail over */
dsChar_t
replServerName[DSM_MAX_SERVERNAME_LENGTH+1]; /* repl server name */
dsChar_t
homeServerName[DSM_MAX_SERVERNAME_LENGTH+1]; /* home server name */
dsChar_t
replServerHost[DSM_MAX_SERVERNAME_LENGTH+1]; /* Network host name of DSM server
dsInt32_t
replServerPort;
/* Server comm port on host
*/
*/
} tsmApiSessInfo;
#define tsmApiSessInfoVersion
/*-------------------------------------------------------------------------+
| Type definition for Query options response on dsmQueryCliOptions()
|
|
and dsmQuerySessOptions()
|
+-------------------------------------------------------------------------*/
typedef struct
{
dsUint16_t stVersion;
dsChar_t
dsmiDir[DSM_PATH_MAX + DSM_NAME_MAX +1];
dsChar_t
dsmiConfig[DSM_PATH_MAX + DSM_NAME_MAX +1];
dsChar_t
serverName[DSM_MAX_SERVERNAME_LENGTH+1];
dsInt16_t
commMethod;
dsChar_t
serverAddress[DSM_MAX_SERVER_ADDRESS];
dsChar_t
nodeName[DSM_MAX_NODE_LENGTH+1];
dsmBool_t
compression;
dsmBool_t
compressalways;
dsmBool_t
passwordAccess;
}tsmOptStruct ;
Appendix B. API type definitions source files
187
#define tsmOptStructVersion
/*-------------------------------------------------------------------------+
| Type definition for qryRespAccessData parameter used on dsmQueryAccess()|
+-------------------------------------------------------------------------*/
typedef struct
{
dsUint16_t
dsChar_t
dsChar_t
tsmObjName
dsmAccessType
dsUint32_t
stVersion ;
node[DSM_MAX_ID_LENGTH+1];
owner[DSM_MAX_OWNER_LENGTH+1];
objName ;
accessType;
ruleNumber ;
/*
/*
/*
/*
/*
/*
structure version
node name
owner
object name
archive or backup
Access rule id
*/
*/
*/
*/
*/
*/
}tsmQryRespAccessData;
#define tsmQryRespAccessDataVersion
/*-------------------------------------------------------------------------+
| Type definition for envSetUp parameter on dsmSetUp()
+-------------------------------------------------------------------------*/
typedef struct tsmEnvSetUp
{
dsUint16_t
stVersion;
/* structure version */
dsChar_t
dsmiDir[DSM_PATH_MAX + DSM_NAME_MAX +1];
dsChar_t
dsmiConfig[DSM_PATH_MAX + DSM_NAME_MAX +1];
dsChar_t
dsmiLog[DSM_PATH_MAX + DSM_NAME_MAX +1];
char
**argv; /* for executables name argv[0] */
dsChar_t
logName[DSM_NAME_MAX +1];
dsmBool_t
reserved1;
/* for future use */
dsmBool_t
reserved2;
/* for future use */
} tsmEnvSetUp;
#define tsmEnvSetUpVersion
/*-------------------------------------------------------------------------+
| Type definition for dsmInitExIn_t
+-------------------------------------------------------------------------*/
typedef struct tsmInitExIn_t
{
dsUint16_t
stVersion;
/* structure version */
tsmApiVersionEx
*apiVersionExP;
dsChar_t
*clientNodeNameP;
dsChar_t
*clientOwnerNameP;
dsChar_t
*clientPasswordP;
dsChar_t
*userNameP;
dsChar_t
*userPasswordP;
dsChar_t
*applicationTypeP;
dsChar_t
*configfile;
dsChar_t
*options;
dsChar_t
dirDelimiter;
dsmBool_t
useUnicode;
dsmBool_t
bCrossPlatform;
dsmBool_t
bService;
dsmBool_t
bEncryptKeyEnabled;
dsChar_t
*encryptionPasswordP;
dsmBool_t
useTsmBuffers;
dsUint8_t
numTsmBuffers;
tsmAppVersion
appVersionP;
} tsmInitExIn_t;
#define tsmInitExInVersion 5
/*-------------------------------------------------------------------------+
| Type definition for dsmInitExOut_t
188
+-------------------------------------------------------------------------*/
typedef struct tsmInitExOut_t
{
dsUint16_t
stVersion;
/* structure version */
dsInt16_t
userNameAuthorities;
dsInt16_t
infoRC;
/* error return code if encountered */
/* adsm server name
*/
dsChar_t
adsmServerName[DSM_MAX_SERVERNAME_LENGTH+1];
dsUint16_t
serverVer;
/* Servers version number
*/
dsUint16_t
serverRel;
/* Servers release number
*/
dsUint16_t
serverLev;
/* Servers level number
*/
dsUint16_t
serverSubLev; /* Servers sublevel number
*/
dsmBool_t
bIsFailOverMode; /* true if failover has occured */
dsChar_t
replServerName[DSM_MAX_SERVERNAME_LENGTH+1]; /* repl server name */
dsChar_t
homeServerName[DSM_MAX_SERVERNAME_LENGTH+1]; /* home server name */
} tsmInitExOut_t;
#define tsmInitExOutVersion 3
/*-------------------------------------------------------------------------+
| Type definition for dsmLogExIn_t
+-------------------------------------------------------------------------*/
typedef struct tsmLogExIn_t
{
dsUint16_t
stVersion; /* structure version */
dsmLogSeverity
severity;
dsChar_t
appMsgID[8];
dsmLogType
logType;
/* log type : local, server, both */
dsChar_t
*message;
/* text of message to be logged */
dsChar_t
appName[DSM_MAX_PLATFORM_LENGTH];
dsChar_t
osPlatform[DSM_MAX_PLATFORM_LENGTH];
dsChar_t
appVersion[DSM_MAX_PLATFORM_LENGTH];
} tsmLogExIn_t;
#define tsmLogExInVersion 2
/*-------------------------------------------------------------------------+
| Type definition for dsmlogExOut_t
+-------------------------------------------------------------------------*/
typedef struct tsmLogExOut_t
{
dsUint16_t
stVersion; /* structure version */
} tsmLogExOut_t;
#define tsmLogExOutVersion 1
/*-------------------------------------------------------------------------+
| Type definition for dsmRenameIn_t
+-------------------------------------------------------------------------*/
typedef struct tsmRenameIn_t
{
dsUint16_t
stVersion;
/* structure version */
dsUint32_t
tsmHandle;
/* handle for session */
dsUint8_t
repository;
/* Backup or Archive */
tsmObjName
*objNameP ;
/* object name */
dsChar_t
newHl[DSM_MAX_HL_LENGTH + 1]; /* new High level name */
dsChar_t
newLl[DSM_MAX_LL_LENGTH + 1]; /* new Low level name */
dsmBool_t
merge;
/* merge into existing name*/
ObjID
objId;
/* objId for Archive */
} tsmRenameIn_t;
#define tsmRenameInVersion 1
/*-------------------------------------------------------------------------+
| Type definition for dsmRenameOut_t
+-------------------------------------------------------------------------*/
Appendix B. API type definitions source files
189
/* structure version */
#define tsmRenameOutVersion 1
/*-------------------------------------------------------------------------+
| Type definition for tsmEndSendObjExIn_t
+-------------------------------------------------------------------------*/
typedef struct tsmEndSendObjExIn_t
{
dsUint16_t
stVersion;
/* structure version */
dsUint32_t
tsmHandle;
/* handle for session */
} tsmEndSendObjExIn_t;
#define tsmEndSendObjExInVersion 1
/*-------------------------------------------------------------------------+
| Type definition for dsmEndSendObjExOut_t
+-------------------------------------------------------------------------*/
typedef struct tsmEndSendObjExOut_t
{
dsUint16_t
stVersion;
/* structure version */
dsStruct64_t
totalBytesSent;
/* total bytes read from app */
dsmBool_t
objCompressed;
/* was object compressed */
dsStruct64_t
totalCompressSize;
/* total size after compress */
dsStruct64_t
totalLFBytesSent;
/* total bytes sent Lan Free */
dsUint8_t
encryptionType;
/* type of encryption used
*/
dsmBool_t
objDeduplicated;
/* was object processed for dist. data dedup */
dsStruct64_t
totalDedupSize;
/* total size after de-dup */
}tsmEndSendObjExOut_t;
#define tsmEndSendObjExOutVersion 3
/*-------------------------------------------------------------------------+
| Type definition for tsmGroupHandlerIn_t
+-------------------------------------------------------------------------*/
typedef struct tsmGroupHandlerIn_t
{
dsUint16_t
stVersion;
/* structure version
dsUint32_t
tsmHandle;
/* handle for session
dsUint8_t
groupType;
/* Type of group
dsUint8_t
actionType;
/* Type of group operation
dsUint8_t
memberType;
/* Type of member: Leader or member
dsStruct64_t
leaderObjId;
/* OBJID of the groupleader
dsChar_t
*uniqueGroupTagP; /* Unique group identifier
tsmObjName
*objNameP ;
/* group leader object name
dsmGetList
memberObjList;
/* list of objects to remove, assign
} tsmGroupHandlerIn_t;
#define tsmGroupHandlerInVersion 1
/*-------------------------------------------------------------------------+
| Type definition for tsmGroupHandlerExOut_t
+-------------------------------------------------------------------------*/
typedef struct tsmGroupHandlerOut_t
{
dsUint16_t
stVersion;
/* structure version */
} tsmGroupHandlerOut_t;
#define tsmGroupHandlerOutVersion 1
/*-------------------------------------------------------------------------+
| Type definition for tsmEndTxnExIn_t
+-------------------------------------------------------------------------*/
typedef struct tsmEndTxnExIn_t
190
*/
*/
*/
*/
*/
*/
*/
*/
*/
{
dsUint16_t
stVersion;
dsUint32_t
tsmHandle;
dsUint8_t
vote;
} tsmEndTxnExIn_t;
/* structure version */
/* handle for session */
#define tsmEndTxnExInVersion 1
/*-------------------------------------------------------------------------+
| Type definition for tsmEndTxnExOut_t
+-------------------------------------------------------------------------*/
typedef struct tsmEndTxnExOut_t
{
dsUint16_t
stVersion;
/* structure version
*/
dsUint16_t
reason;
/* reason code
*/
dsStruct64_t
groupLeaderObjId;
/* groupLeader obj id returned on */
/* DSM_ACTION_OPEN
*/
dsUint8_t
reserved1;
/* future use
*/
dsUint16_t
reserved2;
/* future use
*/
} tsmEndTxnExOut_t;
#define tsmEndTxnExOutVersion 1
/*-------------------------------------------------------------------------+
| Type definition for tsmEndGetDataExIn_t
+-------------------------------------------------------------------------*/
typedef struct tsmEndGetDataExIn_t
{
dsUint16_t
stVersion;
/* structure version */
dsUint32_t
tsmHandle;
/* handle for session */
}tsmEndGetDataExIn_t;
#define tsmEndGetDataExInVersion 1
/*-------------------------------------------------------------------------+
| Type definition for tsmEndGetDataExOut_t
+-------------------------------------------------------------------------*/
typedef struct tsmEndGetDataExOut_t
{
dsUint16_t
stVersion;
/* structure version
*/
dsUint16_t
reason;
/* reason code
*/
dsStruct64_t
totalLFBytesRecv; /* total lan free bytes recieved */
}tsmEndGetDataExOut_t;
#define tsmEndGetDataExOutVersion 1
/*-------------------------------------------------------------------------+
| Type definition for on tsmRetentionEvent()
|
+-------------------------------------------------------------------------*/
typedef struct tsmRetentionEventIn_t
{
dsUint16_t
stVersion;
/* structure version */
dsUint32_t
tsmHandle;
/* session Handle
*/
dsmEventType_t
eventType;
/* Event type
*/
dsmObjList_t
objList;
/* object ID
*/
}tsmRetentionEventIn_t;
#define tsmRetentionEventInVersion 1
/*-------------------------------------------------------------------------+
| Type definition for on tsmRetentionEvent()
|
+-------------------------------------------------------------------------*/
typedef struct tsmRetentionEventOut_t
{
dsUint16_t
stVersion ;
/* structure version
*/
}tsmRetentionEventOut_t;
191
#define tsmRetentionEventOutVersion 1
/*-------------------------------------------------------------------------+
| Type definition for tsmUpdateObjExIn_t
+-------------------------------------------------------------------------*/
typedef struct tsmUpdateObjExIn_t
{
dsUint16_t
stVersion;
/* structure version
*/
dsUint32_t
tsmHandle;
/* session Handle
*/
tsmSendType
sendType;
/* send type back/arch */
dsChar_t
*descrP;
/* archive description */
tsmObjName
*objNameP;
/* objName
*/
tsmObjAttr
*objAttrPtr;
/* attribute
*/
dsUint32_t
objUpdAct;
/* update action
*/
ObjID
archObjId;
/* objId for archive
*/
}tsmUpdateObjExIn_t;
#define tsmUpdateObjExInVersion 1
/*-------------------------------------------------------------------------+
| Type definition for tsmUpdateObjExOut_t
+-------------------------------------------------------------------------*/
typedef struct tsmUpdateObjExOut_t
{
dsUint16_t
stVersion;
/* structure version */
}tsmUpdateObjExOut_t;
#define tsmUpdateObjExOutVersion 1
#if _OPSYS_TYPE == DS_WINNT
#pragma pack()
#endif
#ifdef _MAC
#pragma options align = reset
#endif
#endif /* _H_TSMAPITD */
/***********************************************************************
* Tivoli Storage Manager
*
* API Client Component
*
*
*
* (C) Copyright IBM Corporation 1993,2010
*
***********************************************************************/
/**************************************************************************
* Header File Name: dsmapips.h
*
* Environment:
*********************************************
*
** This is a platform-specific source file **
*
** versioned for Windows NT
**
*
*
*********************************************
*
* Design Notes:
This file includes platform dependent definitions
*
* Descriptive-name: Definitions for Tivoli Storage Manager typedefs and LINKAGE
*-------------------------------------------------------------------------*/
#ifndef _H_DSMAPIPS
#define _H_DSMAPIPS
#ifndef _WIN64
#pragma pack(1)
#endif
/*<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>*/
192
/*
T Y P E D E F S
*/
/*<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>*/
/* new typedef file for Version 3
*/
signed
unsigned
signed
unsigned
signed
unsigned
char
char
short
short
long
long
dsInt8_t;
dsUint8_t;
dsInt16_t;
dsUint16_t;
dsInt32_t;
dsUint32_t;
193
}dsmBool_t ;
/*=== for backward compatability
#define uint8
dsUint8_t
#define int8
dsInt8_t
#define uint16 dsUint16_t
#define int16
dsInt16_t
#define uint32 dsUint32_t
#define int32
dsInt32_t
#define uint64 dsStruct64_t
#define bool_t dsBool_t
#define dsBool_t dsmBool_t
#define bTrue
dsmTrue
#define bFalse dsmFalse
typedef struct
{
dsUint32_t hi;
dsUint32_t lo;
}dsStruct64_t ;
===*/
#endif /* DSMAPILIB */
#ifndef _WIN64
#pragma pack()
#endif
#endif /* _H_DSMAPIPS */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
* Tivoli Storage Manager
*
* Common Source Component
*
*
*
* (C) Copyright IBM Corporation 1993,2003
*
***********************************************************************/
/***********************************************************************
* Header File Name: release.h
*
* Environment:
************************************************
*
** This is a platform-independent source file **
*
************************************************
*
* Design Notes:
This file contains the common information about
*
the actual version.release.level.sublevel
*
* Descriptive-name: Definitions for Tivoli Storage manager version
*
* Note: This file should contain no LOG or CMVC information. It is
*
shipped with the API code.
*
*----------------------------------------------------------------------*/
#ifndef _H_RELEASE
#define _H_RELEASE
#define
#define
#define
#define
#define
COMMON_VERSION
COMMON_RELEASE
COMMON_LEVEL
COMMON_SUBLEVEL
COMMON_DRIVER
7
1
1
0
dsTEXT("")
194
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define TSMPRODTXT
/*======================================================================
The following string definitions are used for VERSION information
and should not be converted to dsTEXT or osTEXT. They are used
only at link time.
These are also used when the Jar file is built on Unix. See the
the perl script tools/unx/mzbuild/createReleaseJava
======================================================================*/
#define COMMON_VERSION_STR
"7"
#define COMMON_RELEASE_STR
"1"
#define COMMON_LEVEL_STR
"1"
#define COMMON_SUBLEVEL_STR
"0"
#define COMMON_DRIVER_STR
""
/*=== product names definitions ===*/
#define COMMON_NAME_DFDSM
1
#define COMMON_NAME_ADSM
2
#define COMMON_NAME_TSM
3
#define COMMON_NAME_ITSM
4
#define COMMON_NAME
COMMON_NAME_ITSM
/*======================================================================
Internal version, release, and level (build) version. This
should be unique for every version+release+ptf of a product.
This information is recorded in the file attributes and data
stream for diagnostic purposes.
NOTE: DO NOT MODIFY THESE VALUES. YOU CAN ONLY ADD NEW ENTRIES!
======================================================================*/
#define COMMON_BUILD_TSM_510
1
#define COMMON_BUILD_TSM_511
2
#define COMMON_BUILD_TSM_515
3
#define COMMON_BUILD_TSM_516
4
#define COMMON_BUILD_TSM_520
5
#define COMMON_BUILD_TSM_522
6
#define COMMON_BUILD_TSM_517
7
#define COMMON_BUILD_TSM_523
8
#define COMMON_BUILD_TSM_530
9
#define COMMON_BUILD_TSM_524
10
#define COMMON_BUILD_TSM_532
11
#define COMMON_BUILD_TSM_533
12
#define COMMON_BUILD_TSM_525
13
#define COMMON_BUILD_TSM_534
14
#define COMMON_BUILD_TSM_540
15
#define COMMON_BUILD_TSM_535
16
#define COMMON_BUILD_TSM_541
17
#define COMMON_BUILD_TSM_550
18
#define COMMON_BUILD_TSM_542
19
#define COMMON_BUILD_TSM_551
20
#define COMMON_BUILD_TSM_610
21
#define COMMON_BUILD_TSM_552
22
#define COMMON_BUILD_TSM_611
23
#define COMMON_BUILD_TSM_543
24
#define COMMON_BUILD_TSM_620
25
#define COMMON_BUILD_TSM_612
26
#define COMMON_BUILD_TSM_553
27
#define COMMON_BUILD_TSM_613
28
#define COMMON_BUILD_TSM_621
29
#define COMMON_BUILD_TSM_622
30
#define COMMON_BUILD_TSM_614
31
#define COMMON_BUILD_TSM_623
32
#define COMMON_BUILD_TSM_630
33
#define COMMON_BUILD_TSM_615
34
#define COMMON_BUILD_TSM_624
35
#define COMMON_BUILD_TSM_631
36
#define COMMON_BUILD_TSM_640
37
Appendix B. API type definitions source files
195
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define
#define
#define
#define
#define
COMMON_BUILD_TSM_710
COMMON_BUILD_TSM_625
COMMON_BUILD_TSM_641
COMMON_BUILD_TSM_711
COMMON_BUILD
38
39
40
41
COMMON_BUILD_TSM_711
#define
#define
TDP4VE_PLATFORM_STRING_MBCS
TDP4VE_PLATFORM_STRING
"TDP VMware"
dsTEXT("TDP VMware")
#define
#define
#endif /* _H_RELEASE */
196
dsmBeginGetData(
dsmHandle,
mountWait,
getType,
*dsmGetObjListP
197
dsmBindMC(
dsmHandle,
*objNameP,
sendType,
*mcBindKeyP
dsmEndSendObjEx(
*dsmEndSendObjExInP,
*dsmEndSendObjExOutP
198
dsmEndTxn(
dsUint32_t
dsUint8_t
dsUint16_t
dsmHandle,
vote,
*reason
);
extern dsInt16_t DSMLINKAGE dsmGetData(
dsUint32_t
dsmHandle,
DataBlk
*dataBlkPtr
);
extern dsInt16_t DSMLINKAGE
getBufferDataIn_t
getBufferDataOut_t
);
dsmGetBufferData(
*dsmGetBufferDataInP,
*dsmGetBufferDataOutP
dsmInit(
*dsmHandle,
*dsmApiVersionP,
*clientNodeNameP,
*clientOwnerNameP,
*clientPasswordP,
*applicationType,
*configfile,
*options
dsmQueryApiVersion(
Appendix C. API function definitions source file
199
dsmApiVersion
*apiVersionP
);
extern void DSMLINKAGE
dsmApiVersionEx
);
dsmQueryApiVersionEx(
*apiVersionP
dsmReleaseBuffer(
*dsmReleaseBufferInP,
*dsmReleaseBufferOutP
dsmRenameObj(
*dsmRenameInP,
*dsmRenameOutP
dsmRequestBuffer(
*dsmRequestBufferInP,
*dsmRequestBufferOutP
dsmSendBufferData(
*dsmSendBufferDataInP,
*dsmSendBufferDataOutP
dsmSendData(
dsmHandle,
*dataBlkPtr
dsmSendObj(
dsmHandle,
sendType,
*sendBuff,
*objNameP,
200
ObjAttr
DataBlk
*objAttrPtr,
*dataBlkPtr
);
extern dsInt16_t DSMLINKAGE
dsUint32_t
dsmAccessType
dsmObjName
char
char
);
dsmSetAccess(
dsmHandle,
accessType,
*objNameP,
*node,
*owner
dsmSetUp(
mtFlag,
*envSetUpP
dsmTerminate(
dsmHandle
dsmUpdateFS(
dsmHandle,
*fs,
*fsUpdP,
fsUpdAct
dsmUpdateObj(
dsmHandle,
sendType,
*sendBuff,
*objNameP,
*objAttrPtr,
objUpdAct
);
extern dsInt16_t DSMLINKAGE
dsmUpdateObjExIn_t
dsmUpdateObjExOut_t
);
dsmUpdateObjEx(
*dsmUpdateObjExInP,
*dsmUpdateObjExOutP
This section contains the function definitions for the API. It is a copy of the
tsmapifp.h header file.
Note: DSMLINKAGE is defined differently for each operating system. See the
definitions in the tsmapips.h file for your specific operating system.
/***********************************************************************
* Tivoli Storage Manager
*
* API Client Component
*
*
*
* (C) Copyright IBM Corporation 1993,2002
*
***********************************************************************/
/**************************************************************************/
/* Header File Name: tsmapifp.h
*/
Appendix C. API function definitions source file
201
/*
*/
/* Descriptive-name: Tivoli Storage Manager API function prototypes
*/
/**************************************************************************/
#ifndef _H_TSMAPIFP
#define _H_TSMAPIFP
#if defined(__cplusplus)
extern "C" {
#endif
#ifdef DYNALOAD_DSMAPI
/* function will be dynamically loaded */
#include "dsmapidl.h"
#else
/* functions will be implicitly loaded from library */
/*========================================================================*/
/*P U B L I C
F U N C T I O N S
*/
/*========================================================================*/
typedef void tsmQueryBuff;
extern dsInt16_t DSMLINKAGE
dsUint32_t
dsBool_t
tsmGetType
dsmGetList
);
tsmBeginGetData(
tsmHandle,
mountWait,
getType,
*dsmGetObjListP
tsmBindMC(
tsmHandle,
*objNameP,
sendType,
*mcBindKeyP
202
tsmDeleteObj(
dsUint32_t
tsmDelType
tsmDelInfo
tsmHandle,
delType,
delInfo
);
extern dsInt16_t DSMLINKAGE tsmDeleteFS(
dsUint32_t
tsmHandle,
dsChar_t
*fsName,
dsUint8_t
repository
);
extern dsInt16_t DSMLINKAGE tsmEndGetData(
dsUint32_t
tsmHandle
);
extern dsInt16_t DSMLINKAGE tsmEndGetDataEx(
tsmEndGetDataExIn_t
*tsmEndGetDataExInP,
tsmEndGetDataExOut_t
*tsmEndGetDataExOutP
);
extern dsInt16_t DSMLINKAGE tsmEndGetObj(
dsUint32_t
tsmHandle
);
extern dsInt16_t DSMLINKAGE tsmEndQuery(
dsUint32_t
tsmHandle
);
extern dsInt16_t DSMLINKAGE tsmEndSendObj(
dsUint32_t
tsmHandle
);
extern dsInt16_t DSMLINKAGE tsmEndSendObjEx(
tsmEndSendObjExIn_t
*tsmEndSendObjExInP,
tsmEndSendObjExOut_t
*tsmEndSendObjExOutP
);
extern dsInt16_t DSMLINKAGE tsmEndTxn(
dsUint32_t
tsmHandle,
dsUint8_t
vote,
dsUint16_t
*reason
);
extern dsInt16_t DSMLINKAGE tsmEndTxnEx(
tsmEndTxnExIn_t
*tsmEndTxnExInP,
tsmEndTxnExOut_t
*tsmEndTxnExOutP
);
extern dsInt16_t DSMLINKAGE tsmGetData(
dsUint32_t
tsmHandle,
DataBlk*dataBlkPtr
);
extern dsInt16_t DSMLINKAGE
getBufferDataIn_t
getBufferDataOut_t
);
tsmGetBufferData(
*tsmGetBufferDataInP,
*tsmGetBufferDataOutP
203
);
extern dsInt16_t DSMLINKAGE
tsmGroupHandlerIn_t
tsmGroupHandlerOut_t
);
tsmGroupHandler(
*tsmGroupHandlerInP,
*tsmGroupHandlerOutP
tsmQueryApiVersionEx(
*apiVersionP
204
tsmRequestBuffer(
requestBufferIn_t
requestBufferOut_t
*tsmRequestBufferInP,
*tsmRequestBufferOutP
);
extern dsInt16_t DSMLINKAGE
tsmRetentionEvent(
tsmRetentionEventIn_t *tsmRetentionEventInP,
tsmRetentionEventOut_t *tsmRetentionEventOutP
);
extern dsInt16_t DSMLINKAGE
sendBufferDataIn_t
sendBufferDataOut_t
);
tsmSendBufferData(
*tsmSendBufferDataInP,
*tsmSendBufferDataOutP
tsmSendObj(
tsmHandle,
sendType,
*sendBuff,
*objNameP,
*objAttrPtr,
*dataBlkPtr
tsmSetAccess(
tsmHandle,
accessType,
*objNameP,
*node,
*owner
tsmUpdateFS(
tsmHandle,
*fs,
*fsUpdP,
fsUpdAct
tsmUpdateObj(
tsmHandle,
sendType,
*sendBuff,
*objNameP,
*objAttrPtr,
objUpdAct
);
extern dsInt16_t DSMLINKAGE tsmUpdateObjEx(
tsmUpdateObjExIn_t
*tsmUpdateObjExInP,
tsmUpdateObjExOut_t
*tsmUpdateObjExOutP
);
205
206
Accessibility features
The IBM Tivoli Storage Manager family of products includes the following
accessibility features:
v Keyboard-only operation using standard operating-system conventions
v Interfaces that support assistive technology such as screen readers
The command-line interfaces of all products in the product family are accessible.
Tivoli Storage Manager Operations Center provides the following additional
accessibility features when you use it with a Mozilla Firefox browser on a
Microsoft Windows system:
v Screen magnifiers and content zooming
v High contrast mode
The Operations Center and the Tivoli Storage Manager Server can be installed in
console mode, which is accessible.
The Operations Center help system is enabled for accessibility. For more
information, click the question mark icon on the help system menu bar.
Vendor software
The Tivoli Storage Manager product family includes certain vendor software that is
not covered under the IBM license agreement. IBM makes no representation about
the accessibility features of these products. Contact the vendor for the accessibility
information about its products.
207
208
Notices
This information was developed for products and services offered in the U.S.A.
IBM may not offer the products, services, or features discussed in this document in
other countries. Consult your local IBM representative for information on the
products and services currently available in your area. Any reference to an IBM
product, program, or service is not intended to state or imply that only that IBM
product, program, or service may be used. Any functionally equivalent product,
program, or service that does not infringe any IBM intellectual property right may
be used instead. However, it is the user's responsibility to evaluate and verify the
operation of any non-IBM product, program, or service.
IBM may have patents or pending patent applications covering subject matter
described in this document. The furnishing of this document does not grant you
any license to these patents. You can send license inquiries, in writing, to:
IBM Director of Licensing
IBM Corporation
North Castle Drive
Armonk, NY 10504-1785
U.S.A.
For license inquiries regarding double-byte character set (DBCS) information,
contact the IBM Intellectual Property Department in your country or send
inquiries, in writing, to:
Intellectual Property Licensing
Legal and Intellectual Property Law
IBM Japan Ltd
19-21, Nihonbashi-Hakozakicho, Chuo-ku
Tokyo 103-8510, Japan
The following paragraph does not apply to the United Kingdom or any other
country where such provisions are inconsistent with local law:
INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS
PUBLICATION AS IS WITHOUT WARRANTY OF ANY KIND, EITHER
EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS
FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or
implied warranties in certain transactions, therefore, this statement may not apply
to you.
This information could include technical inaccuracies or typographical errors.
Changes are periodically made to the information herein; these changes will be
incorporated in new editions of the publication. IBM may make improvements
and/or changes in the product(s) and/or the program(s) described in this
publication at any time without notice.
Any references in this information to non-IBM websites are provided for
convenience only and do not in any manner serve as an endorsement of those
websites. The materials at those websites are not part of the materials for this IBM
product and use of those websites is at your own risk.
Copyright IBM Corp. 1993, 2014
209
IBM may use or distribute any of the information you supply in any way it
believes appropriate without incurring any obligation to you.
Licensees of this program who want to have information about it for the purpose
of enabling: (i) the exchange of information between independently created
programs and other programs (including this one) and (ii) the mutual use of the
information which has been exchanged, should contact:
IBM Corporation
2Z4A/101
11400 Burnet Road
Austin, TX 78758
U.S.A.
Such information may be available, subject to appropriate terms and conditions,
including in some cases, payment of a fee.
The licensed program described in this information and all licensed material
available for it are provided by IBM under terms of the IBM Customer Agreement,
IBM International Program License Agreement, or any equivalent agreement
between us.
Any performance data contained herein was determined in a controlled
environment. Therefore, the results obtained in other operating environments may
vary significantly. Some measurements may have been made on development-level
systems and there is no guarantee that these measurements will be the same on
generally available systems. Furthermore, some measurements may have been
estimated through extrapolation. Actual results may vary. Users of this document
should verify the applicable data for their specific environment.
Information concerning non-IBM products was obtained from the suppliers of
those products, their published announcements or other publicly available sources.
IBM has not tested those products and cannot confirm the accuracy of
performance, compatibility or any other claims related to non-IBM products.
Questions on the capabilities of non-IBM products should be addressed to the
suppliers of those products.
This information contains examples of data and reports used in daily business
operations. To illustrate them as completely as possible, the examples include the
names of individuals, companies, brands, and products. All of these names are
fictitious and any similarity to the names and addresses used by an actual business
enterprise is entirely coincidental.
COPYRIGHT LICENSE:
This information contains sample application programs in source language, which
illustrate programming techniques on various operating platforms. You may copy,
modify, and distribute these sample programs in any form without payment to
IBM, for the purposes of developing, using, marketing or distributing application
programs conforming to the application programming interface for the operating
platform for which the sample programs are written. These examples have not
been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or
imply reliability, serviceability, or function of these programs. The sample
programs are provided "AS IS", without warranty of any kind. IBM shall not be
liable for any damages arising out of your use of the sample programs.
210
Each copy or any portion of these sample programs or any derivative work, must
include a copyright notice as follows:
(your company name) (year). Portions of this code are derived from IBM Corp.
Sample Programs. Copyright IBM Corp. _enter the year or years_.
If you are viewing this information in softcopy, the photographs and color
illustrations may not appear.
Trademarks
IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of
International Business Machines Corp., registered in many jurisdictions worldwide.
Other product and service names might be trademarks of IBM or other companies.
A current list of IBM trademarks is available on the web at Copyright and
trademark information at http://www.ibm.com/legal/copytrade.shtml.
Linux is a registered trademark of Linus Torvalds in the United States, other
countries, or both.
Microsoft, Windows, and the Windows logo are trademarks of Microsoft
Corporation in the United States, other countries, or both.
Java and all Java-based trademarks and logos are trademarks or registered
trademarks of Oracle and/or its affiliates.
UNIX is a registered trademark of The Open Group in the United States and other
countries.
Other company, product, or service names may be trademarks or service marks of
others.
211
For more information about the use of various technologies, including cookies, for
these purposes, see IBMs Privacy Policy at http://www.ibm.com/privacy and
IBMs Online Privacy Statement at http://www.ibm.com/privacy/details in the
section entitled Cookies, Web Beacons and Other Technologies, and the IBM
Software Products and Software-as-a-Service Privacy Statement at
http://www.ibm.com/software/info/product-privacy.
212
Glossary
This glossary provides terms and definitions for
Tivoli Storage Manager, Tivoli Storage FlashCopy
Manager, and associated products.
The following cross-references are used in this
glossary:
v See refers you from a nonpreferred term to the
preferred term or from an abbreviation to the
spelled-out form.
v See also refers you to a related or contrasting
term.
For other terms and definitions, see the IBM
Terminology website (http://www.ibm.com/
software/globalization/terminology).
A
absolute mode
In storage management, a backup
copy-group mode that specifies that a file
is considered for incremental backup even
if the file has not changed since the last
backup. See also mode, modified mode.
access control list (ACL)
In computer security, a list associated
with an object that identifies all the
subjects that can access the object and
their access rights.
access mode
An attribute of a storage pool or a storage
volume that specifies whether the server
can write to or read from the storage pool
or storage volume.
ACK
See acknowledgment.
acknowledgment (ACK)
The transmission of acknowledgment
characters as a positive response to a data
transmission.
ACL
activate
To validate the contents of a policy set
and then make it the active policy set.
active-data pool
A named set of storage pool volumes that
contain only active versions of client
213
administrative session
A period of time during which an
administrator user ID communicates with
a server to perform administrative tasks.
See also client node session, session.
administrator
A person responsible for administrative
tasks such as access authorization and
content management. Administrators can
also grant levels of authority to users.
audit
agent node
A client node that has been granted proxy
authority to perform operations on behalf
of another client node, which is the target
node.
aggregate
An object, stored in one or more storage
pools, consisting of a group of logical files
that are packaged together. See also
logical file, physical file.
aggregate data transfer rate
A performance statistic that indicates the
average number of bytes that were
transferred per second while processing a
given operation.
application client
A program that is installed on a system to
protect an application. The server
provides backup services to an
application client.
archive
To copy programs, data, or files to
another storage media, usually for
long-term storage or security. See also
retrieve.
archive copy
A file or group of files that was archived
to server storage
archive copy group
A policy object containing attributes that
control the generation, destination, and
expiration of archived files. See also copy
group.
archive-retention grace period
The number of days that the storage
manager retains an archived file when the
server is unable to rebind the file to an
appropriate management class. See also
bind.
association
The defined relationship between a client
214
authentication rule
A specification that another user can use
to either restore or retrieve files from
storage.
authority
The right to access objects, resources, or
functions. See also privilege class.
authorization rule
A specification that permits another user
to either restore or retrieve a user's files
from storage.
authorized user
A user who has administrative authority
for the client on a workstation. This user
changes passwords, performs open
registrations, and deletes file spaces.
AutoFS
See automounted file system.
automatic detection
A feature that detects, reports, and
updates the serial number of a drive or
library in the database when the path
from the local server is defined.
automatic migration
The process that is used to automatically
move files from a local file system to
storage, based on options and settings
that are chosen by a root user on a
workstation. See also demand migration,
threshold migration.
automounted file system (AutoFS)
A file system that is managed by an
B
backup-archive client
A program that runs on a workstation or
file server and provides a means for users
to back up, archive, restore, and retrieve
files. See also administrative client.
backup copy group
A policy object containing attributes that
control the generation, destination, and
expiration of backup versions of files. A
backup copy group belongs to a
management class. See also copy group.
backup retention grace period
The number of days the storage manager
retains a backup version after the server
is unable to rebind the file to an
appropriate management class.
backup set
A portable, consolidated group of active
versions of backup files that are generated
for a backup-archive client.
backup set collection
A group of backup sets that are created at
the same time and which have the same
backup set name, volume names,
description, and device classes. The server
identifies each backup set in the collection
by its node name, backup set name, and
file type.
backup version
A file or directory that a client node
backed up to storage. More than one
backup version can exist in storage, but
only one backup version is the active
version. See also active version, copy
group, inactive version.
bind
Glossary
215
C
cache
cache file
A snapshot of a logical volume created by
Logical Volume Snapshot Agent. Blocks
are saved immediately before they are
modified during the image backup and
their logical extents are saved in the cache
files.
CAD
central scheduler
A function that permits an administrator
to schedule client operations and
administrative commands. The operations
can be scheduled to occur periodically or
on a specific date. See also administrative
command schedule, client schedule.
client
client acceptor
A service that serves the Java applet for
the web client to web browsers. On
Windows systems, the client acceptor is
installed and run as a service. On AIX,
UNIX, and Linux systems, the client
acceptor is run as a daemon.
client acceptor daemon (CAD)
See client acceptor.
client domain
The set of drives, file systems, or volumes
that the user selects to back up or archive
data, using the backup-archive client.
client node
A file server or workstation on which the
backup-archive client program has been
installed, and which has been registered
to the server.
client node session
A session in which a client node
communicates with a server to perform
backup, restore, archive, retrieve, migrate,
or recall requests. See also administrative
session.
client option set
A group of options that are defined on
216
closed registration
A registration process in which only an
administrator can register workstations as
client nodes with the server. See also open
registration.
copy backup
A full backup in which the transaction log
files are not deleted so that backup
procedures that use incremental or
differential backups are not disrupted.
collocation
The process of keeping all data belonging
to a single-client file space, a single client
node, or a group of client nodes on a
minimal number of sequential-access
volumes within a storage pool.
Collocation can reduce the number of
volumes that must be accessed when a
large amount of data must be restored.
copy group
A policy object containing attributes that
control how backup versions or archive
copies are generated, where backup
versions or archive copies are initially
located, and when backup versions or
archive copies expire. A copy group
belongs to a management class. See also
archive copy group, backup copy group,
backup version, management class.
collocation group
A user-defined group of client nodes
whose data is stored on a minimal
number of volumes through the process
of collocation.
commit point
A point in time when data is considered
to be consistent.
communication method
The method by which a client and server
exchange information. See also
Transmission Control Protocol/Internet
Protocol.
communication protocol
A set of defined interfaces that permit
computers to communicate with each
other.
compression
A function that removes repetitive
characters, spaces, strings of characters, or
binary data from the data being processed
and replaces characters with control
characters. Compression reduces the
amount of storage space that is required
for data.
configuration manager
A server that distributes configuration
information, such as policies and
schedules, to managed servers according
to their profiles. Configuration
information can include policy and
schedules. See also enterprise
configuration, managed server, profile.
conversation
A connection between two programs over
a session that allows them to
communicate with each other while
processing a transaction. See also session.
D
daemon
A program that runs unattended to
perform continuous or periodic functions,
such as network control.
damaged file
A physical file in which read errors have
been detected.
database backup series
One full backup of the database, plus up
to 32 incremental backups made since
that full backup. Each full backup that is
run starts a new database backup series.
A number identifies each backup series.
See also database snapshot, full backup.
database snapshot
A complete backup of the entire database
to media that can be taken off-site. When
a database snapshot is created, the current
database backup series is not interrupted.
A database snapshot cannot have
incremental database backups associated
with it. See also database backup series,
full backup.
Glossary
217
data center
In a virtualized environment, a container
that holds hosts, clusters, networks, and
data stores.
data deduplication
A method of reducing storage needs by
eliminating redundant data. Only one
instance of the data is retained on storage
media. Other instances of the same data
are replaced with a pointer to the retained
instance.
data manager server
A server that collects metadata
information for client inventory and
manages transactions for the storage
agent over the local area network. The
data manager server informs the storage
agent with applicable library attributes
and the target volume identifier.
data mover
A device that moves data on behalf of the
server. A network-attached storage (NAS)
file server is a data mover.
data storage-management applicationprogramming interface (DSMAPI)
A set of functions and semantics that can
monitor events on files, and manage and
maintain the data in a file. In an HSM
environment, a DSMAPI uses events to
notify data management applications
about operations on files, stores arbitrary
attribute information with a file, supports
managed regions in a file, and uses
DSMAPI access rights to control access to
a file object.
data store
In a virtualized environment, the location
where virtual machine data is stored.
deduplication
The process of creating representative
records from a set of records that have
been identified as representing the same
entities.
default management class
A management class that is assigned to a
policy set. This class is used to govern
backed up or archived files when a file is
not explicitly associated with a specific
management class through the
include-exclude list.
destination
A copy group or management class
attribute that specifies the primary storage
pool to which a client file will be backed
up, archived, or migrated. See also copy
storage pool.
device class
A named set of characteristics that are
applied to a group of storage devices.
Each device class has a unique name and
represents a device type of disk, file,
optical disk, or tape.
device configuration file
1. For a storage agent, a file that contains
the name and password of the storage
agent, and information about the
server that is managing the
SAN-attached libraries and drives that
the storage agent uses.
2. For a server, a file that contains
information about defined device
classes, and, on some servers, defined
libraries and drives. The information
is a copy of the device configuration
information in the database.
disaster recovery manager (DRM)
A function that assists in preparing and
using a disaster recovery plan file for the
server.
disaster recovery plan
A file that is created by the disaster
recover manager (DRM) that contains
information about how to recover
computer systems if a disaster occurs and
scripts that can be run to perform some
recovery tasks. The file includes
information about the software and
hardware that is used by the server, and
the location of recovery media.
domain
A grouping of client nodes with one or
demand migration
The process that is used to respond to an
218
DRM
event record
A database record that describes actual
status and results for events.
event server
A server to which other servers can send
events for logging. The event server
routes the events to any receivers that are
enabled for the sending server's events.
DSMAPI
See data storage-management
application-programming interface.
dynamic serialization
Copy serialization in which a file or
folder is backed up or archived on the
first attempt regardless of whether it
changes during a backup or archive. See
also shared dynamic serialization, shared
static serialization, static serialization.
exclude
E
EA
EB
See exabyte.
EFS
exabyte (EB)
For processor, real and virtual storage
capacities and channel volume, 2 to the
power of 60 or 1 152 921 504 606 846 976
bytes. For disk storage capacity and
communications volume, 1 000 000 000
000 000 000 bytes.
Glossary
219
external library
A collection of drives that is managed by
the media-management system other than
the storage management server.
F
file access time
On AIX, UNIX, or Linux systems, the
time when the file was last accessed.
file age
For migration prioritization purposes, the
number of days since a file was last
accessed.
file device type
A device type that specifies the use of
sequential access files on disk storage as
volumes.
file server
A dedicated computer and its peripheral
storage devices that are connected to a
local area network that stores programs
and files that are shared by users on the
network.
file space
A logical space in server storage that
contains a group of files that have been
backed up or archived by a client node,
from a single logical partition, file system,
or virtual mount point. Client nodes can
restore, retrieve, or delete their file spaces
from server storage. In server storage,
files belonging to a single file space are
not necessarily stored together.
file space ID (FSID)
A unique numeric identifier that the
server assigns to a file space when it is
stored in server storage.
file state
The space management mode of a file
that resides in a file system to which
space management has been added. A file
can be in one of three states: resident,
premigrated, or migrated. See also
migrated file, premigrated file, resident
file.
file system migrator (FSM)
A kernel extension that intercepts all file
system operations and provides any space
management support that is required. If
no space management support is
required, the operation is passed to the
220
FSM
full backup
The process of backing up the entire
server database. A full backup begins a
new database backup series. See also
database backup series, database
snapshot, incremental backup.
fuzzy backup
A backup version of a file that might not
accurately reflect what is currently in the
file because the file was backed up at the
same time as it was being modified.
fuzzy copy
A backup version or archive copy of a file
that might not accurately reflect the
original contents of the file because it was
backed up or archived the file while the
file was being modified.
G
GB
See gigabyte.
H
hierarchical storage management (HSM)
A function that automatically distributes
and manages data on disk, tape, or both
by regarding devices of these types and
potentially others as levels in a storage
hierarchy that range from fast, expensive
devices to slower, cheaper, and possibly
removable devices. The objectives are to
minimize access time to data and
maximize available media capacity. See
also hierarchical storage management
client, recall, storage hierarchy.
hierarchical storage management client (HSM
client) A client program that works with the
server to provide hierarchical storage
management (HSM) for a system. See also
hierarchical storage management,
management class.
HSM
HSM client
See hierarchical storage management
client.
Glossary
221
I
ILM
inode number
A number specifying a particular inode
file in the file system.
IP address
A unique address for a device or logical
unit on a network that uses the Internet
Protocol standard.
J
job file
A generated file that contains
configuration information for a migration
job. The file is XML format and can be
created and edited in the hierarchical
storage management (HSM) client for
Windows client graphical user interface.
See also migration job.
journal-based backup
A method for backing up Windows clients
and AIX clients that exploits the change
notification mechanism in a file to
improve incremental backup performance
by reducing the need to fully scan the file
system.
journal daemon
On AIX, UNIX, or Linux systems, a
program that tracks change activity for
files residing in file systems.
journal service
In Microsoft Windows, a program that
tracks change activity for files residing in
file systems.
K
KB
See kilobyte.
kilobyte (KB)
For processor storage, real and virtual
storage, and channel volume, 2 to the
power of 10 or 1,024 bytes. For disk
storage capacity and communications
volume, 1,000 bytes.
222
L
LAN
Glossary
223
M
macro file
A file that contains one or more storage
manager administrative commands,
which can be run only from an
administrative client using the MACRO
command. See also Tivoli Storage
Manager command script.
mailbox restore
A function that restores Microsoft
Exchange Server data (from IBM Data
Protection for Microsoft Exchange
backups) at the mailbox level or
mailbox-item level.
managed object
A definition in the database of a managed
server that was distributed to the
managed server by a configuration
manager. When a managed server
subscribes to a profile, all objects that are
associated with that profile become
managed objects in the database of the
managed server.
megabyte (MB)
For processor storage, real and virtual
storage, and channel volume, 2 to the
20th power or 1,048,576 bytes. For disk
storage capacity and communications
volume, 1,000,000 bytes.
metadata
Data that describes the characteristics of
data; descriptive data.
migrate
To move data to another location, or an
application to another computer system.
migrated file
A file that has been copied from a local
file system to storage. For HSM clients on
UNIX or Linux systems, the file is
replaced with a stub file on the local file
system. On Windows systems, creation of
the stub file is optional. See also file state,
premigrated file, resident file, stub file.
managed server
A server that receives configuration
information from a configuration manager
using a subscription to one or more
profiles. Configuration information can
include definitions of objects such as
policy and schedules. See also
configuration manager, enterprise
configuration, profile, subscription.
migration
The process of moving data from one
computer system to another, or an
application to another computer system.
management class
A policy object that users can bind to each
file to specify how the server manages the
file. The management class can contain a
backup copy group, an archive copy
group, and space management attributes.
See also bind, copy group, hierarchical
storage management client, policy set,
rebind.
migration threshold
High and low capacities for storage pools
or file systems, expressed as percentages,
at which migration is set to start and
stop.
See megabyte.
media server
In a z/OS environment, a program that
provides access to z/OS disk and tape
224
migration job
A specification of files to migrate, and
actions to perform on the original files
after migration. See also job file, threshold
migration.
mirroring
The process of writing the same data to
multiple disks at the same time. The
mirroring of data protects it against data
loss within the database or within the
recovery log.
mode
modified mode
In storage management, a backup
copy-group mode that specifies that a file
N
Nagle algorithm
An algorithm that reduces congestion of
TCP/IP networks by combining smaller
packets and sending them together.
named pipe
A type of interprocess communication
that permits message data streams to pass
between peer processes, such as between
a client and a server.
NAS file server
See network-attached storage file server.
NAS file server node
See NAS node.
NAS node
A client node that is a network-attached
Glossary
225
O
offline volume backup
A backup in which the volume is locked
so that no other system applications can
access it during the backup operation.
online volume backup
A backup in which the volume is
available to other system applications
during the backup operation.
open registration
A registration process in which users can
register their workstations as client nodes
with the server. See also closed
registration.
operator privilege class
A privilege class that gives an
administrator the authority to disable or
halt the server, enable the server, cancel
server processes, and manage removable
media. See also privilege class.
options file
A file that contains processing options.
See also client system-options file, client
user-options file.
originating file system
The file system from which a file was
migrated. When a file is recalled, it is
returned to its originating file system.
orphaned stub file
A file for which no migrated file can be
found on the server that the client node is
226
P
packet In data communication, a sequence of
binary digits, including data and control
signals, that are transmitted and switched
as a composite whole.
page
pattern-matching character
See wildcard character.
physical file
A file that is stored in one or more
storage pools, consisting of either a single
logical file, or a group of logical files that
are packaged together as an aggregate.
See also aggregate, logical file, physical
occupancy.
physical occupancy
The amount of space that is used by
physical files in a storage pool. This space
includes the unused space that is created
when logical files are deleted from
aggregates. See also logical file, logical
occupancy, physical file.
plug-in
A separately installable software module
that adds function to an existing program,
application, or interface.
policy domain
A grouping of policy users with one or
more policy sets, which manage data or
storage resources for the users. The users
are client nodes that are associated with
the policy domain. See also active policy
set, domain.
policy privilege class
A privilege class that gives an
administrator the authority to manage
policy objects, register client nodes, and
schedule client operations for client
nodes. Authority can be restricted to
certain policy domains. See also privilege
class.
policy set
A group of rules in a policy domain. The
rules specify how data or storage
resources are automatically managed for
client nodes in the policy domain. Rules
can be contained in management classes.
See also active policy set, management
class.
premigrated file
A file that has been copied to server
storage, but has not been replaced with a
stub file on the local file system. An
identical copy of the file resides both on
the local file system and in server storage.
Premigrated files occur on UNIX and
Linux file systems to which space
management has been added. See also file
state, migrated file, resident file.
premigrated files database
A database that contains information
about each file that has been premigrated
to server storage.
premigration
The process of copying files that are
eligible for migration to server storage,
but leaving the original file intact on the
local file system.
primary site
A physical or virtual site that is made up
of hardware, network, and storage
resources. Typically, production
operations run at the primary site. Data
can be replicated to a secondary site for
disaster recovery and failover operations.
See also secondary site.
primary storage pool
A named set of volumes that the server
uses to store backup versions of files,
archive copies of files, and files migrated
from client nodes. See also copy storage
pool, server storage, storage pool, storage
pool volume.
privilege class
A level of authority that is granted to an
administrator. The privilege class
determines which administrative tasks the
administrator can perform. See also
authority, node privilege class, operator
privilege class, policy privilege class,
storage privilege class, system privilege
class.
profile
A named group of configuration
information that can be distributed from a
configuration manager when a managed
server subscribes. Configuration
information can include registered
administrator IDs, policies, client
schedules, client option sets,
administrative schedules, storage manager
command scripts, server definitions, and
server group definitions. See also
configuration manager, enterprise
configuration, managed server.
profile association
On a configuration manager, the defined
relationship between a profile and an
object such as a policy domain. Profile
associations define the configuration
information that is distributed to a
managed server when it subscribes to the
profile.
protected site
See primary site.
premigration percentage
A space management setting that controls
whether the next eligible candidates in a
file system are premigrated following
threshold or demand migration.
Glossary
227
Q
quota
1. For HSM on AIX, UNIX, or Linux
systems, the limit (in megabytes) on
the amount of data that can be
migrated and premigrated from a file
system to server storage.
2. For HSM on Windows systems, a
user-defined limit to the space that is
occupied by recalled files.
R
randomization
The process of distributing schedule start
times for different clients within a
specified percentage of the schedule's
startup window.
raw logical volume
A portion of a physical volume that is
comprised of unallocated blocks and has
no journaled file system (JFS) definition.
A logical volume is read/write accessible
only through low-level I/O functions.
rebind
To associate all backed-up versions of a
file with a new management class name.
For example, a file that has an active
backup version is rebound when a later
version of the file is backed up with a
different management class association.
See also bind, management class.
recall
receiver
A server repository that contains a log of
server and client messages as events. For
example, a receiver can be a file exit, a
user exit, or the server console and
activity log. See also event.
reclamation
The process of consolidating the
remaining data from many
sequential-access volumes onto fewer,
new sequential-access volumes.
reclamation threshold
The percentage of space that a
sequential-access media volume must
228
reconciliation
The process of ensuring consistency
between the original data repository and
the larger system where the data is stored
for backup. Examples of larger systems
where the data is stored for backup are
storage servers or other storage systems.
During the reconciliation process, data
that is identified as no longer needed is
removed.
recovery log
A log of updates that are about to be
written to the database. The log can be
used to recover from system and media
failures. The recovery log consists of the
active log (including the log mirror) and
archive logs.
recovery site
See secondary site.
register
To define a client node or administrator
ID that can access the server.
registry
A repository that contains access and
configuration information for users,
systems, and software.
remote
For hierarchical storage management
products, pertaining to the origin of
migrated files that are being moved. See
also local.
resident file
On a Windows system, a complete file on
a local file system that might also be a
migrated file because a migrated copy can
exist in server storage. On a UNIX or
Linux system, a complete file on a local
file system that has not been migrated or
premigrated, or that has been recalled
from server storage and modified.
restore
To copy information from its backup
location to the active storage location for
use. For example, to copy information
from server storage to a client
workstation.
retention
The amount of time, in days, that inactive
S
SAN
schedule
A database record that describes client
operations or administrative commands to
be processed. See also administrative
command schedule, client schedule.
scheduling mode
The type of scheduling operation for the
server and client node that supports two
scheduling modes: client-polling and
server-prompted.
scratch volume
A labeled volume that is either blank or
contains no valid data, that is not defined,
and that is available for use. See also
volume.
script
secondary site
A physical or virtual site that is made up
of the hardware, network, and storage
resources that support the recovery needs
of the primary site. When a failure occurs
at the primary site, operations can
continue at the secondary site. See also
primary site.
Secure Sockets Layer (SSL)
A security protocol that provides
communication privacy. With SSL,
client/server applications can
229
session
A logical or virtual connection between
two stations, software programs, or
devices on a network that allows the two
elements to communicate and exchange
data for the duration of the session. See
also administrative session.
session resource usage
The amount of wait time, processor time,
and space that is used or retrieved during
a client session.
shadow copy
A snapshot of a volume. The snapshot
can be taken while applications on the
system continue to write data to the
volumes.
shadow volume
The data stored from a snapshot of a
volume. The snapshot can be taken while
applications on the system continue to
write data to the volumes.
shared dynamic serialization
A value for serialization that specifies that
a file must not be backed up or archived
if it is being modified during the
operation. The backup-archive client
retries the backup or archive operation a
number of times; if the file is being
modified during each attempt, the
backup-archive client will back up or
archive the file on its last try. See also
dynamic serialization, serialization, shared
static serialization, static serialization.
shared library
A library device that is used by multiple
storage manager servers. See also library.
shared static serialization
A copy-group serialization value that
specifies that a file must not be modified
during a backup or archive operation. The
client attempts to retry the operation a
number of times. If the file is in use
during each attempt, the file is not backed
up or archived. See also dynamic
serialization, serialization, shared dynamic
serialization, static serialization.
snapshot
An image backup type that consists of a
point-in-time view of a volume.
space-managed file
A file that is migrated from a client node
by the hierarchical storage management
230
space management
See hierarchical storage management.
space monitor daemon
A daemon that checks space usage on all
file systems for which space management
is active, and automatically starts
threshold migration when space usage on
a file system equals or exceeds its high
threshold.
sparse file
A file that is created with a length greater
than the data it contains, leaving empty
spaces for the future addition of data.
special file
On AIX, UNIX, or Linux systems, a file
that defines devices for the system, or
temporary files that are created by
processes. There are three basic types of
special files: first-in, first-out (FIFO);
block; and character.
SSL
stub file
A file that replaces the original file on a
local file system when the file is migrated
to storage. A stub file contains the
information that is necessary to recall a
migrated file from server storage. It also
contains additional information that can
be used to eliminate the need to recall a
migrated file. See also migrated file,
resident file.
stub file size
The size of a file that replaces the original
file on a local file system when the file is
migrated to server storage. The size that
is specified for stub files determines how
T
tape library
A set of equipment and facilities that
support an installation's tape
environment. The tape library can include
tape storage racks, mechanisms for
automatic tape mounting, a set of tape
drives, and a set of related tape volumes
mounted on those drives.
tape volume prefix
The high-level-qualifier of the file name
or the data set name in the standard tape
label.
target node
A client node for which other client nodes
(called agent nodes) have been granted
proxy authority. The proxy authority
allows the agent nodes to perform
operations such as backup and restore on
behalf of the target node, which owns the
data.
TCA
TCP/IP
See Transmission Control
Protocol/Internet Protocol.
threshold migration
The process of moving files from a local
file system to server storage based on the
high and low thresholds that are defined
for the file system. See also automatic
migration, demand migration, migration
job, selective migration.
throughput
In storage management, the total bytes in
the workload, excluding overhead, that
are backed up or restored, divided by
elapsed time.
Glossary
231
timeout
A time interval that is allotted for an
event to occur or complete before
operation is interrupted.
Tivoli Storage Manager command script
A sequence of Tivoli Storage Manager
administrative commands that are stored
in the database of the Tivoli Storage
Manager server. The script can run from
any interface to the server. The script can
include substitution for command
parameters and conditional logic. See also
macro file, script.
tombstone object
A small subset of attributes of a deleted
object. The tombstone object is retained
for a specified period, and at the end of
the specified period, the tombstone object
is permanently deleted.
Transmission Control Protocol/Internet Protocol
(TCP/IP)
An industry-standard, nonproprietary set
of communication protocols that provides
reliable end-to-end connections between
applications over interconnected networks
of different types. See also communication
method.
transparent recall
The process that is used to automatically
recall a migrated file to a workstation or
file server when the file is accessed. See
also selective recall.
trusted communications agent (TCA)
A program that handles the sign-on
password protocol when clients use
password generation.
U
UCS-2 A 2-byte (16-bit) encoding scheme based
on ISO/IEC specification 10646-1. UCS-2
defines three levels of implementation:
Level 1-No combining of encoded
elements allowed; Level 2-Combining of
encoded elements is allowed only for
Thai, Indic, Hebrew, and Arabic; Level
3-Any combination of encoded elements
are allowed.
UNC
Unicode
A character encoding standard that
supports the interchange, processing, and
232
V
validate
To check a policy set for conditions that
can cause problems if that policy set
becomes the active policy set. For
example, the validation process checks
whether the policy set contains a default
management class.
version
A backup copy of a file stored in server
storage. The most recent backup copy of a
file is the active version. Earlier copies of
the same file are inactive versions. The
number of versions retained by the server
is determined by the copy group
attributes in the management class.
virtual file space
A representation of a directory on a
network-attached storage (NAS) file
system as a path to that directory.
virtual mount point
A directory branch of a file system that is
defined as a virtual file system. The
virtual file system is backed up to its own
file space on the server. The server
processes the virtual mount point as a
separate file system, but the client
operating system does not.
virtual volume
An archive file on a target server that
represents a sequential media volume to a
source server.
volume
A discrete unit of storage on disk, tape or
other data recording medium that
supports some form of identifier and
parameter list, such as a volume label or
input/output control. See also scratch
volume, server storage, storage pool,
storage pool volume.
volume history file
A file that contains information about
volumes that have been used by the
server for database backups and for
export of administrator, node, policy, or
server data. The file also has information
about sequential-access storage pool
volumes that have been added, reused, or
deleted. The information is a copy of
volume information that is recorded in
the server database.
Volume Shadow Copy Service (VSS)
A set of Microsoft applicationprogramming interfaces (APIs) that are
used to create shadow copy backups of
volumes, exact copies of files, including
all open files, and so on.
VSS
VSS Backup
A backup operation that uses Microsoft
Volume Shadow Copy Service (VSS)
technology. The backup operation
produces an online snapshot
(point-in-time consistent copy) of
Microsoft Exchange data. This copy can
be stored on local shadow volumes or on
Tivoli Storage Manager server storage.
VSS Fast Restore
An operation that restores data from a
local snapshot. The snapshot is the VSS
backup that resides on a local shadow
volume. The restore operation retrieves
the data by using a file-level copy
method.
W
wildcard character
A special character such as an asterisk (*)
or a question mark (?) that can be used to
represent one or more characters. Any
character or set of characters can replace
the wildcard character.
workload partition (WPAR)
A partition within a single operating
system instance.
workstation
A terminal or personal computer at which
a user can run applications and that is
usually connected to a mainframe or a
network.
worldwide name (WWN)
A 64-bit, unsigned name identifier that is
unique.
WPAR See workload partition.
WWN See worldwide name.
Glossary
233
234
Index
Special characters
dsmEndGetData
stopping process 68
dsmGetNextQObj 33
dsmInitEx function
dsmEndGetData function
overview 113
return codes 116
syntax 113
backing up objects 41
backup
multiple nodes 78
using client node proxy 78
backup copy group 28
backup-archive client
interoperability 75
buffer copy elimination
overview 43
restore and retrieve 44
dapi*
single-threaded, interactive sample
API applications 5
data deduplication 48
data deduplication files
exclude 53
include 53
data protection 32
data retention 32
data structures
size limits 14, 35
version control 15
data transfer
LAN-free 37
DB Chg operation 11
DBCS 81
delete archive 77
delete filespace 77
design recommendations 11
dir
object type 24
disability 207
double-byte character set 81
dscenu.txt 3
dsierror.log 3
dsierror.log. 3
DSM_MAX_PLATFORM_LENGTH 17
dsm.opt 1
asnodename option 78
enablearchiveretentionprotection 31
encryptkey 45
dsm.sys 1, 3, 19
asnodename option 78
enablearchiveretentionprotection 31
encryptkey 45
dsmapifp.h
header file 83, 197
dsmapips.h header file 155
dsmapitd.h 14, 110, 113
header file 120
dsmapitd.h header file 155
dsmApiVersion function
session 17
dsmBeginGetData function 63, 64, 67
buffer management 44
code example 69
dsmEndGetData function 98
dsmTerminate function 98
in flowchart 68
overview 85
return codes 86
state diagram 68, 72
syntax 86
dsmBeginQuery function
dsmEndQuery function 99
dsmGetNextQObj function 105
flowchart 33
management class 29
overview 87
querying 33
98
Numerics
128bit AES encryption support 45
256-bit AES encryption support 45
64-bit
compiling 1
requirements 1
A
access to objects
by user 25
accessibility features 207
accessing to objects
across nodes 25
active copies of objects 41
active version
deleting 71
administrative user
creating 22
administrator options 2
API
dsmInitEx
configuration file used by 3
environment setup 3
option string used by dsmInitEx 2
overview 1
sample applications 5
using Unicode 81
API configuration file
used by dsmInitEx 17
API options list
used by dsmInitEx 17
application type 17, 111, 114
application version vii
archive copy group 28
archive files
how long retained 28
archive objects
expiration 30
release 30
suspend 30
archiveretentionprotection 31
archiving objects 41
asnodename 78
authorization rule
dsmDeleteAccess function 95
automated client failover 54
C
callbuff
TSM buffer sample API
applications 5
callevnt
event-based retention 5
callhold
detention hold sample API
applications 5
callmt*
multithreaded sample API
applications 5
callmt1.c
sample 16
callret
data retention protection sample API
applications 5
capacity
file space 26
character sets 81
client node proxy support 78
client owner authority 22
client performance monitor 38
client performance monitor options
PERFCOMMTIMEOUT 40
PERFMONTCPPORT 40
PERFMONTCPSERVERADDRESS 39
client-side data deduplication 50
code pages 81
commands
makemtu 81
compatibility
between versions of API 14
compiling
Unicode 81
compressalways 2
option 6
compression 42, 63
configuration file
API 3
configuration sources
priority sequence 2
copy group 28
CTRL+C 16
235
236
dsmHandle function
session 17
DSMI_CONFIG environment variable 3
DSMI_DIR
environment variable 6
DSMI_DIR environment variable 3
DSMI_LOG environment variable 3
dsmInit function
overview 110
retention protection 31
return codes 112
syntax 110
dsmInitEx function 25, 43
administrative user 22
asnodename option 78
dsmChangePW function 93
dsmGetBufferData function 104
dsmGetNextQObj function 105
dsmLogEvent function 117
dsmQueryCliOptions function 121
dsmQuerySessOptions 123
dsmReleaseBuffer function 126
dsmSetUp function 136
encryption 45
expired password 18
interoperability 78
multithreading 16
option string 2
retention protection 31
session 17
session owner, set 25
session security 18
specifying options 2
starting session 17
state diagram 72
dsmIntitEx function
dsmQuerySessInfo function 122
dsmLogEvent function
overview 117
return codes 118
syntax 117
dsmLogEventEx function 71
overview 118
return codes 119
syntax 118
dsmQuery function
multiple nodes 78
dsmQueryAccess function 25
dsmDeleteAccess function 95
overview 119
dsmQueryApiVersion function
overview 120
state diagram 72
syntax 120
dsmQueryApiVersionEx function
overview 120
syntax 120
version control 14
dsmQueryAPIVersionEx function
multithreading 16
dsmQueryCliOptions function
dsmQuerySessOptions 123
overview 121
session 17
syntax 121
dsmQuerySessInfo
dsmDeleteFS function 95
dsmQuerySessInfo function
dsmRetentionEvent function 129
general description 18
overview 122
return codes 122
state diagram 72
syntax 122
transaction model 36
dsmQuerySessOptions function
overview 123
syntax 123
dsmrc.h
header file 143
dsmRCMsg function
overview 124
return codes 124
syntax 124
dsmRegisterFS function
example code 26
file spaces 26
overview 125
return codes 125
state diagram 72
syntax 125
dsmReleaseBuffer function 43, 44
dsmGetBufferData function 104
dsmReleaseBuffer function 126
dsmRequestBuffer function 128
dsmSendBufferData function 130
overview 126
return codes 126
syntax 126
dsmRenameObj function
overview 126
return codes 127
syntax 127
dsmRequestBuffer function
buffer copy elimination 43
overview 128
return codes 128
syntax 128
dsmRetentionEvent function
deletion 30
expiration 30
overview 129
retention policy 32
return codes 130
syntax 129
dsmSendBufferData function
buffer copy elimination 43
overview 130
return codes 131
syntax 130
dsmSendData function
code example 59
compression 42
dsmEndSendObj function 100
dsmEndTxn function 101
dsmSendObj function 132
flowchart 57
multithreading 16
overview 131
performance 38
return codes 131
sending objects 41
state diagram 57, 72
syntax 131
dsmSendObj
retention policy 32
dsmSendObj function 32
accessing objects 25
backup copy group 29
code example 59
compression 42
copy groups 29
dsmEndTxn function 101
flowchart 57
in state diagram 57
object naming 11
overview 132
retention policy 32
sending objects 41
state diagram 72
syntax 133
dsmSendObjfunction
deleting objects 71
dsmSendType function
updating objects 70
dsmSetAccess function
accessing objects 25
overview 135
return codes 135
syntax 135
dsmSetUp function
LAN-free 11, 37
multithread 16
multithreading 16, 37
overview 136
passwordaccess 21
syntax 137
dsmtca
version control 14
dsmTerminate 68
dsmTerminate function
buffer 43
buffer copy elimination 43
dsmInit function 110
dsmReleaseBuffer function 126
dsmRequestBuffer function 128
dsmSetUp function 136
general description 18
overview 138
session 17
signals 16
state diagram 72
syntax 138
dsmUpdateFS function
example code 26
file space management 26
file spaces 26
overview 138
return codes 139
state diagram 72
syntax 138
dsmUpdateObj function
change management class 28
overview 139
return codes 140
syntax 139
dsmUpdateObject(Ex) function
updating objects 70
dsmUpdateObjEx function
change management class 28
overview 141
Index
237
E
enablearchiveretentionprotection 32
dsm.opt 31
dsm.sys 31
encryption
application managed 45
authentication setting 45
interoperability 77
transparent 47
encryption and compression using buffer
copy elimination 45
encryptkey 45
ending a session 17
with dsmTerminate 18
environment
setting up API 3
environment variables
by operating system 3
DSMI_CONFIG 3
DSMI_DIR 3
DSMI_LOG 3
envSetUp 137
errorlogretention
when to use 71
event
eventRetentionActivate 32
event logging 71
event-based
retention policy 32
eventRetentionActivate event 32
exclude data deduplication files 53
exclude objects 24
F
failover
overview 54
status information 54
fast path 33
fast path queries 87
file aggregation 37
file grouping 61
file space
capacity 26
deleting 26
managing 26
registering 26
file space management
dsmUpdateFS 26
file space name
file aggregation 37
overview 23
file spaces
non-Unicode 81
file system management
dsmDeleteFS 27
files
configuration 1
object type 24
option 1
238
flowchart
backup and archive example 57
restore and retrieve 68
fromowner option 26
function calls
short descriptions 83
function definitions, API 197, 201
G
glossary 213
group leader 61
H
header file dsmapips.h 155
header file dsmapitd.h 155
header file release.h 155
header file tsmapitd.h 155
header files
dsmapifp.h 197
dsmrc.h 143
tsmapifp.h 201
high-level names
dsmRenameObj function 126
high-level qualifier 75
HP thread stack 16
node replication 54
nodes
accessing across owners 25
authorization 71
names 11
querying management classes 30
with client proxy support 78
NULL
backup or archive group 28
53
K
keyboard 207
Knowledge Center
makemtu 81
management class
associating objects 28
binding and rebinding to files 29
dsmBindMC, assigned by 29
querying 30
mbcs 81
messages
dsmRCMsg function 124
metadata
object naming 23
multithreading
flag 11
mtflag value 16
multithread option 16
overview 16
restrictions 16
I
IBM Knowledge Center v
inactive copies of objects 41
include data deduplication files
include objects 24
include-exclude
file 138
include-exclude list 29, 82
InSession state 117, 118
interoperability
access to API objects 75
backup-archive client 75
commands 77
conventions
UNIX or Linux 75
Windows 75
naming API objects 75
operating system 78
L
LAN-free
data transfer 37
dsmEndGetDataEX function 98
dsmSetUp function 11
logging events 71
low-level names
dsmRenameObj function 126
low-level qualifier 75
O
object
version control 41
object ids, overview 23
object naming
dsmBindMC 24
examples by OS 24
file space name 23
high-level
object name 24
interoperability 75
low-level
object name 24
object type 24
overview 23
object types 24
objectID values 11
objects
access rules 25
active copies 41
deleting 70
deleting from server 71
expiration cycle 71
inactive copies 41
turning off 71
updating 70
operating system interoperability
option list
format 112, 115
option string
API 2
fromowner 26
options
compressalways 2
78
options (continued)
enablearchiveretentionprotection
errorlogretention 71
fromnode 25
fromowner 25
not supported on API 1
passwordaccess 16, 110
servername 2
set by administrator 2
tcpbuffsize 38
tcpnodelay 38
tcpserveraddr 2
options files
user 3
owner authority 22
owner name 11, 25
NULL 25
32
P
partial object restore or retrieve 63
passwordaccess
generate 138
option 7, 11, 45
passwordaccess option
dsmInit function 110
generate 18
multithreading 16
userNamePswd value 22
without TCA 21
passwordaccess prompt 18
passworddir option
in dsm.sys 21
path examples
by OS 24
path information
interoperability 75
PERFMONCOMMTIMEOUT 40
PERFMONTCPPORT 40
PERFMONTCPSERVERADDRESS 39
performance considerations 38
dsmSendData function 38
performance monitor
client 38
policies to store data 28
policy
retention policy 32
proxynode 78
publications v
Q
qMCData structure 34
qryRespArchiveData 31
qryRespBackupData
dsmDeleteObj function 96
qryRespBackupData structure 33
queries, system 33
query
actlog 117
command 77
nodes with client proxy node
authority 78
R
rcApiOut
example, details 18
rcApiOut function
session 17
receiving data from a server
general description 63
partial object restore or retrieve 63
procedure 64
recommendations
dsmGetObject
large amounts of data 108
setting HP thread stack 16
registering file spaces 26
release.h header file 155
replication status 54
restore 77
objects from a server 63
restrictions
encryption and compression using
buffer copy elimination 45
multithreading 16
retention protection 31
retrieve 77
objects from a server 63
return codes
obtaining through dsmRCMsg 124
source header file 143
S
sample API applications
callbuff 5
callbuff - TSM buffer 5
callevnt 5
callevnt - event-based retention 5
callhold 5
callhold - detention hold 5
callmt* 5
callmt* - multithreaded sample API
applications 5
callmtu1.c 81
callmtu2.c 81
callret 5
callret - data retention protection
sample API applications 5
dapi* 5
dapi* - interactive, single-threaded 5
dsmgrp 5
dsmgrp* - object grouping sample 5
UNIX or Linux 5
Windows 32-bit 7
Windows 64-bit 8
sample application
callmt1.c 16
sample code
dsmgrp.c 63
security 18
selecting objects
to restore 65
sending data
to non-Unicode file spaces 81
sending data to a server 36
server
deleting objects from 71
server-side data deduplication 53
servername 2
session
password
session 18
security 18
starting with dsmInitEx 17
set access 77
sign-on process 18
signal handlers 16
signals, using 16
simultaneous-write operations
storage pools 37
size estimates 41
size limits
API data structures 14, 35
sizing objects 41
sorting objects
by restore order 65
starting a session 17
state
InSession 118
state diagram
backup and archive example 57
restore and retrieve 68
stopping a session 17
storage pools
simultaneous-write operations 37
structure
qryRespBackupData 33
qryRespFSData function 26
structures
qMCData 34
size limits 14, 35
system queries 33
T
target nodes and traditional nodes
TCA
session security 18
signals 17
version control 14
without passwordaccess 21
TCPport 19
TCPserver address 19
tcpserveraddr 2
TMS-Authorized User 21
transaction model
dsmBeginTxn function 91
Trusted Communication Agent
passwordaccess 21
session security 18
signals 17
TSM-Authorized 25
tsmapifp.h 81
tsmapifp.h header file 201
tsmapitd.h 81
tsmapitd.h header file 155
turning off objects 71
78
U
Unicode
mbcs 81
non-Unicode file spaces
setting up 81
81
Index
239
Unicode (continued)
Windows 81
UNIX or Linux
sample API application
user
intervention 16
V
version control
API data structures 15
dsmQueryApiVersionEx, using 14
managing backed-up copies 41
versions
files retained 28
W
Windows 32-bit
sample application
Windows 64-bit
sample application
240
7
8
Printed in USA