|
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.
Related services - List Attached Aggregate Names
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;
}
|