z/OS Distributed File Service zFS Administration
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


List Aggregate Status (Version 2)

z/OS Distributed File Service zFS Administration
SC23-6887-00

Purpose

This subcommand returns information about a specified attached aggregate on this system. Version 2 returns additional flags and fields.

Format

syscall_parmlist
   opcode                           146       AGOP_GETSTATUS2_PARMDATA
   parms[0]                         offset to AGGR_ID
   parms[1]                         offset to AGGR_STATUS2
   parms[2]                         0
   parms[3]                         0
   parms[4]                         0
   parms[5]                         0
   parms[6]                         0
AGGR_ID
   aid_eye                          char[4]    "AGID"
   aid_len                          char       sizeof(AGGR_ID)
   aid_ver                          char       1
   aid_name                         char[45]   "OMVS.PRV.AGGR001.LDS0001"
   aid_reserved                     char[33]   0
AGGR_STATUS2
   as_eye                           char[4]    "AGST"
   as_len                           short      sizeof(AGGR_STATUS2)
   as_ver                           char       2
   as_res1                          char       0
   as_aggrId                        long       Aggregate ID
   as_nFileSystems                  long       Number of File Systems
   as_threshold                     char       Aggrfull threshold
   as_increment                     char       Aggrfull increment
   as_flags                         char
     AS_MONITOR                       0x80
     AS_RO                            0x40
     AS_NBS                           0x20
     AS_COMPAT                        0x10
     AS_GROW                          0x08
     AS_QUIESCED                      0x01
   as_flags2                        char
     AS_DISABLED                      0x80
     AS_SYSPLEXAWARE                  0x40
   as_blocks                        unsigned long
   as_fragSize                      long
   as_blockSize                     long
   as_totalUsable                   unsigned long
   as_realFree                      unsigned long
   as_minFree                       unsigned long
   as_reserved2                     int[3]        /* reserved */
   as_freeblocks                    unsigned long
   as_freefrags                     unsigned long
   as_directLog                     unsigned long
   as_indirectLog                   unsigned long
   as_fstbl                         unsigned long
   as_bitmap                        unsigned long
   as_diskFormatMajorVersion        unsigned long
   as_diskFormatMinorVersion        unsigned long
   as_auditfid                      char[10]
   as_bytes_reserved                char[2]
   as_reserved3                     long
   as_quiesce_time                  struct timeval
   posix_time_low                   int
   posix_usecs                      int
   as_quiesce_jbname                char[9]
   as_quiesce_sysname               char[9]
   as_reserved                      char[42]

OR
 (continued...) 
  syscall_parmlist
   opcode                           146       AGOP_GETSTATUS2_PARMDATA
   parms[0]                         offset to AGGR_ID
   parms[1]                         offset to AGGR_STATUS3
   parms[2]                         0
   parms[3]                         0
   parms[4]                         0
   parms[5]                         0
   parms[6]                         0
AGGR_ID
   aid_eye                          char[4]    "AGID"
   aid_len                          char       sizeof(AGGR_ID)
   aid_ver                          char       1
   aid_name                         char[45]   "OMVS.PRV.AGGR001.LDS0001"
   aid_reserved                     char[33]   0
