#include <pthread.h>
#include "lustre-snmp.h"
+#include <libcfs/util/param.h>
+
#define LNET_CHECK_INTERVAL 500
/*
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;
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;
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;
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[] =
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[] =
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[] =
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[] =
{
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[] =
{
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[] =
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;
}
/*****************************************************************************
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",