diff --git a/my.cnf b/my.cnf index 2e035c8..a76b9c6 100644 --- a/my.cnf +++ b/my.cnf @@ -6,6 +6,21 @@ user=mysql # clients (those using the mysqlclient10 compatibility package). old_passwords=1 +# To allow mysqld to connect to a MySQL Cluster management daemon, uncomment +# these lines and adjust the connectstring as needed. +#ndbcluster +#ndb-connectstring="nodeid=4;host=localhost:1186" + [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid + +[ndbd] +# If you are running a MySQL Cluster storage daemon (ndbd) on this machine, +# adjust its connection to the management daemon here. +# Note: ndbd init script requires this to include nodeid! +connect-string="nodeid=2;host=localhost:1186" + +[ndb_mgm] +# connection string for MySQL Cluster management tool +connect-string="host=localhost:1186" diff --git a/mysql-install-test.patch b/mysql-install-test.patch index 1cacf7b..130cabb 100644 --- a/mysql-install-test.patch +++ b/mysql-install-test.patch @@ -7,7 +7,7 @@ This patch also improves the documentation a tad. diff -Naur mysql-5.0.40.orig/mysql-test/README mysql-5.0.40/mysql-test/README --- mysql-5.0.40.orig/mysql-test/README 2007-04-20 10:14:42.000000000 -0400 +++ mysql-5.0.40/mysql-test/README 2007-05-23 14:41:03.000000000 -0400 -@@ -6,6 +6,14 @@ +@@ -6,6 +6,17 @@ actually have a co-existing MySQL installation. The tests will not conflict with it. @@ -17,12 +17,15 @@ diff -Naur mysql-5.0.40.orig/mysql-test/README mysql-5.0.40/mysql-test/README + sudo -u mysql ./mysql-test-run +This will use the installed mysql executables, but will run a private copy +of the server process (using data files within /usr/share/mysql-test), -+so you need not start the mysqld service beforehand. ++so you need not start the mysqld service beforehand. If you have not ++installed mysql-cluster, use ++ sudo -u mysql ./mysql-test-run --skip-ndbcluster ++to skip the cluster-related tests. + All tests must pass. If one or more of them fail on your system, please read the following manual section for instructions on how to report the problem: -@@ -25,7 +33,8 @@ +@@ -25,7 +36,8 @@ With no test cases named on the command line, mysql-test-run falls back to the normal "non-extern" behavior. The reason for this is that some diff --git a/mysql-no-dbug.patch b/mysql-no-dbug.patch new file mode 100644 index 0000000..72b672d --- /dev/null +++ b/mysql-no-dbug.patch @@ -0,0 +1,17 @@ +Don't build the dbug manual. We aren't going to install it anyway, so +there's no need to do so. Attempting to build it causes crashes if one +has built with -DDBUG_OFF, as we do by default. Per bug #437053. + + +diff -Naur mysql-5.0.51a.orig/dbug/Makefile.am mysql-5.0.51a/dbug/Makefile.am +--- mysql-5.0.51a.orig/dbug/Makefile.am 2008-01-11 09:43:29.000000000 -0500 ++++ mysql-5.0.51a/dbug/Makefile.am 2008-07-27 12:21:56.000000000 -0400 +@@ -35,7 +35,7 @@ + factorial_SOURCES = my_main.c factorial.c + dbug_analyze_SOURCES = dbug_analyze.c + +-all: user.t user.ps ++all: + + user.t: user.r $(NROFF_INC) + -nroff -mm user.r > $@ diff --git a/mysql.init b/mysql.init index 4524690..84422a1 100644 --- a/mysql.init +++ b/mysql.init @@ -46,7 +46,7 @@ start(){ chmod 0640 "$errlogfile" [ -x /sbin/restorecon ] && /sbin/restorecon "$errlogfile" if [ ! -d "$datadir/mysql" ] ; then - action $"Initializing MySQL database: " /usr/bin/mysql_install_db + action $"Initializing MySQL database: " /usr/bin/mysql_install_db --datadir="$datadir" --user=mysql ret=$? chown -R mysql:mysql "$datadir" if [ $ret -ne 0 ] ; then @@ -60,7 +60,7 @@ start(){ # but we need to be sure. /usr/bin/mysqld_safe --datadir="$datadir" --socket="$socketfile" \ --log-error="$errlogfile" --pid-file="$mypidfile" \ - >/dev/null 2>&1 & + --user=mysql >/dev/null 2>&1 & ret=$? # Spin for a maximum of N seconds waiting for the server to come up. # Rather than assuming we know a valid username, accept an "access diff --git a/mysql.spec b/mysql.spec index a15ca2b..e2d8b92 100644 --- a/mysql.spec +++ b/mysql.spec @@ -1,6 +1,6 @@ Name: mysql Version: 5.0.51a -Release: 1%{?dist} +Release: 2%{?dist} Summary: MySQL client programs and shared libraries Group: Applications/Databases URL: http://www.mysql.com @@ -16,6 +16,9 @@ Source1: mysql.init Source3: my.cnf Source4: scriptstub.c Source5: my_config.h +Source6: ndbd.init +Source7: ndb_mgmd.init +Source8: ndb_types.h # Working around perl dependency checking bug in rpm FTTB. Remove later. Source999: filter-requires-mysql.sh Patch1: mysql-libdir.patch @@ -30,6 +33,7 @@ Patch9: mysql-bdb-link.patch Patch10: mysql-bdb-open.patch Patch11: mysql-innodb-crash.patch Patch12: mysql-ssl.patch +Patch13: mysql-no-dbug.patch Patch14: mysql-ss-test.patch Patch15: mysql-stack-guard.patch @@ -86,6 +90,22 @@ client/server implementation consisting of a server daemon (mysqld) and many different client programs and libraries. This package contains the MySQL server and some accompanying files and directories. +%package cluster + +Summary: MySQL Cluster daemons and related files +Group: Applications/Databases +Requires: %{name} = %{version}-%{release} +Conflicts: MySQL-storage-cluster +Conflicts: MySQL-management-cluster +Conflicts: MySQL-tools-cluster +Conflicts: MySQL-extra-cluster + +%description cluster +MySQL is a multi-user, multi-threaded SQL database server. +MySQL Cluster is a distributed in-memory data store that can be accessed +by a MySQL server. This package contains the programs needed to run a MySQL +Cluster installation. + %package devel Summary: Files for development of MySQL applications @@ -139,6 +159,7 @@ the MySQL sources. %patch10 -p1 %patch11 -p1 %patch12 -p1 +%patch13 -p1 %patch14 -p1 %patch15 -p1 @@ -172,6 +193,7 @@ export CFLAGS CXXFLAGS --with-mysqld-user="mysql" \ --with-extra-charsets=all \ --with-innodb \ + --with-ndbcluster \ --with-berkeley-db \ --enable-local-infile \ --enable-largefile \ @@ -206,12 +228,14 @@ rm -rf $RPM_BUILD_ROOT %makeinstall -# multilib header hack +# multilib header hacks # we only apply this to known Red Hat multilib arches, per bug #181335 case `uname -i` in i386 | x86_64 | ppc | ppc64 | s390 | s390x | sparc | sparcv9 | sparc64 ) - install -m 644 include/my_config.h $RPM_BUILD_ROOT/usr/include/mysql/my_config_`uname -i`.h + mv $RPM_BUILD_ROOT/usr/include/mysql/my_config.h $RPM_BUILD_ROOT/usr/include/mysql/my_config_`uname -i`.h install -m 644 %{SOURCE5} $RPM_BUILD_ROOT/usr/include/mysql/ + mv $RPM_BUILD_ROOT/usr/include/mysql/ndb/ndb_types.h $RPM_BUILD_ROOT/usr/include/mysql/ndb/ndb_types_`uname -i`.h + install -m 644 %{SOURCE8} $RPM_BUILD_ROOT/usr/include/mysql/ndb/ ;; *) ;; @@ -228,8 +252,11 @@ gzip ${RPM_BUILD_ROOT}%{_infodir}/* mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d mkdir -p $RPM_BUILD_ROOT/var/run/mysqld install -m 0755 -d $RPM_BUILD_ROOT/var/lib/mysql +install -m 0755 -d $RPM_BUILD_ROOT/var/lib/mysql-cluster install -m 0755 %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/mysqld install -m 0644 %{SOURCE3} $RPM_BUILD_ROOT/etc/my.cnf +install -m 0755 %{SOURCE6} $RPM_BUILD_ROOT/etc/rc.d/init.d/ndbd +install -m 0755 %{SOURCE7} $RPM_BUILD_ROOT/etc/rc.d/init.d/ndb_mgmd rm -f $RPM_BUILD_ROOT/%{_infodir}/dir* mv $RPM_BUILD_ROOT/usr/sql-bench $RPM_BUILD_ROOT%{_datadir}/sql-bench mv $RPM_BUILD_ROOT/usr/mysql-test $RPM_BUILD_ROOT%{_datadir}/mysql-test @@ -246,11 +273,11 @@ rm -f ${RPM_BUILD_ROOT}%{_bindir}/make_win_src_distribution rm -f ${RPM_BUILD_ROOT}%{_mandir}/man1/make_win_bin_dist.1* rm -f ${RPM_BUILD_ROOT}%{_mandir}/man1/make_win_src_distribution.1* rm -f ${RPM_BUILD_ROOT}%{_libdir}/mysql/libmysqlclient*.la +rm -f ${RPM_BUILD_ROOT}%{_libdir}/mysql/libndbclient.la rm -f ${RPM_BUILD_ROOT}%{_datadir}/mysql/binary-configure rm -f ${RPM_BUILD_ROOT}%{_datadir}/mysql/make_binary_distribution rm -f ${RPM_BUILD_ROOT}%{_datadir}/mysql/make_sharedlib_distribution rm -f ${RPM_BUILD_ROOT}%{_datadir}/mysql/mi_test_all* -rm -f ${RPM_BUILD_ROOT}%{_datadir}/mysql/ndb-config-2-node.ini rm -f ${RPM_BUILD_ROOT}%{_datadir}/mysql/mysql.server rm -f ${RPM_BUILD_ROOT}%{_datadir}/mysql/mysqld_multi.server rm -f ${RPM_BUILD_ROOT}%{_datadir}/mysql/MySQL-shared-compat.spec @@ -261,8 +288,12 @@ rm -f ${RPM_BUILD_ROOT}%{_datadir}/mysql/mysql-*.spec rm -f ${RPM_BUILD_ROOT}%{_datadir}/mysql/mysql-log-rotate rm -f ${RPM_BUILD_ROOT}%{_mandir}/man1/mysql-stress-test.pl.1* rm -f ${RPM_BUILD_ROOT}%{_mandir}/man1/mysql-test-run.pl.1* -rm -f ${RPM_BUILD_ROOT}%{_mandir}/man1/ndbd.1* -rm -f ${RPM_BUILD_ROOT}%{_mandir}/man1/ndb_*.1* +rm -f ${RPM_BUILD_ROOT}/usr/libexec/ndb_cpcd +rm -f ${RPM_BUILD_ROOT}%{_mandir}/man1/ndb_cpcd.1* +# for the moment, remove ndb_size because of dependency on HTML::Template +rm -f ${RPM_BUILD_ROOT}%{_bindir}/ndb_size.pl +rm -f ${RPM_BUILD_ROOT}%{_mandir}/man1/ndb_size.pl.1* +rm -f ${RPM_BUILD_ROOT}%{_datadir}/mysql/ndb_size.tmpl mkdir -p $RPM_BUILD_ROOT/etc/ld.so.conf.d echo "%{_libdir}/mysql" > $RPM_BUILD_ROOT/etc/ld.so.conf.d/%{name}-%{_arch}.conf @@ -274,6 +305,10 @@ rm -rf $RPM_BUILD_ROOT /usr/sbin/useradd -M -o -r -d /var/lib/mysql -s /bin/bash \ -c "MySQL Server" -u 27 mysql > /dev/null 2>&1 || : +%pre cluster +/usr/sbin/useradd -M -o -r -d /var/lib/mysql -s /bin/bash \ + -c "MySQL Server" -u 27 mysql > /dev/null 2>&1 || : + %post /sbin/install-info %{_infodir}/mysql.info.gz %{_infodir}/dir @@ -287,6 +322,13 @@ fi /bin/chmod 0755 /var/lib/mysql /bin/touch /var/log/mysqld.log +%post cluster +if [ $1 = 1 ]; then + /sbin/chkconfig --add ndbd + /sbin/chkconfig --add ndb_mgmd +fi +/bin/chmod 0755 /var/lib/mysql-cluster + %preun if [ $1 = 0 ]; then /sbin/install-info --delete %{_infodir}/mysql.info.gz %{_infodir}/dir || : @@ -297,6 +339,12 @@ if [ $1 = 0 ]; then /sbin/chkconfig --del mysqld fi +%preun cluster +if [ $1 = 0 ]; then + /sbin/chkconfig --del ndb_mgmd + /sbin/chkconfig --del ndbd +fi + %postun libs if [ $1 = 0 ] ; then /sbin/ldconfig @@ -308,6 +356,12 @@ if [ $1 -ge 1 ]; then /sbin/service mysqld condrestart >/dev/null 2>&1 || : fi +%postun cluster +if [ $1 -ge 1 ]; then + /sbin/service ndb_mgmd condrestart >/dev/null 2>&1 || : + /sbin/service ndbd condrestart >/dev/null 2>&1 || : +fi + %files %defattr(-,root,root) @@ -331,7 +385,6 @@ fi %{_infodir}/* %{_mandir}/man1/mysql.1* -%{_mandir}/man1/mysql_config.1* %{_mandir}/man1/mysql_find_rows.1* %{_mandir}/man1/mysql_tableinfo.1* %{_mandir}/man1/mysql_waitpid.1* @@ -353,6 +406,7 @@ fi %dir %{_libdir}/mysql %{_libdir}/mysql/libmysqlclient*.so.* +%{_libdir}/mysql/libndbclient.so.* /etc/ld.so.conf.d/* %dir %{_datadir}/mysql @@ -425,6 +479,7 @@ fi %{_mandir}/man1/mysql_convert_table_format.1* %{_mandir}/man1/myisam_ftdump.1* %{_mandir}/man1/mysql.server.1* +%{_mandir}/man1/mysql_config.1* %{_mandir}/man1/mysql_explain_log.1* %{_mandir}/man1/mysql_fix_extensions.1* %{_mandir}/man1/mysql_fix_privilege_tables.1* @@ -465,11 +520,58 @@ fi %attr(0755,mysql,mysql) %dir /var/lib/mysql %attr(0640,mysql,mysql) %config(noreplace) %verify(not md5 size mtime) /var/log/mysqld.log +%files cluster +%defattr(-,root,root) + +%{_bindir}/ndb_config +%{_bindir}/ndb_delete_all +%{_bindir}/ndb_desc +%{_bindir}/ndb_drop_index +%{_bindir}/ndb_drop_table +%{_bindir}/ndb_error_reporter +%{_bindir}/ndb_mgm +%{_bindir}/ndb_restore +%{_bindir}/ndb_select_all +%{_bindir}/ndb_select_count +%{_bindir}/ndb_show_tables +#%{_bindir}/ndb_size.pl +%{_bindir}/ndb_test_platform +%{_bindir}/ndb_waiter + +/usr/libexec/ndb_mgmd +/usr/libexec/ndbd + +%{_datadir}/mysql/ndb-*.ini +#%{_datadir}/mysql/ndb_size.tmpl +/etc/rc.d/init.d/ndbd +/etc/rc.d/init.d/ndb_mgmd +%attr(0755,mysql,mysql) %dir /var/lib/mysql-cluster + +%{_mandir}/man1/ndb_config.1* +%{_mandir}/man1/ndb_delete_all.1* +%{_mandir}/man1/ndb_desc.1* +%{_mandir}/man1/ndb_drop_index.1* +%{_mandir}/man1/ndb_drop_table.1* +%{_mandir}/man1/ndb_error_reporter.1* +%{_mandir}/man1/ndb_mgm.1* +%{_mandir}/man1/ndb_mgmd.1* +%{_mandir}/man1/ndb_print_backup_file.1* +%{_mandir}/man1/ndb_print_schema_file.1* +%{_mandir}/man1/ndb_print_sys_file.1* +%{_mandir}/man1/ndb_restore.1* +%{_mandir}/man1/ndb_select_all.1* +%{_mandir}/man1/ndb_select_count.1* +%{_mandir}/man1/ndb_show_tables.1* +#%{_mandir}/man1/ndb_size.pl.1* +%{_mandir}/man1/ndb_waiter.1* +%{_mandir}/man1/ndbd.1* + %files devel %defattr(-,root,root) /usr/include/mysql %{_libdir}/mysql/*.a %{_libdir}/mysql/libmysqlclient*.so +%{_libdir}/mysql/libndbclient.so %files bench %defattr(-,root,root) @@ -483,6 +585,16 @@ fi %{_mandir}/man1/mysql_client_test.1* %changelog +* Sun Jul 27 2008 Tom Lane 5.0.51a-2 +- Enable ndbcluster support +Resolves: #163758 +- Suppress odd crash messages during package build, caused by trying to + build dbug manual (which we don't install anyway) with dbug disabled +Resolves: #437053 +- Improve mysql.init to pass configured datadir to mysql_install_db, + and to force user=mysql for both mysql_install_db and mysqld_safe. +Related: #450178 + * Mon Mar 3 2008 Tom Lane 5.0.51a-1 - Update to mysql version 5.0.51a diff --git a/ndb_mgmd.init b/ndb_mgmd.init new file mode 100644 index 0000000..52e057b --- /dev/null +++ b/ndb_mgmd.init @@ -0,0 +1,116 @@ +#!/bin/bash +# +# ndb_mgmd This shell script takes care of starting and stopping +# the MySQL Cluster management daemon (ndb_mgmd). +# +# chkconfig: - 62 38 +# description: MySQL Cluster management daemon. +# processname: ndb_mgmd +# config: /var/lib/mysql-cluster/config.ini +# pidfile: /var/lib/mysql-cluster/ndb_${node_id}.pid + +# Source function library. +. /etc/rc.d/init.d/functions + +# Source networking configuration. +. /etc/sysconfig/network + + +prog="ndb_mgmd" + +# extract value of a MySQL option from config files +# Usage: get_mysql_option SECTION VARNAME DEFAULT +# result is returned in $result +# We use my_print_defaults which prints all options from multiple files, +# with the more specific ones later; hence take the last match. +get_mysql_option(){ + result=`/usr/bin/my_print_defaults --extra-file=/var/lib/mysql-cluster/config.ini "$1" | sed -n "s/^--$2=//p" | tail -n 1` + if [ -z "$result" ]; then + # not found, use default + result="$3" + fi +} + +get_mysql_option ndb_mgmd id "1" +node_id="$result" +errlogfile="/var/lib/mysql-cluster/ndb_${node_id}_out.log" +pidfile="/var/lib/mysql-cluster/ndb_${node_id}.pid" + +# For SELinux we need to use 'runuser' not 'su' +if [ -x /sbin/runuser ] +then + SU=runuser +else + SU=su +fi + +start(){ + touch "$errlogfile" + chown mysql:mysql "$errlogfile" + chmod 0640 "$errlogfile" + [ -x /sbin/restorecon ] && /sbin/restorecon "$errlogfile" + + # all options are expected to be specified in + # /var/lib/mysql-cluster/config.ini. + $SU -l mysql -c "cd /var/lib/mysql-cluster; /usr/libexec/ndb_mgmd" >> "$errlogfile" 2>&1 < /dev/null + ret=$? + if [ $ret -eq 0 ]; then + action $"Starting $prog: " /bin/true + else + action $"Starting $prog: " /bin/false + fi + [ $ret -eq 0 ] && touch /var/lock/subsys/ndb_mgmd + return $ret +} + +stop(){ + NDB_MGMD_PID=`cat "$pidfile" 2>/dev/null ` + if [ -n "$NDB_MGMD_PID" ]; then + /usr/bin/ndb_mgm -e shutdown >/dev/null + ret=$? + if [ $ret -eq 0 ]; then + rm -f /var/lock/subsys/ndb_mgmd + rm -f "$pidfile" + action $"Stopping $prog: " /bin/true + else + action $"Stopping $prog: " /bin/false + fi + else + ret=1 + action $"Stopping $prog: " /bin/false + fi + return $ret +} + +restart(){ + stop + start +} + +condrestart(){ + [ -e /var/lock/subsys/ndb_mgmd ] && restart || : +} + +# See how we were called. +case "$1" in + start) + start + ;; + stop) + stop + ;; + status) + status ndb_mgmd + ;; + restart) + restart + ;; + condrestart) + condrestart + ;; + *) + echo $"Usage: $0 {start|stop|status|condrestart|restart}" + exit 1 +esac + +exit $? diff --git a/ndb_types.h b/ndb_types.h new file mode 100644 index 0000000..f6c1230 --- /dev/null +++ b/ndb_types.h @@ -0,0 +1,25 @@ +/* + * Kluge to support multilib installation of both 32- and 64-bit RPMS: + * we need to arrange that header files that appear in both RPMs are + * identical. Hence, this file is architecture-independent and calls + * in an arch-dependent file that will appear in just one RPM. + * + * To avoid breaking arches not explicitly supported by Red Hat, we + * use this indirection file *only* on known multilib arches. + * + * Note: this may well fail if user tries to use gcc's -I- option. + * But that option is deprecated anyway. + */ +#if defined(__x86_64__) +#include "ndb_types_x86_64.h" +#elif defined(__i386__) +#include "ndb_types_i386.h" +#elif defined(__ppc64__) || defined(__powerpc64__) +#include "ndb_types_ppc64.h" +#elif defined(__ppc__) || defined(__powerpc__) +#include "ndb_types_ppc.h" +#elif defined(__s390x__) +#include "ndb_types_s390x.h" +#elif defined(__s390__) +#include "ndb_types_s390.h" +#endif diff --git a/ndbd.init b/ndbd.init new file mode 100644 index 0000000..4f5ee17 --- /dev/null +++ b/ndbd.init @@ -0,0 +1,111 @@ +#!/bin/bash +# +# ndbd This shell script takes care of starting and stopping +# the MySQL Cluster data node daemon (ndbd). +# +# chkconfig: - 63 37 +# description: MySQL Cluster data node daemon. +# processname: ndbd +# config: /etc/my.cnf +# pidfile: /var/lib/mysql-cluster/ndb_${node_id}.pid + +# Source function library. +. /etc/rc.d/init.d/functions + +# Source networking configuration. +. /etc/sysconfig/network + + +prog="ndbd" + +# extract value of a MySQL option from config files +# Usage: get_mysql_option SECTION VARNAME DEFAULT +# result is returned in $result +# We use my_print_defaults which prints all options from multiple files, +# with the more specific ones later; hence take the last match. +get_mysql_option(){ + result=`/usr/bin/my_print_defaults "$1" | sed -n "s/^--$2=//p" | tail -n 1` + if [ -z "$result" ]; then + # not found, use default + result="$3" + fi +} + +get_mysql_option ndbd connect-string "nodeid=2;host=localhost:1186" +ndbd_connect_string="$result" +node_id=`echo "$result" | sed 's/^nodeid=\([0-9]*\);.*$/\1/'` +connect_string=`echo "$result" | sed 's/^.*host=//'` +pidfile="/var/lib/mysql-cluster/ndb_${node_id}.pid" + +# For SELinux we need to use 'runuser' not 'su' +if [ -x /sbin/runuser ] +then + SU=runuser +else + SU=su +fi + +start(){ + # all options are expected to be specified in /etc/my.cnf + $SU -l mysql -c "/usr/libexec/ndbd" >/dev/null 2>&1 + ret=$? + if [ $ret -eq 0 ]; then + action $"Starting $prog: " /bin/true + else + action $"Starting $prog: " /bin/false + fi + [ $ret -eq 0 ] && touch /var/lock/subsys/ndbd + return $ret +} + +stop(){ + NDBD_PID=`cat "$pidfile" 2>/dev/null ` + if [ -n "$NDBD_PID" ]; then + /usr/bin/ndb_mgm -e "$node_id STOP" "$connect_string" >/dev/null + ret=$? + if [ $ret -eq 0 ]; then + rm -f /var/lock/subsys/ndbd + rm -f "$pidfile" + action $"Stopping $prog: " /bin/true + else + action $"Stopping $prog: " /bin/false + fi + else + ret=1 + action $"Stopping $prog: " /bin/false + fi + return $ret +} + +restart(){ + stop + start +} + +condrestart(){ + [ -e /var/lock/subsys/ndbd ] && restart || : +} + +# See how we were called. +case "$1" in + start) + start + ;; + stop) + stop + ;; + status) + status ndbd + ;; + restart) + restart + ;; + condrestart) + condrestart + ;; + *) + echo $"Usage: $0 {start|stop|status|condrestart|restart}" + exit 1 +esac + +exit $?