AGGR_STATUS3
   as_eye                           char[4]    "AGST"
   as_len                           short      sizeof(AGGR_STATUS2)
   as_ver                           char       3      /* supports 64 bit sizes */
   as_res1                          char       0
   as_aggrId                        long       Aggregate ID
   as_nFileSystems                  long       Number of File Systems
   as_threshold                     char       Aggrfull threshold
   as_increment                     char       Aggrfull increment
   as_flags                         char
     AS_MONITOR                       0x80
     AS_RO                            0x40
     AS_NBS                           0x20
     AS_COMPAT                        0x10
     AS_GROW                          0x08
     AS_QUIESCED                      0x01
   as_flags2                        char
     AS_DISABLED                      0x80
     AS_SYSPLEXAWARE                  0x40
     AS_CONVERTTOV5                   0x20
   as_blocks                        unsigned long
   as_fragSize                      long
   as_blockSize                     long
   as_totalUsable                   unsigned long
   as_realFree                      unsigned long
   as_minFree                       unsigned long
   as_reserved2                     int[3]        /* reserved */
   as_freeblocks                    unsigned long
   as_freefrags                     unsigned long
   as_directLog                     unsigned long
   as_indirectLog                   unsigned long
   as_fstbl                         unsigned long
   as_bitmap                        unsigned long
   as_diskFormatMajorVersion        unsigned long
   as_diskFormatMinorVersion        unsigned long
   as_auditfid                      char[10]
   as_bytes_reserved                char[2]
   as_reserved3                     long
   as_quiesce_time                  struct timeval
   posix_time_low                   int
   posix_usecs                      int
   as_quiesce_jbname                char[9]
   as_quiesce_sysname               char[9]
   as_pad                           char[6]
   as_blocks_hyper                  hyper
   as_totalUsable_hyper             hyper
   as_realFree_hyper                hyper
   as_minFree_hyper                 hyper
   as_freeblocks_hyper              hyper
   as_freefrags_hyper               hyper
   as_directLog_hyper               hyper
   as_indirectLog_hyper             hyper
   as_fstbl_hyper                   hyper
   as_bitmap_hyper                  hyper
   as_reserved                      char[42]

Return_value 0 if request is successful, -1 if it is not successful
Return_code
  EINTR         ZFS is shutting down
  EINVAL        Invalid parameter list
  EMVSERR       Internal error using an osi service
  ENOENT        Aggregate is not attached
Reason_code
  0xEFnnxxxx    See z/OS Distributed File Service Messages and Codes

Usage notes

  • The aggregate must be mounted or attached.
  • To grow an aggregate, you need to specify a number larger than the sum of as_totalUsable and as_minFree.
  • For an AGGR_STATUS2, if a size is too large for 32 bits, 0xFFFFFFFF is returned. For an AGGR_STATUS3, sizes are returned in both the normal fields and the hyper fields.
  • Reserved fields and undefined flags must be set to binary zeros.

Privilege required

None.

Related services

  • List Attached Aggregate Names

Restrictions

None.

Examples

Example 1:
#pragma linkage(BPX1PCT, OS)
extern void BPX1PCT(char *, int, int, char *, int *, int *, int *);

#include <stdio.h>

#define ZFSCALL_AGGR   0x40000005
#define AGOP_GETSTATUS2_PARMDATA  146

typedef struct syscall_parmlist_t {
  int opcode;               /* Operation code to perform             */
  int parms[7];             /* Specific to type of operation,        */
                            /* provides access to the parms          */
                            /* parms[4]-parms[6] are currently unused*/
} syscall_parmlist;

typedef  struct  timeval {
  long   posix_time_low;    /* seconds since epoch */
  long   posix_usecs;       /* microseconds */
 } TIMEVAL;

#define ZFS_MAX_AGGRNAME 44

typedef struct aggr_id_t {
  char aid_eye[4];                     /* Eye Catcher                */
#define AID_EYE "AGID"
  char aid_len;                        /* Length of this structure   */
  char aid_ver;                        /* Version                    */
#define AID_VER_INITIAL 1              /* Initial version            */
  char aid_name[ZFS_MAX_AGGRNAME+1];   /* aggr name, null terminated */
  char aid_reserved[33];               /* Reserved for the future    */
} AGGR_ID;

typedef unsigned long   u_long;

