struct semaphore obd_conf_sem; /* serialize configuration commands */
struct obd_device obd_dev[MAX_OBD_DEVICES];
struct list_head obd_types;
+#ifndef __KERNEL__
atomic_t obd_memory;
int obd_memmax;
+#endif
int proc_version;
EXPORT_SYMBOL(obd_dev);
EXPORT_SYMBOL(obdo_cachep);
-EXPORT_SYMBOL(obd_memory);
-EXPORT_SYMBOL(obd_memmax);
EXPORT_SYMBOL(obd_fail_loc);
EXPORT_SYMBOL(obd_timeout);
EXPORT_SYMBOL(obd_lustre_upcall);
EXPORT_SYMBOL(class_uuid2dev);
EXPORT_SYMBOL(class_uuid2obd);
EXPORT_SYMBOL(class_find_client_obd);
+EXPORT_SYMBOL(class_devices_in_group);
EXPORT_SYMBOL(__class_export_put);
EXPORT_SYMBOL(class_new_export);
EXPORT_SYMBOL(class_unlink_export);
/* config.c */
EXPORT_SYMBOL(class_get_profile);
+EXPORT_SYMBOL(class_del_profile);
EXPORT_SYMBOL(class_process_config);
EXPORT_SYMBOL(class_config_parse_llog);
EXPORT_SYMBOL(class_config_dump_llog);
static void cleanup_obdclass(void)
#endif
{
+#ifdef __KERNEL__
+ int i;
+#else
int i, leaked;
+#endif
ENTRY;
misc_deregister(&obd_psdev);
class_handle_cleanup();
class_exit_uuidlist();
+#ifndef __KERNEL__
leaked = atomic_read(&obd_memory);
CDEBUG(leaked ? D_ERROR : D_INFO,
"obd mem max: %d leaked: %d\n", obd_memmax, leaked);
+#endif
EXIT;
}