47 lines
1.1 KiB
Bash
47 lines
1.1 KiB
Bash
|
#!/bin/sh
|
||
|
# SPDX-License-Identifier: GPL-2.0
|
||
|
#
|
||
|
# Test the special cpuset v1 hotplug case where a cpuset become empty of
|
||
|
# CPUs will force migration of tasks out to an ancestor.
|
||
|
#
|
||
|
|
||
|
skip_test() {
|
||
|
echo "$1"
|
||
|
echo "Test SKIPPED"
|
||
|
exit 4 # ksft_skip
|
||
|
}
|
||
|
|
||
|
[[ $(id -u) -eq 0 ]] || skip_test "Test must be run as root!"
|
||
|
|
||
|
# Find cpuset v1 mount point
|
||
|
CPUSET=$(mount -t cgroup | grep cpuset | head -1 | awk -e '{print $3}')
|
||
|
[[ -n "$CPUSET" ]] || skip_test "cpuset v1 mount point not found!"
|
||
|
|
||
|
#
|
||
|
# Create a test cpuset, put a CPU and a task there and offline that CPU
|
||
|
#
|
||
|
TDIR=test$$
|
||
|
[[ -d $CPUSET/$TDIR ]] || mkdir $CPUSET/$TDIR
|
||
|
echo 1 > $CPUSET/$TDIR/cpuset.cpus
|
||
|
echo 0 > $CPUSET/$TDIR/cpuset.mems
|
||
|
sleep 10&
|
||
|
TASK=$!
|
||
|
echo $TASK > $CPUSET/$TDIR/tasks
|
||
|
NEWCS=$(cat /proc/$TASK/cpuset)
|
||
|
[[ $NEWCS != "/$TDIR" ]] && {
|
||
|
echo "Unexpected cpuset $NEWCS, test FAILED!"
|
||
|
exit 1
|
||
|
}
|
||
|
|
||
|
echo 0 > /sys/devices/system/cpu/cpu1/online
|
||
|
sleep 0.5
|
||
|
echo 1 > /sys/devices/system/cpu/cpu1/online
|
||
|
NEWCS=$(cat /proc/$TASK/cpuset)
|
||
|
rmdir $CPUSET/$TDIR
|
||
|
[[ $NEWCS != "/" ]] && {
|
||
|
echo "cpuset $NEWCS, test FAILED!"
|
||
|
exit 1
|
||
|
}
|
||
|
echo "Test PASSED"
|
||
|
exit 0
|