-void lu_ref_init(struct lu_ref *ref);
-void lu_ref_fini(struct lu_ref *ref);
-
-struct lu_ref_link *lu_ref_add (struct lu_ref *ref, const char *scope,
- const void *source);
-struct lu_ref_link *lu_ref_add_atomic(struct lu_ref *ref, const char *scope,
- const void *source);
-void lu_ref_del (struct lu_ref *ref, const char *scope,
- const void *source);
-void lu_ref_set_at (struct lu_ref *ref,
- struct lu_ref_link *link,
- const char *scope, const void *source0,
- const void *source1);
-void lu_ref_del_at (struct lu_ref *ref,
- struct lu_ref_link *link,
- const char *scope, const void *source);
-void lu_ref_print (const struct lu_ref *ref);
+struct lu_ref_link {
+ struct lu_ref *ll_ref;
+ struct list_head ll_linkage;
+ const char *ll_scope;
+ const void *ll_source;
+};
+
+void lu_ref_init_loc(struct lu_ref *ref, const char *func, const int line);
+void lu_ref_fini (struct lu_ref *ref);
+#define lu_ref_init(ref) lu_ref_init_loc(ref, __FUNCTION__, __LINE__)
+
+void lu_ref_add(struct lu_ref *ref, const char *scope, const void *source);
+
+void lu_ref_add_atomic(struct lu_ref *ref, const char *scope,
+ const void *source);
+
+void lu_ref_add_at(struct lu_ref *ref, struct lu_ref_link *link,
+ const char *scope, const void *source);
+
+void lu_ref_del(struct lu_ref *ref, const char *scope, const void *source);
+
+void lu_ref_set_at(struct lu_ref *ref, struct lu_ref_link *link,
+ const char *scope, const void *source0, const void *source1);
+
+void lu_ref_del_at(struct lu_ref *ref, struct lu_ref_link *link,
+ const char *scope, const void *source);
+
+void lu_ref_print(const struct lu_ref *ref);
+
+void lu_ref_print_all(void);
+
+int lu_ref_global_init(void);
+
+void lu_ref_global_fini(void);
+