From 11085e486b4ad1a051fcaca9bc7c5065adf92c0e Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Mon, 15 Jun 2015 09:29:01 +0200 Subject: [PATCH] updates for debian jessie, use systemd --- debian/control | 5 +- .../patches/add-service-start-condition.patch | 12 ++ debian/patches/cleanup-systemd-service.patch | 16 +++ debian/patches/series | 3 + debian/patches/series~ | 3 - debian/patches/set-no-file-limit.patch | 12 ++ debian/pve-sheepdog.sheepdog.default | 5 +- debian/pve-sheepdog.sheepdog.init.d | 132 ------------------ debian/rules | 11 +- debian/sheepdog-start-wrapper | 25 ++++ 10 files changed, 81 insertions(+), 143 deletions(-) create mode 100644 debian/patches/add-service-start-condition.patch create mode 100644 debian/patches/cleanup-systemd-service.patch delete mode 100644 debian/patches/series~ create mode 100644 debian/patches/set-no-file-limit.patch delete mode 100644 debian/pve-sheepdog.sheepdog.init.d create mode 100644 debian/sheepdog-start-wrapper diff --git a/debian/control b/debian/control index 595bdaa..bc03613 100644 --- a/debian/control +++ b/debian/control @@ -13,13 +13,14 @@ Build-Depends: debhelper (>= 7.0.50~), libssl-dev, libfuse-dev, libzookeeper-mt-dev, - yasm + yasm, + dh-systemd (>= 1.4) Standards-Version: 3.8.4 Homepage: http://www.osrg.net/sheepdog/ Package: pve-sheepdog Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} corosync-pve, libzookeeper-mt2 +Depends: ${shlibs:Depends}, ${misc:Depends}, corosync-pve, libzookeeper-mt2, systemd Description: Distributed storage system for KVM/QEMU Sheepdog provides highly available block level storage volumes that can be attached to KVM/QEMU virtual machines. Sheepdog scales to several hundreds diff --git a/debian/patches/add-service-start-condition.patch b/debian/patches/add-service-start-condition.patch new file mode 100644 index 0000000..10859b0 --- /dev/null +++ b/debian/patches/add-service-start-condition.patch @@ -0,0 +1,12 @@ +Index: new/script/sheepdog.service.in +=================================================================== +--- new.orig/script/sheepdog.service.in ++++ new/script/sheepdog.service.in +@@ -2,6 +2,7 @@ + Description=Sheepdog QEMU/KVM Block Storage + After=network.target + Wants=syslog.target ++ConditionFileIsExecutable=/usr/sbin/sheep + + [Service] + EnvironmentFile=-@SYSCONFDIR@/default/sheepdog diff --git a/debian/patches/cleanup-systemd-service.patch b/debian/patches/cleanup-systemd-service.patch new file mode 100644 index 0000000..df5524e --- /dev/null +++ b/debian/patches/cleanup-systemd-service.patch @@ -0,0 +1,16 @@ +Index: new/script/sheepdog.service.in +=================================================================== +--- new.orig/script/sheepdog.service.in ++++ new/script/sheepdog.service.in +@@ -4,10 +4,8 @@ After=network.target + Wants=syslog.target + + [Service] +-EnvironmentFile=-@SYSCONFDIR@/conf.d/sheepdog.conf +-EnvironmentFile=-@SYSCONFDIR@/sysconfig/sheepdog + EnvironmentFile=-@SYSCONFDIR@/default/sheepdog +-ExecStart=/bin/sh -c '@SBINDIR@/sheep --pidfile @LOCALSTATEDIR@/run/sheep.pid $(if [ -z "$SHEEP_OPTS" ]; then echo "--cluster local --log dst=syslog --upgrade @LOCALSTATEDIR@/lib/sheepdog"; else echo $SHEEP_OPTS; fi)' ++ExecStart=/usr/lib/sheepdog/sheepdog-start-wrapper + PIDFile=@LOCALSTATEDIR@/run/sheep.pid + Type=forking + Restart=on-abort diff --git a/debian/patches/series b/debian/patches/series index 938dd07..4d213d4 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,2 +1,5 @@ #do-not-install-generic-init-script.patch simplify-log-rotation.patch +set-no-file-limit.patch +cleanup-systemd-service.patch +add-service-start-condition.patch diff --git a/debian/patches/series~ b/debian/patches/series~ deleted file mode 100644 index 232ee86..0000000 --- a/debian/patches/series~ +++ /dev/null @@ -1,3 +0,0 @@ -disable-test-suite.patch -do-not-install-generic-init.d-script.patch -fix-manual-path.patch diff --git a/debian/patches/set-no-file-limit.patch b/debian/patches/set-no-file-limit.patch new file mode 100644 index 0000000..3424951 --- /dev/null +++ b/debian/patches/set-no-file-limit.patch @@ -0,0 +1,12 @@ +Index: new/script/sheepdog.service.in +=================================================================== +--- new.orig/script/sheepdog.service.in ++++ new/script/sheepdog.service.in +@@ -13,6 +13,7 @@ Type=forking + Restart=on-abort + StartLimitInterval=10s + StartLimitBurst=3 ++LimitNOFILE=infinity + + [Install] + WantedBy=multi-user.target diff --git a/debian/pve-sheepdog.sheepdog.default b/debian/pve-sheepdog.sheepdog.default index f05e4f4..937059f 100644 --- a/debian/pve-sheepdog.sheepdog.default +++ b/debian/pve-sheepdog.sheepdog.default @@ -1,8 +1,5 @@ -# Defaults for pve-sheepdog initscript -# sourced by /etc/init.d/pve-sheepdog +# Defaults for sheepdog service -# start sheepdog at boot [yes|no] -START=yes # sheepdog root directory #ROOTDIR=/var/lib/sheepdog/ #JOURNALSIZE=256M diff --git a/debian/pve-sheepdog.sheepdog.init.d b/debian/pve-sheepdog.sheepdog.init.d deleted file mode 100644 index 349c481..0000000 --- a/debian/pve-sheepdog.sheepdog.init.d +++ /dev/null @@ -1,132 +0,0 @@ -#!/bin/sh -### BEGIN INIT INFO -# Provides: sheepdog -# Required-Start: $network $remote_fs $syslog cman -# Required-Stop: $network $remote_fs $syslog cman -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: Sheepdog server -# Description: Sheepdog server -### END INIT INFO - -# Author: Proxmox Support Team - -# PATH should only include /usr/* if it runs after the mountnfs.sh script -PATH=/sbin:/usr/sbin:/bin:/usr/bin -DESC="Sheepdog Server" # Introduce a short description here -NAME=sheepdog # Introduce the short server's name here -DAEMON=/usr/sbin/sheep # Introduce the server's location here -SCRIPTNAME=/etc/init.d/$NAME -PIDFILE="/var/run/sheep.pid" - -# Exit if the package is not installed -[ -x $DAEMON ] || exit 0 - -ROOTDIR="/var/lib/sheepdog/" -JOURNALSIZE="256M" -DAEMON_ARGS="" - -# Read configuration variable file if it is present -[ -r /etc/default/$NAME ] && . /etc/default/$NAME - -if [ "$START" != "yes" ]; then - exit 0 -fi - -. /lib/lsb/init-functions - -# -# Function that starts the daemon/service -# -do_start() -{ - mkdir -p /var/run - - # Return - # 0 if daemon has been started - # 1 if daemon was already running - # 2 if daemon could not be started - ulimit -n 1024000 #avoid check_host_env(395) WARN: Allowed open files 1024 too small, suggested 1024000 warning message - ulimit -c unlimited #avoid check_host_env(404) Allowed core file size 0, suggested unlimited warning message - DAEMON_ARGS="${DAEMON_ARGS} --pidfile ${PIDFILE}" - DAEMON_ARGS="${DAEMON_ARGS} $ROOTDIR" - - # /path/to/meta-store,/path/to/disk1{,/path/to/disk2,...} - for d in $ROOTDIR/disc* - do - if [ -d "$d" ]; then - DAEMON_ARGS="${DAEMON_ARGS},$d" - fi - done - - if [ -d "$ROOTDIR/journal" ]; then - DAEMON_ARGS="${DAEMON_ARGS} -j dir=$ROOTDIR/journal,size=$JOURNALSIZE" - - fi - status_of_proc -p ${PIDFILE} $DAEMON "$NAME" >/dev/null && continue - start-stop-daemon --start --quiet --pidfile ${PIDFILE} --exec $DAEMON -- $DAEMON_ARGS || return 2 - - return 0 -} - -# -# Function that stops the daemon/service -# -do_stop() -{ - # Return - # 0 if daemon has been stopped - # 1 if daemon was already stopped - # 2 if daemon could not be stopped - # other if a failure occurred - - start-stop-daemon --stop --oknodo --retry=TERM/20/KILL/5 --quiet --pidfile ${PIDFILE} --exec $DAEMON || return 2 -} - -case "$1" in - start) - log_daemon_msg "Starting $DESC " "$NAME" - do_start - case "$?" in - 0|1) log_end_msg 0 ;; - 2) log_end_msg 1 ;; - esac - ;; - stop) - log_daemon_msg "Stopping $DESC" "$NAME" - do_stop - case "$?" in - 0|1) log_end_msg 0 ;; - 2) log_end_msg 1 ;; - esac - - ;; - status) - status_of_proc -p ${PIDFILE} $DAEMON "$NAME ${dir}" || exit 1 - ;; - restart|force-reload) - log_daemon_msg "Restarting $DESC" "$NAME" - do_stop - case "$?" in - 0|1) - do_start - case "$?" in - 0) log_end_msg 0 ;; - 1) log_end_msg 1 ;; # Old process is still running - *) log_end_msg 1 ;; # Failed to start - esac - ;; - *) - # Failed to stop - log_end_msg 1 - ;; - esac - ;; - *) - echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 - exit 3 - ;; -esac - -: - diff --git a/debian/rules b/debian/rules index e569e29..ebadc9c 100755 --- a/debian/rules +++ b/debian/rules @@ -5,12 +5,19 @@ export DEB_BUILD_HARDENING=1 %: - dh --with quilt $@ + dh --with quilt,systemd $@ + +override_dh_auto_install: + dh_auto_install + rm debian/pve-sheepdog/etc/init.d/sheepdog + rmdir debian/pve-sheepdog/etc/init.d + install -D -m 0755 debian/sheepdog-start-wrapper debian/pve-sheepdog/usr/lib/sheepdog/sheepdog-start-wrapper override_dh_installinit: + # just install install pve-sheepdog.sheepdog.default dh_installinit --name sheepdog override_dh_auto_configure: ./autogen.sh - dh_auto_configure -- --enable-zookeeper + dh_auto_configure -- --enable-zookeeper --enable-systemd diff --git a/debian/sheepdog-start-wrapper b/debian/sheepdog-start-wrapper new file mode 100644 index 0000000..8b0221e --- /dev/null +++ b/debian/sheepdog-start-wrapper @@ -0,0 +1,25 @@ +#!/bin/sh + +DAEMON=/usr/sbin/sheep +PIDFILE="/var/run/sheep.pid" + +[ -z "$ROOTDIR" ] && ROOTDIR="/var/lib/sheepdog/" +[ -z "$JOURNALSIZE" ] && JOURNALSIZE="256M" +[ -z "$DAEMON_ARGS" ] && DAEMON_ARGS="" + +DAEMON_ARGS="${DAEMON_ARGS} --pidfile ${PIDFILE}" +DAEMON_ARGS="${DAEMON_ARGS} $ROOTDIR" + +# /path/to/meta-store,/path/to/disk1{,/path/to/disk2,...} +for d in $ROOTDIR/disc* +do + if [ -d "$d" ]; then + DAEMON_ARGS="${DAEMON_ARGS},$d" + fi +done + +if [ -d "$ROOTDIR/journal" ]; then + DAEMON_ARGS="${DAEMON_ARGS} -j dir=$ROOTDIR/journal,size=$JOURNALSIZE" +fi + +$DAEMON $DAEMON_ARGS -- 2.39.2