 fff9289b21
			
		
	
	
	fff9289b21
	
	
	
		
			
			This patch fixes typos in various Documentation txts. This patch addresses some words starting with the letters 'D'-'E'. Signed-off-by: Matt LaPlante <kernel1@cyberdogtech.com> Signed-off-by: Adrian Bunk <bunk@stusta.de>
		
			
				
	
	
		
			130 lines
		
	
	
	
		
			4.2 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
	
		
			4.2 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
| dlmfs
 | |
| ==================
 | |
| A minimal DLM userspace interface implemented via a virtual file
 | |
| system.
 | |
| 
 | |
| dlmfs is built with OCFS2 as it requires most of its infrastructure.
 | |
| 
 | |
| Project web page:    http://oss.oracle.com/projects/ocfs2
 | |
| Tools web page:      http://oss.oracle.com/projects/ocfs2-tools
 | |
| OCFS2 mailing lists: http://oss.oracle.com/projects/ocfs2/mailman/
 | |
| 
 | |
| All code copyright 2005 Oracle except when otherwise noted.
 | |
| 
 | |
| CREDITS
 | |
| =======
 | |
| 
 | |
| Some code taken from ramfs which is Copyright (C) 2000 Linus Torvalds
 | |
| and Transmeta Corp.
 | |
| 
 | |
| Mark Fasheh <mark.fasheh@oracle.com>
 | |
| 
 | |
| Caveats
 | |
| =======
 | |
| - Right now it only works with the OCFS2 DLM, though support for other
 | |
|   DLM implementations should not be a major issue.
 | |
| 
 | |
| Mount options
 | |
| =============
 | |
| None
 | |
| 
 | |
| Usage
 | |
| =====
 | |
| 
 | |
| If you're just interested in OCFS2, then please see ocfs2.txt. The
 | |
| rest of this document will be geared towards those who want to use
 | |
| dlmfs for easy to setup and easy to use clustered locking in
 | |
| userspace.
 | |
| 
 | |
| Setup
 | |
| =====
 | |
| 
 | |
| dlmfs requires that the OCFS2 cluster infrastructure be in
 | |
| place. Please download ocfs2-tools from the above url and configure a
 | |
| cluster.
 | |
| 
 | |
| You'll want to start heartbeating on a volume which all the nodes in
 | |
| your lockspace can access. The easiest way to do this is via
 | |
| ocfs2_hb_ctl (distributed with ocfs2-tools). Right now it requires
 | |
| that an OCFS2 file system be in place so that it can automatically
 | |
| find it's heartbeat area, though it will eventually support heartbeat
 | |
| against raw disks.
 | |
| 
 | |
| Please see the ocfs2_hb_ctl and mkfs.ocfs2 manual pages distributed
 | |
| with ocfs2-tools.
 | |
| 
 | |
| Once you're heartbeating, DLM lock 'domains' can be easily created /
 | |
| destroyed and locks within them accessed.
 | |
| 
 | |
| Locking
 | |
| =======
 | |
| 
 | |
| Users may access dlmfs via standard file system calls, or they can use
 | |
| 'libo2dlm' (distributed with ocfs2-tools) which abstracts the file
 | |
| system calls and presents a more traditional locking api.
 | |
| 
 | |
| dlmfs handles lock caching automatically for the user, so a lock
 | |
| request for an already acquired lock will not generate another DLM
 | |
| call. Userspace programs are assumed to handle their own local
 | |
| locking.
 | |
| 
 | |
| Two levels of locks are supported - Shared Read, and Exclusive.
 | |
| Also supported is a Trylock operation.
 | |
| 
 | |
| For information on the libo2dlm interface, please see o2dlm.h,
 | |
| distributed with ocfs2-tools.
 | |
| 
 | |
| Lock value blocks can be read and written to a resource via read(2)
 | |
| and write(2) against the fd obtained via your open(2) call. The
 | |
| maximum currently supported LVB length is 64 bytes (though that is an
 | |
| OCFS2 DLM limitation). Through this mechanism, users of dlmfs can share
 | |
| small amounts of data amongst their nodes.
 | |
| 
 | |
| mkdir(2) signals dlmfs to join a domain (which will have the same name
 | |
| as the resulting directory)
 | |
| 
 | |
| rmdir(2) signals dlmfs to leave the domain
 | |
| 
 | |
| Locks for a given domain are represented by regular inodes inside the
 | |
| domain directory.  Locking against them is done via the open(2) system
 | |
| call.
 | |
| 
 | |
| The open(2) call will not return until your lock has been granted or
 | |
| an error has occurred, unless it has been instructed to do a trylock
 | |
| operation. If the lock succeeds, you'll get an fd.
 | |
| 
 | |
| open(2) with O_CREAT to ensure the resource inode is created - dlmfs does
 | |
| not automatically create inodes for existing lock resources.
 | |
| 
 | |
| Open Flag     Lock Request Type
 | |
| ---------     -----------------
 | |
| O_RDONLY      Shared Read
 | |
| O_RDWR        Exclusive
 | |
| 
 | |
| Open Flag     Resulting Locking Behavior
 | |
| ---------     --------------------------
 | |
| O_NONBLOCK    Trylock operation
 | |
| 
 | |
| You must provide exactly one of O_RDONLY or O_RDWR.
 | |
| 
 | |
| If O_NONBLOCK is also provided and the trylock operation was valid but
 | |
| could not lock the resource then open(2) will return ETXTBUSY.
 | |
| 
 | |
| close(2) drops the lock associated with your fd.
 | |
| 
 | |
| Modes passed to mkdir(2) or open(2) are adhered to locally. Chown is
 | |
| supported locally as well. This means you can use them to restrict
 | |
| access to the resources via dlmfs on your local node only.
 | |
| 
 | |
| The resource LVB may be read from the fd in either Shared Read or
 | |
| Exclusive modes via the read(2) system call. It can be written via
 | |
| write(2) only when open in Exclusive mode.
 | |
| 
 | |
| Once written, an LVB will be visible to other nodes who obtain Read
 | |
| Only or higher level locks on the resource.
 | |
| 
 | |
| See Also
 | |
| ========
 | |
| http://opendlm.sourceforge.net/cvsmirror/opendlm/docs/dlmbook_final.pdf
 | |
| 
 | |
| For more information on the VMS distributed locking API.
 |