#!/bin/bash
#
# __copy1__
# __copy2__
#
CMD=$(basename $0)
CMDVER="1.6"
CMDSTR="$CMD v$CMDVER (2026-02-24)"

set -e -u

usage()
{
	echo "usage: $CMD [pid]" >&2
	exit 1
}

cleanup()
{
	rm -f $tmpfile $tmplog
}

search_err()
{
	local out=
	out=$(fgrep 'I/O error' $tmpfile | egrep 'sector |logical block ')
	[ "$out" != "" ] && {
		echo "$out"
		return 0
	}
	out=$(grep 'No space left' $tmpfile)
	[ "$out" != "" ] && {
		echo "$out"
		return 0
	}
	return 1
}


# (MAIN)

tmplog=$(mktemp /tmp/$CMD-XXXXXXX) || exit $?
tmpfile=$(mktemp /tmp/$CMD-XXXXXXX) || exit $?

pid=${1:-}

trap "echo '*INTR!*'; cleanup; exit 255" 1 2 3
trap "cleanup" EXIT

if [ -s /var/log/messages ]
then
	tail -2000 /var/log/messages >$tmplog
elif [ -s /var/log/syslog ]
then
	tail -2000 /var/log/syslog >$tmplog
else
	[ "X$(which journalctl)" = "X" ] && {
		echo "$CMD: can't figure how to read logfiles" >&2
		exit 1
	}
	journalctl --lines 2000 >$tmplog
fi


# Oct 27 05:28:54 srvbck kernel: [6180221.518263] end_request: I/O error, dev sda, sector 591087535
# Oct 27 05:28:54 srvbck kernel: [6180221.536076] Buffer I/O error on device sda1, logical block 73885934

[ "$pid" == "" ] && {
	mv $tmplog $tmpfile
	out=$(search_err) && {
		echo "$out"
		exit 0
	}
	exit 1
}


sed -n -e "/STARTED P$pid kubackup-run/,/kubackup-run-$pid ERRORS/p" $tmplog >$tmpfile

out=$(search_err) && {
	echo "$out"
	exit 0
}

exit 1
