[Cluster-devel] libdlm dlm_ls_lock_wait() doesn't.
David Teigland
teigland at redhat.com
Thu Mar 20 14:39:02 UTC 2008
On Wed, Mar 19, 2008 at 03:35:11PM -0700, Joel Becker wrote:
> Folks,
> Another problem I've run into with libdlm - call
> dlm_ls_lock_wait() on a lock that another node holds, and it returns
> instead of blocking. This is not a trylock (LKF_NOQUEUE). Trylocks
> work as expected. A blocking lock attempt does not block, it just
> fails. I haven't had the time to nail it yet, so if you get there
> first, excellent.
I've tested both threaded and non-threaded dlm_ls_lock_wait() and they
seem to work for me. A mistake that I got hung up on for a while was that
a non-threaded program must link against libdlm_lt, not libdlm.
So, a threaded program needs: -D_REENTRANT -lpthread -ldlm
and a non-threaded program needs: -ldlm_lt
Also, in a threaded program, you need to call dlm_ls_pthread_init(handle);
right after creating the lockspace. I'm not sure what the symptoms would
be if you left out the pthread_init(). The symptoms when I mistakenly
linked my non-threaded program with libdlm were that dlm_ls_lock_wait()
didn't return at all.
More information about the Cluster-devel
mailing list