Whamcloud - gitweb
The pinger was deadlocking on itself, in some rare and improbably but
authorphil <phil>
Mon, 13 Oct 2003 22:31:02 +0000 (22:31 +0000)
committerphil <phil>
Mon, 13 Oct 2003 22:31:02 +0000 (22:31 +0000)
commit1217bde96ab9949d28a854c7600f13967f0cb44d
treed5e838c97eec3b8a445cadfac448dbd642725a45
parent53bbfe18aefb2ab3e6738e50718dd31a25b4eddf
The pinger was deadlocking on itself, in some rare and improbably but
very real cases, so I reworked it to be simpler.

It's started once from ptlrpc_init now, and stopped once from ptlrpc_exit

Adding and deleting imports no longer causes the thread to be created
and go away.  Most importantly, we no longer hold the sem in
stop_pinger across the wake_up and subsequent l_wait_event; if the
pinger thread was already doing something, blocked on the pinger_sem,
it would never wake up and deadlock would ensue.
lustre/ptlrpc/ptlrpc_internal.h
lustre/ptlrpc/ptlrpc_module.c