Blame SOURCES/bz1732867-CTDB-4-add-v4.9-support.patch

734564
From 30b9f55325d2acfba27aa6859c7360e10b7201d7 Mon Sep 17 00:00:00 2001
734564
From: David Disseldorp <ddiss@suse.de>
734564
Date: Wed, 5 Jun 2019 00:41:13 +0200
734564
Subject: [PATCH 1/3] CTDB: support Samba 4.9+
734564
734564
With Samba 4.9+, all ctdbd parameters have moved to config files.
734564
Generate a new /etc/ctdb/ctdb.conf file during ctdb startup, based on RA
734564
configuration.
734564
734564
Event scripts in Samba 4.9+ are also no longer enabled/disabled based on
734564
file mode. Use the "ctdb event script enable/disable" helpers, which now
734564
work without a running ctdbd.
734564
734564
Fixes: https://github.com/ClusterLabs/resource-agents/issues/1196
734564
Signed-off-by: David Disseldorp <ddiss@suse.de>
734564
Signed-off-by: Noel Power <noel.power@suse.com>
734564
Signed-off-by: Amitay Isaacs <amitay@samba.org>
734564
---
734564
 heartbeat/CTDB.in | 214 ++++++++++++++++++++++++++++++++++++----------
734564
 1 file changed, 167 insertions(+), 47 deletions(-)
734564
734564
diff --git a/heartbeat/CTDB.in b/heartbeat/CTDB.in
734564
index 4dd646896..79a2f97e7 100755
734564
--- a/heartbeat/CTDB.in
734564
+++ b/heartbeat/CTDB.in
734564
@@ -143,6 +143,10 @@ OCF_RESKEY_smb_fileid_algorithm_default=""
734564
 
734564
 #######################################################################
734564
 
