void l_unlock(struct lustre_lock *lock)
{
- LASSERT(lock->l_owner == current);
- LASSERT(lock->l_depth >= 0);
-
+ LASSERTF(lock->l_owner == current, "lock %p, current %p\n",
+ lock->l_owner, current);
+ LASSERTF(lock->l_depth >= 0, "depth %d\n", lock->l_depth);
spin_lock(&lock->l_spin);
if (--lock->l_depth < 0) {
lock->l_owner = NULL;
#include <linux/lustre_version.h>
void l_check_no_ns_lock(struct ldlm_namespace *ns)
{
- static long next_msg;
+ static unsigned long next_msg;
if (l_has_lock(&ns->ns_lock) && time_after(jiffies, next_msg)) {
- CERROR("namespace %s lock held during RPCs; tell phil\n",
+ CERROR("namespace %s lock held illegally; tell phil\n",
ns->ns_name);
-#if (LUSTRE_KERNEL_VERSION >= 30)
- CERROR(portals_debug_dumpstack());
-#endif
+ portals_debug_dumpstack(NULL);
next_msg = jiffies + 60 * HZ;
}
}
#else
void l_check_no_ns_lock(struct ldlm_namespace *ns)
{
-#warning "FIXME: check lock in user space??"
+ if (l_has_lock(&ns->ns_lock)) {
+ CERROR("namespace %s lock held illegally; tell phil\n",
+ ns->ns_name);
+ }
}
#endif /* __KERNEL__ */