This file is indexed.

/usr/share/cluster/drbd.sh is in drbd-utils 8.9.2~rc1-2+deb8u1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#!/bin/bash
#
#  Copyright LINBIT, 2008
#
#  This program is free software; you can redistribute it and/or modify it
#  under the terms of the GNU General Public License as published by the
#  Free Software Foundation; either version 2, or (at your option) any
#  later version.
#
#  This program is distributed in the hope that it will be useful, but
#  WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
#  General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; see the file COPYING.  If not, write to the
#  Free Software Foundation, Inc.,  675 Mass Ave, Cambridge, 
#  MA 02139, USA.
#

#
# DRBD resource management using the drbdadm utility.
#

LC_ALL=C
LANG=C
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export LC_ALL LANG PATH

. $(dirname $0)/ocf-shellfuncs

drbd_verify_all()
{
    # Do we have the drbdadm utility?
    if ! which drbdadm >/dev/null 2>&1 ; then
	ocf_log error "drbdadm not installed, not found in PATH ($PATH), or not executable."
	return $OCF_ERR_INSTALLED
    fi

    # Is drbd loaded?
    if ! grep drbd /proc/modules >/dev/null 2>&1; then
	ocf_log error "drbd not found in /proc/modules. Do you need to modprobe?"
	return $OCF_ERR_INSTALLED
    fi

    # Do we have the "resource" parameter?
    if [ -n "$OCF_RESKEY_resource" ]; then

      # Can drbdadm parse the resource name?
      if ! drbdadm sh-dev $OCF_RESKEY_resource >/dev/null 2>&1; then
  	ocf_log error "DRBD resource \"$OCF_RESKEY_resource\" not found." 
  	return $OCF_ERR_CONFIGURED
      fi

      # Is the backing device a locally available block device?
      backing_dev=$(drbdadm sh-ll-dev $OCF_RESKEY_resource)
      for dev in $backing_dev ; do
	[ -b $dev ] && continue;
	ocf_log error "Backing device for DRBD resource \"$OCF_RESKEY_resource\" ($dev) not found or not a block device."
	return $OCF_ERR_INSTALLED
      done

    fi

    return 0
}

drbd_status() {
    local all_primary=true
    for role in $(drbdadm role $OCF_RESKEY_resource); do
	case $role in
	    Primary/*)
		;;
	    Secondary/*)
		all_primary=false
		;;
	    *)
		return $OCF_ERR_GENERIC
		;;
	esac
    done
    $all_primary && return $OCF_SUCCESS
    return $OCF_NOT_RUNNING
}

drbd_promote() {
    drbdadm primary $OCF_RESKEY_resource || return $?
}

drbd_demote() {
    drbdadm secondary $OCF_RESKEY_resource || return $?
}


if [ -z "$OCF_CHECK_LEVEL" ]; then
	OCF_CHECK_LEVEL=0
fi

# This one doesn't need to pass the verify check
case $1 in
    meta-data)
	cat `echo $0 | sed 's/^\(.*\)\.sh$/\1.metadata/'` && exit 0
	exit $OCF_ERR_GENERIC
	;;
esac

# Everything else does
drbd_verify_all || exit $?
case $1 in
    start)
	if drbd_status; then
	    ocf_log debug "DRBD resource ${OCF_RESKEY_resource} already configured"
	    exit 0
	fi
	drbd_promote 
	if [ $? -ne 0 ]; then
	    exit $OCF_ERR_GENERIC
	fi
	
	exit $?
	;;
    stop)
	if drbd_status; then
	    drbd_demote
	    if [ $? -ne 0 ]; then
		exit $OCF_ERR_GENERIC
	    fi
	else
	    ocf_log debug "DRBD resource ${OCF_RESKEY_resource} is not configured"
	fi
	exit 0
	;;
    status|monitor)
	drbd_status
	exit $?
	;;
    restart)
	$0 stop || exit $OCF_ERR_GENERIC
	$0 start || exit $OCF_ERR_GENERIC
	exit 0
	;;
    verify-all)
    	exit 0
    	;;
    *)
	echo "usage: $0 {start|stop|status|monitor|restart|meta-data|verify-all}"
	exit $OCF_ERR_GENERIC
	;;
esac