Whamcloud - gitweb
- landing of b_hd_cleanup_merge to HEAD.
[fs/lustre-release.git] / lustre / obdfilter / filter_lvb.c
index 599eeab..aa9a88b 100644 (file)
@@ -36,6 +36,7 @@
 
 #include "filter_internal.h"
 
+/* Called with res->lr_lvb_sem held */
 static int filter_lvbo_init(struct ldlm_resource *res)
 {
         int rc = 0;
@@ -46,13 +47,13 @@ static int filter_lvbo_init(struct ldlm_resource *res)
         ENTRY;
 
         LASSERT(res);
+        LASSERT(down_trylock(&res->lr_lvb_sem) != 0);
 
         /* we only want lvb's for object resources */
         /* check for internal locks: these have name[1] != 0 */
         if (res->lr_name.name[1])
                 RETURN(0);
 
-        down(&res->lr_lvb_sem);
         if (res->lr_lvb_data)
                 GOTO(out, rc = 0);
 
@@ -96,7 +97,6 @@ static int filter_lvbo_init(struct ldlm_resource *res)
         if (oa)
                 obdo_free(oa);
         /* Don't free lvb data on lookup error */
-        up(&res->lr_lvb_sem);
         return rc;
 }