* and Andreas Dilger <adilger@clusterfs.com>
*/
-static char rcsid[] __attribute ((unused)) = "$Id: echo.c,v 1.37 2002/09/11 05:17:03 adilger Exp $";
-#define OBDECHO_VERSION "$Revision: 1.37 $"
+static char rcsid[] __attribute ((unused)) = "$Id: echo.c,v 1.42 2002/11/01 17:23:13 thantry Exp $";
+#define OBDECHO_VERSION "$Revision: 1.42 $"
#define EXPORT_SYMTAB
#include <linux/version.h>
#include <linux/module.h>
+#include <linux/mm.h>
+#include <linux/highmem.h>
#include <linux/fs.h>
#include <linux/stat.h>
-#include <linux/locks.h>
+#include <linux/sched.h>
+#include <linux/smp_lock.h>
#include <linux/ext2_fs.h>
#include <linux/quotaops.h>
#include <linux/proc_fs.h>
#include <linux/obd_echo.h>
#include <linux/lustre_debug.h>
#include <linux/lustre_dlm.h>
+#include <linux/lprocfs_status.h>
static atomic_t echo_page_rws;
static atomic_t echo_getattrs;
#define ECHO_PROC_STAT "sys/obdecho"
#define ECHO_INIT_OBJID 0x1000000000000000ULL
+extern lprocfs_vars_t status_var_nm_1[];
+extern lprocfs_vars_t status_class_var[];
+
int echo_proc_read(char *page, char **start, off_t off, int count, int *eof,
void *data)
{
}
static int echo_connect(struct lustre_handle *conn, struct obd_device *obd,
- obd_uuid_t cluuid)
+ obd_uuid_t cluuid, struct recovd_obd *recovd,
+ ptlrpc_recovery_cb_t recover)
{
int rc;
return -ENOENT;
}
- if (!(oa->o_valid & OBD_MD_FLMODE)) {
+ if (!(oa->o_valid & OBD_MD_FLTYPE)) {
CERROR("invalid o_valid %08x\n", oa->o_valid);
return -EINVAL;
}
RETURN(0);
}
+int echo_attach(struct obd_device *dev,
+ obd_count len, void *data)
+{
+ int rc;
+ rc = lprocfs_reg_obd(dev, (lprocfs_vars_t*)status_var_nm_1, (void*)dev);
+ return rc;
+}
+
+int echo_detach(struct obd_device *dev)
+{
+ int rc;
+ rc = lprocfs_dereg_obd(dev);
+ return rc;
+
+}
+
+
struct obd_ops echo_obd_ops = {
+ o_attach: echo_attach,
+ o_detach: echo_detach,
o_connect: echo_connect,
o_disconnect: echo_disconnect,
o_create: echo_create,
static int __init obdecho_init(void)
{
+ int rc;
+
+
printk(KERN_INFO "Echo OBD driver " OBDECHO_VERSION
" info@clusterfs.com\n");
echo_proc_init();
+ rc = class_register_type(&echo_obd_ops,
+ (lprocfs_vars_t*)status_class_var,
+ OBD_ECHO_DEVICENAME);
+ if (rc) RETURN(rc);
+
+ return 0;
- return class_register_type(&echo_obd_ops, OBD_ECHO_DEVICENAME);
}
static void __exit obdecho_exit(void)
{
+
echo_proc_fini();
class_unregister_type(OBD_ECHO_DEVICENAME);