X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=snmp%2Flustre-snmp.c;h=10d841d56d714aae557f0c8dc27e8ac6cb54b8b1;hb=62e93ef9a29341091c49d66a1535ea243ea950be;hp=2c1bcf32ac414d933277d88579f3cc367aa4c927;hpb=59a59cc9d33f94fb857129b255ad42f393d7242e;p=fs%2Flustre-release.git diff --git a/snmp/lustre-snmp.c b/snmp/lustre-snmp.c index 2c1bcf3..10d841d 100644 --- a/snmp/lustre-snmp.c +++ b/snmp/lustre-snmp.c @@ -45,6 +45,8 @@ #include #include "lustre-snmp.h" +#include + #define LNET_CHECK_INTERVAL 500 /* @@ -238,7 +240,7 @@ var_clusterFileSystems(struct variable *vp, static long long_ret; static u_long ulong_ret; static unsigned char string[SPRINT_MAX_LEN]; - char file_path[MAX_PATH_SIZE]; + glob_t path; uint32_t num; char *dir_list; @@ -253,23 +255,35 @@ var_clusterFileSystems(struct variable *vp, switch(vp->magic) { case SYSVERSION: - sprintf(file_path, "%s%s", LUSTRE_PATH,"version"); - if( SUCCESS != read_string(file_path, (char *)string,sizeof(string))) + if (cfs_get_param_paths(&path, "version") != 0) + return NULL; + if( SUCCESS != read_string(path.gl_pathv[0], (char *)string,sizeof(string))){ + cfs_free_param_data(&path); return NULL; + } + cfs_free_param_data(&path); *var_len = strlen((char *)string); return (unsigned char *) string; case SYSKERNELVERSION: - sprintf(file_path, "%s%s", LUSTRE_PATH,"kernel_version"); - if( SUCCESS != read_string(file_path, (char *)string,sizeof(string))) + if (cfs_get_param_paths(&path, "kernel_version") != 0) return NULL; + if( SUCCESS != read_string(path.gl_pathv[0], (char *)string,sizeof(string))){ + cfs_free_param_data(&path); + return NULL; + } + cfs_free_param_data(&path); *var_len = strlen((char *)string); return (unsigned char *) string; case SYSHEALTHCHECK: - sprintf(file_path, "%s%s", LUSTRE_PATH,FILENAME_SYSHEALTHCHECK); - if( SUCCESS != read_string(file_path, (char *)string,sizeof(string))) + if (cfs_get_param_paths(&path, "health_check") != 0) + return NULL; + if( SUCCESS != read_string(path.gl_pathv[0], (char *)string,sizeof(string))){ + cfs_free_param_data(&path); return NULL; + } + cfs_free_param_data(&path); *var_len = strlen((char*)string); return (unsigned char *) string; @@ -281,57 +295,92 @@ var_clusterFileSystems(struct variable *vp, return NULL; case OSDNUMBER: - if( 0 == (dir_list = get_file_list(OSD_PATH, DIR_TYPE, &num))) + if (cfs_get_param_paths(&path, "obdfilter") != 0) + return NULL; + if( 0 == (dir_list = get_file_list(path.gl_pathv[0], DIR_TYPE, &num))){ + cfs_free_param_data(&path); return NULL; - DEBUGMSGTL(("lsnmpd","num(%s)=%d\n",OSD_PATH,num)); + } + DEBUGMSGTL(("lsnmpd","num(%s)=%d\n",path.gl_pathv[0],num)); + cfs_free_param_data(&path); ulong_ret = num; free(dir_list); return (unsigned char *) &ulong_ret; case OSCNUMBER: - if( 0 == (dir_list = get_file_list(OSC_PATH, DIR_TYPE, &num))) + if (cfs_get_param_paths(&path, "osc") != 0) return NULL; - DEBUGMSGTL(("lsnmpd","num(%s)=%d\n",OSC_PATH,num)); + if( 0 == (dir_list = get_file_list(path.gl_pathv[0], DIR_TYPE, &num))){ + cfs_free_param_data(&path); + return NULL; + } + DEBUGMSGTL(("lsnmpd","num(%s)=%d\n",path.gl_pathv[0],num)); + cfs_free_param_data(&path); ulong_ret = num; free(dir_list); return (unsigned char *) &ulong_ret; case MDDNUMBER: - if( 0 == (dir_list = get_file_list(MDS_PATH, DIR_TYPE, &num))) + if (cfs_get_param_paths(&path, "mds") != 0) + return NULL; + if( 0 == (dir_list = get_file_list(path.gl_pathv[0], DIR_TYPE, &num))){ + cfs_free_param_data(&path); return NULL; - DEBUGMSGTL(("lsnmpd","num(%s)=%d\n",MDS_PATH,num)); + } + DEBUGMSGTL(("lsnmpd","num(%s)=%d\n",path.gl_pathv[0],num)); + cfs_free_param_data(&path); ulong_ret = num; free(dir_list); return (unsigned char *) &ulong_ret; case MDCNUMBER: - if( 0 == (dir_list = get_file_list(MDC_PATH, DIR_TYPE, &num))) + if (cfs_get_param_paths(&path, "mdc") != 0) + return NULL; + if( 0 == (dir_list = get_file_list(path.gl_pathv[0], DIR_TYPE, &num))){ + cfs_free_param_data(&path); return NULL; - DEBUGMSGTL(("lsnmpd","num(%s)=%d\n",MDC_PATH,num)); + } + DEBUGMSGTL(("lsnmpd","num(%s)=%d\n",path.gl_pathv[0],num)); + cfs_free_param_data(&path); ulong_ret = num; free(dir_list); return (unsigned char *) &ulong_ret; case CLIMOUNTNUMBER: - if( 0 == (dir_list = get_file_list(CLIENT_PATH, DIR_TYPE, &num))) + if (cfs_get_param_paths(&path, "llite") != 0) return NULL; - DEBUGMSGTL(("lsnmpd","num(%s)=%d\n",CLIENT_PATH,num)); + if( 0 == (dir_list = get_file_list(path.gl_pathv[0], DIR_TYPE, &num))){ + cfs_free_param_data(&path); + return NULL; + } + DEBUGMSGTL(("lsnmpd","num(%s)=%d\n",path.gl_pathv[0],num)); + cfs_free_param_data(&path); ulong_ret = num; free(dir_list); return (unsigned char *) &ulong_ret; case LOVNUMBER: - if( 0 == (dir_list = get_file_list(LOV_PATH, DIR_TYPE, &num))) + if (cfs_get_param_paths(&path, "lov") != 0) + return NULL; + if( 0 == (dir_list = get_file_list(path.gl_pathv[0], DIR_TYPE, &num))){ + cfs_free_param_data(&path); return NULL; - DEBUGMSGTL(("lsnmpd","num(%s)=%d\n",LOV_PATH,num)); + } + DEBUGMSGTL(("lsnmpd","num(%s)=%d\n",path.gl_pathv[0],num)); + cfs_free_param_data(&path); ulong_ret = num; free(dir_list); return (unsigned char *) &ulong_ret; case LDLMNUMBER: - if( 0 == (dir_list = get_file_list(LDLM_PATH, DIR_TYPE, &num))) + if (cfs_get_param_paths(&path, "ldlm/namespaces") != 0) + return NULL; + if( 0 == (dir_list = get_file_list(path.gl_pathv[0], DIR_TYPE, &num))){ + cfs_free_param_data(&path); return NULL; - DEBUGMSGTL(("lsnmpd","num(%s)=%d\n",LDLM_PATH,num)); + } + DEBUGMSGTL(("lsnmpd","num(%s)=%d\n",path.gl_pathv[0],num)); + cfs_free_param_data(&path); ulong_ret = num; free(dir_list); return (unsigned char *) &ulong_ret; @@ -366,8 +415,16 @@ var_osdTable(struct variable *vp, size_t *var_len, WriteMethod **write_method) { - return var_genericTable(vp,name,length,exact,var_len,write_method, - OSD_PATH,osd_table); + unsigned char *table; + glob_t path; + + if (cfs_get_param_paths(&path, "obdfilter") != 0) + return NULL; + + table = var_genericTable(vp,name,length,exact,var_len,write_method, + path.gl_pathv[0],osd_table); + cfs_free_param_data(&path); + return table; } struct oid_table osc_table[] = @@ -394,8 +451,16 @@ var_oscTable(struct variable *vp, size_t *var_len, WriteMethod **write_method) { - return var_genericTable(vp,name,length,exact,var_len,write_method, - OSC_PATH,osc_table); + unsigned char *table; + glob_t path; + + if (cfs_get_param_paths(&path, "osc") != 0) + return NULL; + + table = var_genericTable(vp,name,length,exact,var_len,write_method, + path.gl_pathv[0],osd_table); + cfs_free_param_data(&path); + return table; } struct oid_table mds_table[] = @@ -421,8 +486,16 @@ var_mdsTable(struct variable *vp, size_t *var_len, WriteMethod **write_method) { - return var_genericTable(vp,name,length,exact,var_len,write_method, - MDS_PATH,mds_table); + unsigned char *table; + glob_t path; + + if (cfs_get_param_paths(&path, "mds") != 0) + return NULL; + + table = var_genericTable(vp,name,length,exact,var_len,write_method, + path.gl_pathv[0],osd_table); + cfs_free_param_data(&path); + return table; } struct oid_table mdc_table[] = @@ -450,10 +523,17 @@ var_mdcTable(struct variable *vp, size_t *var_len, WriteMethod **write_method) { - return var_genericTable(vp,name,length,exact,var_len,write_method, - MDC_PATH,mdc_table); -} + unsigned char *table; + glob_t path; + if (cfs_get_param_paths(&path, "mdc") != 0) + return NULL; + + table = var_genericTable(vp,name,length,exact,var_len,write_method, + path.gl_pathv[0],osd_table); + cfs_free_param_data(&path); + return table; +} struct oid_table cli_table[] = { @@ -479,10 +559,17 @@ var_cliTable(struct variable *vp, size_t *var_len, WriteMethod **write_method) { - return var_genericTable(vp,name,length,exact,var_len,write_method, - CLIENT_PATH,cli_table); -} + unsigned char *table; + glob_t path; + + if (cfs_get_param_paths(&path, "llite") != 0) + return NULL; + table = var_genericTable(vp,name,length,exact,var_len,write_method, + path.gl_pathv[0],osd_table); + cfs_free_param_data(&path); + return table; +} struct oid_table lov_table[] = { @@ -514,8 +601,16 @@ var_lovTable(struct variable *vp, size_t *var_len, WriteMethod **write_method) { - return var_genericTable(vp,name,length,exact,var_len,write_method, - LOV_PATH,lov_table); + unsigned char *table; + glob_t path; + + if (cfs_get_param_paths(&path, "lov") != 0) + return NULL; + + table = var_genericTable(vp,name,length,exact,var_len,write_method, + path.gl_pathv[0],osd_table); + cfs_free_param_data(&path); + return table; } struct oid_table ldlm_table[] = @@ -540,8 +635,16 @@ var_ldlmTable(struct variable *vp, size_t *var_len, WriteMethod **write_method) { - return var_genericTable(vp,name,length,exact,var_len,write_method, - LDLM_PATH,ldlm_table); + unsigned char *table; + glob_t path; + + if (cfs_get_param_paths(&path, "ldlm/namespaces") != 0) + return NULL; + + table = var_genericTable(vp,name,length,exact,var_len,write_method, + path.gl_pathv[0],osd_table); + cfs_free_param_data(&path); + return table; } /***************************************************************************** @@ -565,16 +668,20 @@ var_lnetInformation(struct variable *vp, static unsigned int c32; struct timeval current_tv; unsigned long current; - char file_path[MAX_PATH_SIZE]; + glob_t file_path; /* Update at most every LNET_STATS_INTERVAL milliseconds */ gettimeofday(¤t_tv, NULL); current = current_tv.tv_sec * 1000000 + current_tv.tv_usec; if (current >= next_update) { - sprintf(file_path, "%s%s", LNET_PATH, "stats"); - if (read_string(file_path, (char *) string, sizeof(string)) - != SUCCESS) + if (cfs_get_param_paths(&file_path, "stats") != 0) + return NULL; + if (read_string(file_path.gl_pathv[0], (char *) string, sizeof(string)) + != SUCCESS) { + cfs_free_param_data(&file_path); return NULL; + } + cfs_free_param_data(&file_path); sscanf((char *) string, "%u %u %u %u %u %u %u %llu %llu %llu %llu",