From c2c74080239d9bcbea1f7f775a2b743e423757c5 Mon Sep 17 00:00:00 2001 From: Ralf Brunckhorst Date: Thu, 16 Jul 2020 08:52:03 +0200 Subject: [PATCH] LX-startscript-improvements + non-support for kernel.debug --- files/openafs-client-RedHat | 36 +++++++++++++++++++++++------------- files/openafs-client-Suse | 22 ++++++++++------------ files/openafs-client-Ubuntu | 22 +++++----------------- 3 files changed, 38 insertions(+), 42 deletions(-) diff --git a/files/openafs-client-RedHat b/files/openafs-client-RedHat index bae09f4..bb6415f 100755 --- a/files/openafs-client-RedHat +++ b/files/openafs-client-RedHat @@ -1,7 +1,7 @@ #!/bin/bash # # Copyright (c) 2020 AFS-Core Ericsson -# Version v1.24, 2020-06-17 +# Version v1.25, 2020-07-16 # # openafs-client Start/Stop the OpenAFS Client # @@ -67,10 +67,10 @@ lock_routine() { setsuid() { if [ -f $SUIDCELLS ]; then - for CELLS in $(grep '^[^#]' $SUIDCELLS); do + while read -r CELLS; do echo "Setting $CELLS suid" fs setcell -cell $CELLS -suid - done + done <<<"$(grep '^[^#]' $SUIDCELLS)" fi } @@ -99,7 +99,7 @@ get_dist_release() { OS="openSuse" _DIST="osuse" else - OS=$(echo "$LsbDescription" -sd | cut -f1-4 -d" " | tr -cs '[:alpha:]' '[\n*]' | grep -v '^$' | cut -c1 | tr -d '[\n]') + OS=$(echo "$LsbDescription" | cut -f1-4 -d" " | sed -e 's/\([a-zA-Z]\)[^ ]* */\1/g' -e 's/"//') _DIST="sle" if [[ $LsbRelease != *.* ]]; then patchlevel=$(awk '/^PATCHLEVEL/ {print $3}' /etc/SuSE-release 2>/dev/null) @@ -173,7 +173,7 @@ setsysname() { killafs() { SIGNAL=$1 PIDS=$(lsof -Fp $AFS | sed -e 's/p//') - if [ "x" != "x$PIDS" ]; then + if [ -n "$PIDS" ]; then kill -$SIGNAL $PIDS >/dev/null 2>&1 sleep 3 fi @@ -197,11 +197,22 @@ dkms_check() { check_kernelpackages() { KERNEL_VERSION="$1" - if [ -n "$KERNEL_VERSION" ]; then - if ! { rpm -q kernel-headers-$KERNEL_VERSION kernel-devel-$KERNEL_VERSION; } >/dev/null 2>&1; then - echo "Needed packages for running kernel $KERNEL_VERSION missing: kernel-headers-$KERNEL_VERSION kernel-devel-$KERNEL_VERSION" + if [[ "$KERNEL_VERSION" =~ \.debug$ ]]; then + KERNEL_CHECK=$(sed -e 's/\.debug$//' <<<$KERNEL_VERSION) + # KERNEL_DEVEL="debug-devel-$KERNEL_CHECK" + echo "System is running with a non supported kernel debug version: $KERNEL_VERSION" + echo "To be able to build the AFS kernel-module the system needs to be running with a normal kernel like: kernel-$KERNEL_CHECK" + echo + exit 1 + else + KERNEL_CHECK=$KERNEL_VERSION + KERNEL_DEVEL="devel-$KERNEL_VERSION" + fi + if [ -n "$KERNEL_CHECK" ]; then + if ! { rpm -q kernel-headers-$KERNEL_CHECK kernel-$KERNEL_DEVEL; } >/dev/null 2>&1; then + echo "Needed packages for running kernel $KERNEL_VERSION missing: kernel-headers-$KERNEL_CHECK kernel-$KERNEL_DEVEL" echo "Try to install..." - yum --nogpgcheck -q -y install kernel-headers-$KERNEL_VERSION kernel-devel-$KERNEL_VERSION + yum --nogpgcheck -q -y install kernel-headers-$KERNEL_CHECK kernel-$KERNEL_DEVEL CHKKERNELPACK="false" fi fi @@ -320,9 +331,8 @@ check_kernelmodule() { fi [ $RETVAL -eq 0 ] && rm -f $KMOD_BUILDLOG && echo -n "Build succeded!" && success "Build succeded!" && echo && return 0 - echo "Failed to build kernel module." - failure "Failed to build kernel module." - echo "See $KMOD_BUILDLOG for more details." + echo "Failed to build kernel module, see $KMOD_BUILDLOG for more details. " + failure "Failed to build kernel module, see $KMOD_BUILDLOG for more details." echo return 1 else @@ -502,7 +512,7 @@ stop-force() { echo return 1 fi - if ps ax | grep -q '\[afsd\]'; then + if pgrep -xf 'afsd' &>/dev/null; then echo echo "Sending all processes using $AFS the TERM signal ..." killafs TERM diff --git a/files/openafs-client-Suse b/files/openafs-client-Suse index b696102..0f966b4 100755 --- a/files/openafs-client-Suse +++ b/files/openafs-client-Suse @@ -1,7 +1,7 @@ #!/bin/bash # # Copyright (c) 2020 AFS-Core Ericsson -# Version v1.22, 2020-01-10 +# Version v1.23, 2020-07-15 # # System startup script for OpenAFS # @@ -19,7 +19,6 @@ ### END INIT INFO DAEMON="OpenAFS Client" -SUPPORTS_HUP="no" DAEMON_BIN=/usr/sbin/afsd AFS_KERNEL_MODULE=libafs AFS=/afs @@ -89,10 +88,10 @@ lock_routine() { setsuid() { if [ -f $SUIDCELLS ]; then - for CELLS in $(grep '^[^#]' $SUIDCELLS); do + while read -r CELLS; do echo "Setting $CELLS suid" fs setcell -cell $CELLS -suid - done + done <<<"$(grep '^[^#]' $SUIDCELLS)" fi } @@ -121,7 +120,7 @@ get_dist_release() { OS="openSuse" _DIST="osuse" else - OS=$(echo "$LsbDescription" -sd | cut -f1-4 -d" " | tr -cs '[:alpha:]' '[\n*]' | grep -v '^$' | cut -c1 | tr -d '[\n]') + OS=$(echo "$LsbDescription" | cut -f1-4 -d" " | sed -e 's/\([a-zA-Z]\)[^ ]* */\1/g' -e 's/"//') _DIST="sle" if [[ $LsbRelease != *.* ]]; then patchlevel=$(awk '/^PATCHLEVEL/ {print $3}' /etc/SuSE-release 2>/dev/null) @@ -195,7 +194,7 @@ setsysname() { killafs() { SIGNAL=$1 PIDS=$(lsof -Fp $AFS | sed -e 's/p//') - if [ "x" != "x$PIDS" ]; then + if [ -n "$PIDS" ]; then kill -$SIGNAL $PIDS >/dev/null 2>&1 sleep 3 fi @@ -340,8 +339,7 @@ case "$1" in package_update rm_wrong_module if check_kernelmodule; then - ps ax | grep -q '\[afsd\]' - if [ $? -ne 0 ]; then + if ! pgrep -xf 'afsd' &>/dev/null; then if [ "$CLEANCACHE" == "true" ]; then if [ "${CACHEDIR}" == "/usr/vice/cache" ] || [ "${CACHEDIR}" == "/var/cache/openafs" ]; then if [ -d ${CACHEDIR} ]; then @@ -383,7 +381,7 @@ case "$1" in exit 4 fi echo -n "Shutting down $DAEMON " - if ps ax | grep -q '\[afsd\]'; then + if pgrep -xf 'afsd' &>/dev/null; then umount $AFS RETVAL=$? if [ $RETVAL -eq 0 ]; then @@ -411,7 +409,7 @@ case "$1" in exit 4 fi echo -n "Shutting down $DAEMON " - if ps ax | grep -q '\[afsd\]'; then + if pgrep -xf 'afsd' &>/dev/null; then echo echo "Sending all processes using $AFS the TERM signal ..." killafs TERM @@ -458,13 +456,13 @@ case "$1" in # NOTE: checkproc returns LSB compliant status values. - ps ax | grep -q '\[afsd\]' || rc_failed 3 + pgrep -xf 'afsd' &>/dev/null || rc_failed 3 rc_status -v ;; check) echo -n "Checking $DAEMON " - if ps ax | grep -q '\[afsd\]'; then + if pgrep -xf 'afsd' &>/dev/null; then get_cell HEALTHCHECK=/afs/$CELL/afsadm/bin/afs_site_health_check.sh if [ -x $HEALTHCHECK ]; then diff --git a/files/openafs-client-Ubuntu b/files/openafs-client-Ubuntu index f326f13..623c4cc 100755 --- a/files/openafs-client-Ubuntu +++ b/files/openafs-client-Ubuntu @@ -1,7 +1,7 @@ #!/bin/bash # # Copyright (c) 2020 AFS-Core Ericsson -# Version v1.9, 2020-01-10 +# Version v1.10, 2020-07-15 # ### BEGIN INIT INFO # Provides: openafs-client @@ -91,10 +91,10 @@ lock_routine() { setsuid() { if [ -f $SUIDCELLS ]; then - for CELLS in $(grep '^[^#]' $SUIDCELLS); do + while read -r CELLS; do echo "Setting $CELLS suid" fs setcell -cell $CELLS -suid - done + done <<<"$(grep '^[^#]' $SUIDCELLS)" fi } @@ -123,7 +123,7 @@ get_dist_release() { OS="openSuse" _DIST="osuse" else - OS=$(echo "$LsbDescription" -sd | cut -f1-4 -d" " | tr -cs '[:alpha:]' '[\n*]' | grep -v '^$' | cut -c1 | tr -d '[\n]') + OS=$(echo "$LsbDescription" | cut -f1-4 -d" " | sed -e 's/\([a-zA-Z]\)[^ ]* */\1/g' -e 's/"//') _DIST="sle" if [[ $LsbRelease != *.* ]]; then patchlevel=$(awk '/^PATCHLEVEL/ {print $3}' /etc/SuSE-release 2>/dev/null) @@ -213,19 +213,7 @@ dkms_check() { check_kernelmodule() { KERNEL_VERSION=$(uname -r) if dkms_check; then - # dkms status -m $AFS_KERNEL_MODULE -k `uname -r` | grep -w 'installed-weak' > /dev/null - # if [ $? -eq 0 ]; then - # echo - # echo "Weak module detected, will be removed.." - # if [ -h /lib/modules/`uname -r`/weak-updates/${AFS_KERNEL_MODULE}.ko ]; then - # rm -fv /lib/modules/`uname -r`/weak-updates/${AFS_KERNEL_MODULE}.ko - # fi - # echo - # echo "DKMS stuff ..." - # dkms autoinstall -m $AFS_KERNEL_MODULE --kernelver `uname -r` - # fi - dkms status -m $AFS_KERNEL_MODULE -k "$KERNEL_VERSION" | grep ': installed$' >/dev/null - if [ $? -ne 0 ]; then + if ! dkms status -m $AFS_KERNEL_MODULE -k "$KERNEL_VERSION" | grep ': installed$' >/dev/null; then echo echo "No kernel-module detected for $AFS_KERNEL_MODULE and kernel $(uname -r) .." if { AFSVERSION=$(dpkg-query --showformat='${VERSION}' --show openafs-client | sed -e 's/-.*//'); } >/dev/null 2>&1; then