[Ocfs2-tools-devel] [PATCH 0/39] ocfs2-tools: Support for userspace cluster stacks

Joel Becker joel.becker at oracle.com
Fri Mar 14 16:52:23 PDT 2008


These patches allow ocfs2 to use the distributed lock manager in fs/dlm
in conjunction with a userspace cluster stack.

This series is the tools portion of the changes.  Using the new
ocfs2_stack_user plug-in requires knowing how to load the plug-in and
provides a daemon to interact with the cman cluster stack.  The changes
fall into four sections.  First, we reconfigure the tools code to handle
the changed kernel module set.  This includes allowing compiled-in
drivers for the first time.  Second, the ocfs2 control daemon
(ocfs2_controld) is created.  The daemon handles all interaction between
the filesystem and the userspace cluster stack.  Third, the interface
to the ocfs2_control misc device is defined.  ocfs2_controld sends
events to the filesystem via this interface.  Finally, the control
daemons on each node learn to negotiate compatiblity, allowing for
rolling upgrades.

[Refactor tools for the new plug-in set]
      o2cb: Ignore files in cluster directory.
      o2cb.init: Eliminate the single-path load_actions scheme.
      umount.ocfs2: Add umount.ocfs2 to pair mount.ocfs2
      o2cb: change the heartbeat API
      o2cb.init: Store the configured stack name.
      libo2cb: Create operation structures for the cluster stack.
      o2cb.init: Manage stack plugins
      o2cb.init: Bring a userspace cluster online.

[Create the control daemon]
      configure: Check for libcman and cpg.
      libo2cb: Add the client protocol files.
      ocfs2_controld: Add the test client
      ocfs2_controld: Add the main loop file.
      ocfs2_controld: Add cman membership code.
      ocfs2_controld: Steal a better client loop
      ocfs2_controld: add CPG skeleton
      ocfs2_controld: Smarter client allocation code.
      ocfs2_controld: Add mountgroups and mount client communication.
      ocfs2_controld: some group handling
      ocfs2_controld: Join a group on filesystem mount.
      ocfs2_controld: Leave groups
      ocfs2_controld.cman: Provide a callback when the daemon group is joined
      ocfs2_controld.cman: Prefix group names with 'ocfs2:'
      ocfs2_controld.cman: Validate current stack
      libo2cb: Provide the controld group operations.
      o2cb client: Add the query messages
      o2cb: o2cb_list_clusters() for user stacks.
      o2cb: Introduce the cluster info struct.
      mkfs.ocfs2: Add the cluster stack options.
      libo2cb: Build client_proto unconditionally
      mount.ocfs2: Pass the cluster_stack= option for user stacks.

[Add the ocfs2_control misc device]
      ocfs2_control: Add udev configuration for the ocfs2_control device.
      libo2cb: Add the API to open and close the ocfs2_control device.
      o2cb: Provide the o2cb_control_node_down() API.
      libo2cb: Teach the control device handshake about the protocol version

[Negotiate compatibility among control daemons]
      ocfs2_controld: Pass the locking version to ocfs2_control_open()
      ocfs2_controld: Add the startup/shutdown code for ckpt
      ocfs2_controld: Open and close checkpoints
      ocfs2_controld: read and write ckpt sections
      ocfs2_controld: Integrate ckpt with the daemon


The tools code is available via git, in the 'stack-user' branch of the
ocfs2-tools git repository.

View:
http://oss.oracle.com/git/?p=ocfs2-tools.git;a=shortlog;h=stack-user
Pull:
git pull git://oss.oracle.com/git/ocfs2-tools.git stack-user

The kernel code is also available on the 'stack-user' branch of my git
repository.  It is also in the main ocfs2.git repository.

View:
http://oss.oracle.com/git/?p=jlbec/linux-2.6.git;a=shortlog;h=stack-user
Pull:
git pull git://oss.oracle.com/git/jlbec/linux-2.6.git stack-user




More information about the Ocfs2-tools-devel mailing list