typedef struct aggr_status_t {
  char  as_eye[4];                     /* Eye catcher                */
#define AS_EYE "AGST"
  short as_len;                        /* Length of structure        */
  char  as_ver;
#define AS_VER_2 2                     /* version 2 */
  char  as_res1;                       /* Reserved.                  */
  long  as_aggrId;                     /* Internal identifier        */
  long  as_nFileSystems;               /* Number of filesystems in aggregate */
  char  as_threshold;                  /* Threshold for aggrfull monitoring   */
  char  as_increment;                  /* Increment for aggrfull monitoring   */
  char  as_flags;                      /* Aggregate flags */
#define AS_MONITOR 0x80                /* Aggr monitored for aggr full */
#define AS_RO      0x40                /* Aggr attached Read-only */
#define AS_NBS     0x20                /* Aggr should guarantee NBS */
#define AS_COMPAT  0x10                /* Aggr is HFS compatible */
#define AS_GROW    0x08                /* Aggr can be dynamically grown */
/* The following flags are for AS_VER_2 */

#define AS_QUIESCED   0x01             /* 1 = Aggr is quiesced, 0 = Aggr is unquiesced */
  char  as_flags2;                     /* Aggregate flags2                  */
#define AS_DISABLED   0x80             /* 1 = Aggr is disabled  */
#define AS_SYSPLEXAWARE 0x40           /* Aggr is sysplex-aware for r/w */
                                       /* Attached but not mounted compats */
                                       /* will never have AS_SYSPLEXAWARE on *
  u_long as_blocks;                    /* Number of fragments in aggregate */
  long   as_fragSize;                  /* Size of fragment in aggregate (normally 1K) */
  long   as_blockSize;                 /* Size of blocks on aggregate (normally 8K) */
  u_long as_totalUsable;               /* Total available blocks on aggregate (normally 8K) */
  u_long as_realFree;                  /* Total kilobytes free */
  u_long as_minFree;                   /* Minimum kilobytes free */
  int    as_reserved2[3];
  u_long as_freeblocks;                /*Number of k available in free 8k blocks*/
  u_long as_freefrags;                 /*Number of k available in free 1k fragments*/
  u_long as_directLog;                 /*Number of k used on the log*/
  u_long as_indirectLog;               /*Number of k used indirectly on the log*/
  u_long as_fstbl;                     /*Number of k used for the filesystem table*/
  u_long as_bitmap;                    /*Number of k used for the bitmap file*/
  u_long as_diskFormatMajorVersion;    /* disk format major version */
  u_long as_diskFormatMinorVersion;    /* disk format minor version */
  char   as_auditfid[10];              /* 6 byte volser followed by 4 byte CCHH */
  char   as_bytes_reserved[2];         /* reserved */
  long   as_reserved3;
  struct timeval as_quiesce_time;      /* time of last quiesce */
  char as_quiesce_jbname[9];           /* job name of last quiesce - null terminated */
  char as_quiesce_sysname[9];          /* system where last quiesce issued - null terminated */
  char   as_reserved[42];              /* Reserved for future */
} AGGR_STATUS2;

struct parmstruct
{
 syscall_parmlist myparms;
 AGGR_ID aggr_id;
 AGGR_STATUS2 aggr_status;
} ;

