#!/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