#!/bin/sh

# This script is executed when a guest agent receives fsfreeze-freeze and
# fsfreeze-thaw command, if it is specified in --fsfreeze-hook (-F)
# option of qemu-ga or placed in default path (/etc/qemu/fsfreeze-hook).
# When the agent receives fsfreeze-freeze request, this script is issued with
# "freeze" argument before the filesystem is frozen. And for fsfreeze-thaw
# request, it is issued with "thaw" argument after filesystem is thawed.

LOGFILE=/var/log/qga-fsfreeze-hook.log
FSFREEZE_D=$(dirname -- "$0")/fsfreeze-hook.d

# Check whether file $1 is a backup or rpm-generated file and should be ignored
is_ignored_file() {
    case "$1" in
        *~ | *.bak | *.orig | *.rpmnew | *.rpmorig | *.rpmsave | *.sample | *.dpkg-old | *.dpkg-new | *.dpkg-tmp | *.dpkg-dist | *.dpkg-bak | *.dpkg-backup | *.dpkg-remove)
            return 0 ;;
    esac
    return 1
}

USE_SYSLOG=0
# if log file is not writable, fallback to syslog
[ ! -w "$LOGFILE" ] && USE_SYSLOG=1
# try to update log file and fallback to syslog if it fails
touch "$LOGFILE" &>/dev/null || USE_SYSLOG=1

# Ensure the log file is writable, fallback to syslog if not
log_message() {
    local message="$1"
    if [ "$USE_SYSLOG" -eq 0 ]; then
        printf "%s: %s\n" "$(date)" "$message" >>"$LOGFILE"
    else
        logger -t qemu-ga-freeze-hook "$message"
    fi
}

# Iterate executables in directory "fsfreeze-hook.d" with the specified args
[ ! -d "$FSFREEZE_D" ] && exit 0

for file in "$FSFREEZE_D"/* ; do
    is_ignored_file "$file" && continue
    [ -x "$file" ] || continue

    log_message "Executing $file $@"
    if [ "$USE_SYSLOG" -eq 0 ]; then
        "$file" "$@" >>"$LOGFILE" 2>&1
        STATUS=$?
    else
        "$file" "$@" 2>&1 | logger -t qemu-ga-freeze-hook
        STATUS=${PIPESTATUS[0]}
    fi

    if [ $STATUS -ne 0 ]; then
        log_message "Error: $file finished with status=$STATUS"
    else
        log_message "$file finished successfully"
    fi
done

exit 0