int main(int argc, char **argv)
{
int bpxrv;
int bpxrc;
int bpxrs;
int   i;
char buff[33];
char aggrname[45] = "PLEX.JMS.AGGR001.LDS0001";   /* aggregate name to getstatus */

struct parmstruct myparmstruct;

AGGR_ID *idp = &(myparmstruct.aggr_id);
AGGR_STATUS2 *asp = &(myparmstruct.aggr_status);

myparmstruct.myparms.opcode = AGOP_GETSTATUS2_PARMDATA;
myparmstruct.myparms.parms[0] = sizeof(syscall_parmlist);
myparmstruct.myparms.parms[1] = sizeof(syscall_parmlist) + sizeof(AGGR_ID);
myparmstruct.myparms.parms[2] = 0;
myparmstruct.myparms.parms[3] = 0;
myparmstruct.myparms.parms[4] = 0;
myparmstruct.myparms.parms[5] = 0;
myparmstruct.myparms.parms[6] = 0;

memset(idp,0,sizeof(AGGR_ID));                  /* Ensure reserved fields are 0 */
memset(asp,0,sizeof(AGGR_STATUS2));              /* Ensure reserved fields are 0 */

memcpy(&myparmstruct.aggr_status.as_eye[0], AS_EYE, 4);
myparmstruct.aggr_status.as_len = sizeof(AGGR_STATUS2);
myparmstruct.aggr_status.as_ver = AS_VER_2;

memcpy(&myparmstruct.aggr_id,AID_EYE,4);
myparmstruct.aggr_id.aid_len = sizeof(AGGR_ID);
myparmstruct.aggr_id.aid_ver = AID_VER_INITIAL;
strcpy(myparmstruct.aggr_id.aid_name,aggrname);

     BPX1PCT("ZFS     ",
             ZFSCALL_AGGR,             /* Aggregate operation     */
             sizeof(myparmstruct),     /* Length of Argument      */
             (char *) &myparmstruct,   /* Pointer to Argument     */
             &bpxrv,                   /* Pointer to Return_value */
             &bpxrc,                   /* Pointer to Return_code  */
             &bpxrs);                  /* Pointer to Reason_code  */

if (bpxrv < 0)
     {
     printf("Error getstatus aggregate %s\n", aggrname);
     printf("BPXRV = %d BPXRC = %d BPXRS = %x\n",bpxrv,bpxrc,bpxrs);
     return bpxrc;
     }
   else /* Return from getstatus was successful  */
     {
     printf("Aggregate %s getstatus successful\n",aggrname);
     printf("getstatus: aggr_id=%d, no_of_filesystems=%d, aggr_flags=%2.2x, aggr_flags2=%2.2x\n",
                        myparmstruct.aggr_status.as_aggrId,
                                    myparmstruct.aggr_status.as_nFileSystems,
                                                          myparmstruct.aggr_status.as_flags,
                                                          myparmstruct.aggr_status.as_flags2);

     printf("getstatus: threshold=%d, increment=%d\n",
                        myparmstruct.aggr_status.as_threshold,
                                      myparmstruct.aggr_status.as_increment);
     printf("getstatus: blocks=%d, frag_size=%d, block_size=%d\n",
                        myparmstruct.aggr_status.as_blocks,
                                   myparmstruct.aggr_status.as_fragSize,
                                                 myparmstruct.aggr_status.as_blockSize);
     printf("getstatus: total_usable=%d, real_free=%d, min_free=%d\n",
                        myparmstruct.aggr_status.as_totalUsable,
                                         myparmstruct.aggr_status.as_realFree,
                                                       myparmstruct.aggr_status.as_minFree);
     printf("getstatus: free_8K_blocks=%d, free_1K_fragments=%d\n",
                        myparmstruct.aggr_status.as_freeblocks/8,
                                           myparmstruct.aggr_status.as_freefrags);
     printf("getstatus: direct_Log=%d, indirect_Log=%d\n",
                        myparmstruct.aggr_status.as_directLog,
                                        myparmstruct.aggr_status.as_indirectLog);
     printf("getstatus: filesystem_table=%d, bitmap=%d\n",
                        myparmstruct.aggr_status.as_fstbl,
                                             myparmstruct.aggr_status.as_bitmap);
     printf("getstatus: version=%d.%d\n",
                        myparmstruct.aggr_status.as_diskFormatMajorVersion,
                                   myparmstruct.aggr_status.as_diskFormatMinorVersion);
     printf("getstatus: auditfid=");
     for (i=0; i<10; i++)
     {
         printf("%2.2X",myparmstruct.aggr_status.as_auditfid[i]);
     }
     printf("\n");

if (myparmstruct.aggr_status.as_flags & AS_QUIESCED)
   {
   if (myparmstruct.aggr_status.as_quiesce_jbname[0]!=0x00)
     {
     if (0==ctime_r((time_t *) &myparmstruct.aggr_status.as_quiesce_time.posix_time_low, buf))
        {
        printf("Could not get timestamp.\n");
        }
      else
        {
        /* Insert the microseconds into the displayable time value */
        strncpy(&(buf[27]),&(buf[20]),6);
        sprintf(&(buf[20]),"%06d",myparmstruct.aggr_status.as_quiesce_time.posix_usecs);
        buf[26]=' ';
        buf[19]='.';
        printf("Quiesced by job %s on system %s on %s", 
        myparmstruct.aggr_status.as_quiesce_jbname,
        myparmstruct.aggr_status.as_quiesce_sysname,
        buf); 
        }
      }
    } 
    printf("\n");
    }
return 0;
}
Example 2:
#pragma linkage(BPX1PCT, OS)
extern void BPX1PCT(char *, int, int, char *, int *, int *, int *);

#include <studio.h>

#define ZFSCALL_AGGR   0x40000005
#define AGOP_GETSTATUS2_PARMDATA  146  

typedef struct syscall_parmlist_t {
  int opcode;               /* Operation code to perform             */
  int parms[7];             /* Specific to type of operation,        */
                            /* provides access to the parms          */
                            /* parms[4]-parms[6] are currently unused*/

} syscall_parmlist; 

