Losing LVB contents due to "false positive"

"Cahill, Ben M" <[email protected]> Fri, 4 Jun 2004 14:21:32 -0700
Newsgroups gmane.comp.file-systems.opengfs.devel
Message-ID <0604335B7764D141945E20215310596002299DF4@orsmsx404.amr.corp.intel.com>
Hi all,

I've been looking into how OpenGFS uses Lock Value Blocks (LVBs), as
part of the effort towards getting lock/journal recovery working
properly with OpenDLM lock module.

IIRC, the OpenDLM lock recovery can zero-out LVB contents if it thinks
that the LVB's associated lock *might have been* held in an EX or PW
mode by a node that died.  That is, if another (live) node does not own
an EX or PW lock that would have prevented the dead node from owning EX
or PW, OpenDLM takes the conservative approach and zeroes out the LVB,
under the assumption that the dead node might have altered the LVB.

First of all, do I understand this correctly??

If so, this has the potential to destroy LVB data that might still be
valid (but OpenDLM can't prove that it is) ... a "false positive"
detection of corrupt LVB data.

OpenGFS uses LVB data for 2 purposes:

1) quick exchange of block usage statistics for stat calls
2) inter-node POSIX locks

In the first purpose, the data is duplicated on-disk, so it's easy to
replace if OpenGFS notices that the LVB is all-zeroes.

In the second, however, there is no persistent storage of the POSIX
locks outside of the LVBs, so the data is impossible to replace.  This
seems like a problem.

Does anyone out there have any insight??  Is this a real problem (do
other folks rely on LVBs as the only persistent inter-node shared
storage of critical information)??  If so, any thoughts as to how to
solve it??

Thanks ... have a great weekend!

-- Ben --

Opinions are mine, not Intel's


-------------------------------------------------------
This SF.Net email is sponsored by the new InstallShield X.
From Windows to Linux, servers to mobile, InstallShield X is the one
installation-authoring solution that does it all. Learn more and
evaluate today! http://www.installshield.com/Dev2Dev/0504