X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fobdfilter%2Flproc_obdfilter.c;h=308b8f294f8e9319ff8992e7299c089df391f13c;hp=ab3758937cc70d27e04f15e90472827aed285497;hb=c5050e412572b00cbe93d8517d2d1f767bebfa92;hpb=400b0681017091fab9cef9bd00e0f536e1793dcc diff --git a/lustre/obdfilter/lproc_obdfilter.c b/lustre/obdfilter/lproc_obdfilter.c index ab37589..308b8f2 100644 --- a/lustre/obdfilter/lproc_obdfilter.c +++ b/lustre/obdfilter/lproc_obdfilter.c @@ -1,7 +1,7 @@ /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: * - * Copyright (C) 2002 Cluster File Systems, Inc. + * Copyright (C) 2002, 2003 Cluster File Systems, Inc. * * This file is part of Lustre, http://www.lustre.org. * @@ -21,131 +21,59 @@ */ #define DEBUG_SUBSYSTEM S_CLASS -#include +#include #include +#include +#include "filter_internal.h" -int rd_uuid(char* page, char **start, off_t off, - int count, int *eof, void *data) -{ - int len=0; - struct obd_device* dev=(struct obd_device*)data; - len+=snprintf(page, count, "%s\n", dev->obd_uuid); - return len; - - +#ifndef LPROCFS +static struct lprocfs_vars lprocfs_obd_vars[] = { {0} }; +static struct lprocfs_vars lprocfs_module_vars[] = { {0} }; +#else -} -int rd_blksize(char* page, char **start, off_t off, - int count, int *eof, void *data) +static int lprocfs_filter_rd_mntdev(char *page, char **start, off_t off, + int count, int *eof, void *data) { - struct obd_device* temp=(struct obd_device*)data; - struct statfs mystats; - - int len=0; - - vfs_statfs(temp->u.filter.fo_sb, &mystats); - - len+=snprintf(page, count, "%ld\n", mystats.f_bsize); - return len; - + struct obd_device* obd = (struct obd_device *)data; + LASSERT(obd != NULL); + LASSERT(obd->u.filter.fo_vfsmnt->mnt_devname); + *eof = 1; + return snprintf(page, count, "%s\n", + obd->u.filter.fo_vfsmnt->mnt_devname); } -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 statfs mystats; - int len=0; - __u64 result; - vfs_statfs(temp->u.filter.fo_sb, &mystats); - - result=((__u64)(mystats.f_blocks*mystats.f_bsize))>>10; - - 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) +static int lprocfs_filter_rd_last_id(char *page, char **start, off_t off, + int count, int *eof, void *data) { - struct obd_device* temp=(struct obd_device*)data; - struct statfs mystats; - - int len=0; - __u64 result; + struct obd_device *obd = data; - vfs_statfs(temp->u.filter.fo_sb, &mystats); - result=((__u64)(mystats.f_bfree*mystats.f_bsize))>>10; + if (obd == NULL) + return 0; - len+=snprintf(page, count, LPU64"\n", result); - return len; + return snprintf(page, count, LPU64"\n", + filter_last_id(&obd->u.filter, 0)); } -int rd_fstype(char* page, char **start, off_t off, - int count, int *eof, void *data) -{ - - struct obd_device* temp=(struct obd_device*)data; - int len=0; - - len+=snprintf(page, count, "%s\n", temp->u.filter.fo_fstype); - return len; - -} -int rd_files(char* page, char **start, off_t off, - int count, int *eof, void *data) -{ - - struct obd_device* temp=(struct obd_device*)data; - struct statfs mystats; - - int len=0; - - vfs_statfs(temp->u.filter.fo_sb, &mystats); - - len+=snprintf(page, count, "%ld\n", mystats.f_files); - return len; -} - -int rd_filesfree(char* page, char **start, off_t off, - int count, int *eof, void *data) -{ - struct obd_device* temp=(struct obd_device*)data; - struct statfs mystats; - - int len=0; - - vfs_statfs(temp->u.filter.fo_sb, &mystats); - - len+=snprintf(page, count, "%ld\n", mystats.f_ffree); - return len; - - -} - -lprocfs_vars_t status_var_nm_1[]={ - {"status/uuid", rd_uuid, 0}, - {"status/blocksize",rd_blksize, 0}, - {"status/kbytestotal",rd_kbtotal, 0}, - {"status/kbytesfree", rd_kbfree, 0}, - {"status/files", rd_files, 0}, - {"status/filesfree", rd_filesfree, 0}, - {"status/fstype", rd_fstype, 0}, - {0} +static struct lprocfs_vars lprocfs_obd_vars[] = { + { "uuid", lprocfs_rd_uuid, 0, 0 }, + { "blocksize", lprocfs_rd_blksize, 0, 0 }, + { "kbytestotal", lprocfs_rd_kbytestotal, 0, 0 }, + { "kbytesfree", lprocfs_rd_kbytesfree, 0, 0 }, + { "filestotal", lprocfs_rd_filestotal, 0, 0 }, + { "filesfree", lprocfs_rd_filesfree, 0, 0 }, + //{ "filegroups", lprocfs_rd_filegroups, 0, 0 }, + { "fstype", lprocfs_rd_fstype, 0, 0 }, + { "mntdev", lprocfs_filter_rd_mntdev, 0, 0 }, + { "last_id", lprocfs_filter_rd_last_id, 0, 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; -} -lprocfs_vars_t status_class_var[]={ - {"status/num_devices", rd_numdevices, 0}, - {0} +static struct lprocfs_vars lprocfs_module_vars[] = { + { "num_refs", lprocfs_rd_numrefs, 0, 0 }, + { 0 } }; + +#endif /* LPROCFS */ +LPROCFS_INIT_VARS(filter,lprocfs_module_vars, lprocfs_obd_vars)