Bug#455978: build clvm daemon and package

Scott James Remnant scott at ubuntu.com
Wed Dec 12 18:46:38 UTC 2007


Package: lvm2
Version: 2.02.26-1
Severity: wishlist
Tags: patch

We are currently carrying a patch to build the clvm daemon and place it
in an extra clvm package, for use with the RedHat "cman" cluster
infrastuture.

Please consider applying the same patch to reduce our diff, or
explain why we shouldn't be applying this patch.

Thanks

-- System Information:
Debian Release: lenny/sid
  APT prefers gutsy-updates
  APT policy: (500, 'gutsy-updates'), (500, 'gutsy-security'), (500, 'gutsy')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.22-14-generic (SMP w/2 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
-------------- next part --------------
--- lvm2-2.02.26/debian/control
+++ lvm2-2.02.26/debian/control
@@ -35,0 +36,9 @@
+Package: clvm
+Section: admin
+Priority: extra
+Architecture: any
+Depends: ${shlibs:Depends}, lvm2 (>> 2.0.23), cman
+Description: Cluster LVM Daemon for lvm2
+ This package provides the clustering interface for lvm2, when used with 
+ Red Hat's "cman" cluster infrastructure. It allows logical volumes to
+ be created on shared storage devices (eg Fibre Channel, or iSCSI). 
--- lvm2-2.02.26/debian/rules
+++ lvm2-2.02.26/debian/rules
@@ -28,7 +28,7 @@
 
 BUILD_DIR = debian/build
 
-PACKAGES_DEB = lvm2
+PACKAGES_DEB = lvm2 clvm
 PACKAGES_UDEB = lvm2-udeb
 
 $(BUILD_DIR)/build-deb/config.status: DIR = $(BUILD_DIR)/build-deb
@@ -41,8 +41,9 @@
 	cp --remove-destination /usr/share/misc/config.sub /usr/share/misc/config.guess $(DIR)/autoconf
 	cd $(DIR); \
 	./configure CFLAGS="$(CFLAGS)" $(CONFIGURE_FLAGS) \
-		--with-cluster=none \
+		--with-cluster=shared \
+		--with-clvmd=cman \
 		--enable-readline
 
 $(BUILD_DIR)/build-udeb/config.status: DIR = $(BUILD_DIR)/build-udeb
 $(BUILD_DIR)/build-udeb/config.status:
@@ -130,6 +134,7 @@
 #	dh_installpam -a
 #	dh_installmime -a
 	dh_installinit -plvm2 --no-start -- start 26 S . start 50 0 6 .
+	dh_installinit -p clvm --no-restart-on-upgrade -- start 65 S . start 3 0 6 .
 #	dh_installcron -a
 #	dh_installman -a
 #	dh_installinfo -a
--- lvm2-2.02.26.orig/debian/clvm.default
+++ lvm2-2.02.26/debian/clvm.default
@@ -0,0 +1,3 @@
+# Specify how many seconds the init script should wait
+# for other nodes of the cluster to join before giving up.
+# CLVMDTIMEOUT=60
--- lvm2-2.02.26.orig/debian/clvm.init
+++ lvm2-2.02.26/debian/clvm.init
@@ -0,0 +1,72 @@
+#! /bin/sh
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/sbin/clvmd
+NAME=clvmd
+DESC="Cluster LVM Daemon"
+
+test -x $DAEMON || exit 0
+
+if [ -f /etc/default/clvm ] ; then
+	. /etc/default/clvm
+fi
+
+[ -n "$CLVMDTIMEOUT" ] || CLVMDTIMEOUT=60
+
+if [ ! -f /etc/cluster/cluster.conf ]; then
+	echo "clvmd: cluster not configured. Aborting."
+	exit 0
+fi
+
+if ! cman_tool status >/dev/null; then
+	echo "clvmd: cluster is not running. Aborting."
+	exit 0
+fi
+
+set -e
+
+wait_for_nodes() {
+	vgscan > /dev/null 2>&1
+	wait=0
+	while [ -n "$(vgchange -a y 2>&1 |grep "clvmd not running")" ]; do
+		if [ $wait -lt $CLVMDTIMEOUT ]; then
+			echo "clvmd: Waiting for other nodes to join the cluster.."
+			sleep 3
+			wait=$(($wait + 3))
+		else
+			echo "failed."
+			exit 1
+		fi
+	done
+	echo "done."
+	exit 0
+}
+
+case "$1" in
+  start)
+	echo -n "Starting $DESC "
+	if start-stop-daemon --start --quiet --exec $DAEMON -- $DAEMON_OPTS; then
+		wait_for_nodes
+	fi
+	;;
+  stop)
+	echo -n "Stopping $DESC "
+	start-stop-daemon --stop --oknodo --quiet --exec $DAEMON
+	echo "done."
+	;;
+  reload|restart|force-reload)
+	echo -n "Restarting $DESC "
+	start-stop-daemon --stop --oknodo --quiet --exec $DAEMON
+	sleep 1
+	if start-stop-daemon --start --oknodo --quiet --exec $DAEMON -- $DAEMON_OPTS; then
+		wait_for_nodes
+	fi
+	;;
+  *)
+	N=/etc/init.d/$NAME
+	echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+	exit 1
+	;;
+esac
+
+exit 0


More information about the pkg-lvm-maintainers mailing list