Veritas™ File System Programmer's Reference Guide - Solaris

Last Published:
Product(s): InfoScale & Storage Foundation (7.2)
Platform: Solaris
  1. Veritas File System software developer's kit
    1.  
      About the software developer's kit
    2. File System software developer's kit features
      1.  
        API library interfaces
      2.  
        File Change Log
      3.  
        Multi-volume support
      4.  
        Veritas File System I/O
    3.  
      Software developer's kit packages
    4.  
      Required libraries and header files
    5. Compiling environment
      1.  
        Recompiling with a different compiler
  2. File Change Log
    1. About the File Change Log file
      1.  
        Recorded changes
      2. Using the File Change Log file
        1.  
          Space usage
        2.  
          Full system scan reductions
        3.  
          File history traces
      3.  
        File Change Log logging activation
      4. File Change Log file layout
        1.  
          File Change Log superblock
        2.  
          File Change Log record
    2. Record types
      1.  
        Special records
      2.  
        Typical record sequences
    3. File Change Log tunables
      1.  
        How tunables handle File Change Log growth size
    4. Application programming interface for File Change Log
      1.  
        Ease of use
      2.  
        Backward compatibility
      3. API functions
        1.  
          Functions for accessing File Change Log records
        2.  
          Functions for seeking offsets and time stamps in the File Change Log
        3. vxfs_fcl_open
          1.  
            Return value
        4. vxfs_fcl_close
          1.  
            Parameters
        5. vxfs_fcl_getinfo
          1.  
            Return values
        6. vxfs_fcl_read
          1.  
            Parameters
          2.  
            Input
          3.  
            Output
          4.  
            Return values
        7. vxfs_fcl_getcookie
          1.  
            Parameters
        8. vxfs_fcl_seek
          1.  
            Parameters
          2.  
            Return values
        9. vxfs_fcl_seektime
          1.  
            Parameters
          2.  
            Return values
        10. vxfs_fcl_sync
          1.  
            Parameters
      4. File Change Log record
        1.  
          Defines
        2.  
          fcl_iostats structure
        3.  
          fcl_acsinfo structure
        4.  
          Record structure fields
      5. Copying File Change Log records
        1.  
          Index maintenance application
        2. Computing a usage profile
          1.  
            Initial setup
          2.  
            Sample steps
          3.  
            Off host processing
      6. Veritas File System and File Change Log upgrade and downgrade
        1.  
          Converting File Change Log version 3 files to version 4
        2.  
          Downgrading Veritas File System versions
    5. Reverse path name lookup
      1.  
        Inodes
      2.  
        vxfs_inotopath_gen
  3. Multi-volume support
    1.  
      About multi-volume support
    2.  
      Uses for multi-volume support
    3. Volume application programming interfaces
      1.  
        Administering volume sets
      2.  
        Querying the volume set for a file system
      3.  
        Modifying a volume within a file system
      4.  
        Encapsulationg and de-encapsulating a volume
    4. Allocation policy application programming interfaces
      1.  
        Directing file allocations
      2.  
        Creating and assigning policies
      3.  
        Querying the defined policies
      4.  
        Enforcing a policy
    5.  
      Data structures
    6. Using policies and application programming interfaces
      1.  
        Defining and assigning allocation policies
      2.  
        Using volume application programming interfaces
  4. Named data streams
    1.  
      About named data streams
    2.  
      Uses for named data streams
    3.  
      Named data streams application programming interface
    4.  
      Listing named data streams
    5.  
      Namespace for named data streams
    6.  
      Behavior changes in other system calls
    7.  
      Querying named data streams
    8.  
      Application programming interface
    9.  
      Command reference
  5. Veritas File System I/O
    1.  
      About Veritas File System I/O
    2.  
      Freeze and thaw
    3. Caching advisories
      1.  
        Direct I/O
      2.  
        Concurrent I/O
      3.  
        Unbuffered I/O
      4.  
        Other advisories
    4. Extents
      1. Extent attributes
        1.  
          Attribute specifics
      2.  
        Reservation: preallocating space to a file
      3.  
        Fixed extent size
      4.  
        Application programming interface for extent attributes
      5. Allocation flags
        1.  
          Allocation flags with reservation
        2.  
          Reservation trimming
        3.  
          Non-persistent reservation
        4.  
          No write beyond reservation
        5.  
          Contiguous reservation
        6.  
          Include reservation in the file size
        7.  
          Reading the grown part of the file
      6.  
        Allocation flags with fixed extent size
      7.  
        How to use extent attribute APIs
      8.  
        Setting fixed extent size
  6. Thin Reclamation
    1.  
      About Thin Storage
    2.  
      About Thin Reclamation
    3. Thin Reclamation application programming interface
      1.  
        vxfs_ts_reclaim return values

fcl_acsinfo structure

When tracking access-info is enabled, VxFS logs the access information such as:

  • The real and effective user and group ID of the accessing application

  • The node from where the file was accessed

  • The process id of the user application along with each record

When the application reads the FCL, the information is returned in the fr_acsinfo field.

The fr_acsinfo points to an FCL_acsinfo structure, defined as follows:

struct fcl_acsinfo {
    uint32_tfa_ruid;
    uint32_tfa_rgid;
    uint32_tfa_euid;
    uint32_tfa_egid;
    uint32_tfa_pid;
    uint32_tfa_nodeid;
};

Note:

The accessinfo is not returned as a separate record type but as additional information along with the other records. In addition, the accessinfo information is not always present with every record (for example, when tracking accessinfo is not enabled). However, even when accessinfo is enabled in some file system internal operations (for example, truncating a file when it is removed), the access information may not be present. To help determine if access information is available, the FCL record contains a flag called fcl_acsinfovalid which is non-zero only if the accessinfo is present with a particular record.

Several of the fields in the fcl_acsinfo structure are pointers and need memory to store the actual contents. This is handled by storing the actual data immediately after the FCL record, and updating the pointer to point to the data. The record length fr_reclen field is updated to account for the whole data. Thus, each FCL record returned by vxfs_fcl_read is a variable size record, whose length is indicated by fr_reclen_field.

Figure: Sample link record illustrates how the data is laid out in a sample link record.

Figure: Sample link record

Sample link record

The following code sample traverses the set of records returned by a call to vxfs_fcl_read and prints the user ID:

Struct fcl_record*fr;
Char        *tbuf;
...
      error = vxfs_fcl_read(fh, buf, &bufsz,
                       FCL_ALL_V4_EVENTS,
                       &nentries);
    tbuf = buf;
    while (--nentries) {
        fr = (struct fcl_record *)tbuf;
if (fr->fr_acsinfovalid) {
        printf("Uid %ld\n", fr->fr_acsinfo->uid;
}
        tbuf += fr->fr_reclen;
   }

Note:

FCL_ALL_V4_EVENTS are event masks.

More Information

vxfs_fcl_read