typedef  struct  timeval {
  long   posix_time_low;    /* seconds since epoch */
  long   posix_usecs;       /* microseconds */
 } TIMEVAL;} 

typedef struct hyper_t { /* unsigned 64 bit integers */
    unsigned long high;
    unsigned long low;

} hyper;  

#define ZFS_MAX_AGGRNAME 44  

typedef struct aggr_id_t {
  char aid_eye[4];                     /* Eye Catcher                
#define AID_EYE "AGID"
  char aid_len;                        /* Length of this structure   */
  char aid_ver;                        /* Version                    */

#define AID_VER_INITIAL 1              /* Initial version            */
  char aid_name[ZFS_MAX_AGGRNAME+1];   /* aggr name, null terminated */
  char aid_reserved[33];               /* Reserved for the future    */
} AGGR_ID;
typedef struct aggr_status_t {
  char  as_eye[4];                     /* Eye catcher                */
#define AS_EYE "AGST"
  short as_len;                        /* Length of structure        */
  char  as_ver;
#define AS_VER_3       3               /* version 3 */
  char  as_res1;                       /* Reserved.                  */
  long  as_aggrId;                     /* Internal identifier        */
  long  as_nFileSystems;               /* Number of filesystems in aggregate */
  char  as_threshold;                  /* Threshold for aggrfull monitoring   */
  char  as_increment;                  /* Increment for aggrfull monitoring   */
  char  as_flags;                      /* Aggregate flags */
#define AS_MONITOR 0x80                /* Aggr monitored for aggr full */
#define AS_RO      0x40                /* Aggr attached Read-only */
#define AS_NBS     0x20                /* Aggr should guarantee NBS */
#define AS_COMPAT  0x10                /* Aggr is HFS compatible */
#define AS_GROW    0x08                /* Aggr can be dynamically grown */    
#define AS_QUIESCED   0x01             /* 1 = Aggr is quiesced, 0 = Aggr is unquiesced */
  char  as_flags2;                     /* Aggregate flags2                  */
#define AS_DISABLED   0x80             /* 1 = Aggr is disabled  */
#define AS_SYSPLEXAWARE 0x40           /* Aggregate is sysplex-aware for read-write */
#define AS_CONVERTTOV5  0x20           /* indicates the aggregate enabled for automated conversion */
  u_long  as_blocks;                   /* Number of fragments in aggregate */
  long    as_fragSize;                 /* Size of fragment in aggregate (normally 1K) */
  long    as_blockSize;                /* Size of blocks on aggregate (normally 8K) */
  u_long  as_totalUsable;              /* Total available blocks on aggregate (normally 8K) */
  u_long  as_realFree;                 /* Total kilobytes free */
  u_long  as_minFree;                   /* Minimum kilobytes free */
  int     as_reserved2[3];             /* reserved */
  u_long as_freeblocks;                /*Number of k available in free 8k blocks*/
  u_long as_freefrags;                 /*Number of k available in free 1k fragments*/
  u_long as_directLog;                 /*Number of k used on the log*/
  u_long as_indirectLog;               /*Number of k used indirectly on the log*/
  u_long as_fstbl;                     /*Number of k used for the filesystem table*/
  u_long as_bitmap;                    /*Number of k used for the bitmap file*/
  u_long as_diskFormatMajorVersion;    /* disk format major version */
  u_long as_diskFormatMinorVersion;    /* disk format minor version */
  char as_auditfid[10];                /* 6 byte volser followed by 4 byte CCHH */
  short as_bytes_reserved;             /* reserved */
  long  as_reserved3;
  struct timeval as_quiesce_time;      /* time of last quiesce */
  char as_quiesce_jbname[9];           /* job name of last quiesce - null terminated */
  char as_quiesce_sysname[9];          /* system where last quiesce issued - null terminated */
  char as_pad[6];                      /* pad to get to double word boundary */
  /* new hyper fields */
  hyper   as_blocks_hyper;             /* Number of fragments in aggregate */
  hyper   as_totalUsable_hyper;        /* Total available 1K blocks on aggregate  */
  hyper   as_realFree_hyper;           /* Total 1K blocks free */
  hyper   as_minFree_hyper;            /* Minimum kilobytes free */
  hyper   as_freeblocks_hyper;         /*Number of k available in free 8k blocks*/
  hyper   as_freefrags_hyper;          /*Number of k available in free 1k fragments*/
  hyper   as_directLog_hyper;          /*Number of k used on the log*/
  hyper   as_indirectLog_hyper;        /*Number of k used indirectly on the log*/
  hyper   as_fstbl_hyper;              /*Number of k used for the filesystem table*/
  hyper   as_bitmap_hyper;             /*Number of k used for the bitmap file*/
  char as_reserved[42];                /* Reserved for future */
} AGGR_STATUS3;
struct parmstruct
{
 syscall_parmlist myparms;
 AGGR_ID aggr_id;
 AGGR_STATUS3 aggr_status;
} ;

