mirror of
https://github.com/koverstreet/bcachefs-tools.git
synced 2025-01-22 00:04:31 +03:00
fbfdd05ac5
Add some systemd service files so that bcachefs can automatically fsck mounted filesystems in the background. Hopefully with minimal disruption to frontend operations. Signed-off-by: Darrick J. Wong <djwong@kernel.org>
64 lines
1.5 KiB
Bash
Executable File
64 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Copyright (C) 2023-2024 Oracle. All Rights Reserved.
|
|
# Author: Darrick J. Wong <djwong@kernel.org>
|
|
|
|
# Email logs of failed bcachefsck and bcachefsck_all unit runs
|
|
|
|
recipient="$1"
|
|
test -z "${recipient}" && exit 0
|
|
service="$2"
|
|
test -z "${service}" && exit 0
|
|
mntpoint="$3"
|
|
|
|
hostname="$(hostname -f 2>/dev/null)"
|
|
test -z "${hostname}" && hostname="${HOSTNAME}"
|
|
|
|
mailer="$(command -v sendmail)"
|
|
if [ ! -x "${mailer}" ]; then
|
|
echo "${mailer}: Mailer program not found."
|
|
exit 1
|
|
fi
|
|
|
|
fail_mail_mntpoint() {
|
|
local scrub_svc
|
|
|
|
# Turn the mountpoint into a properly escaped systemd instance name
|
|
scrub_svc="$(systemd-escape --template "${service}@.service" --path "${mntpoint}")"
|
|
cat << ENDL
|
|
To: ${recipient}
|
|
From: <${service}@${hostname}>
|
|
Subject: ${service} failure on ${mntpoint}
|
|
Content-Transfer-Encoding: 8bit
|
|
Content-Type: text/plain; charset=UTF-8
|
|
|
|
So sorry, the automatic ${service} of ${mntpoint} on ${hostname} failed.
|
|
Please do not reply to this mesage.
|
|
|
|
A log of what happened follows:
|
|
ENDL
|
|
systemctl status --full --lines 4294967295 "${scrub_svc}"
|
|
}
|
|
|
|
fail_mail() {
|
|
cat << ENDL
|
|
To: ${recipient}
|
|
From: <${service}@${hostname}>
|
|
Subject: ${service} failure
|
|
|
|
So sorry, the automatic ${service} on ${hostname} failed.
|
|
|
|
A log of what happened follows:
|
|
ENDL
|
|
systemctl status --full --lines 4294967295 "${service}"
|
|
}
|
|
|
|
if [ -n "${mntpoint}" ]; then
|
|
fail_mail_mntpoint | "${mailer}" -t -i
|
|
else
|
|
fail_mail | "${mailer}" -t -i
|
|
fi
|
|
exit "${PIPESTATUS[1]}"
|