Compression

Configuration options on a given node and the dsmSendObj objCompressed option, determine whether IBM® 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 administrator and that is set in the API configuration sources.

The administrator can change compression thresholds on the server by using 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

If, during a dsmSendData function, with compression enabled, you get DSM_RC_COMPRESS_GREW return code, you might want to start over and send the object again without compression. To enforce this, set the dsmSendObj ObjAttr.objCompressed to bTrue.

Information about the actual compression behavior during a dsmSendObj is returned by the dsmEndSendObjEx call. objCompressed specifies if compression was done. totalBytesSent is the number of bytes sent by the application. totalCompressedSize is the number of bytes after compression. The dsmEndSendObjEx call also has a totalLFBytesSent field that contains the total bytes sent over LAN-free.

Attention: If your application plans to use partial object restore or retrieve, you cannot compress the data while sending it. To enforce this, set the dsmSendObj ObjAttr.objCompressed to bTrue.