No udev, que tipo de eventos de dispositivo correspondem a ACTION=="change"?

No udev, que tipo de eventos de dispositivo correspondem a ACTION=="change"?

As udevregras que criei até agora tratam apenas da adição ou remoção de dispositivos, ou seja:

ACTION=="add"...ouACTION=="remove"...

eu me depareium exemplode uma regra que parece lidar com dispositivosmudanças de estadotambém:

ACTION=="add|change", KERNEL=="sd[b-z]", ATTR{queue/rotational}=="1", RUN+="/usr/bin/hdparm -B 127 -S 12 /dev/%k"

Presumo que a regra acima se aplica sempre que um dispositivo correspondente éadicionadoOU seu estadomudanças.

Pergunta:Que tipo de alterações de estado são possíveis (geral e específicas para um disco rígido USB)?

Verifiquei toda a documentação do udev que encontrei e quase não há menção ou orientação de uso em relação às alterações de estado do dispositivo ou especificamente ACTION="change".

Responder1

“alterar” corresponde, por exemplo, a remover ou inserir um sdcard num leitor de sdcard, ou a mudar o disco rígido dentro de um compartimento usb-para-sata. O dispositivo em si não é adicionado nem removido, mas a mídia não é mais a mesma.

Responder2

O evento de alteração do udev é acionado quando o trocador de mídia (em relação à fita - ambiente semelhante ao Netbackup) ou o leitor de cartão SD é usado em continuação com mídia ou cartão SD diferente. Quando um mesmo dispositivo é adicionado novamente (um disco san é adicionado novamente ou você desativa/ativa o switch no lado do switch ou desativa/ativa a porta de destino no lado do destino)

Abaixo estão alguns eventos de alteração do udev que vemos no lado do host, quando desativei a porta de destino (do array Vexata VX100) para um san lun existente

KERNEL[34942.047543] change   /devices/virtual/block/dm-0 (block)
KERNEL[34942.047596] change   /devices/virtual/block/dm-1 (block)
KERNEL[34942.047613] change   /devices/virtual/block/dm-2 (block)
KERNEL[34942.047631] change   /devices/virtual/block/dm-3 (block)
KERNEL[34942.047678] change   /devices/virtual/block/dm-4 (block)
UDEV  [34942.053448] change   /devices/virtual/block/dm-3 (block)
UDEV  [34942.053486] change   /devices/virtual/block/dm-4 (block)
UDEV  [34942.053507] change   /devices/virtual/block/dm-0 (block)
UDEV  [34942.053536] change   /devices/virtual/block/dm-2 (block)

Responder3

Isso significa que o kernel emitiu um uevent para relatar que algo no dispositivo mudou, acompanhado de propriedades de evento ( ENV) para descrever exatamente o que e propriedades do dispositivo (também ENV) para fornecer contexto. Eles são diferentes dos atributos do dispositivo ( ATTR, que correspondem à estrutura do arquivo em sysfs), e você pode ver quais são essas propriedades executando sudo udevadm monitor --kernel --udev -p --subsystem-match=usb.

Esses uevents são gerados pelos módulos específicos do kernel que gerenciam o dispositivo, portanto não há uma lista completa ou um conjunto garantido de eventos. Você precisaria verificar a documentação ou consultar o código-fonte dos módulos em questão para chamadas kobject_ueventou kobject_uevent_envpara saber o que causa o surgimento de eventos.

informação relacionada