¿Cómo puedo establecer una fecha límite como programador de E/S para dispositivos Flash USB utilizando las reglas de udev?

¿Cómo puedo establecer una fecha límite como programador de E/S para dispositivos Flash USB utilizando las reglas de udev?

Posible duplicado:
La regla udev no funciona

He configurado CFQ como el programador de E/S predeterminado. A menudo obtengo un mal rendimiento cuando escribo datos en un dispositivo Flash. Esto se resuelve si uso la fecha límite como programador de E/S para dispositivos Flash USB. No siempre puedo cambiar el programador manualmente, ¿verdad? Creo que escribir reglas para udev es una buena idea.

¿Alguien puede escribir reglas para mí? Deseo:

  1. Cuando conecto un dispositivo USB, detecto el tipo de dispositivo.
  2. Si es un disco duro USB portátil, no haga nada (creo que si un dispositivo tiene más de una partición, siempre es un disco duro portátil).
  3. Si se trata de un dispositivo flash USB, establezca la fecha límite como programador.

Respuesta1

Primero, coloque el script de shell scheduler4usben $PATH(por ejemplo /usr/bin:):

#!/bin/bash
# Usage: ./script device scheduler

# If your are using util-linux 2.22, you must change this line to:
# fdisk /dev/$1 -l 2>&1 >/dev/null | grep -q "doesn't contain a valid partition table"
#
fdisk /dev/$1 -l 2>&1 >/dev/null | grep -q "This doesn't look like a partition table"

# If this device has a partition table.
if (($?==0)); then 
    echo $2 > /sys/block/$1/queue/scheduler
fi

exit

¡No olvides chmod +x scheduler4usbleer tu guión!

Luego, escribe la regla en /etc/udev/rules.d/91-change-schduler.rules:

SUBSYSTEMS=="usb", ACTION=="add", KERNEL=="sd?", RUN+="/usr/local/bin/scheduler4usb %k deadline"

información relacionada