FSEG-SPI
FLAM Segment Store Exit (FSEG) Service Provider Interface (SPI) Version: 5.2.1-42969
Function parameter structures

One structure per function code; collected in TuFsegPar. More...

Data Structures

struct  FsegOpn
 Parameters for FSEG_FUNC_OPN. More...
struct  FsegCls
 Parameters for FSEG_FUNC_CLS. More...
struct  FsegPut
 Parameters for FSEG_FUNC_PUT. More...
struct  FsegGet
 Parameters for FSEG_FUNC_GET. More...
struct  FsegDel
 Parameters for FSEG_FUNC_DEL. More...
struct  FsegExs
 Parameters for FSEG_FUNC_EXS. More...
struct  FsegGmn
 Parameters for FSEG_FUNC_GMN. More...
struct  FsegSmn
 Parameters for FSEG_FUNC_SMN. More...
struct  FsegVsnEnt
 Single version entry returned by FSEG_FUNC_VLS. More...
struct  FsegVls
 Parameters for FSEG_FUNC_VLS. More...
struct  FsegDvs
 Parameters for FSEG_FUNC_DVS. More...
struct  FsegDar
 Parameters for FSEG_FUNC_DAR. More...
struct  FsegPrn
 Parameters for FSEG_FUNC_PRN. More...
struct  FsegCbf
 Parameters for FSEG_FUNC_CBF. More...
struct  FsegFlb
 Parameters for FSEG_FUNC_FLB. More...
struct  FsegNew
 Parameters for FSEG_FUNC_NEW. More...
struct  FsegFre
 Parameters for FSEG_FUNC_FRE. More...
union  FsegPar
 Union of all FSEG function parameter structures. More...

Typedefs

typedef struct FsegOpn TsFsegOpn
 Parameters for FSEG_FUNC_OPN.
typedef struct FsegCls TsFsegCls
 Parameters for FSEG_FUNC_CLS.
typedef struct FsegPut TsFsegPut
 Parameters for FSEG_FUNC_PUT.
typedef struct FsegGet TsFsegGet
 Parameters for FSEG_FUNC_GET.
typedef struct FsegDel TsFsegDel
 Parameters for FSEG_FUNC_DEL.
typedef struct FsegExs TsFsegExs
 Parameters for FSEG_FUNC_EXS.
typedef struct FsegGmn TsFsegGmn
 Parameters for FSEG_FUNC_GMN.
typedef struct FsegSmn TsFsegSmn
 Parameters for FSEG_FUNC_SMN.
typedef struct FsegVsnEnt TsFsegVsnEnt
 Single version entry returned by FSEG_FUNC_VLS.
typedef struct FsegVls TsFsegVls
 Parameters for FSEG_FUNC_VLS.
typedef struct FsegDvs TsFsegDvs
 Parameters for FSEG_FUNC_DVS.
typedef struct FsegDar TsFsegDar
 Parameters for FSEG_FUNC_DAR.
typedef struct FsegPrn TsFsegPrn
 Parameters for FSEG_FUNC_PRN.
typedef struct FsegCbf TsFsegCbf
 Parameters for FSEG_FUNC_CBF.
typedef struct FsegFlb TsFsegFlb
 Parameters for FSEG_FUNC_FLB.
typedef struct FsegNew TsFsegNew
 Parameters for FSEG_FUNC_NEW.
typedef struct FsegFre TsFsegFre
 Parameters for FSEG_FUNC_FRE.
typedef union FsegPar TuFsegPar
 Union of all FSEG function parameter structures.

Detailed Description

One structure per function code; collected in TuFsegPar.

Typedef Documentation

◆ TsFsegCbf

typedef struct FsegCbf TsFsegCbf

Parameters for FSEG_FUNC_CBF.

Instructs the provider to create an internal write buffer. The provider assigns a buffer ID and returns it in uiBufId. Subsequent PUT calls belong to this buffer until FSEG_FUNC_FLB is called.

Providers that do not support batching may treat CBF/FLB as no-ops and return uiBufId = 0.

◆ TsFsegCls

typedef struct FsegCls TsFsegCls

Parameters for FSEG_FUNC_CLS.

The driver sets isCommit before the call. The provider fills the output byte-count fields so SEGSSE can expose them as SegmentStore statistics (enabling FLMSTO to compute and log the overhead). Deletion of the archive is handled by FSEG_FUNC_DAR, not by CLS.

◆ TsFsegDar

typedef struct FsegDar TsFsegDar

Parameters for FSEG_FUNC_DAR.

Deletes the entire archive including all versions and the namespace.

◆ TsFsegDel

typedef struct FsegDel TsFsegDel

Parameters for FSEG_FUNC_DEL.

◆ TsFsegDvs

typedef struct FsegDvs TsFsegDvs

Parameters for FSEG_FUNC_DVS.

Deletes one specific version of the archive.

◆ TsFsegExs

typedef struct FsegExs TsFsegExs

Parameters for FSEG_FUNC_EXS.

