From 94f643c328cd2d3c7376219573e0bc5dedea10d8 Mon Sep 17 00:00:00 2001 From: Michal Sekletar 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" <&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