Whamcloud - gitweb
LU-1606 api: Rename liblustreapi.h -> lustreapi.h
[fs/lustre-release.git] / snmp / lustre-snmp.c
index b80e2ac..3225e23 100644 (file)
@@ -1,23 +1,39 @@
-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
+/*
+ * GPL HEADER START
  *
- *  Copyright (c) 2005 Cluster File Systems, Inc.
- *   Author: PJ Kirner <pjkirner@clusterfs.com>
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
- *   This file is part of Lustre, http://www.lustre.org.
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 only,
+ * as published by the Free Software Foundation.
  *
- *   Lustre is free software; you can redistribute it and/or
- *   modify it under the terms of version 2 of the GNU General Public
- *   License as published by the Free Software Foundation.
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License version 2 for more details (a copy is included
+ * in the LICENSE file that accompanied this code).
  *
- *   Lustre is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
+ * 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
  *
- *   You should have received a copy of the GNU General Public License
- *   along with Lustre; if not, write to the Free Software
- *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * 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.
+ *
+ * GPL HEADER END
+ */
+/*
+ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Use is subject to license terms.
+ */
+/*
+ * This file is part of Lustre, http://www.lustre.org/
+ * Lustre is a trademark of Sun Microsystems, Inc.
+ *
+ * snmp/lustre-snmp.c
+ *
+ * Author: PJ Kirner <pjkirner@clusterfs.com>
  */
  
 #include <net-snmp/net-snmp-config.h>
@@ -88,6 +104,7 @@ struct variable7 clusterFileSystems_variables[] = {
   { 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 } },
@@ -204,7 +221,7 @@ var_clusterFileSystems(struct variable *vp,
   static u_long ulong_ret;
   static unsigned char string[SPRINT_MAX_LEN];
   char file_path[MAX_PATH_SIZE];
-  __u32 num;
+  uint32_t num;
   char *dir_list;
 
   if (header_generic(vp,name,length,exact,var_len,write_method)
@@ -219,23 +236,23 @@ var_clusterFileSystems(struct variable *vp,
 
     case SYSVERSION:
         sprintf(file_path, "%s%s", LUSTRE_PATH,"version");
-        if( SUCCESS != read_string(file_path, string,sizeof(string)))
+        if( SUCCESS != read_string(file_path, (char *)string,sizeof(string)))
             return NULL;
-        *var_len = strlen(string);
+        *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( SUCCESS != read_string(file_path, (char *)string,sizeof(string)))
             return NULL;
-        *var_len = strlen(string);
+        *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( SUCCESS != read_string(file_path, (char *)string,sizeof(string)))
             return NULL;
-        *var_len = strlen(string);
+        *var_len = strlen((char*)string);
         return (unsigned char *) string;
 
     case SYSSTATUS:
@@ -511,6 +528,36 @@ var_ldlmTable(struct variable *vp,
 
 
 /*****************************************************************************
+ * Function: var_mdsNbSampledReq
+ *
+ ****************************************************************************/
+unsigned char *
+var_mdsNbSampledReq(struct variable *vp,
+            oid     *name,
+            size_t  *length,
+            int     exact,
+            size_t  *var_len,
+            WriteMethod **write_method)
+{
+  unsigned long long nb_sample=0,min=0,max=0,sum=0,sum_square=0;
+  static counter64 c64;
+
+  if (header_generic(vp,name,length,exact,var_len,write_method)
+                                  == MATCH_FAILED )
+    return NULL;
+
+  if( mds_stats_values(STR_REQ_WAITIME,&nb_sample,&min,&max,&sum,&sum_square) == ERROR) return NULL;
+
+  c64.low = (u_long) (0x0FFFFFFFF & nb_sample);
+  nb_sample >>= 32;
+  c64.high = (u_long) (0x0FFFFFFFF & nb_sample);
+
+  *var_len = sizeof(c64);
+  return (unsigned char *) &c64;
+}
+
+
+/*****************************************************************************
  * Function: write_sysStatus
  *
  ****************************************************************************/
@@ -524,8 +571,7 @@ write_sysStatus(int      action,
             size_t   name_len)
 {
   static long *long_ret;
-  int size;
-  int pid, new_value;
+  int new_value;
 
 
 
@@ -550,7 +596,6 @@ write_sysStatus(int      action,
 
 
         case RESERVE2:
-          size = var_val_len;
           long_ret = (long *) var_val;
 
 
@@ -598,4 +643,3 @@ write_sysStatus(int      action,
   }
   return SNMP_ERR_NOERROR;
 }
-