Whamcloud - gitweb
LU-12616 obclass: fix MDS start/stop race
[fs/lustre-release.git] / lustre / ldlm / ldlm_extent.c
index 82e13ef..9e046c9 100644 (file)
@@ -965,7 +965,7 @@ __u64 ldlm_extent_shift_kms(struct ldlm_lock *lock, __u64 old_kms)
 EXPORT_SYMBOL(ldlm_extent_shift_kms);
 
 struct kmem_cache *ldlm_interval_slab;
-struct ldlm_interval *ldlm_interval_alloc(struct ldlm_lock *lock)
+static struct ldlm_interval *ldlm_interval_alloc(struct ldlm_lock *lock)
 {
        struct ldlm_interval *node;
        ENTRY;
@@ -1020,12 +1020,19 @@ static inline int ldlm_mode_to_index(enum ldlm_mode mode)
 
        LASSERT(mode != 0);
        LASSERT(is_power_of_2(mode));
-       for (index = -1; mode != 0; index++, mode >>= 1)
-               /* do nothing */;
+       index = ilog2(mode);
        LASSERT(index < LCK_MODE_NUM);
        return index;
 }
 
+int ldlm_extent_alloc_lock(struct ldlm_lock *lock)
+{
+       lock->l_tree_node = NULL;
+       if (ldlm_interval_alloc(lock) == NULL)
+               return -ENOMEM;
+       return 0;
+}
+
 /** Add newly granted lock into interval tree for the resource. */
 void ldlm_extent_add_lock(struct ldlm_resource *res,
                           struct ldlm_lock *lock)