You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.3 KiB
85 lines
2.3 KiB
2 years ago
|
From 94f643c328cd2d3c7376219573e0bc5dedea10d8 Mon Sep 17 00:00:00 2001
|
||
|
From: Michal Sekletar <msekleta@redhat.com>
|
||
|
Date: Mon, 30 May 2022 14:50:05 +0200
|
||
|
Subject: [PATCH] tests: make sure we delay running mount start jobs when
|
||
|
/p/s/mountinfo is rate limited
|
||
|
|
||
|
(cherry picked from commit 9e15be6c8d55abd800bf33f9776dd0e307ed37bc)
|
||
|
|
||
|
Related: #2087652
|
||
|
---
|
||
|
test/units/testsuite-60.sh | 53 ++++++++++++++++++++++++++++++++++++++
|
||
|
1 file changed, 53 insertions(+)
|
||
|
|
||
|
diff --git a/test/units/testsuite-60.sh b/test/units/testsuite-60.sh
|
||
|
index 239d7b0d4c..8cb3f466b6 100755
|
||
|
--- a/test/units/testsuite-60.sh
|
||
|
+++ b/test/units/testsuite-60.sh
|
||
|
@@ -3,6 +3,56 @@
|
||
|
set -eux
|
||
|
set -o pipefail
|
||
|
|
||
|
+test_issue_20329() {
|
||
|
+ local tmpdir unit
|
||
|
+ tmpdir="$(mktemp -d)"
|
||
|
+ unit=$(systemd-escape --suffix mount --path "$tmpdir")
|
||
|
+
|
||
|
+ # Set up test mount unit
|
||
|
+ cat > /run/systemd/system/"$unit" <<EOF
|
||
|
+[Mount]
|
||
|
+What=tmpfs
|
||
|
+Where=$tmpdir
|
||
|
+Type=tmpfs
|
||
|
+Options=defaults,nofail
|
||
|
+EOF
|
||
|
+
|
||
|
+ # Start the unit
|
||
|
+ systemctl daemon-reload
|
||
|
+ systemctl start "$unit"
|
||
|
+
|
||
|
+ [[ "$(systemctl show --property SubState --value "$unit")" = "mounted" ]] || {
|
||
|
+ echo >&2 "Test mount \"$unit\" unit isn't mounted"
|
||
|
+ return 1
|
||
|
+ }
|
||
|
+ mountpoint -q "$tmpdir"
|
||
|
+
|
||
|
+ trap 'systemctl stop $unit' RETURN
|
||
|
+
|
||
|
+ # Trigger the mount ratelimiting
|
||
|
+ cd "$(mktemp -d)"
|
||
|
+ mkdir foo
|
||
|
+ for ((i=0;i<50;++i)); do
|
||
|
+ mount --bind foo foo
|
||
|
+ umount foo
|
||
|
+ done
|
||
|
+
|
||
|
+ # Unmount the test mount and start it immediately again via systemd
|
||
|
+ umount "$tmpdir"
|
||
|
+ systemctl start "$unit"
|
||
|
+
|
||
|
+ # Make sure it is seen as mounted by systemd and it actually is mounted
|
||
|
+ [[ "$(systemctl show --property SubState --value "$unit")" = "mounted" ]] || {
|
||
|
+ echo >&2 "Test mount \"$unit\" unit isn't in \"mounted\" state"
|
||
|
+ return 1
|
||
|
+ }
|
||
|
+
|
||
|
+ mountpoint -q "$tmpdir" || {
|
||
|
+ echo >&2 "Test mount \"$unit\" is in \"mounted\" state, actually is not mounted"
|
||
|
+ return 1
|
||
|
+ }
|
||
|
+}
|
||
|
+
|
||
|
systemd-analyze log-level debug
|
||
|
systemd-analyze log-target journal
|
||
|
|
||
|
@@ -87,6 +137,9 @@ if systemctl list-units -t mount tmp-meow* | grep -q tmp-meow; then
|
||
|
exit 42
|
||
|
fi
|
||
|
|
||
|
+# test that handling of mount start jobs is delayed when /proc/self/mouninfo monitor is rate limited
|
||
|
+test_issue_20329
|
||
|
+
|
||
|
systemd-analyze log-level info
|
||
|
|
||
|
echo OK >/testok
|