+++ This bug was initially created as a clone of Bug #178024 +++
Description of problem:
In order to detect deadlocks, it might be a good thing to be able to query the
underlying cluster locking system for the holder of an exclusive lock so that we
can detect deadlock easily.
This should not break existing application APIs on RHEL4 or STABLE branches, and
newer applications which understand the extension *must* be able to function
Given the above requirements, and the fact that node IDs are 64 bit in magma
(thus, simply casting the return pointer is not going to work on 32-bit
architectures), the easiest way to do this is to:
(a) Provide a new flag to clu_lock / cp_lock APIs which gets passed down to the
(b) Failure code from the lock functions, and store the node ID in the first 64
bits of the return pointer block (which the plugin will allocate).
(c) The caller will be expected to free this, as the caller should be expecting
it if it is using the new flag in (a).
NOTE: In future (e.g. HEAD) branches, the locking API should be changed to have
a uint64_t * pointer parameter (possibly with a new lock function call - which
need not necessarily be implemented by the plugin(s)) instead of the above hack.
Fixes in CVS head / RHEL4 / STABLE
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on the solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.