X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Finclude%2Flu_ref.h;h=7b368c297ff13d15ea3b51dfb95d4f6dd45600a0;hb=edb64eb94bcec64782477378170745ca503a8224;hp=b0c49abe050deced2be323193577247b842ff432;hpb=8701e7e4b5ec1b34700c95b9b6588f4745730b72;p=fs%2Flustre-release.git diff --git a/lustre/include/lu_ref.h b/lustre/include/lu_ref.h index b0c49ab..7b368c2 100644 --- a/lustre/include/lu_ref.h +++ b/lustre/include/lu_ref.h @@ -1,8 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. * - * Copyright (c) 2012, Intel Corporation. + * Copyright (c) 2012, 2013, Intel Corporation. * * Author: Nikita Danilov * @@ -17,16 +18,12 @@ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with Lustre; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * */ #ifndef __LUSTRE_LU_REF_H #define __LUSTRE_LU_REF_H -#include +#include /** \defgroup lu_ref lu_ref * @@ -36,11 +33,11 @@ * who acquired references to instance of struct foo, add lu_ref field to it: * * \code - * struct foo { - * atomic_t foo_refcount; - * struct lu_ref foo_reference; - * ... - * }; + * struct foo { + * atomic_t foo_refcount; + * struct lu_ref foo_reference; + * ... + * }; * \endcode * * foo::foo_reference has to be initialized by calling @@ -54,28 +51,28 @@ * usages are: * * \code - * struct bar *bar; + * struct bar *bar; * - * // bar owns a reference to foo. - * bar->bar_foo = foo_get(foo); - * lu_ref_add(&foo->foo_reference, "bar", bar); + * // bar owns a reference to foo. + * bar->bar_foo = foo_get(foo); + * lu_ref_add(&foo->foo_reference, "bar", bar); * - * ... + * ... * - * // reference from bar to foo is released. - * lu_ref_del(&foo->foo_reference, "bar", bar); - * foo_put(bar->bar_foo); + * // reference from bar to foo is released. + * lu_ref_del(&foo->foo_reference, "bar", bar); + * foo_put(bar->bar_foo); * * - * // current thread acquired a temporary reference to foo. - * foo_get(foo); - * lu_ref_add(&foo->reference, __FUNCTION__, current); + * // current thread acquired a temporary reference to foo. + * foo_get(foo); + * lu_ref_add(&foo->reference, __func__, current); * - * ... + * ... * - * // temporary reference is released. - * lu_ref_del(&foo->reference, __FUNCTION__, current); - * foo_put(foo); + * // temporary reference is released. + * lu_ref_del(&foo->reference, __func__, current); + * foo_put(foo); * \endcode * * \e Et \e cetera. Often it makes sense to include lu_ref_add() and @@ -91,15 +88,15 @@ * lu_ref_del_at(): * * \code - * // There is a large number of bar's for a single foo. - * bar->bar_foo = foo_get(foo); - * bar->bar_foo_ref = lu_ref_add(&foo->foo_reference, "bar", bar); + * // There is a large number of bar's for a single foo. + * bar->bar_foo = foo_get(foo); + * bar->bar_foo_ref = lu_ref_add(&foo->foo_reference, "bar", bar); * - * ... + * ... * - * // reference from bar to foo is released. - * lu_ref_del_at(&foo->foo_reference, bar->bar_foo_ref, "bar", bar); - * foo_put(bar->bar_foo); + * // reference from bar to foo is released. + * lu_ref_del_at(&foo->foo_reference, bar->bar_foo_ref, "bar", bar); + * foo_put(bar->bar_foo); * \endcode * * lu_ref interface degrades gracefully in case of memory shortages. @@ -107,7 +104,7 @@ * @{ */ -#ifdef USE_LU_REF +#ifdef CONFIG_LUSTRE_DEBUG_LU_REF /** * Data-structure to keep track of references to a given object. This is used @@ -126,27 +123,27 @@ struct lu_ref { * lu_ref_link), pointing to this object. */ struct list_head lf_list; - /** - * # of links. - */ - short lf_refs; - /** - * Flag set when lu_ref_add() failed to allocate lu_ref_link. It is - * used to mask spurious failure of the following lu_ref_del(). - */ - short lf_failed; - /** - * flags - attribute for the lu_ref, for pad and future use. - */ - short lf_flags; - /** - * Where was I initialized? - */ - short lf_line; - const char *lf_func; - /** - * Linkage into a global list of all lu_ref's (lu_ref_refs). - */ + /** + * # of links. + */ + short lf_refs; + /** + * Flag set when lu_ref_add() failed to allocate lu_ref_link. It is + * used to mask spurious failure of the following lu_ref_del(). + */ + short lf_failed; + /** + * flags - attribute for the lu_ref, for pad and future use. + */ + short lf_flags; + /** + * Where was I initialized? + */ + short lf_line; + const char *lf_func; + /** + * Linkage into a global list of all lu_ref's (lu_ref_refs). + */ struct list_head lf_linkage; }; @@ -158,8 +155,8 @@ struct lu_ref_link { }; 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_fini(struct lu_ref *ref); +#define lu_ref_init(ref) lu_ref_init_loc(ref, __func__, __LINE__) void lu_ref_add(struct lu_ref *ref, const char *scope, const void *source); @@ -185,7 +182,7 @@ int lu_ref_global_init(void); void lu_ref_global_fini(void); -#else /* !USE_LU_REF */ +#else /* !CONFIG_LUSTRE_DEBUG_LU_REF */ struct lu_ref { }; @@ -221,24 +218,24 @@ static inline void lu_ref_add_at(struct lu_ref *ref, } static inline void lu_ref_del(struct lu_ref *ref, const char *scope, - const void *source) + const void *source) { } static inline void lu_ref_set_at(struct lu_ref *ref, struct lu_ref_link *link, - const char *scope, const void *source0, - const void *source1) + const char *scope, const void *source0, + const void *source1) { } static inline void lu_ref_del_at(struct lu_ref *ref, struct lu_ref_link *link, - const char *scope, const void *source) + const char *scope, const void *source) { } static inline int lu_ref_global_init(void) { - return 0; + return 0; } static inline void lu_ref_global_fini(void) @@ -252,7 +249,7 @@ static inline void lu_ref_print(const struct lu_ref *ref) static inline void lu_ref_print_all(void) { } -#endif /* USE_LU_REF */ +#endif /* CONFIG_LUSTRE_DEBUG_LU_REF */ /** @} lu */