734564
+ctdb_version() {
734564
+	$OCF_RESKEY_ctdb_binary version | awk '{print $NF}' | sed "s/[-\.]\?[[:alpha:]].*//"
734564
+}
734564
+
734564
 meta_data() {
734564
 	cat <
734564
 
734564
@@ -256,7 +260,7 @@ host any public ip addresses.
734564
 <longdesc lang="en">
734564
 The directory containing various CTDB configuration files.
734564
 The "nodes" and "notify.sh" scripts are expected to be
734564
-in this directory, as is the "events.d" subdirectory.
734564
+in this directory.
734564
 </longdesc>
734564
 <shortdesc lang="en">CTDB config file directory</shortdesc>
734564
 <content type="string" default="/etc/ctdb" />
734564
@@ -282,8 +286,10 @@ Full path to the CTDB cluster daemon binary.
734564
 <longdesc lang="en">
734564
 Full path to the domain socket that ctdbd will create, used for
734564
 local clients to attach and communicate with the ctdb daemon.
734564
+With CTDB 4.9.0 and later the socket path is hardcoded at build
734564
+time, so this parameter is ignored.
734564
 </longdesc>
734564
-<shortdesc lang="en">CTDB socket location</shortdesc>
734564
+<shortdesc lang="en">CTDB socket location (ignored with CTDB 4.9+)</shortdesc>
734564
 <content type="string" default="${OCF_RESKEY_ctdb_socket}" />
734564
 </parameter>
734564
 
734564
@@ -421,16 +427,28 @@ invoke_ctdb() {
734564
 		timeout=$((OCF_RESKEY_CRM_meta_timeout/1000))
734564
 		timelimit=$((OCF_RESKEY_CRM_meta_timeout/1000))
734564
 	fi
734564
-	$OCF_RESKEY_ctdb_binary --socket="$OCF_RESKEY_ctdb_socket" \
734564
-		-t $timeout -T $timelimit \
734564
-		"$@"
734564
+
734564
+	local vers=$(ctdb_version)
734564
+	ocf_version_cmp "$vers" "4.9.0"
734564
+
734564
+	# if version < 4.9.0 specify '--socket' otherwise it's
734564
+	# a compiled option
734564
+	if [ "$?" -eq "0" ]; then
734564
+		$OCF_RESKEY_ctdb_binary --socket="$OCF_RESKEY_ctdb_socket" \
734564
+			-t $timeout -T $timelimit \
734564
+			"$@"
734564
+	else
734564
+		$OCF_RESKEY_ctdb_binary \
734564
+			-t $timeout -T $timelimit \
734564
+			"$@"
734564
+	fi
734564
 }
734564
 
734564
 # Enable any event scripts that are explicitly required.
734564
 # Any others will ultimately be invoked or not based on how they ship
734564
 # with CTDB, but will generally have no effect, beacuase the relevant
734564
 # CTDB_MANAGES_* options won't be set in /etc/sysconfig/ctdb.
734564
-enable_event_scripts() {
734564
+enable_event_scripts_chmod() {
734564
 	local event_dir
734564
 	event_dir=$OCF_RESKEY_ctdb_config_dir/events.d
734564
 
734564
@@ -454,6 +472,36 @@ enable_event_scripts() {
734564
 	fi
734564
 }
734564
 
734564
+enable_event_scripts_symlink() {
734564
+	# event scripts are symlinked once enabled, with the link source in...
734564
+	mkdir -p "$OCF_RESKEY_ctdb_config_dir/events/legacy" 2>/dev/null
734564
+
734564
+	invoke_ctdb event script enable legacy 00.ctdb
734564
+
734564
+	if [ -f "${OCF_RESKEY_ctdb_config_dir}/public_addresses" ]; then
734564
+		invoke_ctdb event script enable legacy 10.interface
734564
+	else
734564
+		invoke_ctdb event script disable legacy 10.interface
734564
+	fi
734564
+	if [ -f "${OCF_RESKEY_ctdb_config_dir}/static-routes" ]; then
734564
+		invoke_ctdb event script enable legacy 11.routing
734564
+	else
734564
+		invoke_ctdb event script disable legacy 11.routing
734564
+	fi
734564
+
734564
+	if ocf_is_true "$OCF_RESKEY_ctdb_manages_winbind"; then
734564
+		invoke_ctdb event script enable legacy 49.winbind
734564
+	else
734564
+		invoke_ctdb event script disable legacy 49.winbind
734564
+	fi
734564
+
734564
+	if ocf_is_true "$OCF_RESKEY_ctdb_manages_samba"; then
734564
+		invoke_ctdb event script enable legacy 50.samba
734564
+	else
734564
+		invoke_ctdb event script disable legacy 50.samba
734564
+	fi
734564
+}
734564
+
734564
 # This function has no effect (currently no way to set CTDB_SET_*)
734564
 # but remains here in case we need it in future.
734564
 set_ctdb_variables() {
734564
@@ -556,6 +604,46 @@ append_ctdb_sysconfig() {
734564
 	[ -n "$2" ] && echo "$1=$2" >> "$CTDB_SYSCONFIG"
734564
 }
734564
 
734564
+generate_ctdb_config() {
734564
+	local ctdb_config="$OCF_RESKEY_ctdb_config_dir/ctdb.conf"
734564
+
734564
+	# Backup existing config if we're not already using an auto-generated one
734564
+	grep -qa '# CTDB-RA: Auto-generated' $ctdb_config || cp -p $ctdb_config ${ctdb_config}.ctdb-ra-orig
734564
+	if [ $? -ne 0 ]; then
734564
+		ocf_log warn "Unable to backup $ctdb_config to ${ctdb_config}.ctdb-ra-orig"
734564
+	fi
734564
+
734564
+	local log_option="file:$OCF_RESKEY_ctdb_logfile"
734564
+	if [ "$OCF_RESKEY_ctdb_logfile" = "syslog" ]; then
734564
+		log_option="syslog"
734564
+	fi
734564
+
734564
+	local start_as_disabled="false"
734564
+	ocf_is_true "$OCF_RESKEY_ctdb_start_as_disabled" && start_as_disabled="true"
734564
+
734564
+	local dbdir_volatile="$OCF_RESKEY_ctdb_dbdir/volatile"
734564
+	[ -d "$dbdir_volatile" ] || mkdir -p "$dbdir_volatile" 2>/dev/null
734564
+	local dbdir_persistent="$OCF_RESKEY_ctdb_dbdir/persistent"
734564
+	[ -d "$dbdir_persistent" ] || mkdir -p "$dbdir_persistent" 2>/dev/null
734564
+	local dbdir_state="$OCF_RESKEY_ctdb_dbdir/state"
734564
+	[ -d "$dbdir_state" ] || mkdir -p "$dbdir_state" 2>/dev/null
734564
+
734564
+cat >$ctdb_config <
734564
+# CTDB-RA: Auto-generated
734564
+[logging]
734564
+	location = $log_option
734564
+	log level = $OCF_RESKEY_ctdb_debuglevel
734564
+[cluster]
734564
+	recovery lock = $OCF_RESKEY_ctdb_recovery_lock
734564
+[database]
734564
+	volatile database directory = $dbdir_volatile
734564
+	persistent database directory = $dbdir_persistent
734564
+	state database directory = $dbdir_state
734564
+[legacy]
734564
+	start as disabled = $start_as_disabled
734564
+EOF
734564
+}
734564
+
734564
 # Generate a new, minimal CTDB config file that's just enough
734564
 # to get CTDB running as configured by the RA parameters.
734564
 generate_ctdb_sysconfig() {
734564
@@ -589,6 +677,58 @@ EOF
734564
 }
734564
 
734564
 
734564
+invoke_ctdbd() {
734564
+	local vers="$1"
734564
+
734564
+	ocf_version_cmp "$vers" "4.9.0"
734564
+	if [ "$?" -ne "0" ]; then
734564
+		# With 4.9+, all ctdbd binary parameters are provided as
734564
+		# config settings
734564
+		$OCF_RESKEY_ctdbd_binary
734564
+		return
734564
+	fi
734564
+
734564
+	# Use logfile by default, or syslog if asked for
734564
+	local log_option
734564
+	# --logging supported from v4.3.0 and --logfile / --syslog support
734564
+	# has been removed from newer versions
734564
+	ocf_version_cmp "$vers" "4.2.14"
734564
+	if [ "$?" -eq "2" ]; then
734564
+		log_option="--logging=file:$OCF_RESKEY_ctdb_logfile"
734564
+		if [ "$OCF_RESKEY_ctdb_logfile" = "syslog" ]; then
734564
+			log_option="--logging=syslog"
734564
+		fi
734564
+	else
734564
+		log_option="--logfile=$OCF_RESKEY_ctdb_logfile"
734564
+		if [ "$OCF_RESKEY_ctdb_logfile" = "syslog" ]; then
734564
+			log_option="--syslog"
734564
+		fi
734564
+	fi
734564
+
734564
+	# public addresses file (should not be present, but need to set for correctness if it is)
734564
+	local pub_addr_option
734564
+	pub_addr_option=""
734564
+	[ -f "${OCF_RESKEY_ctdb_config_dir}/public_addresses" ] && \
734564
+		pub_addr_option="--public-addresses=${OCF_RESKEY_ctdb_config_dir}/public_addresses"
734564
+	# start as disabled
734564
+	local start_as_disabled
734564
+	start_as_disabled="--start-as-disabled"
734564
+	ocf_is_true "$OCF_RESKEY_ctdb_start_as_disabled" || start_as_disabled=""
734564
+
734564
+	$OCF_RESKEY_ctdbd_binary \
734564
+		--reclock="$OCF_RESKEY_ctdb_recovery_lock" \
734564
+		--nlist="$OCF_RESKEY_ctdb_config_dir/nodes" \
734564
+		--socket="$OCF_RESKEY_ctdb_socket" \
734564
+		--dbdir="$OCF_RESKEY_ctdb_dbdir" \
734564
+		--dbdir-persistent="$OCF_RESKEY_ctdb_dbdir/persistent" \
734564
+		--event-script-dir="$OCF_RESKEY_ctdb_config_dir/events.d" \
734564
+		--notification-script="$OCF_RESKEY_ctdb_config_dir/notify.sh" \
734564
+		--transport=tcp \
734564
+		$start_as_disabled $log_option $pub_addr_option \
734564
+		-d "$OCF_RESKEY_ctdb_debuglevel"
734564
+}
734564
+
734564
+
734564
 ctdb_usage() {
734564
 	cat <
734564
 usage: $0 {start|stop|monitor|validate-all|meta-data}
734564
@@ -614,27 +754,26 @@ ctdb_start() {
734564
 		return $OCF_ERR_GENERIC
734564
 	fi
734564
 
734564
-	# Generate new CTDB sysconfig
734564
-	generate_ctdb_sysconfig
734564
-	enable_event_scripts
734564
+	local version=$(ctdb_version)
734564
 
734564
-	# Use logfile by default, or syslog if asked for
734564
-	local log_option
734564
-	# --logging supported from v4.3.0 and --logfile / --syslog support 
734564
-	# has been removed from newer versions
734564
-	version=$(ctdb version | awk '{print $NF}')
734564
-	ocf_version_cmp "$version" "4.2.14"
734564
-	if [ "$?" -eq "2" ]; then
734564
-		log_option="--logging=file:$OCF_RESKEY_ctdb_logfile"
734564
-		if [ "$OCF_RESKEY_ctdb_logfile" = "syslog" ]; then
734564
-			log_option="--logging=syslog"
734564
-		fi
734564
+	ocf_version_cmp "$version" "4.9.0"
734564
+	if [ "$?" -eq "0" ]; then
734564
+		# prior to 4.9, ctdbd parameters are in sysconfig or passed as
734564
+		# binary arguments
734564
+		generate_ctdb_sysconfig
734564
+
734564
+		# prior to 4.9, event script enablement without a running
734564
+		# ctdbd is done by chmoding the scripts directly
734564
+		enable_event_scripts_chmod
734564
 	else
734564
-		log_option="--logfile=$OCF_RESKEY_ctdb_logfile"
734564
-		if [ "$OCF_RESKEY_ctdb_logfile" = "syslog" ]; then
734564
-			log_option="--syslog"
734564
-		fi
734564
+		# 4.9+ moves all ctdbd parameters to ctdb.conf
734564
+		generate_ctdb_config
734564
+
734564
+		# 4.9+ event scripts can be enabled with ctdb directly, which
734564
+		# performs a symlink
734564
+		enable_event_scripts_symlink
734564
 	fi
734564
+
734564
 	if [ ! -d "$(dirname $OCF_RESKEY_ctdb_logfile)" ]; then
734564
 		# ensure the logfile's directory exists, otherwise ctdb will fail to start
734564
 		mkdir -p $(dirname $OCF_RESKEY_ctdb_logfile)
734564
@@ -643,33 +782,14 @@ ctdb_start() {
734564
 	# ensure ctdb's rundir exists, otherwise it will fail to start
734564
 	mkdir -p $OCF_RESKEY_ctdb_rundir 2>/dev/null
734564
 
734564
-	# public addresses file (should not be present, but need to set for correctness if it is)
734564
-	local pub_addr_option
734564
-	pub_addr_option=""
734564
-	[ -f "${OCF_RESKEY_ctdb_config_dir}/public_addresses" ] && \
734564
-		pub_addr_option="--public-addresses=${OCF_RESKEY_ctdb_config_dir}/public_addresses"
734564
-	# start as disabled
734564
-	local start_as_disabled
734564
-	start_as_disabled="--start-as-disabled"
734564
-	ocf_is_true "$OCF_RESKEY_ctdb_start_as_disabled" || start_as_disabled=""
734564
-
734564
 	# set nofile ulimit for ctdbd process
734564
 	if [ -n "$OCF_RESKEY_ctdb_max_open_files" ]; then
734564
 		ulimit -n "$OCF_RESKEY_ctdb_max_open_files"
734564
 	fi
734564
 
734564
 	# Start her up
734564
-	"$OCF_RESKEY_ctdbd_binary" \
734564
-		--reclock="$OCF_RESKEY_ctdb_recovery_lock" \
734564
-		--nlist="$OCF_RESKEY_ctdb_config_dir/nodes" \
734564
-		--socket="$OCF_RESKEY_ctdb_socket" \
734564
-		--dbdir="$OCF_RESKEY_ctdb_dbdir" \
734564
-		--dbdir-persistent="$OCF_RESKEY_ctdb_dbdir/persistent" \
734564
-		--event-script-dir="$OCF_RESKEY_ctdb_config_dir/events.d" \
734564
-		--notification-script="$OCF_RESKEY_ctdb_config_dir/notify.sh" \
734564
-		--transport=tcp \
734564
-		$start_as_disabled $log_option $pub_addr_option \
734564
-		-d "$OCF_RESKEY_ctdb_debuglevel"
734564
+	invoke_ctdbd "$version"
734564
+
734564
 	if [ $? -ne 0 ]; then
734564
 		# cleanup smb.conf
734564
 		cleanup_smb_conf
734564
@@ -688,7 +808,7 @@ ctdb_start() {
734564
 			if [ $? -ne 0 ]; then
734564
 				# CTDB will be running, kill it before returning
734564
 				ctdb_stop
734564
-				ocf_exit_reason "Can't invoke $OCF_RESKEY_ctdb_binary --socket=$OCF_RESKEY_ctdb_socket status"
734564
+				ocf_exit_reason "Can't invoke $OCF_RESKEY_ctdb_binary status"
734564
 				return $OCF_ERR_GENERIC
734564
 			fi
734564
 			if ! echo "$status" | grep -qs 'UNHEALTHY (THIS'; then
734564
@@ -725,7 +845,7 @@ ctdb_stop() {
734564
 		[ $count -gt 10 ] && {
734564
 			ocf_log info "killing ctdbd "
734564
 			pkill -9 -f "$OCF_RESKEY_ctdbd_binary"
734564
-			pkill -9 -f "${OCF_RESKEY_ctdb_config_dir}/events.d/"
734564
+			pkill -9 -f "${OCF_RESKEY_ctdb_config_dir}/events"
734564
 		}
734564
 	done
734564
 
734564
734564
From b4753b7cb46045bb9e7ed5e3a0a20f6104264b12 Mon Sep 17 00:00:00 2001
734564
From: David Disseldorp <ddiss@suse.de>
734564
Date: Wed, 10 Jul 2019 17:11:50 +0200
734564
Subject: [PATCH 2/3] CTDB: generate script.options file for 4.9+
734564
734564
Event scripts in CTDB 4.9+ ignore sysconfig configuration and instead
734564
parse parameters in ctdb_config_dir/script.options .
734564
734564
Signed-off-by: David Disseldorp <ddiss@suse.de>
734564
---
734564
 heartbeat/CTDB.in | 35 ++++++++++++++++++++++++++++++-----
734564
 1 file changed, 30 insertions(+), 5 deletions(-)
734564
734564
diff --git a/heartbeat/CTDB.in b/heartbeat/CTDB.in
734564
index 79a2f97e7..0906f3da9 100755
734564
--- a/heartbeat/CTDB.in
734564
+++ b/heartbeat/CTDB.in
734564
@@ -242,6 +242,7 @@ If the amount of free memory drops below this value the node will
734564
 become unhealthy and ctdb and all managed services will be shutdown.
734564
 Once this occurs, the administrator needs to find the reason for the
734564
 OOM situation, rectify it and restart ctdb with "service ctdb start".
734564
+With CTDB 4.4.0 and later this parameter is ignored.
734564
 </longdesc>
734564
 <shortdesc lang="en">Minimum amount of free memory (MB)</shortdesc>
734564
 <content type="integer" default="${OCF_RESKEY_ctdb_monitor_free_memory_default}" />
734564
@@ -600,8 +601,10 @@ cleanup_smb_conf() {
734564
 	mv "$OCF_RESKEY_smb_conf.$$" "$OCF_RESKEY_smb_conf"
734564
 }
734564
 
734564
-append_ctdb_sysconfig() {
734564
-	[ -n "$2" ] && echo "$1=$2" >> "$CTDB_SYSCONFIG"
734564
+append_conf() {
734564
+	local file_path="$1"
734564
+	shift
734564
+	[ -n "$2" ] && echo "$1=$2" >> "$file_path"
734564
 }
734564
 
734564
 generate_ctdb_config() {
734564
@@ -644,6 +647,25 @@ cat >$ctdb_config <
734564
 EOF
734564
 }
734564
 
734564
+generate_event_script_options() {
734564
+	local script_options="$OCF_RESKEY_ctdb_config_dir/script.options"
734564
+
734564
+	# Backup existing config if we're not already using an auto-generated one
734564
+	grep -qa '# CTDB-RA: Auto-generated' $script_options || cp -p $script_options ${script_options}.ctdb-ra-orig
734564
+	if [ $? -ne 0 ]; then
734564
+		ocf_log warn "Unable to backup $script_options to ${script_options}.ctdb-ra-orig"
734564
+	fi
734564
+
734564
+cat >$script_options <
734564
+# CTDB-RA: Auto-generated
734564
+CTDB_SAMBA_SKIP_SHARE_CHECK=$(ocf_is_true "$OCF_RESKEY_ctdb_samba_skip_share_check" && echo 'yes' || echo 'no')
734564
+EOF
734564
+
734564
+	append_conf "$script_options" CTDB_SERVICE_SMB $OCF_RESKEY_ctdb_service_smb
734564
+	append_conf "$script_options" CTDB_SERVICE_NMB $OCF_RESKEY_ctdb_service_nmb
734564
+	append_conf "$script_options" CTDB_SERVICE_WINBIND $OCF_RESKEY_ctdb_service_winbind
734564
+}
734564
+
734564
 # Generate a new, minimal CTDB config file that's just enough
734564
 # to get CTDB running as configured by the RA parameters.
734564
 generate_ctdb_sysconfig() {
734564
@@ -671,9 +693,9 @@ CTDB_SAMBA_SKIP_SHARE_CHECK=$(ocf_is_true "$OCF_RESKEY_ctdb_samba_skip_share_che
734564
 CTDB_MANAGES_SAMBA=$(ocf_is_true "$OCF_RESKEY_ctdb_manages_samba" && echo 'yes' || echo 'no')
734564
 CTDB_MANAGES_WINBIND=$(ocf_is_true "$OCF_RESKEY_ctdb_manages_winbind" && echo 'yes' || echo 'no')
734564
 EOF
734564
-	append_ctdb_sysconfig CTDB_SERVICE_SMB $OCF_RESKEY_ctdb_service_smb
734564
-	append_ctdb_sysconfig CTDB_SERVICE_NMB $OCF_RESKEY_ctdb_service_nmb
734564
-	append_ctdb_sysconfig CTDB_SERVICE_WINBIND $OCF_RESKEY_ctdb_service_winbind
734564
+	append_conf "$CTDB_SYSCONFIG" CTDB_SERVICE_SMB $OCF_RESKEY_ctdb_service_smb
734564
+	append_conf "$CTDB_SYSCONFIG" CTDB_SERVICE_NMB $OCF_RESKEY_ctdb_service_nmb
734564
+	append_conf "$CTDB_SYSCONFIG" CTDB_SERVICE_WINBIND $OCF_RESKEY_ctdb_service_winbind
734564
 }
734564
 
734564
 
734564
@@ -769,6 +791,9 @@ ctdb_start() {
734564
 		# 4.9+ moves all ctdbd parameters to ctdb.conf
734564
 		generate_ctdb_config
734564
 
734564
+		# 4.9+ event script options are in script.options
734564
+		generate_event_script_options
734564
+
734564
 		# 4.9+ event scripts can be enabled with ctdb directly, which
734564
 		# performs a symlink
734564
 		enable_event_scripts_symlink
734564
734564
From 0a8610711f90c4cc7a2b380a4795f463532d9520 Mon Sep 17 00:00:00 2001
734564
From: David Disseldorp <ddiss@suse.de>
734564
Date: Wed, 10 Jul 2019 17:54:01 +0200
734564
Subject: [PATCH 3/3] CTDB: drop sysconfig presence check during validate
734564
734564
There are two reasons to avoid this check:
734564
- for ctdb versions prior to 4.9.0, the sysconfig file is generated by
734564
  the resource agent start hook *after* ctdb_validate() is called.
734564
- post 4.9.0 versions don't use the sysconfig file.
734564
734564
Signed-off-by: David Disseldorp <ddiss@suse.de>
734564
---
734564
 heartbeat/CTDB.in | 5 -----
734564
 1 file changed, 5 deletions(-)
734564
734564
diff --git a/heartbeat/CTDB.in b/heartbeat/CTDB.in
734564
index 0906f3da9..15d78902e 100755
734564
--- a/heartbeat/CTDB.in
734564
+++ b/heartbeat/CTDB.in
734564
@@ -925,11 +925,6 @@ ctdb_validate() {
734564
 		check_binary $binary
734564
 	done
734564
 
734564
-	if [ -z "$CTDB_SYSCONFIG" ]; then
734564
-		ocf_exit_reason "Can't find CTDB config file (expecting /etc/sysconfig/ctdb, /etc/default/ctdb or similar)"
734564
-		return $OCF_ERR_INSTALLED
734564
-	fi
734564
-
734564
 	if ocf_is_true "$OCF_RESKEY_ctdb_manages_samba" && [ ! -f "$OCF_RESKEY_smb_conf" ]; then
734564
 		ocf_exit_reason "Samba config file '$OCF_RESKEY_smb_conf' does not exist."
734564
 		return $OCF_ERR_INSTALLED