int main(int argc, char **argv)
{
int bpxrv;
int bpxrc;
int bpxrs;
int i;
char buf[33];
char aggrname[45];   /* aggregate name to getstatus */
struct parmstruct myparmstruct;
AGGR_ID *idp = &(myparmstruct.aggr_id);
AGGR_STATUS3 *asp = &(myparmstruct.aggr_status);
if (argc < 2)
    {
        printf("Please specify an aggregate name as a parameter\n");
        exit(1);
    }
strncpy(aggrname, argv[1], sizeof(aggrname));
myparmstruct.myparms.opcode = AGOP_GETSTATUS2_PARMDATA;
myparmstruct.myparms.parms[0] = sizeof(syscall_parmlist);
myparmstruct.myparms.parms[1] = sizeof(syscall_parmlist) + sizeof(AGGR_ID);
myparmstruct.myparms.parms[2] = 0;
myparmstruct.myparms.parms[3] = 0;
myparmstruct.myparms.parms[4] = 0;
myparmstruct.myparms.parms[5] = 0;
myparmstruct.myparms.parms[6] = 0;

memset(idp,0,sizeof(AGGR_ID));                  /* Ensure reserved fields are 0 */
memset(asp,0,sizeof(AGGR_STATUS3));             /* Ensure reserved fields are 0 */

memcpy(&myparmstruct.aggr_status.as_eye[0], AS_EYE, 4); 
myparmstruct.aggr_status.as_len = sizeof(AGGR_STATUS3); 
myparmstruct.aggr_status.as_ver = AS_VER_3;

memcpy(&myparmstruct.aggr_id,AID_EYE,4); 
myparmstruct.aggr_id.aid_len = sizeof(AGGR_ID); 
myparmstruct.aggr_id.aid_ver = AID_VER_INITIAL;  
strcpy(myparmstruct.aggr_id.aid_name,aggrname);

BPX1PCT("ZFS     ",
             ZFSCALL_AGGR,             /* Aggregate operation     */
             sizeof(myparmstruct),     /* Length of Argument      */
             (char *) &myparmstruct,   /* Pointer to Argument     */              
             &bpxrv,                   /* Pointer to Return_value */              
             &bpxrc,                   /* Pointer to Return_code  */              
             &bpxrs);
                 
 if (bpxrv < 0)
     {
     printf("Error getstatus aggregate %s\n", aggrname);
     printf("BPXRV = %d BPXRC = %d BPXRS = %x\n",bpxrv,bpxrc,bpxrs);
     return bpxrc;
     }
else /* Return from getstatus was successful  */
     {
     printf("Aggregate %s getstatus successful\n",aggrname);
     printf("getstatus: aggr_id=%d, no_of_filesystems=%d, aggr_flags=%2.2x, aggr_flags2=%2.2x\n",
                        myparmstruct.aggr_status.as_aggrId,

myparmstruct.aggr_status.as_nFileSystems,

myparmstruct.aggr_status.as_flags,

myparmstruct.aggr_status.as_flags2);

     printf("getstatus: threshold=%d, increment=%d\n",
                        myparmstruct.aggr_status.as_threshold,
myparmstruct.aggr_status.as_increment);

     printf("getstatus: blocks=%d, frag_size=%d, block_size=%d\n",
                        myparmstruct.aggr_status.as_blocks,

myparmstruct.aggr_status.as_fragSize,

myparmstruct.aggr_status.as_blockSize);
     printf("getstatus: total_usable=%d, real_free=%d, min_free=%d\n",
                        myparmstruct.aggr_status.as_totalUsable,

myparmstruct.aggr_status.as_realFree,

myparmstruct.aggr_status.as_minFree);
     printf("getstatus: free_8K_blocks=%d, free_1K_fragments=%d\n",
                        myparmstruct.aggr_status.as_freeblocks/8,
                                           
myparmstruct.aggr_status.as_freefrags);
     printf("getstatus: direct_Log=%d, indirect_Log=%d\n",
                        myparmstruct.aggr_status.as_directLog,
                                        
myparmstruct.aggr_status.as_indirectLog);
     printf("getstatus: filesystem_table=%d, bitmap=%d\n",
                        myparmstruct.aggr_status.as_fstbl,

myparmstruct.aggr_status.as_bitmap);
     printf("getstatus: blocksh=%d, blocksl=%d\n",
                        myparmstruct.aggr_status.as_blocks_hyper.high,
                         myparmstruct.aggr_status.as_blocks_hyper.low);

    printf("getstatus: total_usableh=%d, total_usablel=%d, 
real_freeh=%d, real_freel=%d, min_freeh=%d, min_freel=%d\n",

myparmstruct.aggr_status.as_totalUsable_hyper.high,

myparmstruct.aggr_status.as_totalUsable_hyper.low,

myparmstruct.aggr_status.as_realFree_hyper.high,

myparmstruct.aggr_status.as_realFree_hyper.low,

myparmstruct.aggr_status.as_minFree_hyper.high,

myparmstruct.aggr_status.as_minFree_hyper.low);
     printf("getstatus: free_8K_blocksh=%d, free_8K_blocksl=%d, 
free_1K_fragmentsh=%d, free_1K_fragmentsl=%d\n",

myparmstruct.aggr_status.as_freeblocks_hyper.high/8,
                         
myparmstruct.aggr_status.as_freeblocks_hyper.low/8,

myparmstruct.aggr_status.as_freefrags_hyper.high,

myparmstruct.aggr_status.as_freefrags_hyper.low);
     printf("getstatus: direct_Logh=%d, direct_Logl=%d, 
indirect_Logh=%d\n, indirect_Logl=%d\n",

myparmstruct.aggr_status.as_directLog_hyper.high,

myparmstruct.aggr_status.as_directLog_hyper.low,

myparmstruct.aggr_status.as_indirectLog_hyper.high,

myparmstruct.aggr_status.as_indirectLog_hyper.low);
     printf("getstatus: filesystem_tableh=%d, filesystem_tablel=%d, 
bitmaph=%d, bitmapl=%d\n",
                        myparmstruct.aggr_status.as_fstbl_hyper.high,
                         myparmstruct.aggr_status.as_fstbl_hyper.low,

myparmstruct.aggr_status.as_bitmap_hyper.high,

myparmstruct.aggr_status.as_bitmap_hyper.low);
     printf("getstatus: version=%d.%d\n",

myparmstruct.aggr_status.as_diskFormatMajorVersion,

myparmstruct.aggr_status.as_diskFormatMinorVersion);
     printf("getstatus: auditfid=");
     for (i=0; i<10; i++)
     {
        printf("%2.2X",myparmstruct.aggr_status.as_auditfid[i]);
     }
     printf("\n");

     if (myparmstruct.aggr_status.as_flags & AS_QUIESCED)
     {
     if (myparmstruct.aggr_status.as_quiesce_jbname[0]!=0x00)
     {
           if (0==ctime_r((time_t *) 
&myparmstruct.aggr_status.as_quiesce_time.posix_time_low, buf))            
           {                
              printf("Could not get timestamp.\n");            
           }            
           else            
           {   /* Insert the microseconds into the displayable time value */                
               strncpy(&(buf[27]),&(buf[20]),6);                
sprintf(&(buf[20]),"%06d",myparmstruct.aggr_status.as_quiesce_time.posix_usecs);                
               buf[26]=' ';                
               buf[19]='.';                
               printf("Quiesced by job %s on system %s on %s",                                       

myparmstruct.aggr_status.as_quiesce_jbname,                                                     

myparmstruct.aggr_status.as_quiesce_sysname,                                                          
                                                         buf);           
          }         
        }      
      }      
      printf("\n");      
      } 
return 0; 
}

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014