*
*/
#define DEBUG_SUBSYSTEM S_OST
-#include <linux/obd_support.h>
-#include <linux/obd_class.h>
-#include <linux/lprocfs.h>
-#include <linux/string.h>
-#include <linux/lustre_lib.h>
-/* Required for 64 bit division */
-#include <asm/div64.h>
+#include <linux/lustre_lite.h>
+#include <linux/lprocfs_status.h>
+
int rd_uuid(char* page, char **start, off_t off,
int count, int *eof, void *data)
struct ost_obd *ost=&temp->u.ost;
struct lustre_handle *conn=&ost->ost_conn;
struct obd_statfs mystats;
- int rc, len=0;
+ int len=0;
- rc = obd_statfs(conn, &mystats);
- if (rc) {
- CERROR("ost: statfs failed: rc %d\n", rc);
- return 0;
- }
- len+=snprintf(page, count, LPU64"\n", (__u64)(mystats.os_bsize));
+ obd_statfs(conn, &mystats);
+ len+=snprintf(page, count, "%d\n", mystats.os_bsize);
return len;
}
-int rd_blktotal(char* page, char **start, off_t off,
+int rd_kbtotal(char* page, char **start, off_t off,
int count, int *eof, void *data)
{
-
struct obd_device* temp=(struct obd_device*)data;
struct ost_obd *ost=&temp->u.ost;
struct lustre_handle *conn=&ost->ost_conn;
struct obd_statfs mystats;
- int rc, len=0;
+ int len=0;
+ __u32 blk_size;
+ __u64 result;
- rc = obd_statfs(conn, &mystats);
- if (rc) {
- CERROR("ost: statfs failed: rc %d\n", rc);
- return 0;
- }
- len+=snprintf(page, count, LPU64"\n", (__u64)(mystats.os_blocks));
- return len;
-}
+ obd_statfs(conn, &mystats);
-int rd_blkfree(char* page, char **start, off_t off,
- int count, int *eof, void *data)
-{
+ blk_size=mystats.os_bsize;
+ blk_size>>=10;
- struct obd_device* temp=(struct obd_device*)data;
- struct ost_obd *ost=&temp->u.ost;
- struct lustre_handle *conn=&ost->ost_conn;
- struct obd_statfs mystats;
- int rc, len=0;
+ result=mystats.os_blocks;
- rc = obd_statfs(conn, &mystats);
- if (rc) {
- CERROR("ost: statfs failed: rc %d\n", rc);
- return 0;
+ while(blk_size>>=1){
+ result<<=1;
}
- len+=snprintf(page, count, LPU64"\n", (__u64)(mystats.os_bfree));
+
+ len+=snprintf(page, count, LPU64"\n", result);
return len;
+
}
+
int rd_kbfree(char* page, char **start, off_t off,
int count, int *eof, void *data)
{
struct ost_obd *ost=&temp->u.ost;
struct lustre_handle *conn=&ost->ost_conn;
struct obd_statfs mystats;
- int rc, len=0;
+ int len=0;
__u32 blk_size;
__u64 result;
- __u32 remainder;
- rc = obd_statfs(conn, &mystats);
- if (rc) {
- CERROR("ost: statfs failed: rc %d\n", rc);
- return 0;
- }
+ obd_statfs(conn, &mystats);
+
blk_size=mystats.os_bsize;
- blk_size*=1024;
+ blk_size>>=10;
+
result=mystats.os_bfree;
- remainder=do_div(result, blk_size);
- len+=snprintf(page, count, LPU64"\n", \
- result);
+ while(blk_size>>=1){
+ result<<=1;
+ }
+ len+=snprintf(page, count, LPU64"\n", result);
return len;
-
}
-int rd_numobjects(char* page, char **start, off_t off,
+int rd_files(char* page, char **start, off_t off,
int count, int *eof, void *data)
{
struct ost_obd *ost=&temp->u.ost;
struct lustre_handle *conn=&ost->ost_conn;
struct obd_statfs mystats;
- int rc, len=0;
+ int len=0;
- rc = obd_statfs(conn, &mystats);
- if (rc) {
- CERROR("ost: statfs failed: rc %d\n", rc);
- return 0;
- }
- len+=snprintf(page, count, LPU64"\n", (__u64)(mystats.os_files));
+ obd_statfs(conn, &mystats);
+
+ len+=snprintf(page, count, LPU64"\n",mystats.os_files);
return len;
}
-int rd_objfree(char* page, char **start, off_t off,
+int rd_filesfree(char* page, char **start, off_t off,
int count, int *eof, void *data)
{
struct ost_obd *ost=&temp->u.ost;
struct lustre_handle *conn=&ost->ost_conn;
struct obd_statfs mystats;
- int rc, len=0;
+ int len=0;
- rc = obd_statfs(conn, &mystats);
- if (rc) {
- CERROR("ost: statfs failed: rc %d\n", rc);
- return 0;
- }
- len+=snprintf(page, count, LPU64"\n", (__u64)(mystats.os_ffree));
+ obd_statfs(conn, &mystats);
+ len+=snprintf(page, count, LPU64"\n", mystats.os_ffree);
return len;
}
return 0;
}
-lprocfs_vars_t snmp_var_nm_1[]={
- {"snmp/uuid", rd_uuid, 0},
- {"snmp/f_blocksize",rd_blksize, 0},
- {"snmp/f_blockstotal",rd_blktotal, 0},
- {"snmp/f_blocksfree",rd_blkfree, 0},
- {"snmp/f_kbytesfree", rd_kbfree, 0},
- {"snmp/f_objects", rd_numobjects, 0},
- {"snmp/f_objectsfree", rd_objfree, 0},
- {"snmp/f_objectgroups", rd_objgroups, 0},
+struct lprocfs_vars status_var_nm_1[]={
+ {"status/uuid", rd_uuid, 0},
+ {"status/blocksize",rd_blksize, 0},
+ {"status/kbytesfree", rd_kbfree, 0},
+ {"status/kbytestotal", rd_kbtotal, 0},
+ {"status/files", rd_files, 0},
+ {"status/filesfree", rd_filesfree, 0},
+ {"status/objectgroups", rd_objgroups, 0},
+ {0}
+};
+
+int rd_numdevices(char* page, char **start, off_t off,
+ int count, int *eof, void *data)
+{
+ struct obd_type* class=(struct obd_type*)data;
+ int len=0;
+ len+=snprintf(page, count, "%d\n", class->typ_refcnt);
+ return len;
+}
+
+struct lprocfs_vars status_class_var[]={
+ {"status/num_devices", rd_numdevices, 0},
{0}
};