RE: [Opendlm-devel] Re: [ogfs-dev]False notification for recovery

"Cahill, Ben M" <[email protected]> Tue, 2 Mar 2004 13:50:31 -0800
Newsgroups gmane.comp.file-systems.opengfs.devel
Message-ID <[email protected]>
Thanks, Stan,

This looks like good stuff.

Unfortunately, I did not get to it until late in the day, and need to =
stop for now, but perhaps you can fix the following problem:

	dlm_scnop() is not compiled into any of the kernel modules

2 options:

1).  Get it to build into one of the kernel modules.

2).  Use same techniques to set/read the LVB that you do elsewhere in =
the ODLM/OGFS lock module.  If it's not too much trouble, I like this =
approach better, but that's just one man's opinion.

-- Ben --

Opinions are mine, not Intel's

> -----Original Message-----
> From: [email protected]=20
> [mailto:[email protected]] On Behalf=20
> Of Stanley Wang
> Sent: Tuesday, March 02, 2004 11:10 AM
> To: [email protected]
> Cc: [email protected]
> Subject: [Opendlm-devel] Re: [ogfs-dev]False notification for recovery
>=20
> First of all, thanks for Ben's help to debug the deadman lock module.
>=20
> I've checked the bug fixes into the CVS.(Since I've no=20
> machines to test it, I=20
> don't run it really. But Ben will help me to test it. And I=20
> will try to build=20
> my own test environment ASAP.)
>=20
> Some explaination about my fixes:
>=20
> 1. Seperate "mount lock" and deadman lock.
> Every node should grab the "mount lock" first, and then try=20
> to initialize the=20
> deadman lock. After initialized deadman lock, the node knew=20
> if it is the first=20
> node to mount the OGFS. If it is not the first one, it=20
> release "mount lock"=20
> before return. If it is, "mount lock" would be released in=20
> other_may_mount which is invoked by the client(OGFS).
>=20
> 2. Using SCN to avoid false notification of recovery.
>=20
> I define three states for each deadman lock:
>=20
> 	DEADMAN_FIRST	- last holder of this lock is the first=20
> node that mount=20
> 			OGFS. The first node sets SCN to this=20
> value after it=20
> 			gets others' deadman lock=20
> 	DEADMAN_MOUNT	- last holder of this lock is the right=20
> owner. A node=20
> 			sets SCN to this value after it grabs=20
> its own deadman=20
> 			lock.
> 	DEADMAN_UMOUNT	- OGFS is un-mounted gracefully before=20
> this lock is=20
> 			released. A node sets SCN the this=20
> value when it=20
> 			un-mounts the OGFS.
>=20
> more desciption: As you know, each node queues a CR mode lock=20
> on each of other=20
> node, and if anyone other node dies, the CR lock will be=20
> granted and the node=20
> gets notified by lock AST. In AST, the SCN of this lock is=20
> checked. If the SCN=20
> is DEADMAN_UMOUNT, it means that a node un-mounted OGFS, and=20
> recoverying is not=20
> needed. If the SCN is DEADMAN_MOUNT, it means a node die=20
> before it un-mount the=20
> OGFS, recoverying is needed. And DEADMAN_FIRST only will be=20
> seen in the=20
> initializing process, it means that the right owner of the=20
> this lock requested=20
> this lock, recoverying work is not needed.
>=20
> 3. Avoid useless granting deadman lock=20
>=20
> After the first node grabs EX lock on all deadman locks, if a=20
> sequent node tries=20
> to queue CR lock on other's(execpt the first node) deadman=20
> lock, a BAST is=20
> triggered on the first node. In the original implementation,=20
> the CR lock will be=20
> granted. This behavior increasess overhead of deadman lock.=20
> And now, the=20
> requested lock state is also checked in the BAST, if it is=20
> not EX mode, this=20
> request is ignored.
>=20
> More detailed information, please read the codes.
>=20
> Any comments?
>=20
> Best Regards,
> Stan
>=20
> On Mon, 1 Mar 2004, Cahill, Ben M wrote:
>=20
> > Stan and I were chatting about the excess recovery=20
> notifications that we
> > get from the current ODLM lock module.  These happen with=20
> the current
> > deadman lock design when a client (filesystem) mounts or unmounts on
> > another node.
> >=20
> > Without going into detail ... I'm wondering if we can use the *lock
> > value blocks* of the deadman locks to communicate whether:
> >=20
> > 1)  A client has cleanly unmounted (no recovery needed)
> >=20
> > 2)  A new client has mounted (no recovery needed after=20
> first-to-mount)
> >=20
> > 3)  A node died (recovery needed)
> >=20
> > -- Ben --
> >=20
> > Opinions are mine, not Intel's
> >=20
> >=20
> > -------------------------------------------------------
> > SF.Net is sponsored by: Speed Start Your Linux Apps Now.
> > Build and deploy apps & Web services for Linux with
> > a free DVD software kit from IBM. Click Now!
> > http://ads.osdn.com/?ad_id=1356&alloc_id438&op=CCk
> > _______________________________________________
> > Opengfs-devel mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/opengfs-devel
> >=20
>=20
> --=20
> Opinions expressed are those of the author and do not represent Intel
> Corporation
>=20
>=20
>=20
>=20
> -------------------------------------------------------
> SF.Net is sponsored by: Speed Start Your Linux Apps Now.
> Build and deploy apps & Web services for Linux with
> a free DVD software kit from IBM. Click Now!
> http://ads.osdn.com/?ad_id=1356&alloc_id438&op=3Dick
> _______________________________________________
> Opendlm-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/opendlm-devel
>=20


-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click