Estou executando o rsync para fazer backup de uma máquina remota em um disco rígido USB em um ARM SBC e, às vezes, o rsync para com "erro de leitura do dispositivo de entrada (erro de E/S)". Acredito que o problema esteja relacionado ao UAS + USB 3.0 + rsync causando alta carga de E/S, devido uas_eh_device_reset_handler
a /var/log/messages
:
sd 0:0:0:0: [sda] tag#1 data cmplt err -32 uas-tag 2 inflight:
sd 0:0:0:0: [sda] tag#1 CDB: opcode=0x28 28 00 38 80 0a 68 00 00 a0 00
sd 0:0:0:0: [sda] tag#0 data cmplt err -32 uas-tag 1 inflight: CMD
sd 0:0:0:0: [sda] tag#0 CDB: opcode=0x2a 2a 00 57 50 28 78 00 03 00 00
sd 0:0:0:0: [sda] tag#1 uas_eh_abort_handler 0 uas-tag 2 inflight: CMD
sd 0:0:0:0: [sda] tag#1 CDB: opcode=0x28 28 00 38 80 0a 68 00 00 a0 00
sd 0:0:0:0: [sda] tag#2 uas_eh_abort_handler 0 uas-tag 3 inflight: CMD
sd 0:0:0:0: [sda] tag#2 CDB: opcode=0x2a 2a 00 19 47 7f 20 00 00 90 00
sd 0:0:0:0: [sda] tag#0 uas_eh_abort_handler 0 uas-tag 1 inflight: CMD
sd 0:0:0:0: [sda] tag#0 CDB: opcode=0x2a 2a 00 57 50 28 78 00 03 00 00
scsi host0: uas_eh_device_reset_handler start
usb 5-1: reset high-speed USB device number 2 using ehci-platform
scsi host0: uas_eh_device_reset_handler success
sd 0:0:0:0: [sda] tag#0 UNKNOWN(0x2003) Result: hostbyte=0x00 driverbyte=0x08
sd 0:0:0:0: [sda] tag#0 Sense Key : 0x2 [current]
sd 0:0:0:0: [sda] tag#0 ASC=0x3a ASCQ=0x0
sd 0:0:0:0: [sda] tag#0 CDB: opcode=0x2a 2a 00 57 50 28 78 00 03 00 00
sd 0:0:0:0: [sda] tag#1 UNKNOWN(0x2003) Result: hostbyte=0x00 driverbyte=0x08
sd 0:0:0:0: [sda] tag#1 Sense Key : 0x2 [current]
sd 0:0:0:0: [sda] tag#1 ASC=0x3a ASCQ=0x0
sd 0:0:0:0: [sda] tag#1 CDB: opcode=0x2a 2a 00 19 47 7f 20 00 00 90 00
EXT4-fs warning (device sda1): ext4_end_bio:323: I/O error 10 writing to inode 13001563 (offset 0 size 73728 starting block 53014518)
Este SBC não possui uma porta USB 3, mas ainda carrega o disco rígido com o UAS. De acordo com isso, o UAS está quebrado em alguns chips de gabinete HD . A solução fornecida é desativar o UAS , no entanto :
1- Se eu colocar o UASblacklist uas
na lista negra completamente , /etc/modprobe.d/blacklist-uas.conf
recebo:
lsusb -t
/: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=ehci-platform/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=, 480M
Olhando para Class=Mass Storage, Driver=, 480M
=> parece que o sistema não carrega nenhuma outra maneira de lidar com a unidade.
2- Se eu apenas tentar desabilitar o UAS para um dispositivo USB específico , como o post recomendado, ele ainda carrega com o UAS :
echo options usb-storage quirks=174c:55aa:u | tee /etc/modprobe.d/blacklist-uas.conf
update-initramfs -u
reboot
(...)
dmesg | grep sda
[ 2.488105] sd 0:0:0:0: [sda] 2930277168 512-byte logical blocks: (1.50 TB/1.36 TiB)
[ 2.488584] sd 0:0:0:0: [sda] Write Protect is off
[ 2.488592] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00
[ 2.489335] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 2.539288] sda: sda1
[ 2.543875] sd 0:0:0:0: [sda] Attached SCSI disk
[ 6.898109] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: errors=remount-ro,data=ordered
lsusb | grep ASMedia
Bus 005 Device 002: ID 174c:55aa ASMedia Technology Inc. ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge
lsusb -t
/: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=ehci-platform/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=uas, 480M
O que estou fazendo errado? É possível desabilitar o UAS e fazer o sistema continuar usando o HD de outra forma? Por que options usb-storage quirks=174c:55aa:u
não desativa o UAS como deveria?
Obrigada.
Algumas notas :
- SO: Debian GNU/Linux 9.4 (stretch) kernel
4.14.18-sunxi64
da armbian - SBC: NanoPi NEO2
Com a preciosa ajuda do @AB consegui consertar isso. Como ele disse, meu kernel (provavelmente todo kernel armbian SBC) não foi
usb_storage
carregado como um módulo, ele é integrado.Nesse caso, precisamos alterar as opções de inicialização visíveis em
/proc/cmdline
:No final
usb-storage.quirks=0x2537:0x1066:u,0x2537:0x1068:u
já está definido. Não podemos editar este arquivo diretamente, no armbian essas opções são armazenadas no arquivo/boot/armbianEnv.txt
:Então, acabei de adicionar meu dispositivo na última linha como
,174c:55aa:u
, tornando-o:Apenas no caso de eu executar novamente
update-initramfs -u
e após uma reinicialização, o USB HD agora usa apenasusb-store
em vez deuas
:Como você pode ver aqui,
uas
agora está devidamente na lista negra para o dispositivo:Eu tive um problema semelhante no Debian 9 e minha resposta acabou sendo bastante semelhante, mas não exatamente a mesma:
(como raiz:)
O ID do dispositivo 4971:8017 é um compartimento de disco Rosewill RX307-PU3-35B USB-3 baseado em "SimpleTech" anunciado como compatível com UASB. Com alguns drives, pelo menos, tem que ser resetado com frequência, gerando muitas mensagens de alarme no syslog como esta:
Estranhamente, pelo menos para transferências de dados em massa, parece ser realmente mais rápido agora do que com o driver uas!
No meu caso, os problemas de E/S foram causados por fonte de alimentação insuficiente do meu computador para o adaptador USB SATA3. As mensagens de log pareciam as mesmas aqui.
Jogar com parâmetros uas não ajudou. A compra de um HUB USB3 alimentado resolveu o problema.