X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fobdclass%2Flu_ref.c;h=4ebb29b06750a904e30db127f4a6651c4abadf93;hp=3308b1733c3d897a013f395067a79f3b28093260;hb=838514369ac245d2dcfdcda7715a2798fe9ee755;hpb=ac5a9c8515829c8ed92567256a0a84b00d70040d diff --git a/lustre/obdclass/lu_ref.c b/lustre/obdclass/lu_ref.c index 3308b17..4ebb29b 100644 --- a/lustre/obdclass/lu_ref.c +++ b/lustre/obdclass/lu_ref.c @@ -138,8 +138,10 @@ void lu_ref_init_loc(struct lu_ref *ref, const char *func, const int line) void lu_ref_fini(struct lu_ref *ref) { + spin_lock(&ref->lf_guard); REFASSERT(ref, list_empty(&ref->lf_list)); REFASSERT(ref, ref->lf_refs == 0); + spin_unlock(&ref->lf_guard); spin_lock(&lu_ref_refs_guard); list_del_init(&ref->lf_linkage); spin_unlock(&lu_ref_refs_guard); @@ -260,9 +262,8 @@ void lu_ref_set_at(struct lu_ref *ref, struct lu_ref_link *link, const char *scope, const void *source0, const void *source1) { - REFASSERT(ref, link != NULL && !IS_ERR(link)); - spin_lock(&ref->lf_guard); + REFASSERT(ref, link != NULL && !IS_ERR(link)); REFASSERT(ref, link->ll_ref == ref); REFASSERT(ref, lu_ref_link_eq(link, scope, source0)); link->ll_source = source1; @@ -272,8 +273,8 @@ void lu_ref_set_at(struct lu_ref *ref, struct lu_ref_link *link, void lu_ref_del_at(struct lu_ref *ref, struct lu_ref_link *link, const char *scope, const void *source) { - REFASSERT(ref, link != NULL && !IS_ERR(link)); spin_lock(&ref->lf_guard); + REFASSERT(ref, link != NULL && !IS_ERR(link)); REFASSERT(ref, link->ll_ref == ref); REFASSERT(ref, lu_ref_link_eq(link, scope, source)); list_del(&link->ll_linkage);