start solaris nfs metrics
This commit is contained in:
		
							parent
							
								
									b27e2e8eb3
								
							
						
					
					
						commit
						f3ac51daa5
					
				@ -2385,10 +2385,74 @@ sigar_tcp_stat_get(sigar_t *sigar,
 | 
			
		||||
    return status;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int sigar_nfs_get(sigar_t *sigar,
 | 
			
		||||
                         char *type, 
 | 
			
		||||
                         char **names,
 | 
			
		||||
                         char *nfsstat)
 | 
			
		||||
{
 | 
			
		||||
    size_t offset;
 | 
			
		||||
    kstat_t *ksp;
 | 
			
		||||
    int i;
 | 
			
		||||
 | 
			
		||||
    if (sigar_kstat_update(sigar) == -1) {
 | 
			
		||||
        return errno;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (!(ksp = kstat_lookup(sigar->kc, "nfs", 0, type))) {
 | 
			
		||||
        return SIGAR_ENOTIMPL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (kstat_read(sigar->kc, ksp, NULL) < 0) {
 | 
			
		||||
        return errno;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    for (i=0, offset=0;
 | 
			
		||||
         names[i];
 | 
			
		||||
         i++, offset+=sizeof(sigar_uint64_t))
 | 
			
		||||
    {
 | 
			
		||||
        sigar_uint64_t val;
 | 
			
		||||
        kstat_named_t *kv =
 | 
			
		||||
            kstat_data_lookup(ksp, names[i]);
 | 
			
		||||
 | 
			
		||||
        if (kv) {
 | 
			
		||||
            val = kv->value.ui64;
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
            val = -1;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        *(sigar_uint64_t *)((char *)nfsstat + offset) = val;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return SIGAR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static char *nfs_v2_names[] = {
 | 
			
		||||
    "null",
 | 
			
		||||
    "getattr",
 | 
			
		||||
    "setattr",
 | 
			
		||||
    "root",
 | 
			
		||||
    "lookup",
 | 
			
		||||
    "readlink",
 | 
			
		||||
    "read",
 | 
			
		||||
    "wrcache",
 | 
			
		||||
    "write",
 | 
			
		||||
    "create",
 | 
			
		||||
    "remove",
 | 
			
		||||
    "rename",
 | 
			
		||||
    "link",
 | 
			
		||||
    "symlink",
 | 
			
		||||
    "mkdir",
 | 
			
		||||
    "rmdir",
 | 
			
		||||
    "readdir",
 | 
			
		||||
    "statfs",
 | 
			
		||||
    NULL
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
int sigar_nfs_client_v2_get(sigar_t *sigar,
 | 
			
		||||
                            sigar_nfs_client_v2_t *nfsstat)
 | 
			
		||||
{
 | 
			
		||||
    return SIGAR_ENOTIMPL;
 | 
			
		||||
    return sigar_nfs_get(sigar, "rfsreqcnt_v2", nfs_v2_names, (char *)nfsstat);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int sigar_nfs_server_v2_get(sigar_t *sigar,
 | 
			
		||||
@ -2397,10 +2461,36 @@ int sigar_nfs_server_v2_get(sigar_t *sigar,
 | 
			
		||||
    return SIGAR_ENOTIMPL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static char *nfs_v3_names[] = {
 | 
			
		||||
    "null",
 | 
			
		||||
    "getattr",
 | 
			
		||||
    "setattr",
 | 
			
		||||
    "lookup",
 | 
			
		||||
    "access",
 | 
			
		||||
    "readlink",
 | 
			
		||||
    "read",
 | 
			
		||||
    "write",
 | 
			
		||||
    "create",
 | 
			
		||||
    "mkdir",
 | 
			
		||||
    "symlink",
 | 
			
		||||
    "mknod",
 | 
			
		||||
    "remove",
 | 
			
		||||
    "rmdir",
 | 
			
		||||
    "rename",
 | 
			
		||||
    "link",
 | 
			
		||||
    "readdir",
 | 
			
		||||
    "readdirplus",
 | 
			
		||||
    "fsstat",
 | 
			
		||||
    "fsinfo",
 | 
			
		||||
    "pathconf",
 | 
			
		||||
    "commit",
 | 
			
		||||
    NULL
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
int sigar_nfs_client_v3_get(sigar_t *sigar,
 | 
			
		||||
                            sigar_nfs_client_v3_t *nfsstat)
 | 
			
		||||
{
 | 
			
		||||
    return SIGAR_ENOTIMPL;
 | 
			
		||||
    return sigar_nfs_get(sigar, "rfsreqcnt_v3", nfs_v3_names, (char *)nfsstat);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int sigar_nfs_server_v3_get(sigar_t *sigar,
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user