34 lines
953 B
Bash
Executable file
34 lines
953 B
Bash
Executable file
#!/bin/sh
|
|
#
|
|
# For the request-based multipath driver, the I/O scheduler runs on the
|
|
# multipath device, not the underlying "slave" devices. This script
|
|
# checks the ID_BUS attribute for each of the slave devices. If it finds
|
|
# an ata device, it leaves the I/O scheduler tunings alone. For any other
|
|
# device, we tune the I/O scheduler to try to keep the device busy.
|
|
#
|
|
|
|
if [ -z "$DEVPATH" ]; then
|
|
logger "$0: DEVPATH is not set"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -d /sys/${DEVPATH}/slaves ]; then
|
|
logger "$0: 'slaves' directory under '$DEVPATH' does not exist"
|
|
exit 1
|
|
fi
|
|
|
|
needs_tuning=1
|
|
for slave in $(command ls /sys/${DEVPATH}/slaves/* 2>/dev/null); do
|
|
bus_type=$(/sbin/udevadm info --query=property --path=$slave | grep -m1 ID_BUS | cut -d= -2)
|
|
if [ "$bus_type" = "ata" ]; then
|
|
needs_tuning=0
|
|
break
|
|
fi
|
|
done
|
|
|
|
if [ $needs_tuning -eq 1 ]; then
|
|
echo 0 > /sys/${DEVPATH}/queue/iosched/slice_idle
|
|
echo 32 > /sys/${DEVPATH}/queue/iosched/quantum
|
|
fi
|
|
|
|
exit 0
|