dfd880466e
- Fix systemd timers enabled even if period is set to none: * Micro change in pull-request-36.patch. - Clean spec file: * Removed support for suse_version <= 1210. * Removed call to btrfsmaintenance-refresh-cron.sh upon deletion (not needed anymore since we use systemd timers which are handled by macros). * Ran spec-cleaner. OBS-URL: https://build.opensuse.org/request/show/559643 OBS-URL: https://build.opensuse.org/package/show/filesystems/btrfsmaintenance?expand=0&rev=30
301 lines
8.0 KiB
Diff
301 lines
8.0 KiB
Diff
From a192d335442d2fe74b3b6f7feb83a07325441361 Mon Sep 17 00:00:00 2001
|
|
From: Luigi 'Comio' Mantellini <luigi.mantellini@gmail.com>
|
|
Date: Wed, 2 Aug 2017 17:27:21 +0200
|
|
Subject: [PATCH 1/2] Add support for systemd timers.
|
|
|
|
---
|
|
btrfs-balance.service | 10 +++++
|
|
btrfs-balance.timer | 11 ++++++
|
|
btrfs-defrag.service | 10 +++++
|
|
btrfs-defrag.timer | 11 ++++++
|
|
btrfs-scrub.service | 10 +++++
|
|
btrfs-scrub.timer | 11 ++++++
|
|
btrfs-trim.service | 10 +++++
|
|
btrfs-trim.timer | 11 ++++++
|
|
btrfsmaintenance-refresh-cron.sh | 80 ++++++++++++++++++++++++++++++++--------
|
|
btrfsmaintenance.spec | 16 ++++++++
|
|
prepare-release.sh | 1 +
|
|
11 files changed, 165 insertions(+), 16 deletions(-)
|
|
create mode 100644 btrfs-balance.service
|
|
create mode 100644 btrfs-balance.timer
|
|
create mode 100644 btrfs-defrag.service
|
|
create mode 100644 btrfs-defrag.timer
|
|
create mode 100644 btrfs-scrub.service
|
|
create mode 100644 btrfs-scrub.timer
|
|
create mode 100644 btrfs-trim.service
|
|
create mode 100644 btrfs-trim.timer
|
|
|
|
diff --git a/btrfs-balance.service b/btrfs-balance.service
|
|
new file mode 100644
|
|
index 0000000..146f997
|
|
--- /dev/null
|
|
+++ b/btrfs-balance.service
|
|
@@ -0,0 +1,10 @@
|
|
+[Unit]
|
|
+Description=Balance block groups on a btrfs filesystem
|
|
+Documentation=man:btrfs-balance
|
|
+After=fstrim.service btrfs-trim.service btrfs-scrub.service
|
|
+
|
|
+[Service]
|
|
+Type=oneshot
|
|
+ExecStart=/usr/share/btrfsmaintenance/btrfs-balance.sh
|
|
+IOSchedulingClass=idle
|
|
+CPUSchedulingPolicy=idle
|
|
diff --git a/btrfs-balance.timer b/btrfs-balance.timer
|
|
new file mode 100644
|
|
index 0000000..72f9f1f
|
|
--- /dev/null
|
|
+++ b/btrfs-balance.timer
|
|
@@ -0,0 +1,11 @@
|
|
+[Unit]
|
|
+Description=Balance block groups on a btrfs filesystem
|
|
+Documentation=man:btrfs-balance
|
|
+
|
|
+[Timer]
|
|
+OnCalendar=monthly
|
|
+AccuracySec=1h
|
|
+Persistent=true
|
|
+
|
|
+[Install]
|
|
+WantedBy=timers.target
|
|
diff --git a/btrfs-defrag.service b/btrfs-defrag.service
|
|
new file mode 100644
|
|
index 0000000..12d3c92
|
|
--- /dev/null
|
|
+++ b/btrfs-defrag.service
|
|
@@ -0,0 +1,10 @@
|
|
+[Unit]
|
|
+Description=Defragment file data on a mounted filesystem
|
|
+Documentation=man:btrfs-filesystem
|
|
+After=fstrim.service btrfs-trim.service btrfs-scrub.service
|
|
+
|
|
+[Service]
|
|
+Type=oneshot
|
|
+ExecStart=/usr/share/btrfsmaintenance/btrfs-defrag.sh
|
|
+IOSchedulingClass=idle
|
|
+CPUSchedulingPolicy=idle
|
|
diff --git a/btrfs-defrag.timer b/btrfs-defrag.timer
|
|
new file mode 100644
|
|
index 0000000..dd5b867
|
|
--- /dev/null
|
|
+++ b/btrfs-defrag.timer
|
|
@@ -0,0 +1,11 @@
|
|
+[Unit]
|
|
+Description=Defragment file data and/or directory metadata
|
|
+Documentation=man:btrfs-filesystem
|
|
+
|
|
+[Timer]
|
|
+OnCalendar=monthly
|
|
+AccuracySec=1h
|
|
+Persistent=true
|
|
+
|
|
+[Install]
|
|
+WantedBy=timers.target
|
|
diff --git a/btrfs-scrub.service b/btrfs-scrub.service
|
|
new file mode 100644
|
|
index 0000000..40012f3
|
|
--- /dev/null
|
|
+++ b/btrfs-scrub.service
|
|
@@ -0,0 +1,10 @@
|
|
+[Unit]
|
|
+Description=Scrub btrfs filesystem, verify block checksums
|
|
+Documentation=man:fstrim
|
|
+After=fstrim.service btrfs-trim.service
|
|
+
|
|
+[Service]
|
|
+Type=oneshot
|
|
+ExecStart=/usr/share/btrfsmaintenance/btrfs-scrub.sh
|
|
+IOSchedulingClass=idle
|
|
+CPUSchedulingPolicy=idle
|
|
diff --git a/btrfs-scrub.timer b/btrfs-scrub.timer
|
|
new file mode 100644
|
|
index 0000000..2ceabdf
|
|
--- /dev/null
|
|
+++ b/btrfs-scrub.timer
|
|
@@ -0,0 +1,11 @@
|
|
+[Unit]
|
|
+Description=Scrub btrfs filesystem, verify block checksums
|
|
+Documentation=man:btrfs-scrub
|
|
+
|
|
+[Timer]
|
|
+OnCalendar=monthly
|
|
+AccuracySec=1h
|
|
+Persistent=true
|
|
+
|
|
+[Install]
|
|
+WantedBy=timers.target
|
|
diff --git a/btrfs-trim.service b/btrfs-trim.service
|
|
new file mode 100644
|
|
index 0000000..d09da40
|
|
--- /dev/null
|
|
+++ b/btrfs-trim.service
|
|
@@ -0,0 +1,10 @@
|
|
+[Unit]
|
|
+Description=Discard unused blocks on a mounted filesystem
|
|
+Documentation=man:fstrim
|
|
+Conflicts=fstrim.service
|
|
+
|
|
+[Service]
|
|
+Type=oneshot
|
|
+ExecStart=/usr/share/btrfsmaintenance/btrfs-trim.sh
|
|
+IOSchedulingClass=idle
|
|
+CPUSchedulingPolicy=idle
|
|
diff --git a/btrfs-trim.timer b/btrfs-trim.timer
|
|
new file mode 100644
|
|
index 0000000..03e824f
|
|
--- /dev/null
|
|
+++ b/btrfs-trim.timer
|
|
@@ -0,0 +1,11 @@
|
|
+[Unit]
|
|
+Description=Discard unused blocks on a mounted filesystem
|
|
+Documentation=man:fstrim
|
|
+
|
|
+[Timer]
|
|
+OnCalendar=monthly
|
|
+AccuracySec=1h
|
|
+Persistent=true
|
|
+
|
|
+[Install]
|
|
+WantedBy=timers.target
|
|
diff --git a/btrfsmaintenance-refresh-cron.sh b/btrfsmaintenance-refresh-cron.sh
|
|
index ed1053e..da68283 100755
|
|
--- a/btrfsmaintenance-refresh-cron.sh
|
|
+++ b/btrfsmaintenance-refresh-cron.sh
|
|
@@ -16,17 +16,6 @@ export PATH
|
|
|
|
SCRIPTS=/usr/share/btrfsmaintenance
|
|
|
|
-if [ "$1" = 'uninstall' ]; then
|
|
- for SCRIPT in btrfs-scrub.sh btrfs-defrag.sh btrfs-balance.sh btrfs-trim.sh; do
|
|
- for PERIOD in daily weekly monthly; do
|
|
- LINK="${SCRIPT%.*}"
|
|
- FILE="/etc/cron.$PERIOD/$LINK"
|
|
- rm -f "$FILE"
|
|
- done
|
|
- done
|
|
- exit 0
|
|
-fi
|
|
-
|
|
if [ -f /etc/sysconfig/btrfsmaintenance ]; then
|
|
. /etc/sysconfig/btrfsmaintenance
|
|
fi
|
|
@@ -35,7 +24,18 @@ if [ -f /etc/default/btrfsmaintenance ]; then
|
|
. /etc/default/btrfsmaintenance
|
|
fi
|
|
|
|
-refresh_period() {
|
|
+case "$1" in
|
|
+ cron)
|
|
+ BTRFS_TIMER_IMPLEMENTATION="cron"
|
|
+ shift
|
|
+ ;;
|
|
+ systemd-timer|timer)
|
|
+ BTRFS_TIMER_IMPLEMENTATION="systemd-timer"
|
|
+ shift
|
|
+ ;;
|
|
+esac
|
|
+
|
|
+refresh_cron() {
|
|
EXPECTED="$1"
|
|
SCRIPT="$2"
|
|
echo "Refresh script $SCRIPT for $EXPECTED"
|
|
@@ -52,7 +52,55 @@ refresh_period() {
|
|
done
|
|
}
|
|
|
|
-refresh_period "$BTRFS_SCRUB_PERIOD" btrfs-scrub.sh
|
|
-refresh_period "$BTRFS_DEFRAG_PERIOD" btrfs-defrag.sh
|
|
-refresh_period "$BTRFS_BALANCE_PERIOD" btrfs-balance.sh
|
|
-refresh_period "$BTRFS_TRIM_PERIOD" btrfs-trim.sh
|
|
+refresh_timer() {
|
|
+ PERIOD="$1"
|
|
+ SERVICE="$2"
|
|
+ echo "Refresh timer $SERVICE for $PERIOD"
|
|
+
|
|
+ case "$PERIOD" in
|
|
+ daily|weekly|monthly)
|
|
+ mkdir -p /etc/systemd/system/"$SERVICE".timer.d/
|
|
+ cat << EOF > /etc/systemd/system/"$SERVICE".timer.d/schedule.conf
|
|
+[Timer]
|
|
+OnCalendar=$PERIOD
|
|
+EOF
|
|
+ systemctl enable "$SERVICE".timer &> /dev/null
|
|
+ systemctl start "$SERVICE".timer &> /dev/null
|
|
+ ;;
|
|
+ *)
|
|
+ systemctl stop "$SERVICE".timer &> /dev/null
|
|
+ systemctl disable "$SERVICE".timer &> /dev/null
|
|
+ rm -rf /etc/systemd/system/"$SERVICE".timer.d
|
|
+ ;;
|
|
+ esac
|
|
+}
|
|
+
|
|
+if [ "$1" = 'uninstall' ]; then
|
|
+ for SCRIPT in btrfs-scrub btrfs-defrag btrfs-balance btrfs-trim; do
|
|
+ case "$BTRFS_TIMER_IMPLEMENTATION" in
|
|
+ systemd-timer)
|
|
+ refresh_timer uninstall ${SCRIPT}
|
|
+ ;;
|
|
+ *)
|
|
+ refresh_cron uninstall ${SCRIPT}.sh
|
|
+ ;;
|
|
+ esac
|
|
+ done
|
|
+ exit 0
|
|
+fi
|
|
+
|
|
+case "$BTRFS_TIMER_IMPLEMENTATION" in
|
|
+ systemd-timer)
|
|
+ refresh_timer "$BTRFS_SCRUB_PERIOD" btrfs-scrub
|
|
+ refresh_timer "$BTRFS_DEFRAG_PERIOD" btrfs-defrag
|
|
+ refresh_timer "$BTRFS_BALANCE_PERIOD" btrfs-balance
|
|
+ refresh_timer "$BTRFS_TRIM_PERIOD" btrfs-trim
|
|
+ ;;
|
|
+ *)
|
|
+ refresh_cron "$BTRFS_SCRUB_PERIOD" btrfs-scrub.sh
|
|
+ refresh_cron "$BTRFS_DEFRAG_PERIOD" btrfs-defrag.sh
|
|
+ refresh_cron "$BTRFS_BALANCE_PERIOD" btrfs-balance.sh
|
|
+ refresh_cron "$BTRFS_TRIM_PERIOD" btrfs-trim.sh
|
|
+ ;;
|
|
+esac
|
|
+
|
|
From e5e26ffaa50d7cfdef8291d4ff72e95061438fcc Mon Sep 17 00:00:00 2001
|
|
From: Luigi 'Comio' Mantellini <luigi.mantellini@gmail.com>
|
|
Date: Wed, 6 Dec 2017 14:31:06 +0100
|
|
Subject: [PATCH 2/2] Don't limit OnCalendar to daily, weekly and monthly.
|
|
|
|
---
|
|
btrfsmaintenance-refresh-cron.sh | 12 ++++++------
|
|
1 file changed, 6 insertions(+), 6 deletions(-)
|
|
|
|
diff --git a/btrfsmaintenance-refresh-cron.sh b/btrfsmaintenance-refresh-cron.sh
|
|
index da68283..7e92170 100755
|
|
--- a/btrfsmaintenance-refresh-cron.sh
|
|
+++ b/btrfsmaintenance-refresh-cron.sh
|
|
@@ -58,7 +58,12 @@ refresh_timer() {
|
|
echo "Refresh timer $SERVICE for $PERIOD"
|
|
|
|
case "$PERIOD" in
|
|
- daily|weekly|monthly)
|
|
+ uninstall|none)
|
|
+ systemctl stop "$SERVICE".timer &> /dev/null
|
|
+ systemctl disable "$SERVICE".timer &> /dev/null
|
|
+ rm -rf /etc/systemd/system/"$SERVICE".timer.d
|
|
+ ;;
|
|
+ *)
|
|
mkdir -p /etc/systemd/system/"$SERVICE".timer.d/
|
|
cat << EOF > /etc/systemd/system/"$SERVICE".timer.d/schedule.conf
|
|
[Timer]
|
|
@@ -67,11 +72,6 @@ EOF
|
|
systemctl enable "$SERVICE".timer &> /dev/null
|
|
systemctl start "$SERVICE".timer &> /dev/null
|
|
;;
|
|
- *)
|
|
- systemctl stop "$SERVICE".timer &> /dev/null
|
|
- systemctl disable "$SERVICE".timer &> /dev/null
|
|
- rm -rf /etc/systemd/system/"$SERVICE".timer.d
|
|
- ;;
|
|
esac
|
|
}
|
|
|