The provider sets *piRetco to 0 on success (whether or not the segment exists) and writes the existence result into isExists. A non-zero *piRetco signals an actual provider error (storage failure, I/O error, etc.) and isExists is ignored in that case.

Mapping to the FLAM layer:

  • isExists == 1 and *piRetco == 0 --> FLMRTC_OK (segment found)
  • isExists == 0 and *piRetco == 0 --> FLMRTC_IDX (segment not found)
  • *piRetco != 0 --> FLMRTC_FSG (provider error)

◆ TsFsegFlb

typedef struct FsegFlb TsFsegFlb

Parameters for FSEG_FUNC_FLB.

Requests the provider to commit all buffered PUT operations to permanent storage.

◆ TsFsegFre

typedef struct FsegFre TsFsegFre

Parameters for FSEG_FUNC_FRE.

No input parameters. The provider must free the handle allocated by FSEG_FUNC_NEW and set *ppHdl to NULL. Must only be called in NEW state (storage connection already closed via FSEG_FUNC_CLS).

◆ TsFsegGet

typedef struct FsegGet TsFsegGet

Parameters for FSEG_FUNC_GET.

This is a locate call: the provider writes a pointer to its internal buffer into *ppSegDat without copying data to a caller-supplied buffer. The pointed-to buffer must remain valid until the next FSEG_FUNC_GET call or FSEG_FUNC_CLS, whichever comes first. The provider owns the buffer and must not free it before then.

Implementation note for remote or database backends
Backends that must fetch data over the network or from a database (ODBC, S3, etc.) need to maintain a single internal "locate buffer" per open handle. On each GET call:
  1. Free the previous locate buffer (if any).
  2. Fetch the data and store it in a newly allocated buffer.
  3. Write the pointer to *ppSegDat and the length to uiSegLen. The buffer is then freed either at the next GET call or at CLS. FLAM does not call free() on this pointer.

◆ TsFsegGmn

typedef struct FsegGmn TsFsegGmn

Parameters for FSEG_FUNC_GMN.

Returns the main (root) segment index for the open archive version. If no main segment has been set yet, the provider writes FSEG_IDX_INI to siSegInd.

◆ TsFsegNew

typedef struct FsegNew TsFsegNew

Parameters for FSEG_FUNC_NEW.

The bridge passes the archive namespace and provider parameter string so the provider can copy them into its handle for use in subsequent FSEG_FUNC_OPN, FSEG_FUNC_DAR, FSEG_FUNC_PRN, and FSEG_FUNC_EXS calls. No storage I/O takes place.

On entry *ppHdl is NULL. The provider must allocate its handle and write the pointer to *ppHdl.

◆ TsFsegOpn

typedef struct FsegOpn TsFsegOpn

Parameters for FSEG_FUNC_OPN.

The driver populates all fields before the call. The provider must not retain pointers to pcNamStr or pcParStr beyond the OPN call; copy any strings that are needed for later calls.

Version ID semantics (siVerId)
  • siVerId >= 0 : open the specified existing version.
  • siVerId == -1 with FSEG_FLAG_WRITE set: create a new version. The provider must allocate a unique version ID internally (e.g. a monotonically increasing counter or a timestamp) and use it for all subsequent PUT calls in this session.
  • siVerId == -1 without FSEG_FLAG_WRITE: open the latest (highest version ID) existing version for reading.

◆ TsFsegPrn

typedef struct FsegPrn TsFsegPrn

Parameters for FSEG_FUNC_PRN.

Deletes old versions, keeping the uiKeepCnt most recent ones.

◆ TsFsegPut

typedef struct FsegPut TsFsegPut

Parameters for FSEG_FUNC_PUT.

The provider assigns the segment index and writes it to siSegInd. Indices must be stable; once assigned, the same index must retrieve the same data until the segment is deleted.

◆ TsFsegSmn

typedef struct FsegSmn TsFsegSmn

Parameters for FSEG_FUNC_SMN.

Persists the main (root) segment index for the open archive version.

◆ TsFsegVls

typedef struct FsegVls TsFsegVls

Parameters for FSEG_FUNC_VLS.

The provider allocates the version list array with malloc() and writes its address to psVsnEnt. FLAM frees the array with the standard free() function after use.

z/OS cross-DLL heap sharing
On z/OS, malloc() and free() in different DLLs operate on separate C runtime heaps by default. If the provider DLL and FLAM are linked against different runtime libraries, the free() call in FLAM will corrupt or crash the process. To avoid this:
  • Link both the provider DLL and FLAM against the LE shared runtime (CEEPLPKA) so they share a single C runtime heap.
  • Alternatively, the provider may set psVsnEnt to NULL and uiVsnCnt to 0 to signal "no versioning support", if the backend does not support version enumeration.

◆ TsFsegVsnEnt

typedef struct FsegVsnEnt TsFsegVsnEnt

Single version entry returned by FSEG_FUNC_VLS.

◆ TuFsegPar

typedef union FsegPar TuFsegPar

Union of all FSEG function parameter structures.

Access only the member that corresponds to the current function code.