[FUG-BR] [RESOLVIDO] pendrive USB UFS2 com FreeBSD 9.0 erro g_vfs_done =5

Marcel Bonnet marcelbonnet em gmail.com
Terça Julho 24 23:47:58 BRT 2012


Olá, lista.

Eu estava doido com um problema e, logo antes de postar aqui, eu dei
uma pesquisada nas sysctls com a opção "-ad | grep usb" e, por sorte,
achei a resposta.
Como era um problema realmente intrigante e irritante, eu achei que
poderia ser útil a mais alguém e tomei a liberdade de criar o tópico
como RESOLVIDO, já de cara!

O PROBLEMA

Ao plugar um dispositivo usb, mas não qualquer um, somente pendrive,
com sistema de arquivos UFS2, com ou sem soft updates, no FreeBSD
9-STABLE, e usar o programa unison (para sincronizar mais de 1GB de
arquivos), o dispositivo parava de responder e o kernel jogava um
monte de erros "g_vfs_done [... uns params que não lembro] ...
error=5" . O problema foi verificado em mais de uma máquina rodando
diferentes datas de checkout do src do 9-STABLE.

Com FreeBSD 8.2-RELEASE o problema não ocorre.

AS POSSÍVEIS CAUSAS

Alguns fóruns mencionavam que tal erro seria falha de hardware. Como
ele opera normalmente em USB 2.0 no FreeBSD 8, eu descartei essa
hipótese.

A SOLUÇÃO / OU WORKAROUND

Se partirmos do ponto de vista da velocidade, então temos um
workaround, não uma solução. Mas como meu objetivo, a curto prazo, era
poder usar o dispositivo para sincronizar arquivos entre duas
máquinas, considero o problema solucionado até que eu ache que a
transferência está lenta demais.

Pensei que deveria haver alguma sysctl para alterar a velocidade da
USB, ou de 2.0 para 1.0, ou coisa parecida.
A sysctl é a seguinte:

# sysctl -d hw.usb.ehci.no_hs
hw.usb.ehci.no_hs: Disable High Speed USB

O padrão é =0, logo:

# sysctl hw.usb.ehci.no_hs=1
hw.usb.ehci.no_hs: 0 -> 1

Não passei de 1MB/s, mas executei o unison e sincronizei tudo
"bunitinho" no FreeBSD 9.


--
Marcel Bonnet
"No princípio era o caos... e no meio também."
www.monovox.net.br


Mais detalhes sobre a lista de discussão freebsd