Whamcloud - gitweb
ldlm_handle_convert was putting the lock immediately onto the conversion queue and
authorpschwan <pschwan>
Tue, 3 Sep 2002 21:15:19 +0000 (21:15 +0000)
committerpschwan <pschwan>
Tue, 3 Sep 2002 21:15:19 +0000 (21:15 +0000)
then returning with flags=0, instead of flags=LDLM_FL_BLOCK_CONV.  Thus, the client
believed that the conversion had succeeded immediately, marked the lock accordingly,
and continued on its merry way, even if it didn't actually have the lock.

lustre/ldlm/ldlm_lock.c

index facceee..900decb 100644 (file)
@@ -819,8 +819,12 @@ struct ldlm_resource *ldlm_lock_convert(struct ldlm_lock *lock, int new_mode,
                         if (lock->l_completion_ast)
                                 lock->l_completion_ast(lock, 0);
                 }
-        } else
+        } else {
+                /* FIXME: We should try the conversion right away and possibly
+                 * return success without the need for an extra AST */
                 list_add_tail(&lock->l_res_link, &res->lr_converting);
+                *flags |= LDLM_FL_BLOCK_CONV;
+        }
 
         l_unlock(&ns->ns_lock);