X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=snmp%2Flustre-snmp.c;h=3d8bcbc8e8793cb18b6cb7783d48fce14bb27bba;hp=1a3039af0d365a58356805b7ad9854ff66b85cef;hb=4ae1c96672df324554ee1b3e3acaf664811ac866;hpb=313b3c3b9d82670b77d4624deb4471f89fc5a8cb;ds=sidebyside diff --git a/snmp/lustre-snmp.c b/snmp/lustre-snmp.c index 1a3039a..3d8bcbc 100644 --- a/snmp/lustre-snmp.c +++ b/snmp/lustre-snmp.c @@ -1,6 +1,4 @@ -/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- - * vim:expandtab:shiftwidth=8:tabstop=8: - * +/* * GPL HEADER START * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. @@ -17,17 +15,15 @@ * * You should have received a copy of the GNU General Public License * version 2 along with this program; If not, see - * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * http://www.gnu.org/licenses/gpl-2.0.html * * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. + * + * Copyright (c) 2012, Intel Corporation. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -45,6 +41,10 @@ #include #include "lustre-snmp.h" +#include + +#define LNET_CHECK_INTERVAL 500 + /* * clusterFileSystems_variables_oid: * this is the top level oid that we want to register under. This @@ -64,100 +64,614 @@ oid clusterFileSystems_variables_oid[] = { 1,3,6,1,4,1,13140 }; struct variable7 clusterFileSystems_variables[] = { -/* magic number , variable type , ro/rw , callback fn , L, oidsuffix */ - - /* sytemInformation 2.1.1. */ - { SYSVERSION , ASN_OCTET_STR , RONLY , var_clusterFileSystems, 4, { 2,1,1,1 } }, - { SYSKERNELVERSION , ASN_OCTET_STR , RONLY , var_clusterFileSystems, 4, { 2,1,1,2 } }, - { SYSHEALTHCHECK , ASN_OCTET_STR , RONLY , var_clusterFileSystems, 4, { 2,1,1,3 } }, - { SYSSTATUS , ASN_INTEGER , RWRITE, var_clusterFileSystems, 4, { 2,1,1,4 } }, - - /* objectStorageTargets 2.1.2 */ - { OSDNUMBER , ASN_UNSIGNED , RONLY , var_clusterFileSystems, 4, { 2,1,2,1 } }, - - /* objectStorageTargets.osdTable.osdEntry 2.1.2.2.1 */ - { OSDUUID , ASN_OCTET_STR , RONLY , var_osdTable, 6, { 2,1,2,2,1,2 } }, - { OSDCOMMONNAME , ASN_OCTET_STR , RONLY , var_osdTable, 6, { 2,1,2,2,1,3 } }, - { OSDCAPACITY , ASN_COUNTER64 , RONLY , var_osdTable, 6, { 2,1,2,2,1,4 } }, - { OSDFREECAPACITY , ASN_COUNTER64 , RONLY , var_osdTable, 6, { 2,1,2,2,1,5 } }, - { OSDOBJECTS , ASN_COUNTER64 , RONLY , var_osdTable, 6, { 2,1,2,2,1,6 } }, - { OSDFREEOBJECTS , ASN_COUNTER64 , RONLY , var_osdTable, 6, { 2,1,2,2,1,7 } }, - - /* objectStorageClients 2.1.3 */ - { OSCNUMBER , ASN_UNSIGNED , RONLY , var_clusterFileSystems, 4, { 2,1,3,1 } }, - - /* objectStorageClients.oscTable.oscEntry 2.1.3.2.1 */ - { OSCUUID , ASN_OCTET_STR , RONLY , var_oscTable, 6, { 2,1,3,2,1,2 } }, - { OSCCOMMONNAME , ASN_OCTET_STR , RONLY , var_oscTable, 6, { 2,1,3,2,1,3 } }, - { OSCOSTSERVERUUID , ASN_OCTET_STR , RONLY , var_oscTable, 6, { 2,1,3,2,1,4 } }, - { OSCCAPACITY , ASN_COUNTER64 , RONLY , var_oscTable, 6, { 2,1,3,2,1,5 } }, - { OSCFREECAPACITY , ASN_COUNTER64 , RONLY , var_oscTable, 6, { 2,1,3,2,1,6 } }, - { OSCOBJECTS , ASN_COUNTER64 , RONLY , var_oscTable, 6, { 2,1,3,2,1,7 } }, - { OSCFREEOBJECTS , ASN_COUNTER64 , RONLY , var_oscTable, 6, { 2,1,3,2,1,8 } }, - - - /* metaDataServers 2.1.4 */ - { MDDNUMBER , ASN_UNSIGNED , RONLY , var_clusterFileSystems, 4, { 2,1,4,1 } }, - - /* metaDataServers.mddTable.mddEntry 2.1.4.2.1 */ - { MDDUUID , ASN_OCTET_STR , RONLY , var_mdsTable, 6, { 2,1,4,2,1,2 } }, - { MDDCOMMONNAME , ASN_OCTET_STR , RONLY , var_mdsTable, 6, { 2,1,4,2,1,3 } }, - { MDDCAPACITY , ASN_COUNTER64 , RONLY , var_mdsTable, 6, { 2,1,4,2,1,4 } }, - { MDDFREECAPACITY , ASN_COUNTER64 , RONLY , var_mdsTable, 6, { 2,1,4,2,1,5 } }, - { MDDFILES , ASN_COUNTER64 , RONLY , var_mdsTable, 6, { 2,1,4,2,1,6 } }, - { MDDFREEFILES , ASN_COUNTER64 , RONLY , var_mdsTable, 6, { 2,1,4,2,1,7 } }, - { MDSNBSAMPLEDREQ , ASN_COUNTER64 , RONLY , var_mdsNbSampledReq, 4, { 2,1,4,3 } }, - - /* metaDataClients 2.1.5 */ - { MDCNUMBER , ASN_UNSIGNED , RONLY , var_clusterFileSystems, 4, { 2,1,5,1 } }, - - /* metaDataClients.mdcTable.mdcEntry 2.1.5.2.1 */ - { MDCUUID , ASN_OCTET_STR , RONLY , var_mdcTable, 6, { 2,1,5,2,1,2 } }, - { MDCCOMMONNAME , ASN_OCTET_STR , RONLY , var_mdcTable, 6, { 2,1,5,2,1,3 } }, - { MDCMDSSERVERUUID , ASN_OCTET_STR , RONLY , var_mdcTable, 6, { 2,1,5,2,1,4 } }, - { MDCCAPACITY , ASN_COUNTER64 , RONLY , var_mdcTable, 6, { 2,1,5,2,1,5 } }, - { MDCFREECAPACITY , ASN_COUNTER64 , RONLY , var_mdcTable, 6, { 2,1,5,2,1,6 } }, - { MDCOBJECTS , ASN_COUNTER64 , RONLY , var_mdcTable, 6, { 2,1,5,2,1,7 } }, - { MDCFREEOBJECTS , ASN_COUNTER64 , RONLY , var_mdcTable, 6, { 2,1,5,2,1,8 } }, - - /* lustreClients 2.1.6 */ - { CLIMOUNTNUMBER , ASN_UNSIGNED , RONLY , var_clusterFileSystems, 4, { 2,1,6,1 } }, - - /* lustreClients.cliMountTable.cliMountEntry 2.1.6.2.1 */ - { CLIUUID , ASN_OCTET_STR , RONLY , var_cliTable, 6, { 2,1,6,2,1,2 } }, - { CLICOMMONNAME , ASN_OCTET_STR , RONLY , var_cliTable, 6, { 2,1,6,2,1,3 } }, - { CLIMDCUUID , ASN_OCTET_STR , RONLY , var_cliTable, 6, { 2,1,6,2,1,4 } }, - { CLIMDCCOMMONNAME , ASN_OCTET_STR , RONLY , var_cliTable, 6, { 2,1,6,2,1,5 } }, - { CLIUSESLOV , ASN_INTEGER , RONLY , var_cliTable, 6, { 2,1,6,2,1,6 } }, - { CLILOVUUID , ASN_OCTET_STR , RONLY , var_cliTable, 6, { 2,1,6,2,1,7 } }, - { CLILOVCOMMONNAME , ASN_OCTET_STR , RONLY , var_cliTable, 6, { 2,1,6,2,1,8 } }, - - /* logicalObjectVolume 2.1.7 */ - { LOVNUMBER , ASN_UNSIGNED , RONLY , var_clusterFileSystems, 4, { 2,1,7,1 } }, - - /* logicalObjectVolume.osdTable.lovTable 2.1.2.2.1 */ - { LOVUUID , ASN_OCTET_STR , RONLY , var_lovTable, 6, { 2,1,7,2,1,2 } }, - { LOVCOMMONNAME , ASN_OCTET_STR , RONLY , var_lovTable, 6, { 2,1,7,2,1,3 } }, - { LOVNUMOBD , ASN_UNSIGNED , RONLY , var_lovTable, 6, { 2,1,7,2,1,4 } }, - { LOVNUMACTIVEOBD , ASN_UNSIGNED , RONLY , var_lovTable, 6, { 2,1,7,2,1,5 } }, - { LOVCAPACITY , ASN_COUNTER64 , RONLY , var_lovTable, 6, { 2,1,7,2,1,6 } }, - { LOVFREECAPACITY , ASN_COUNTER64 , RONLY , var_lovTable, 6, { 2,1,7,2,1,7 } }, - { LOVFILES , ASN_COUNTER64 , RONLY , var_lovTable, 6, { 2,1,7,2,1,8 } }, - { LOVFREEFILES , ASN_COUNTER64 , RONLY , var_lovTable, 6, { 2,1,7,2,1,9 } }, - { LOVSTRIPECOUNT , ASN_UNSIGNED , RONLY , var_lovTable, 6, { 2,1,7,2,1,10} }, - { LOVSTRIPEOFFSET , ASN_UNSIGNED , RONLY , var_lovTable, 6, { 2,1,7,2,1,11} }, - { LOVSTRIPESIZE , ASN_UNSIGNED , RONLY , var_lovTable, 6, { 2,1,7,2,1,12} }, - { LOVSTRIPETYPE , ASN_UNSIGNED , RONLY , var_lovTable, 6, { 2,1,7,2,1,13} }, - - /* lustreLDLM 2.1.8 */ - { LDLMNUMBER , ASN_UNSIGNED , RONLY , var_clusterFileSystems, 4, { 2,1,8,1 } }, - - /* lustreLDLM.ldlmTable.ldlmEntry 2.1.8.2.1 */ - { LDLMNAMESPACE , ASN_OCTET_STR , RONLY , var_ldlmTable, 6, { 2,1,8,2,1,2 } }, - { LDLMLOCKCOUNT , ASN_UNSIGNED , RONLY , var_ldlmTable, 6, { 2,1,8,2,1,3 } }, - { LDLMUNUSEDLOCKCOUNT , ASN_UNSIGNED , RONLY , var_ldlmTable, 6, { 2,1,8,2,1,4 } }, - { LDLMRESOURCECOUNT , ASN_UNSIGNED , RONLY , var_ldlmTable, 6, { 2,1,8,2,1,5 } }, - + /* systemInformation 2.1.1. */ + { + .magic = SYSVERSION, + .type = ASN_OCTET_STR, + .acl = RONLY, + .findVar = var_clusterFileSystems, + .namelen = 4, + .name = { 2, 1, 1, 1 } + }, + { + .magic = SYSKERNELVERSION, + .type = ASN_OCTET_STR, + .acl = RONLY, + .findVar = var_clusterFileSystems, + .namelen = 4, + .name = { 2, 1, 1, 2 } + }, + { + .magic = SYSHEALTHCHECK, + .type = ASN_OCTET_STR, + .acl = RONLY, + .findVar = var_clusterFileSystems, + .namelen = 4, + .name = { 2, 1, 1, 3 } + }, + { + .magic = SYSSTATUS, + .type = ASN_INTEGER, + .acl = RWRITE, + .findVar = var_clusterFileSystems, + .namelen = 4, + .name = { 2, 1, 1, 4 } + }, + + /* objectStorageTargets 2.1.2 */ + { + .magic = OSDNUMBER, + .type = ASN_UNSIGNED, + .acl = RONLY, + .findVar = var_clusterFileSystems, + .namelen = 4, + .name = { 2, 1, 2, 1 } + }, + + /* objectStorageTargets.osdTable.osdEntry 2.1.2.2.1 */ + { + .magic = OSDUUID, + .type = ASN_OCTET_STR, + .acl = RONLY, + .findVar = var_osdTable, + .namelen = 6, + .name = { 2, 1, 2, 2, 1, 2 } + }, + { + .magic = OSDCOMMONNAME, + .type = ASN_OCTET_STR, + .acl = RONLY, + .findVar = var_osdTable, + .namelen = 6, + .name = { 2, 1, 2, 2, 1, 3 } + }, + { + .magic = OSDCAPACITY, + .type = ASN_COUNTER64, + .acl = RONLY, + .findVar = var_osdTable, + .namelen = 6, + .name = { 2, 1, 2, 2, 1, 4 } + }, + { + .magic = OSDFREECAPACITY, + .type = ASN_COUNTER64, + .acl = RONLY, + .findVar = var_osdTable, + .namelen = 6, + .name = { 2, 1, 2, 2, 1, 5 } + }, + { + .magic = OSDOBJECTS, + .type = ASN_COUNTER64, + .acl = RONLY, + .findVar = var_osdTable, + .namelen = 6, + .name = { 2, 1, 2, 2, 1, 6 } + }, + { + .magic = OSDFREEOBJECTS, + .type = ASN_COUNTER64, + .acl = RONLY, + .findVar = var_osdTable, + .namelen = 6, + .name = { 2, 1, 2, 2, 1, 7 } + }, + + /* objectStorageClients 2.1.3 */ + { + .magic = OSCNUMBER, + .type = ASN_UNSIGNED, + .acl = RONLY, + .findVar = var_clusterFileSystems, + .namelen = 4, + .name = { 2, 1, 3, 1 } + }, + + /* objectStorageClients.oscTable.oscEntry 2.1.3.2.1 */ + { + .magic = OSCUUID, + .type = ASN_OCTET_STR, + .acl = RONLY, + .findVar = var_oscTable, + .namelen = 6, + .name = { 2, 1, 3, 2, 1, 2 } + }, + { + .magic = OSCCOMMONNAME, + .type = ASN_OCTET_STR, + .acl = RONLY, + .findVar = var_oscTable, + .namelen = 6, + .name = { 2, 1, 3, 2, 1, 3 } + }, + { + .magic = OSCOSTSERVERUUID, + .type = ASN_OCTET_STR, + .acl = RONLY, + .findVar = var_oscTable, + .namelen = 6, + .name = { 2, 1, 3, 2, 1, 4 } + }, + { + .magic = OSCCAPACITY, + .type = ASN_COUNTER64, + .acl = RONLY, + .findVar = var_oscTable, + .namelen = 6, + .name = { 2, 1, 3, 2, 1, 5 } + }, + { + .magic = OSCFREECAPACITY, + .type = ASN_COUNTER64, + .acl = RONLY, + .findVar = var_oscTable, + .namelen = 6, + .name = { 2, 1, 3, 2, 1, 6 } + }, + { + .magic = OSCOBJECTS, + .type = ASN_COUNTER64, + .acl = RONLY, + .findVar = var_oscTable, + .namelen = 6, + .name = { 2, 1, 3, 2, 1, 7 } + }, + { + .magic = OSCFREEOBJECTS, + .type = ASN_COUNTER64, + .acl = RONLY, + .findVar = var_oscTable, + .namelen = 6, + .name = { 2, 1, 3, 2, 1, 8 } + }, + + + /* metaDataServers 2.1.4 */ + { + .magic = MDDNUMBER, + .type = ASN_UNSIGNED, + .acl = RONLY, + .findVar = var_clusterFileSystems, + .namelen = 4, + .name = { 2, 1, 4, 1 } + }, + + /* metaDataServers.mddTable.mddEntry 2.1.4.2.1 */ + { + .magic = MDDUUID, + .type = ASN_OCTET_STR, + .acl = RONLY, + .findVar = var_mdsTable, + .namelen = 6, + .name = { 2, 1, 4, 2, 1, 2 } + }, + { + .magic = MDDCOMMONNAME, + .type = ASN_OCTET_STR, + .acl = RONLY, + .findVar = var_mdsTable, + .namelen = 6, + .name = { 2, 1, 4, 2, 1, 3 } + }, + { + .magic = MDDCAPACITY, + .type = ASN_COUNTER64, + .acl = RONLY, + .findVar = var_mdsTable, + .namelen = 6, + .name = { 2, 1, 4, 2, 1, 4 } + }, + { + .magic = MDDFREECAPACITY, + .type = ASN_COUNTER64, + .acl = RONLY, + .findVar = var_mdsTable, + .namelen = 6, + .name = { 2, 1, 4, 2, 1, 5 } + }, + { + .magic = MDDFILES, + .type = ASN_COUNTER64, + .acl = RONLY, + .findVar = var_mdsTable, + .namelen = 6, + .name = { 2, 1, 4, 2, 1, 6 } + }, + { + .magic = MDDFREEFILES, + .type = ASN_COUNTER64, + .acl = RONLY, + .findVar = var_mdsTable, + .namelen = 6, + .name = { 2, 1, 4, 2, 1, 7 } + }, + { + .magic = MDSNBSAMPLEDREQ, + .type = ASN_COUNTER64, + .acl = RONLY, + .findVar = var_mdsNbSampledReq, + .namelen = 4, + .name = { 2, 1, 4, 3 } + }, + + /* metaDataClients 2.1.5 */ + { + .magic = MDCNUMBER, + .type = ASN_UNSIGNED, + .acl = RONLY, + .findVar = var_clusterFileSystems, + .namelen = 4, + .name = { 2, 1, 5, 1 } + }, + + /* metaDataClients.mdcTable.mdcEntry 2.1.5.2.1 */ + { + .magic = MDCUUID, + .type = ASN_OCTET_STR, + .acl = RONLY, + .findVar = var_mdcTable, + .namelen = 6, + .name = { 2, 1, 5, 2, 1, 2 } + }, + { + .magic = MDCCOMMONNAME, + .type = ASN_OCTET_STR, + .acl = RONLY, + .findVar = var_mdcTable, + .namelen = 6, + .name = { 2, 1, 5, 2, 1, 3 } + }, + { + .magic = MDCMDSSERVERUUID, + .type = ASN_OCTET_STR, + .acl = RONLY, + .findVar = var_mdcTable, + .namelen = 6, + .name = { 2, 1, 5, 2, 1, 4 } + }, + { + .magic = MDCCAPACITY, + .type = ASN_COUNTER64, + .acl = RONLY, + .findVar = var_mdcTable, + .namelen = 6, + .name = { 2, 1, 5, 2, 1, 5 } + }, + { + .magic = MDCFREECAPACITY, + .type = ASN_COUNTER64, + .acl = RONLY, + .findVar = var_mdcTable, + .namelen = 6, + .name = { 2, 1, 5, 2, 1, 6 } + }, + { + .magic = MDCOBJECTS, + .type = ASN_COUNTER64, + .acl = RONLY, + .findVar = var_mdcTable, + .namelen = 6, + .name = { 2, 1, 5, 2, 1, 7 } + }, + { + .magic = MDCFREEOBJECTS, + .type = ASN_COUNTER64, + .acl = RONLY, + .findVar = var_mdcTable, + .namelen = 6, + .name = { 2, 1, 5, 2, 1, 8 } + }, + + /* lustreClients 2.1.6 */ + { + .magic = CLIMOUNTNUMBER, + .type = ASN_UNSIGNED, + .acl = RONLY, + .findVar = var_clusterFileSystems, + .namelen = 4, + .name = { 2, 1, 6, 1 } + }, + + /* lustreClients.cliMountTable.cliMountEntry 2.1.6.2.1 */ + { + .magic = CLIUUID, + .type = ASN_OCTET_STR, + .acl = RONLY, + .findVar = var_cliTable, + .namelen = 6, + .name = { 2, 1, 6, 2, 1, 2 } + }, + { + .magic = CLICOMMONNAME, + .type = ASN_OCTET_STR, + .acl = RONLY, + .findVar = var_cliTable, + .namelen = 6, + .name = { 2, 1, 6, 2, 1, 3 } + }, + { + .magic = CLIMDCUUID, + .type = ASN_OCTET_STR, + .acl = RONLY, + .findVar = var_cliTable, + .namelen = 6, + .name = { 2, 1, 6, 2, 1, 4 } + }, + { + .magic = CLIMDCCOMMONNAME, + .type = ASN_OCTET_STR, + .acl = RONLY, + .findVar = var_cliTable, + .namelen = 6, + .name = { 2, 1, 6, 2, 1, 5 } + }, + { + .magic = CLIUSESLOV, + .type = ASN_INTEGER, + .acl = RONLY, + .findVar = var_cliTable, + .namelen = 6, + .name = { 2, 1, 6, 2, 1, 6 } + }, + { + .magic = CLILOVUUID, + .type = ASN_OCTET_STR, + .acl = RONLY, + .findVar = var_cliTable, + .namelen = 6, + .name = { 2, 1, 6, 2, 1, 7 } + }, + { + .magic = CLILOVCOMMONNAME, + .type = ASN_OCTET_STR, + .acl = RONLY, + .findVar = var_cliTable, + .namelen = 6, + .name = { 2, 1, 6, 2, 1, 8 } + }, + + /* logicalObjectVolume 2.1.7 */ + { + .magic = LOVNUMBER, + .type = ASN_UNSIGNED, + .acl = RONLY, + .findVar = var_clusterFileSystems, + .namelen = 4, + .name = { 2, 1, 7, 1 } + }, + + /* logicalObjectVolume.osdTable.lovTable 2.1.7.2.1 */ + { + .magic = LOVUUID, + .type = ASN_OCTET_STR, + .acl = RONLY, + .findVar = var_lovTable, + .namelen = 6, + .name = { 2, 1, 7, 2, 1, 2 } + }, + { + .magic = LOVCOMMONNAME, + .type = ASN_OCTET_STR, + .acl = RONLY, + .findVar = var_lovTable, + .namelen = 6, + .name = { 2, 1, 7, 2, 1, 3 } + }, + { + .magic = LOVNUMOBD, + .type = ASN_UNSIGNED, + .acl = RONLY, + .findVar = var_lovTable, + .namelen = 6, + .name = { 2, 1, 7, 2, 1, 4 } + }, + { + .magic = LOVNUMACTIVEOBD, + .type = ASN_UNSIGNED, + .acl = RONLY, + .findVar = var_lovTable, + .namelen = 6, + .name = { 2, 1, 7, 2, 1, 5 } + }, + { + .magic = LOVCAPACITY, + .type = ASN_COUNTER64, + .acl = RONLY, + .findVar = var_lovTable, + .namelen = 6, + .name = { 2, 1, 7, 2, 1, 6 } + }, + { + .magic = LOVFREECAPACITY, + .type = ASN_COUNTER64, + .acl = RONLY, + .findVar = var_lovTable, + .namelen = 6, + .name = { 2, 1, 7, 2, 1, 7 } + }, + { + .magic = LOVFILES, + .type = ASN_COUNTER64, + .acl = RONLY, + .findVar = var_lovTable, + .namelen = 6, + .name = { 2, 1, 7, 2, 1, 8 } + }, + { + .magic = LOVFREEFILES, + .type = ASN_COUNTER64, + .acl = RONLY, + .findVar = var_lovTable, + .namelen = 6, + .name = { 2, 1, 7, 2, 1, 9 } + }, + { + .magic = LOVSTRIPECOUNT, + .type = ASN_UNSIGNED, + .acl = RONLY, + .findVar = var_lovTable, + .namelen = 6, + .name = { 2, 1, 7, 2, 1, 10} + }, + { + .magic = LOVSTRIPEOFFSET, + .type = ASN_UNSIGNED, + .acl = RONLY, + .findVar = var_lovTable, + .namelen = 6, + .name = { 2, 1, 7, 2, 1, 11} + }, + { + .magic = LOVSTRIPESIZE, + .type = ASN_UNSIGNED, + .acl = RONLY, + .findVar = var_lovTable, + .namelen = 6, + .name = { 2, 1, 7, 2, 1, 12} + }, + { + .magic = LOVSTRIPETYPE, + .type = ASN_UNSIGNED, + .acl = RONLY, + .findVar = var_lovTable, + .namelen = 6, + .name = { 2, 1, 7, 2, 1, 13} + }, + + /* lustreLDLM 2.1.8 */ + { + .magic = LDLMNUMBER, + .type = ASN_UNSIGNED, + .acl = RONLY, + .findVar = var_clusterFileSystems, + .namelen = 4, + .name = { 2, 1, 8, 1 } + }, + + /* lustreLDLM.ldlmTable.ldlmEntry 2.1.8.2.1 */ + { + .magic = LDLMNAMESPACE, + .type = ASN_OCTET_STR, + .acl = RONLY, + .findVar = var_ldlmTable, + .namelen = 6, + .name = { 2, 1, 8, 2, 1, 2 } + }, + { + .magic = LDLMLOCKCOUNT, + .type = ASN_UNSIGNED, + .acl = RONLY, + .findVar = var_ldlmTable, + .namelen = 6, + .name = { 2, 1, 8, 2, 1, 3 } + }, + { + .magic = LDLMUNUSEDLOCKCOUNT, + .type = ASN_UNSIGNED, + .acl = RONLY, + .findVar = var_ldlmTable, + .namelen = 6, + .name = { 2, 1, 8, 2, 1, 4 } + }, + { + .magic = LDLMRESOURCECOUNT, + .type = ASN_UNSIGNED, + .acl = RONLY, + .findVar = var_ldlmTable, + .namelen = 6, + .name = { 2, 1, 8, 2, 1, 5 } + }, + + /* lnetInformation 2.1.9 */ + { + .magic = LNETMSGSALLOC, + .type = ASN_UNSIGNED, + .acl = RONLY, + .findVar = var_lnetInformation, + .namelen = 4, + .name = { 2, 1, 9, 1 } + }, + { + .magic = LNETMSGSMAX, + .type = ASN_UNSIGNED, + .acl = RONLY, + .findVar = var_lnetInformation, + .namelen = 4, + .name = { 2, 1, 9, 2 } + }, + { + .magic = LNETERRORS, + .type = ASN_UNSIGNED, + .acl = RONLY, + .findVar = var_lnetInformation, + .namelen = 4, + .name = { 2, 1, 9, 3 } + }, + { + .magic = LNETSENDCOUNT, + .type = ASN_UNSIGNED, + .acl = RONLY, + .findVar = var_lnetInformation, + .namelen = 4, + .name = { 2, 1, 9, 4 } + }, + { + .magic = LNETRECVCOUNT, + .type = ASN_UNSIGNED, + .acl = RONLY, + .findVar = var_lnetInformation, + .namelen = 4, + .name = { 2, 1, 9, 5 } + }, + { + .magic = LNETROUTECOUNT, + .type = ASN_UNSIGNED, + .acl = RONLY, + .findVar = var_lnetInformation, + .namelen = 4, + .name = { 2, 1, 9, 6 } + }, + { + .magic = LNETDROPCOUNT, + .type = ASN_UNSIGNED, + .acl = RONLY, + .findVar = var_lnetInformation, + .namelen = 4, + .name = { 2, 1, 9, 7 } + }, + { + .magic = LNETSENDBYTES, + .type = ASN_COUNTER64, + .acl = RONLY, + .findVar = var_lnetInformation, + .namelen = 4, + .name = { 2, 1, 9, 8 } + }, + { + .magic = LNETRECVBYTES, + .type = ASN_COUNTER64, + .acl = RONLY, + .findVar = var_lnetInformation, + .namelen = 4, + .name = { 2, 1, 9, 9 } + }, + { + .magic = LNETROUTEBYTES, + .type = ASN_COUNTER64, + .acl = RONLY, + .findVar = var_lnetInformation, + .namelen = 4, + .name = { 2, 1, 9, 10 } + }, + { + .magic = LNETDROPBYTES, + .type = ASN_COUNTER64, + .acl = RONLY, + .findVar = var_lnetInformation, + .namelen = 4, + .name = { 2, 1, 9, 11 } + }, }; /***************************************************************************** @@ -173,13 +687,14 @@ struct variable7 clusterFileSystems_variables[] = { void init_lustresnmp(void) { - /* register ourselves with the agent to handle our mib tree */ - REGISTER_MIB("clusterFileSystems", clusterFileSystems_variables, variable7, - clusterFileSystems_variables_oid); - - initilize_trap_handler(); + /* register ourselves with the agent to handle our mib tree */ + REGISTER_MIB("clusterFileSystems", + clusterFileSystems_variables, variable7, + clusterFileSystems_variables_oid); - DEBUGMSGTL(("lsnmpd", "%s %s \n", __FUNCTION__, "Initialization Done")); + initialize_trap_handler(); + + DEBUGMSGTL(("lsnmpd", "%s %s\n", __func__, "Initialization Done")); } /***************************************************************************** @@ -195,13 +710,14 @@ void init_lustresnmp(void) { void deinit_lustresnmp(void) { - /* deregister ourselves with the agent */ - unregister_mib(clusterFileSystems_variables_oid, - sizeof(clusterFileSystems_variables_oid)/sizeof(clusterFileSystems_variables_oid)); - - terminate_trap_handler(); - - DEBUGMSGTL(("lsnmpd", "%s %s \n", __FUNCTION__, "Termination Done")); + /* deregister ourselves with the agent */ + unregister_mib(clusterFileSystems_variables_oid, + sizeof(clusterFileSystems_variables_oid)/ + sizeof(clusterFileSystems_variables_oid)); + + terminate_trap_handler(); + + DEBUGMSGTL(("lsnmpd", "%s %s\n", __func__, "Termination Done")); } /***************************************************************************** @@ -222,7 +738,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; @@ -237,24 +753,36 @@ var_clusterFileSystems(struct variable *vp, switch(vp->magic) { case SYSVERSION: - sprintf(file_path, "%s%s", LUSTRE_PATH,"version"); - if( SUCCESS != read_string(file_path, string,sizeof(string))) + if (cfs_get_param_paths(&path, "version") != 0) return NULL; - *var_len = strlen(string); + 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, 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; - *var_len = strlen(string); + } + 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, 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; - *var_len = strlen(string); + } + cfs_free_param_data(&path); + *var_len = strlen((char*)string); return (unsigned char *) string; case SYSSTATUS: @@ -265,57 +793,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; - DEBUGMSGTL(("lsnmpd","num(%s)=%d\n",OSD_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 OSCNUMBER: - if( 0 == (dir_list = get_file_list(OSC_PATH, DIR_TYPE, &num))) + if (cfs_get_param_paths(&path, "osc") != 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",OSC_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 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; - DEBUGMSGTL(("lsnmpd","num(%s)=%d\n",MDC_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 CLIMOUNTNUMBER: - if( 0 == (dir_list = get_file_list(CLIENT_PATH, DIR_TYPE, &num))) + if (cfs_get_param_paths(&path, "llite") != 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",CLIENT_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 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; - DEBUGMSGTL(("lsnmpd","num(%s)=%d\n",LDLM_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; @@ -326,15 +889,42 @@ var_clusterFileSystems(struct variable *vp, return NULL; } -struct oid_table osd_table[] = -{ - { OSDUUID,FILENAME_UUID,oid_table_string_handler}, - { OSDCOMMONNAME,0,oid_table_obj_name_handler}, - { OSDCAPACITY,FILENAME_KBYTES_TOTAL, oid_table_c64_kb_handler}, - { OSDFREECAPACITY,FILENAME_KBYTES_FREE, oid_table_c64_kb_handler}, - { OSDOBJECTS,FILENAME_FILES_TOTAL, oid_table_c64_kb_handler}, - { OSDFREEOBJECTS,FILENAME_FILES_FREE, oid_table_c64_kb_handler}, - { 0,0,0 } /*End of table*/ +struct oid_table osd_table[] = { + { + .magic = OSDUUID, + .name = FILENAME_UUID, + .fhandler = oid_table_string_handler + }, + { + .magic = OSDCOMMONNAME, + .name = NULL, + .fhandler = oid_table_obj_name_handler + }, + { + .magic = OSDCAPACITY, + .name = FILENAME_KBYTES_TOTAL, + .fhandler = oid_table_c64_kb_handler + }, + { + .magic = OSDFREECAPACITY, + .name = FILENAME_KBYTES_FREE, + .fhandler = oid_table_c64_kb_handler + }, + { + .magic = OSDOBJECTS, + .name = FILENAME_FILES_TOTAL, + .fhandler = oid_table_c64_kb_handler + }, + { + .magic = OSDFREEOBJECTS, + .name = FILENAME_FILES_FREE, + .fhandler = oid_table_c64_kb_handler + }, + { + .magic = 0, + .name = NULL, + .fhandler = NULL + } /*End of table*/ }; @@ -350,20 +940,59 @@ 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[] = -{ - { OSCUUID,FILENAME_UUID,oid_table_string_handler}, - { OSCCOMMONNAME,0,oid_table_obj_name_handler}, - { OSCOSTSERVERUUID,"ost_server_uuid",oid_table_string_handler}, - { OSCCAPACITY,FILENAME_KBYTES_TOTAL, oid_table_c64_kb_handler}, - { OSCFREECAPACITY,FILENAME_KBYTES_FREE, oid_table_c64_kb_handler}, - { OSCOBJECTS,FILENAME_FILES_TOTAL, oid_table_c64_kb_handler}, - { OSCFREEOBJECTS,FILENAME_FILES_FREE, oid_table_c64_kb_handler}, - { 0,0,0 } /*End of table*/ +struct oid_table osc_table[] = { + { + .magic = OSCUUID, + .name = FILENAME_UUID, + .fhandler = oid_table_string_handler + }, + { + .magic = OSCCOMMONNAME, + .name = NULL, + .fhandler = oid_table_obj_name_handler + }, + { + .magic = OSCOSTSERVERUUID, + .name = "ost_server_uuid", + .fhandler = oid_table_string_handler + }, + { + .magic = OSCCAPACITY, + .name = FILENAME_KBYTES_TOTAL, + .fhandler = oid_table_c64_kb_handler + }, + { + .magic = OSCFREECAPACITY, + .name = FILENAME_KBYTES_FREE, + .fhandler = oid_table_c64_kb_handler + }, + { + .magic = OSCOBJECTS, + .name = FILENAME_FILES_TOTAL, + .fhandler = oid_table_c64_kb_handler + }, + { + .magic = OSCFREEOBJECTS, + .name = FILENAME_FILES_FREE, + .fhandler = oid_table_c64_kb_handler + }, + { + .magic = 0, + .name = NULL, + .fhandler = NULL + } /*End of table*/ }; /***************************************************************************** @@ -378,19 +1007,54 @@ 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[] = -{ - { MDDUUID,FILENAME_UUID,oid_table_string_handler}, - { MDDCOMMONNAME,0,oid_table_obj_name_handler}, - { MDDCAPACITY,FILENAME_KBYTES_TOTAL, oid_table_c64_kb_handler}, - { MDDFREECAPACITY,FILENAME_KBYTES_FREE, oid_table_c64_kb_handler}, - { MDDFILES,FILENAME_FILES_TOTAL, oid_table_c64_kb_handler}, - { MDDFREEFILES,FILENAME_FILES_FREE, oid_table_c64_kb_handler}, - { 0,0,0 } /*End of table*/ +struct oid_table mds_table[] = { + { + .magic = MDDUUID, + .name = FILENAME_UUID, + .fhandler = oid_table_string_handler + }, + { + .magic = MDDCOMMONNAME, + .name = NULL, + .fhandler = oid_table_obj_name_handler + }, + { + .magic = MDDCAPACITY, + .name = FILENAME_KBYTES_TOTAL, + .fhandler = oid_table_c64_kb_handler + }, + { + .magic = MDDFREECAPACITY, + .name = FILENAME_KBYTES_FREE, + .fhandler = oid_table_c64_kb_handler + }, + { + .magic = MDDFILES, + .name = FILENAME_FILES_TOTAL, + .fhandler = oid_table_c64_kb_handler + }, + { + .magic = MDDFREEFILES, + .name = FILENAME_FILES_FREE, + .fhandler = oid_table_c64_kb_handler + }, + { + .magic = 0, + .name = NULL, + .fhandler = NULL + } /*End of table*/ }; /***************************************************************************** @@ -405,20 +1069,59 @@ 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[] = -{ - { MDCUUID,FILENAME_UUID,oid_table_string_handler}, - { MDCCOMMONNAME,0,oid_table_obj_name_handler}, - { MDCMDSSERVERUUID,"mds_server_uuid",oid_table_string_handler}, - { MDCCAPACITY,FILENAME_KBYTES_TOTAL, oid_table_c64_kb_handler}, - { MDCFREECAPACITY,FILENAME_KBYTES_FREE, oid_table_c64_kb_handler}, - { MDCOBJECTS,FILENAME_FILES_TOTAL, oid_table_c64_kb_handler}, - { MDCFREEOBJECTS,FILENAME_FILES_FREE, oid_table_c64_kb_handler}, - { 0,0,0 } /*End of table*/ +struct oid_table mdc_table[] = { + { + .magic = MDCUUID, + .name = FILENAME_UUID, + .fhandler = oid_table_string_handler + }, + { + .magic = MDCCOMMONNAME, + .name = NULL, + .fhandler = oid_table_obj_name_handler + }, + { + .magic = MDCMDSSERVERUUID, + .name = "mds_server_uuid", + .fhandler = oid_table_string_handler + }, + { + .magic = MDCCAPACITY, + .name = FILENAME_KBYTES_TOTAL, + .fhandler = oid_table_c64_kb_handler + }, + { + .magic = MDCFREECAPACITY, + .name = FILENAME_KBYTES_FREE, + .fhandler = oid_table_c64_kb_handler + }, + { + .magic = MDCOBJECTS, + .name = FILENAME_FILES_TOTAL, + .fhandler = oid_table_c64_kb_handler + }, + { + .magic = MDCFREEOBJECTS, + .name = FILENAME_FILES_FREE, + .fhandler = oid_table_c64_kb_handler + }, + { + .magic = 0, + .name = NULL, + .fhandler = NULL + } /*End of table*/ }; @@ -434,21 +1137,59 @@ 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[] = -{ - { CLIUUID,FILENAME_UUID,oid_table_string_handler}, - { CLICOMMONNAME,0,oid_table_obj_name_handler}, - { CLIMDCUUID,"mdc/" FILENAME_UUID,oid_table_string_handler}, - { CLIMDCCOMMONNAME,"mdc/" FILENAME_COMMON_NAME,oid_table_string_handler}, - { CLIUSESLOV,"lov/",oid_table_is_directory_handler}, - { CLILOVUUID,"lov/" FILENAME_UUID,oid_table_string_handler}, - { CLILOVCOMMONNAME,"lov/" FILENAME_COMMON_NAME,oid_table_string_handler}, - { 0,0,0 } /*End of table*/ +struct oid_table cli_table[] = { + { + .magic = CLIUUID, + .name = FILENAME_UUID, + .fhandler = oid_table_string_handler + }, + { + .magic = CLICOMMONNAME, + .name = NULL, + .fhandler = oid_table_obj_name_handler + }, + { + .magic = CLIMDCUUID, + .name = "mdc/" FILENAME_UUID, + .fhandler = oid_table_string_handler + }, + { + .magic = CLIMDCCOMMONNAME, + .name = "mdc/" FILENAME_COMMON_NAME, + .fhandler = oid_table_string_handler + }, + { + .magic = CLIUSESLOV, + .name = "lov/", + .fhandler = oid_table_is_directory_handler + }, + { + .magic = CLILOVUUID, + .name = "lov/" FILENAME_UUID, + .fhandler = oid_table_string_handler + }, + { + .magic = CLILOVCOMMONNAME, + .name = "lov/" FILENAME_COMMON_NAME, + .fhandler = oid_table_string_handler + }, + { + .magic = 0, + .name = NULL, + .fhandler = NULL + } /*End of table*/ }; /***************************************************************************** @@ -463,26 +1204,84 @@ 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[] = -{ - { LOVUUID,FILENAME_UUID,oid_table_string_handler}, - { LOVCOMMONNAME,0,oid_table_obj_name_handler}, - { LOVNUMOBD,"numobd", oid_table_ulong_handler}, - { LOVNUMACTIVEOBD,"activeobd", oid_table_ulong_handler}, - { LOVCAPACITY,FILENAME_KBYTES_TOTAL, oid_table_c64_kb_handler}, - { LOVFREECAPACITY,FILENAME_KBYTES_FREE, oid_table_c64_kb_handler}, - { LOVFILES,FILENAME_FILES_TOTAL, oid_table_c64_kb_handler}, - { LOVFREEFILES,FILENAME_FILES_FREE, oid_table_c64_kb_handler}, - { LOVSTRIPECOUNT,"stripecount", oid_table_ulong_handler}, - { LOVSTRIPEOFFSET,"stripeoffset", oid_table_ulong_handler}, - { LOVSTRIPESIZE,"stripesize", oid_table_ulong_handler}, - { LOVSTRIPETYPE,"stripetype", oid_table_ulong_handler}, - { 0,0,0 } /*End of table*/ +struct oid_table lov_table[] = { + { + .magic = LOVUUID, + .name = FILENAME_UUID, + .fhandler = oid_table_string_handler + }, + { + .magic = LOVCOMMONNAME, + .name = NULL, + .fhandler = oid_table_obj_name_handler + }, + { + .magic = LOVNUMOBD, + .name = "numobd", + .fhandler = oid_table_ulong_handler + }, + { + .magic = LOVNUMACTIVEOBD, + .name = "activeobd", + .fhandler = oid_table_ulong_handler + }, + { + .magic = LOVCAPACITY, + .name = FILENAME_KBYTES_TOTAL, + .fhandler = oid_table_c64_kb_handler + }, + { + .magic = LOVFREECAPACITY, + .name = FILENAME_KBYTES_FREE, + .fhandler = oid_table_c64_kb_handler + }, + { + .magic = LOVFILES, + .name = FILENAME_FILES_TOTAL, + .fhandler = oid_table_c64_kb_handler + }, + { + .magic = LOVFREEFILES, + .name = FILENAME_FILES_FREE, + .fhandler = oid_table_c64_kb_handler + }, + { + .magic = LOVSTRIPECOUNT, + .name = "stripecount", + .fhandler = oid_table_ulong_handler + }, + { + .magic = LOVSTRIPEOFFSET, + .name = "stripeoffset", + .fhandler = oid_table_ulong_handler + }, + { + .magic = LOVSTRIPESIZE, + .name = "stripesize", + .fhandler = oid_table_ulong_handler + }, + { + .magic = LOVSTRIPETYPE, + .name = "stripetype", + .fhandler = oid_table_ulong_handler + }, + { + .magic = 0, + .name = NULL, + .fhandler = NULL + } /*End of table*/ }; @@ -498,17 +1297,44 @@ 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[] = -{ - { LDLMNAMESPACE,0,oid_table_obj_name_handler}, - { LDLMLOCKCOUNT,"lock_count", oid_table_ulong_handler}, - { LDLMUNUSEDLOCKCOUNT,"lock_unused_count", oid_table_ulong_handler}, - { LDLMRESOURCECOUNT,"resource_count", oid_table_ulong_handler}, - { 0,0,0 } /*End of table*/ +struct oid_table ldlm_table[] = { + { + .magic = LDLMNAMESPACE, + .name = NULL, + .fhandler = oid_table_obj_name_handler + }, + { + .magic = LDLMLOCKCOUNT, + .name = "lock_count", + .fhandler = oid_table_ulong_handler + }, + { + .magic = LDLMUNUSEDLOCKCOUNT, + .name = "lock_unused_count", + .fhandler = oid_table_ulong_handler + }, + { + .magic = LDLMRESOURCECOUNT, + .name = "resource_count", + .fhandler = oid_table_ulong_handler + }, + { + .magic = 0, + .name = NULL, + .fhandler = NULL + } /*End of table*/ }; @@ -524,10 +1350,111 @@ 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; } +/***************************************************************************** + * Function: var_lnetInformation + * + ****************************************************************************/ +unsigned char * +var_lnetInformation(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + /* variables we may use later */ + static unsigned char string[SPRINT_MAX_LEN]; + static unsigned int i[7]; + static unsigned long long ull[4]; + static unsigned long next_update; + static counter64 c64; + static unsigned int c32; + struct timeval current_tv; + unsigned long current; + 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) { + 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", + &i[0], &i[1], &i[2], &i[3], &i[4], &i[5], &i[6], + &ull[0], &ull[1], &ull[2], &ull[3]); + + next_update = current + (LNET_CHECK_INTERVAL * 1000); + } + + if (header_generic(vp, name, length, exact, var_len, write_method) + == MATCH_FAILED) + return NULL; + + switch (vp->magic) { + case LNETMSGSALLOC: + *var_len = sizeof(c32); + c32 = i[0]; + return (unsigned char *) &c32; + case LNETMSGSMAX: + *var_len = sizeof(c32); + c32 = i[1]; + return (unsigned char *) &c32; + case LNETERRORS: + *var_len = sizeof(c32); + c32 = i[2]; + return (unsigned char *) &c32; + case LNETSENDCOUNT: + *var_len = sizeof(c32); + c32 = i[3]; + return (unsigned char *) &c32; + case LNETRECVCOUNT: + *var_len = sizeof(c32); + c32 = i[4]; + return (unsigned char *) &c32; + case LNETROUTECOUNT: + *var_len = sizeof(c32); + c32 = i[5]; + return (unsigned char *) &c32; + case LNETDROPCOUNT: + *var_len = sizeof(c32); + c32 = i[6]; + return (unsigned char *) &c32; + case LNETSENDBYTES: + convert_ull(&c64, ull[0], var_len); + return (unsigned char *) &c64; + case LNETRECVBYTES: + convert_ull(&c64, ull[1], var_len); + return (unsigned char *) &c64; + case LNETROUTEBYTES: + convert_ull(&c64, ull[2], var_len); + return (unsigned char *) &c64; + case LNETDROPBYTES: + convert_ull(&c64, ull[3], var_len); + return (unsigned char *) &c64; + default: + return NULL; + } +} /***************************************************************************** * Function: var_mdsNbSampledReq @@ -573,8 +1500,7 @@ write_sysStatus(int action, size_t name_len) { static long *long_ret; - int size; - int pid, new_value; + int new_value; @@ -599,7 +1525,6 @@ write_sysStatus(int action, case RESERVE2: - size = var_val_len; long_ret = (long *) var_val;