IBM Books

IBM General Parallel File System for AIX: Administration and Programming Reference

gpfsDataShipStart_t Structure

Name

gpfsDataShipStart_t - Initiates data shipping mode.

Structure

typedef struct
{
  int  structLen;
  int  structType;
  int  numInstances;
  int  reserved; 
} gpfsDataShipStart_t;

Description

Once all participating threads have issued this directive for a file, GPFS enters a mode where it logically partitions the blocks of the file among a group of agent nodes. The agents are those nodes on which one or more threads have issued the GPFS_DATA_SHIP_START directive. Each thread that has issued a GPFS_DATA_SHIP_START directive and the associated agent nodes are referred to as the data shipping collective.

In data shipping mode:

Data shipping mode imposes several restrictions on file usage:

Note:
The GPFS_DATA_SHIP_START directive exits cleanly only when cancelled by a GPFS_DATA_SHIP_STOP directive. If all threads issue a close for the file, the file will be taken out of data shipping mode but errors will also be returned.

Members

structLen
Length of the gpfsDataShipStart_t structure.

structType
The directive identifier GPFS_DATA_SHIP_START

numInstances
The number of open file instances, on all nodes, collaborating to operate on the file.

reserved
This field is currently unused.

For compatibility with future versions of GPFS, this field should be set to 0.

Recovery

Since GPFS_DATA_SHIP_START directives block their calling threads until all participants respond accordingly, there needs to be a way to recover if the application program uses the wrong value for numInstances or one of the participating nodes crashes before issuing its GPFS_DATA_SHIP_START directive. While a gpfs_fcntl( ) call is blocked waiting for other threads, the call can be interrupted by any signal. If a signal is delivered to any of the waiting calls, all waiting calls on every node will be interrupted and will return EINTR. GPFS will not establish data shipping if such a signal occurs. It is the responsibility of the application to mask off any signals that might normally occur while waiting for another node in the data shipping collective. Several libraries use SIGALRM; the thread that makes the gpfs_fcntl( ) call should use sigthreadmask to mask off delivery of this signal while inside the call.

Error status

EINTR
A signal was delivered to a blocked gpfs_fcntl( ) call. All waiting calls, on every node, are interrupted.

EINVAL
The file mode has been changed since the file was opened to include or exclude O_APPEND.

The value of numInstances is inconsistent with the value issued by other threads intending to access the file.

An attempt has been made to issue a GPFS_DATA_SHIP_START directive on a file that is already in use in data shipping mode by other clients.

ENOMEM
The available data space in memory is not large enough to allocate the data structures necessary to establish and/or run in data shipping mode.

EPERM
An attempt has been made to open a file in data shipping mode that is already open in write mode by some thread that did not issue the GPFS_DATA_SHIP_START directive. GPFS will not initiate data shipping.

ESTALE
A node in the data shipping collective has gone down.


[ Top of Page | Previous Page | Next Page | Table of Contents | Index ]