RE: RE: [Opendlm-devel] ODLM/OGFS Recovery
"Zickus II, Don" <[email protected]> Mon, 26 Apr 2004 17:50:24 -0400
| Newsgroups | gmane.comp.file-systems.opengfs.devel |
|---|---|
| Message-ID | <[email protected]> |
Comments below. >=20 > >=20 > > >CA uses the DLM_VALNOTVALID invalid LVB status as a=20 > possible earlier=20 > > >indicator. I haven't convinced myself that that is early=20 > enough, or=20 > > >conclusive enough (discussion was in the attachment, "false=20 > > >positive/negative"), to serve as the trigger for withholding > > locks from > > >OGFS (but it might be, and I might not understand it well=20 > enough!).=20 > > >Plus, it forces us to use LVBs with every lock (maybe not a huge=20 > > >problem, but nice to avoid if possible). And, it prevents > > us from using > > >the LKM_INVVALBLK flag! (but I don't think there's a need > > to, so not a > > >problem). > > > > > > =20 > > > > > Using DLM_VALNOTVALID will cause much trouble for us. > > 1. When you try to lock a new resource with (lock_mode < PW + > > LKM_VALBLK), you will get DLM_VALNOTVALID. >=20 > Can you confirm statement #1? If it's true, then I don't=20 > understand how CA can use DLM_VALNOTVALID as a recovery indicator. >=20 I am going to disagree with that statement. We use NL locks all the = time (as place holders), and this problem is never seen. What is = supposed to happen is during a purge process (when a client, a resource, = or a node disappears), the resource is invalidated if a purging lock had = mode >=3D PW. Now normally the lock is downgraded to NL (internally by = OpenDLM) before being purged to prevent the invalidation. But if for = some reason it can not (ie a node dies), then the invalidation happens. = Now during the recovery process a new master is selected for the = resource with the invalid bit set. This bit will cause the = DLM_VALNOTVALID code to be returned to the next granted lock (regardless = of lock_mode I believe). If the scenario happens such that a = 'surviving' node has a granted lock >=3DPW (before the recovery process) = then you should NOT see the DLM_VALNOTVALID bit set and everything = should function normally. In this case you wait for the deadman locks = to trigger to signal the client a node has disappeared. =20 > > 2. We can't invalidate LVB any more. >=20 > Re: #2, that's been troubling me also, although I don't think=20 > we use that feature for OGFS, do we? >=20 > In any case, it seems to me that use of the DLM_VALNOTVALID=20 > is kind of "work-aroundish". That is, it's a somewhat=20 > indirect indication that the lock recovery is happening, and=20 > subject to some uncertainty, and/or LVB usage restrictions=20 > (i.e. can't use LKM_INVVALBLK) and requirements (i.e. must=20 > use an LVB for every lock). >=20 The VMS design and implementation has been around for ~30 years, I doubt = the DLM_VALNOTVALID code is work-aroundish. :) In fact our application = has been using VMS clustering and the DLM_VALNOTVALID methodology for = roughly the same time frame without any issues. And senior DB engineers = here say using the LVB for every lock is common in the industry. Not = that I am disagreeing with you, I am trying to point out that this = methodology seems to work and should be given the benefit of the doubt = and we would have to frown upon any changes in this area (especially = since this would cause our client code to have to be recompiled during a = time of a code freeze over here). ;)=20 > How about a DLM_RECOVER status bit that would get set=20 > whenever a lock was granted as part of the ODLM lock recovery=20 > process?? That would be conclusive, and would not restrict=20 > the use of the LVB. I think it would be pretty easy to=20 > implement ... Just look at some recovery global state machine=20 > variables when granting the lock, and set the status flag=20 > appropriately. >=20 >=20 > >=20 > > And since deadman lock will be granted before all new lock requests > > (issued after node down event), I think use deadman lock as the=20 > > notification is early enough. >=20 > But that doesn't keep any of the locks that were blocked by=20 > the dead node from being granted to other nodes, during the=20 > lock recovery process. There could be many locks waiting,=20 > requested before the node down event, to be granted! =20 > Allowing grants on these could allow other nodes to write to=20 > areas that they shouldn't (i.e. the areas that the dead node=20 > was writing). That's the whole purpose of the (fake)=20 > persistence of the dead node's EX locks. >=20 That's not necessarily true. If you use the LVB in combination with = DLM_VALNOTVALID return code, you should be fine. =20 > > And we needn't care about > > orphan lock any=20 > > more. >=20 > Agreed. Orphan locks are not going to help OGFS. Thank you. I was getting nervous admist all the ideas you had for = orphan locks. Not that we would have protested (as we don't use them) = but orphan locks touch a lot of code internally. =20 Regards, Don >=20 > -- Ben -- >=20 > Opinions are mine, not Intel's >=20 >=20 > ------------------------------------------------------- > This SF.net email is sponsored by: The Robotic Monkeys at=20 > ThinkGeek For a limited time only, get FREE Ground shipping=20 > on all orders of $35 or more. Hurry up and shop folks, this=20 > offer expires April 30th!=20 > http://www.thinkgeek.com/freeshipping/?cpg=12297 >=20 > _______________________________________________ > Opendlm-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/opendlm-devel >=20 >=20 ------------------------------------------------------- This SF.net email is sponsored by: The Robotic Monkeys at ThinkGeek For a limited time only, get FREE Ground shipping on all orders of $35 or more. Hurry up and shop folks, this offer expires April 30th! http://www.thinkgeek.com/freeshipping/?cpg=12297