Whamcloud - gitweb
Branch b1_8_gate
authorjohann <johann>
Tue, 7 Oct 2008 15:04:40 +0000 (15:04 +0000)
committerjohann <johann>
Tue, 7 Oct 2008 15:04:40 +0000 (15:04 +0000)
b=17026
i=shadow
i=oleg

Description: (ptllnd_peer.c:557:kptllnd_peer_check_sends()) ASSERTION(!in_interrupt()) failed
Details: fix stack overflow in the distributed lock manager by defering export
         eviction after a failed ast to the elt thread instead of handling
         it in the dlm interpret routine.

lustre/ldlm/ldlm_lockd.c

index e3704b8..60a7549 100644 (file)
@@ -465,7 +465,14 @@ static void ldlm_failed_ast(struct ldlm_lock *lock, int rc,
 
         if (obd_dump_on_timeout)
                 libcfs_debug_dumplog();
+#ifdef __KERNEL__
+        spin_lock_bh(&waiting_locks_spinlock);
+        list_add(&lock->l_pending_chain, &expired_lock_thread.elt_expired_locks);
+        cfs_waitq_signal(&expired_lock_thread.elt_waitq);
+        spin_unlock_bh(&waiting_locks_spinlock);
+#else
         class_fail_export(lock->l_export);
+#endif
 }
 
 static int ldlm_handle_ast_error(struct ldlm_lock *lock,